@kong-ui-public/dashboard-renderer 0.22.3 → 0.22.4

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.
@@ -1764,7 +1764,7 @@ const Se = "24px", Pn = (e, t) => {
1764
1764
  for (const [i, n] of t)
1765
1765
  r[i] = n;
1766
1766
  return r;
1767
- }, Un = (e) => (Ye("data-v-d5eb3109"), e = e(), We(), e), Fn = ["aria-hidden"], Vn = {
1767
+ }, Un = (e) => (Ye("data-v-a3352b0f"), e = e(), We(), e), Fn = ["aria-hidden"], Vn = {
1768
1768
  key: 0,
1769
1769
  "data-testid": "kui-icon-svg-title"
1770
1770
  }, Kn = /* @__PURE__ */ Un(() => /* @__PURE__ */ V("path", {
@@ -1863,7 +1863,7 @@ const Se = "24px", Pn = (e, t) => {
1863
1863
  _: 1
1864
1864
  }, 8, ["aria-hidden", "style"]));
1865
1865
  }
1866
- }), Mn = /* @__PURE__ */ Pn(Bn, [["__scopeId", "data-v-d5eb3109"]]), Gn = [];
1866
+ }), Mn = /* @__PURE__ */ Pn(Bn, [["__scopeId", "data-v-a3352b0f"]]), Gn = [];
1867
1867
  for (let e = 0; e < 256; ++e)
1868
1868
  Gn.push((e + 256).toString(16).slice(1));
1869
1869
  typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
@@ -1,5 +1,5 @@
1
- (function(d,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue"),require("@kong-ui-public/analytics-chart"),require("swrv"),require("axios"),require("@kong-ui-public/i18n"),require("@kong-ui-public/analytics-metric-provider"),require("@kong-ui-public/analytics-utilities"),require("@kong/kongponents"),require("vue-router"),require("@kong-ui-public/analytics-config-store")):typeof define=="function"&&define.amd?define(["exports","vue","@kong-ui-public/analytics-chart","swrv","axios","@kong-ui-public/i18n","@kong-ui-public/analytics-metric-provider","@kong-ui-public/analytics-utilities","@kong/kongponents","vue-router","@kong-ui-public/analytics-config-store"],n):(d=typeof globalThis<"u"?globalThis:d||self,n(d["kong-ui-public-dashboard-renderer"]={},d.Vue,d["kong-ui-public-analytics-chart"],d.swrv,d.axios,d["kong-ui-public-i18n"],d["kong-ui-public-analytics-metric-provider"],d["kong-ui-public-analytics-utilities"],d.Kongponents,d.VueRouter,d["kong-ui-public-analytics-config-store"]))})(this,function(d,n,E,je,Z,j,W,Q,yn,fn,Ve){"use strict";const F="analytics-query-provider",P="{entity-id}",J="{cp-id}",X="{timeframe}";var b=(e=>(e.HorizontalBar="horizontal_bar",e.VerticalBar="vertical_bar",e.Gauge="gauge",e.TimeseriesLine="timeseries_line",e.GoldenSignals="golden_signals",e.TopN="top_n",e.Slottable="slottable",e))(b||{});const V={type:"string"},L={type:"string"},ee={type:"boolean"},te={type:["object","array"],items:{type:"string"},additionalProperties:{type:"string"}},re={type:"object",properties:{type:{type:"string",enum:["slottable"]},id:{type:"string"}},required:["type","id"],additionalProperties:!1},ne={type:"object",properties:{type:{type:"string",enum:["horizontal_bar","vertical_bar"]},stacked:{type:"boolean"},chartDatasetColors:te,syntheticsDataKey:V,chartTitle:L,allowCsvExport:ee},required:["type"],additionalProperties:!1},ie={type:"object",properties:{type:{type:"string",enum:["timeseries_line"]},stacked:{type:"boolean"},chartDatasetColors:te,syntheticsDataKey:V,chartTitle:L,allowCsvExport:ee},required:["type"],additionalProperties:!1},oe={type:"object",properties:{type:{type:"string",enum:["gauge"]},metricDisplay:{type:"string",enum:Object.values(E.ChartMetricDisplay)},reverseDataset:{type:"boolean"},numerator:{type:"number"},syntheticsDataKey:V,chartTitle:L},required:["type"],additionalProperties:!1},ae={type:"object",properties:{chartTitle:L,syntheticsDataKey:V,type:{type:"string",enum:["top_n"]},description:{type:"string"},entityLink:{type:"string"}},required:["type"],additionalProperties:!1},se={type:"object",properties:{chartTitle:L,type:{type:"string",enum:["golden_signals"]},longCardTitles:{type:"boolean"},description:{type:"string"},percentileLatency:{type:"boolean"}},required:["type"]},ce={type:"object",description:"A query to launch at the API",properties:{metrics:{type:"array",description:"List of aggregated metrics to collect across the requested time span.",items:{type:"string",enum:["request_count","request_per_minute","response_latency_p99","response_latency_p95","response_latency_p50","response_latency_average","upstream_latency_p99","upstream_latency_p95","upstream_latency_p50","upstream_latency_average","kong_latency_p99","kong_latency_p95","kong_latency_p50","kong_latency_average","response_size_p99","response_size_p95","response_size_p50","request_size_p99","request_size_p95","request_size_p50","request_size_average","response_size_average"]}},dimensions:{type:"array",description:"List of attributes or entity types to group by.",minItems:0,maxItems:2,items:{type:"string",enum:["api_product","api_product_version","application","consumer","control_plane","control_plane_group","data_plane_node","gateway_service","route","status_code","status_code_grouped","time"]}},filters:{type:"array",description:"A list of filters to apply to the query.",items:{type:"object",description:"A filter that specifies which data to include in the query",properties:{dimension:{type:"string",enum:["api_product","api_product_version","application","consumer","control_plane","control_plane_group","data_plane_node","gateway_service","route","status_code","status_code_grouped","time"]},type:{type:"string",enum:["in","not_in","selector"]},values:{type:"array",items:{type:"string"}}},required:["dimension","type","values"]}},granularity_ms:{type:"number",description:'Force time grouping into buckets of this duration in milliseconds. Only has an effect if "time" is in the "dimensions" list.',minimum:6e4},time_range:{description:"The time range to query.",oneOf:[{type:"object",properties:{tz:{type:"string",default:"Etc/UTC"},type:{type:"string",enum:["relative"]},time_range:{type:"string",enum:["15m","1h","6h","12h","24h","7d","30d","current_week","current_month","previous_week","previous_month"],default:"1h"}},required:["type","time_range"]},{type:"object",description:"A duration representing an exact start and end time.",properties:{tz:{type:"string",default:"Etc/UTC"},type:{type:"string",enum:["absolute"]},start:{type:"string"},end:{type:"string"}},required:["type"]}],default:{type:"relative",time_range:"1h"}},meta:{type:"object"}}},le={type:"object",properties:{query:ce,chart:{oneOf:[ne,oe,ie,se,ae,re]}},required:["query","chart"],additionalProperties:!1},ue={type:"object",properties:{position:{type:"object",properties:{col:{type:"number"},row:{type:"number"}},description:"Position of the tile in the grid.",required:["col","row"],additionalProperties:!1},size:{type:"object",properties:{cols:{type:"number"},rows:{type:"number"},fitToContent:{type:"boolean"}},description:"Number of columns and rows the tile occupies. If fitToContent is true for every tile in a row, and each tile only occupies 1 row, then the row will auto-fit to its content.",required:["cols","rows"],additionalProperties:!1}},required:["position","size"],additionalProperties:!1},pe={type:"object",properties:{definition:le,layout:ue},required:["definition","layout"],additionalProperties:!1},$e={type:"object",properties:{tiles:{type:"array",items:pe},tileHeight:{type:"number",description:"Height of each tile in pixels. Default: 170"},gridSize:{type:"object",properties:{cols:{type:"number"},rows:{type:"number"}},description:"Number of columns and rows in the grid.",required:["cols","rows"],additionalProperties:!1}},required:["tiles","gridSize"],additionalProperties:!1};var de=(e=>(e.VALIDATING="VALIDATING",e.VALIDATING_HAS_DATA="VALIDATING_HAS_DATA",e.PENDING="PENDING",e.SUCCESS="SUCCESS",e.SUCCESS_HAS_DATA="SUCCESS_HAS_DATA",e.ERROR="ERROR",e.STALE_IF_ERROR="STALE_IF_ERROR",e))(de||{});const ze=e=>{var t,r,o,i,a;return e?!!((t=Object.keys(e))!=null&&t.length||(r=e.data)!=null&&r.length||(i=(o=e.data)==null?void 0:o.data)!=null&&i.length||!((a=e.data)!=null&&a.data)&&typeof e.data=="object"&&Object.keys(e==null?void 0:e.data).length):!1};function Ue(e=n.ref({}),t,r,o=ze){const i=n.ref("PENDING");return n.watchEffect(()=>{const a=o(e.value);if(e.value&&a&&r.value){i.value="VALIDATING_HAS_DATA";return}if(e.value&&r.value){i.value="VALIDATING";return}if(e.value&&t.value){i.value="STALE_IF_ERROR";return}if(e.value===void 0&&!t.value){i.value="PENDING";return}if(e.value&&!t.value&&a){i.value="SUCCESS_HAS_DATA";return}if(e.value&&!t.value){i.value="SUCCESS";return}e.value===void 0&&t&&(i.value="ERROR")}),{state:i,swrvState:de}}const Fe={renderer:{noQueryBridge:"No query bridge provided. Unable to render dashboard.",trendRange:{"24h":"Last 24-Hour Summary","30d":"Last 30-Day Summary"}},queryDataProvider:{timeRangeExceeded:"The time range for this report is outside of your organization's data retention period"}};function Pe(){const e=j.createI18n("en-us",Fe);return{i18n:e,i18nT:j.i18nTComponent(e)}}const ye={useI18n:Pe},$=n.defineComponent({__name:"QueryDataProvider",props:{context:{},query:{},queryReady:{type:Boolean}},emits:["queryComplete"],setup(e,{emit:t}){const r=e,o=t,{i18n:i}=ye.useI18n(),a=n.inject(F),s=()=>r.queryReady&&a?JSON.stringify([r.query,r.context]):null,c=new AbortController;n.onUnmounted(()=>{c.abort()});const{data:p,error:u,isValidating:m}=je(s,async()=>{var C,R,x,O;try{const f=[];r.query.filters&&f.push(...r.query.filters),f.push(...r.context.filters);const U={...r.query,time_range:{...r.context.timeSpec,tz:r.context.tz},filters:f};return a==null?void 0:a.queryFn(U,c)}catch(f){y.value=((R=(C=f==null?void 0:f.response)==null?void 0:C.data)==null?void 0:R.message)==="Range not allowed for this tier"?i.t("queryDataProvider.timeRangeExceeded"):((O=(x=f==null?void 0:f.response)==null?void 0:x.data)==null?void 0:O.message)||(f==null?void 0:f.message)}finally{o("queryComplete")}},{refreshInterval:r.context.refreshInterval,revalidateOnFocus:!1}),{state:l,swrvState:h}=Ue(p,u,m),y=n.ref(null),S=n.computed(()=>l.value===h.ERROR||!!y.value),g=n.computed(()=>!r.queryReady||l.value===h.PENDING);return(C,R)=>{const x=n.resolveComponent("KSkeleton"),O=n.resolveComponent("KEmptyState");return g.value||!n.unref(p)&&!S.value?(n.openBlock(),n.createBlock(x,{key:0,class:"chart-skeleton",type:"table"})):S.value?(n.openBlock(),n.createBlock(O,{key:1,"action-button-visible":!1,"data-testid":"chart-empty-state","icon-variant":"error"},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(y.value),1)]),_:1})):n.unref(p)?n.renderSlot(C.$slots,"default",{key:2,data:n.unref(p)}):n.createCommentVNode("",!0)}}}),He={class:"analytics-chart"},Ke=n.defineComponent({__name:"SimpleChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){n.useCssVars(i=>({"8c62ff26":`${i.height}px`}));const t=e,r={[b.Gauge]:E.ChartTypesSimple.GAUGE},o=n.computed(()=>({...t.chartOptions,type:r[t.chartOptions.type]}));return(i,a)=>(n.openBlock(),n.createBlock($,{context:i.context,query:i.query,"query-ready":i.queryReady},{default:n.withCtx(({data:s})=>[n.createElementVNode("div",He,[n.createVNode(n.unref(E.SimpleChart),{"chart-data":s,"chart-options":o.value,"synthetics-data-key":i.chartOptions.syntheticsDataKey},null,8,["chart-data","chart-options","synthetics-data-key"])])]),_:1},8,["context","query","query-ready"]))}}),I=(e,t)=>{const r=e.__vccOpts||e;for(const[o,i]of t)r[o]=i;return r},Me=I(Ke,[["__scopeId","data-v-f0f6ed41"]]),Ge={class:"analytics-chart"},fe=I(n.defineComponent({__name:"BarChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){n.useCssVars(i=>({"1eed717c":`${i.height}px`}));const t=e,r={[b.HorizontalBar]:E.ChartTypes.HORIZONTAL_BAR,[b.VerticalBar]:E.ChartTypes.VERTICAL_BAR},o=n.computed(()=>({type:r[t.chartOptions.type],stacked:t.chartOptions.stacked,chartDatasetColors:t.chartOptions.chartDatasetColors}));return(i,a)=>(n.openBlock(),n.createBlock($,{context:i.context,query:i.query,"query-ready":i.queryReady},{default:n.withCtx(({data:s})=>[n.createElementVNode("div",Ge,[n.createVNode(n.unref(E.AnalyticsChart),{"allow-csv-export":i.chartOptions.allowCsvExport,"chart-data":s,"chart-options":o.value,"chart-title":i.chartOptions.chartTitle,"legend-position":"bottom","show-annotations":!1,"synthetics-data-key":i.chartOptions.syntheticsDataKey,"tooltip-title":""},null,8,["allow-csv-export","chart-data","chart-options","chart-title","synthetics-data-key"])])]),_:1},8,["context","query","query-ready"]))}}),[["__scopeId","data-v-36598a1b"]]),Ye={class:"analytics-chart"},Ze=I(n.defineComponent({__name:"TimeseriesChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){n.useCssVars(i=>({"4efa9c90":`${i.height}px`}));const t=e,r={[b.TimeseriesLine]:E.ChartTypes.TIMESERIES_LINE},o=n.computed(()=>{const i=t.chartOptions.stacked??!1;return{type:r[t.chartOptions.type],stacked:i,chartDatasetColors:t.chartOptions.chartDatasetColors}});return(i,a)=>(n.openBlock(),n.createBlock($,{context:i.context,query:i.query,"query-ready":i.queryReady},{default:n.withCtx(({data:s})=>[n.createElementVNode("div",Ye,[n.createVNode(n.unref(E.AnalyticsChart),{"allow-csv-export":i.chartOptions.allowCsvExport,"chart-data":s,"chart-options":o.value,"chart-title":i.chartOptions.chartTitle,"legend-position":"bottom","synthetics-data-key":i.chartOptions.syntheticsDataKey,"tooltip-title":""},null,8,["allow-csv-export","chart-data","chart-options","chart-title","synthetics-data-key"])])]),_:1},8,["context","query","query-ready"]))}}),[["__scopeId","data-v-ceb07ca8"]]),We={class:"metric-card-tile-wrapper"},Qe=I(n.defineComponent({__name:"GoldenSignalsRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){const t=e,r=n.computed(()=>{const i=t.context.timeSpec;if(i.type==="absolute")return new Q.Timeframe({key:"custom",timeframeText:"custom",display:"custom",startCustom:i.start,endCustom:i.end,timeframeLength:()=>0,defaultResponseGranularity:"daily",dataGranularity:"daily",isRelative:!1,allowedTiers:["free","plus","enterprise"]});const a=Q.TimePeriods.get(i.time_range);if(!a)throw new Error("Unknown time range");return a}),o=n.computed(()=>({overrideTimeframe:r.value,tz:t.context.tz,additionalFilter:t.context.filters,longCardTitles:t.chartOptions.longCardTitles,containerTitle:t.chartOptions.chartTitle,description:t.chartOptions.description,percentileLatency:t.chartOptions.percentileLatency,refreshInterval:t.context.refreshInterval,queryReady:t.queryReady}));return(i,a)=>(n.openBlock(),n.createElementBlock("div",We,[n.createVNode(n.unref(W.MetricsProvider),n.normalizeProps(n.guardReactiveProps(o.value)),{default:n.withCtx(()=>[n.createVNode(n.unref(W.MetricsConsumer))]),_:1},16)]))}}),[["__scopeId","data-v-a637d856"]]),me="20px";var N=(e=>(e[e.Loading=0]="Loading",e[e.Idle=1]="Idle",e[e.NoResults=2]="NoResults",e[e.Error=3]="Error",e))(N||{});function Je(){return{getAxiosInstance:(e={})=>{try{const t=n.inject("get-axios-instance",void 0);return typeof t=="function"?t(e):Z.create({withCredentials:!0,timeout:3e4,...e})}catch(t){return console.warn("getAxiosInstance:",t.message||t),Z.create({withCredentials:!0,timeout:3e4,...e})}},getTraceIdFromError:e=>{var t;return((t=e==null?void 0:e.response)==null?void 0:t.headers["x-datadog-trace-id"])||""}}}function Xe(){return{debounce:(e,t)=>{let r;return(...o)=>{clearTimeout(r),r=window==null?void 0:window.setTimeout(()=>{e(...o)},t)}}}}function H(e={}){const{getAxiosInstance:t}=Je();return{axiosInstance:t(e)}}const et={actions:{copyId:"Copy ID",copied_id:'Copied "{id}" to the clipboard',copyToClipboard:"Copied successfully!",copyToClipboardFailed:"Failed to copy to the clipboard"}},tt={message:"Are you sure you want to delete this {entityType}?",messageWithName:"Are you sure you want to delete this {entityType} {entityName}?"},rt={actions:{viewConfiguration:"View Configuration",save:"Save",cancel:"Cancel",back:"Back"},configuration:{title:"Configuration",message:"Export configurations for core Kong Gateway objects, like services, routes, and plugins, to either YAML or JSON. This allows for straightforward importing into APIOps tools like decK with YAML, or Insomnia and cURL with JSON.",yaml:"YAML",json:"JSON"},errors:{edit:"The entity could not be edited at this time."}},nt={emptyState:{noSearchResultsTitle:"No results found",noSearchResultsMessage:"Please adjust the criteria and try again.",noSearchResultsCtaText:"Clear"}},it={title:"Configuration",actions:{copy:"Copy JSON"},sections:{advanced:"Advanced",plugin:"Plugin Specific Configuration"},commonFields:{id_label:"ID",name_label:"Name",enabled_label:"Enabled",enabled_tooltip:"Enabled is FTW",updated_at_label:"Last Updated",created_at_label:"Created",tags_label:"Tags",link:"Link"},statusBadge:{enabledLabel:"Enabled",disabledLabel:"Disabled"},copy:{tooltip:"Copy {label}",success:"Copied!"},errors:{load:"The entity configuration data could not be loaded at this time.",copy:"Failed to copy to clipboard"},general:{entryTitle:"Entry {index}",structuredFormat:"Structured"}},ot={filterButtonText:"Filter",fieldLabel:"Filter by:",inputPlaceholder:"Enter a value",selectPlaceholder:"Select an item",applyButtonText:"Apply",clearButtonText:"Clear",clearAllButtonText:"Clear all filters"},at={errors:{fetch:"Could not fetch available items",invalid:"Please select a valid value"}},st={unexpected:"An unexpected error has occurred",dataKeyUndefined:'The data key "{dataKey}" does not exist in the response.'},ct={utf8Name:"The name can be any string containing characters, letters, numbers, or the following characters: ., -, _, or ~. Do not use spaces."},lt={enable:{title:"Enable {entityType}",message:"Are you sure you want to enable the {entityType} {entityName}?",confirmText:"Yes, enable"},disable:{title:"Disable {entityType}",message:"Are you sure you want to disable the {entityType} {entityName}?",confirmText:"Yes, disable"}},ut={global:et,deleteModal:tt,baseForm:rt,baseTable:nt,baseConfigCard:it,filter:ot,debouncedFilter:at,errors:st,validationErrors:ct,toggleModal:lt};function z(){const e=j.createI18n("en-us",ut);return{i18n:e,i18nT:j.i18nTComponent(e)}}function he(){const e=(r,o)=>(o==null?void 0:o[r])??void 0,t=(r,o)=>{if(r.length!==o.length)return!1;const i=new Set([...r,...o]);for(const a of i){const s=r.filter(p=>p===a).length,c=o.filter(p=>p===a).length;if(s!==c)return!1}return!0};return{getPropValue:e,objectsAreEqual:(r,o,i)=>{if(i){if(Object.keys(r).length===Object.keys(o).length)for(const a in r)if(Array.isArray(r[a])&&Array.isArray(o[a])){if(t(r[a],o[a]))continue;return!1}else{if(r[a]===o[a])continue;return!1}else return!1;return!0}try{return JSON.stringify(r)===JSON.stringify(o)}catch{return!1}},sortAlpha:r=>(o,i)=>{let a=o[r]===void 0||o[r]===null?"":o[r],s=i[r]===void 0||i[r]===null?"":i[r];return Array.isArray(o[r])&&(a=o[r][0]),Array.isArray(i[r])&&(s=i[r][0]),a.localeCompare(s)},isValidUuid:r=>r?/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/.test(r):!1}}function pt(e,t,r,o={fetchedItemsKey:"data",searchKeys:["id"]}){r||(r="1000");const{axiosInstance:i}=H(e.axiosRequestConfig),{i18n:{t:a}}=z(),{debounce:s}=Xe(),c=s(async f=>{await O(f)},200),p=n.ref(!1),u=n.ref(""),m=n.ref(""),l=n.ref([]),h=n.ref([]),y=n.ref(void 0),S=n.unref(t);let g=`${e.apiBaseUrl}${S}`;e.app==="konnect"?g=g.replace(/{controlPlaneId}/gi,(e==null?void 0:e.controlPlaneId)||""):e.app==="kongManager"&&(g=g.replace(/\/{workspace}/gi,e!=null&&e.workspace?`/${e.workspace}`:""));const{isValidUuid:C}=he(),R=async()=>{try{p.value=!0;const{data:f}=await i.get(`${g}?size=${r}`);f!=null&&f.next||(y.value=o.fetchedItemsKey in f?f[o.fetchedItemsKey]:[]),h.value=o.fetchedItemsKey in f?f[o.fetchedItemsKey]:[],l.value=h.value}catch{l.value=[],u.value=a("debouncedFilter.errors.fetch")}finally{p.value=!1}},x=n.ref(""),O=async f=>{var U,De,Be;if(x.value!==f)if(x.value=f||"",y.value===void 0)try{if(p.value=!0,u.value="",m.value="",e.app==="konnect"){let w=g+"";f&&(w+=`/${f}`);const{data:T}=await i.get(`${w}?size=${r}`);o.fetchedItemsKey in T?l.value=T[o.fetchedItemsKey]:T!=null&&T.id?l.value=[T]:l.value=[]}else if(f){const w=[];C(f)&&o.searchKeys.includes("id")?w.push((async()=>{const{data:k}=await i.get(`${g}/${f}`);return[k[o.fetchedItemsKey]??k]})()):w.push(...o.searchKeys.filter(k=>k!=="id").map(async k=>{const{data:A}=await i.get(`${g}?${k}=${f}`);return A[o.fetchedItemsKey]}));const T=await Promise.all(w),B=new Set;l.value=[],(U=T==null?void 0:T.forEach)==null||U.call(T,k=>{var A;(A=k==null?void 0:k.forEach)==null||A.call(k,Y=>{B.has(Y.id)||(B.add(Y.id),l.value.push(Y))})})}else l.value=h.value}catch(w){((De=w==null?void 0:w.response)==null?void 0:De.status)===404?m.value=a("debouncedFilter.errors.invalid"):(l.value=[],u.value=a("debouncedFilter.errors.fetch"))}finally{p.value=!1}else p.value=!0,m.value="",f?(l.value=(Be=y.value)==null?void 0:Be.filter(w=>{var T;let B=!1;for(const k of o.searchKeys){const A=typeof w[k]=="string"?(T=w[k])==null?void 0:T.toLowerCase():w[k];A!=null&&A.includes(f.toLowerCase())&&(B=!0)}return B}),(!l.value||!l.value.length)&&(m.value=a("debouncedFilter.errors.invalid"))):l.value=y.value,p.value=!1};return{loading:p,error:u,validationError:m,results:l,allRecords:y,loadItems:R,debouncedQueryChange:c}}function dt(e,t){const r=n.unref(t),o=n.computed(()=>e.apiBaseUrl.startsWith("/")?new URL(`${window.location.origin}${r}`):new URL(r));return o.value.search="",i=>`${o.value.href}/${i}`}function yt(){const{i18n:{t:e}}=z();return{getMessageFromError:t=>{var r,o,i,a;if(!t)return e("errors.unexpected");if(((r=t==null?void 0:t.response)==null?void 0:r.status)===401)return console.warn("getMessageFromError: User auth token is expired or missing, returning empty message."),"";if((o=t==null?void 0:t.response)!=null&&o.data){if(t.response.data.detail)return t.response.data.detail;if((i=t.response.data.details)!=null&&i.length)return t.response.data.details.map(s=>{let c=e("errors.unexpected");return s.messages&&typeof s.messages=="object"&&s.messages.length&&(c=s.messages.join(", ")),s.field?`${s.field} - ${c}`:c}).join("; ");if(t.response.data.message){const{message:s}=t.response.data;return Array.isArray(s)?(a=s[0])!=null&&a.constraints?Object.values(s[0].constraints)[0]:s[0]:s}if(typeof t.response.data=="string")return t.response.data;if(typeof t.response.data=="object")return Object.keys(t.response.data).map(s=>`${s} ${t.response.data[s]}`).join(", ")}return t.message||e("errors.unexpected")}}}function ft(e){const t=window.location.origin,r=t.endsWith("/")?t:`${t}/`;try{const o=e.join("/"),i=`${r}${o}`,a=e.some(s=>s.trim()==="");if(/^(https:\/\/(www\.)?([a-zA-Z0-9-]+\.){1,}[a-zA-Z]{2,}(:[0-9]+)?(\/[^\/]+)*)$|^(https|http):\/\/localhost(:[0-9]+)?(\/[^\/]+)*$/.test(i)&&!a&&new URL(i))return`${r}${o}`;throw new Error("Invalid url")}catch(o){return console.warn("Failed to build valid URL:",o),""}}function ge(e,t){const r=n.ref(n.unref(e)),o=n.ref(n.unref(t)),i=n.computed(()=>!!(r.value.app==="konnect"||r.value.isExactMatch)),a=n.computed(()=>o.value.startsWith("/")?new URL(`${window.location.origin}${o.value}`):new URL(o.value));return s=>{const{page:c,pageSize:p,offset:u,sortColumnKey:m,sortColumnOrder:l,query:h}=s;try{let y=new URL(a.value.href);return i.value&&h?(y.search="",y=r.value.isExactMatch?new URL(`${y.href}/${h}/`):new URL(`${y.href}?filter[name][contains]=${h}`)):(i.value||new URLSearchParams(h).forEach((S,g)=>{y.searchParams.append(g,S)}),m&&y.searchParams.append("sort_by",m),l==="desc"&&y.searchParams.append("sort_desc","1"),y.searchParams.append("size",String(p))),u&&c!==1&&y.searchParams.append("offset",String(u)),y.href}catch(y){return console.error("RouteList(fetcher)",y),o.value}}}function mt(e,t,r="data"){const o=n.unref(t),{axiosInstance:i}=H(e.axiosRequestConfig),a=ge(e,o),s=n.ref({status:N.Idle});return{fetcher:async c=>{var p;try{s.value={status:N.Loading};let u=a(c);u.includes("filter[name]")&&(u=`${u}&page[size]=${c.pageSize}&page[number]=${c.page}`);const m=await i.get(u);if(m.status>=400)throw m;const l=m.data,h=r&&r.replace(/[^\w-_]/gi,"");let y;l[h]&&Array.isArray(l[h])?y=l[h]:Array.isArray(l)?y=l:y=Object.keys(l).length?[l]:[];const S={data:y,total:y.length,...l.offset?{pagination:{offset:l.offset}}:null};return s.value={status:N.Idle,response:S},S}catch(u){const m={data:[],total:0};return c.query&&(((p=u.response)==null?void 0:p.status)===404||u.status===404)?(s.value={status:N.NoResults,response:m,error:u.response?u:{response:u}},m):(s.value={status:N.Error,response:m,error:u.response?u:{response:u}},m)}},fetcherState:s}}function ht(){const e=(r,o="_")=>r?r.split(o).map(i=>i.toLowerCase()==="id"?i.toUpperCase():i.charAt(0).toUpperCase()+i.substring(1)).join(" "):"",t=/(?:^|[\s-:'"])\w/g;return{capitalize:r=>r?r.replace(t,o=>o.toUpperCase()):"",convertKeyToTitle:e}}const _e=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,be=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");const t=e.match(_e);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},ke=e=>e==="*"||e==="x"||e==="X",we=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},gt=(e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t],_t=(e,t)=>{if(ke(e)||ke(t))return 0;const[r,o]=gt(we(e),we(t));return r>o?1:r<o?-1:0},Se=(e,t)=>{for(let r=0;r<Math.max(e.length,t.length);r++){const o=_t(e[r]||"0",t[r]||"0");if(o!==0)return o}return 0},bt=(e,t)=>{const r=be(e),o=be(t),i=r.pop(),a=o.pop(),s=Se(r,o);return s!==0?s:i&&a?Se(i.split("."),a.split(".")):i||a?i?-1:1:0},Te=(e,t,r)=>{kt(r);const o=bt(e,t);return Ee[r].includes(o)},Ee={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},Ce=Object.keys(Ee),kt=e=>{if(typeof e!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`);if(Ce.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${Ce.join("|")}`)},wt=e=>typeof e=="string"&&/^[v\d]/.test(e)&&_e.test(e);function St(e){const{gatewayInfo:t,supportedRange:r}=e;if(!t)return!0;const{edition:o,version:i}=t;if(!wt(i))return console.error("Invalid version"),!1;const a=r[o];if(!a)return!1;const[s,c]=a;return!(s&&Te(i,s,"<")||c&&Te(i,c,">"))}function Tt(e){const t=n.ref(0),r=n.ref(0),o=n.ref(!1);return n.watch(e,i=>{i&&!o.value&&(t.value=i.offsetWidth,r.value=i.scrollWidth,o.value=!0)}),{isTruncated:n.computed(()=>t.value<r.value)}}function Et(){const{i18n:{t:e}}=z();return{utf8Name:t=>/^[\p{N}\p{L}.\-_~]*$/u.test(t)?"":e("validationErrors.utf8Name")}}const Ie={useAxios:H,useDebouncedFilter:pt,useDeleteUrlBuilder:dt,useErrors:yt,useExternalLinkCreator:ft,useFetcher:mt,useFetchUrlBuilder:ge,useHelpers:he,useStringHelpers:ht,useI18n:z,useGatewayFeatureSupported:St,useTruncationDetector:Tt,useValidators:Et},Ct=(e,t)=>{const r=e.__vccOpts||e;for(const[o,i]of t)r[o]=i;return r},It="#0044f4",vt="16px";/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function ve(e){return typeof e>"u"||e===null}function xt(e){return typeof e=="object"&&e!==null}function At(e){return Array.isArray(e)?e:ve(e)?[]:[e]}function Nt(e,t){var r,o,i,a;if(t)for(a=Object.keys(t),r=0,o=a.length;r<o;r+=1)i=a[r],e[i]=t[i];return e}function qt(e,t){var r="",o;for(o=0;o<t;o+=1)r+=e;return r}function Rt(e){return e===0&&Number.NEGATIVE_INFINITY===1/e}var Ot=ve,Lt=xt,Dt=At,Bt=qt,jt=Rt,Vt=Nt,K={isNothing:Ot,isObject:Lt,toArray:Dt,repeat:Bt,isNegativeZero:jt,extend:Vt};function xe(e,t){var r="",o=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(r+='in "'+e.mark.name+'" '),r+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!t&&e.mark.snippet&&(r+=`
1
+ (function(d,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue"),require("@kong-ui-public/analytics-chart"),require("swrv"),require("axios"),require("@kong-ui-public/i18n"),require("@kong-ui-public/analytics-metric-provider"),require("@kong-ui-public/analytics-utilities"),require("@kong/kongponents"),require("vue-router"),require("@kong-ui-public/analytics-config-store")):typeof define=="function"&&define.amd?define(["exports","vue","@kong-ui-public/analytics-chart","swrv","axios","@kong-ui-public/i18n","@kong-ui-public/analytics-metric-provider","@kong-ui-public/analytics-utilities","@kong/kongponents","vue-router","@kong-ui-public/analytics-config-store"],n):(d=typeof globalThis<"u"?globalThis:d||self,n(d["kong-ui-public-dashboard-renderer"]={},d.Vue,d["kong-ui-public-analytics-chart"],d.swrv,d.axios,d["kong-ui-public-i18n"],d["kong-ui-public-analytics-metric-provider"],d["kong-ui-public-analytics-utilities"],d.Kongponents,d.VueRouter,d["kong-ui-public-analytics-config-store"]))})(this,function(d,n,E,je,Z,j,W,Q,yn,fn,Ve){"use strict";const F="analytics-query-provider",P="{entity-id}",J="{cp-id}",X="{timeframe}";var b=(e=>(e.HorizontalBar="horizontal_bar",e.VerticalBar="vertical_bar",e.Gauge="gauge",e.TimeseriesLine="timeseries_line",e.GoldenSignals="golden_signals",e.TopN="top_n",e.Slottable="slottable",e))(b||{});const V={type:"string"},O={type:"string"},ee={type:"boolean"},te={type:["object","array"],items:{type:"string"},additionalProperties:{type:"string"}},re={type:"object",properties:{type:{type:"string",enum:["slottable"]},id:{type:"string"}},required:["type","id"],additionalProperties:!1},ne={type:"object",properties:{type:{type:"string",enum:["horizontal_bar","vertical_bar"]},stacked:{type:"boolean"},chartDatasetColors:te,syntheticsDataKey:V,chartTitle:O,allowCsvExport:ee},required:["type"],additionalProperties:!1},ie={type:"object",properties:{type:{type:"string",enum:["timeseries_line"]},stacked:{type:"boolean"},chartDatasetColors:te,syntheticsDataKey:V,chartTitle:O,allowCsvExport:ee},required:["type"],additionalProperties:!1},oe={type:"object",properties:{type:{type:"string",enum:["gauge"]},metricDisplay:{type:"string",enum:Object.values(E.ChartMetricDisplay)},reverseDataset:{type:"boolean"},numerator:{type:"number"},syntheticsDataKey:V,chartTitle:O},required:["type"],additionalProperties:!1},ae={type:"object",properties:{chartTitle:O,syntheticsDataKey:V,type:{type:"string",enum:["top_n"]},description:{type:"string"},entityLink:{type:"string"}},required:["type"],additionalProperties:!1},se={type:"object",properties:{chartTitle:O,type:{type:"string",enum:["golden_signals"]},longCardTitles:{type:"boolean"},description:{type:"string"},percentileLatency:{type:"boolean"}},required:["type"]},ce={type:"object",description:"A query to launch at the API",properties:{metrics:{type:"array",description:"List of aggregated metrics to collect across the requested time span.",items:{type:"string",enum:["request_count","request_per_minute","response_latency_p99","response_latency_p95","response_latency_p50","response_latency_average","upstream_latency_p99","upstream_latency_p95","upstream_latency_p50","upstream_latency_average","kong_latency_p99","kong_latency_p95","kong_latency_p50","kong_latency_average","response_size_p99","response_size_p95","response_size_p50","request_size_p99","request_size_p95","request_size_p50","request_size_average","response_size_average"]}},dimensions:{type:"array",description:"List of attributes or entity types to group by.",minItems:0,maxItems:2,items:{type:"string",enum:["api_product","api_product_version","application","consumer","control_plane","control_plane_group","data_plane_node","gateway_service","route","status_code","status_code_grouped","time"]}},filters:{type:"array",description:"A list of filters to apply to the query.",items:{type:"object",description:"A filter that specifies which data to include in the query",properties:{dimension:{type:"string",enum:["api_product","api_product_version","application","consumer","control_plane","control_plane_group","data_plane_node","gateway_service","route","status_code","status_code_grouped","time"]},type:{type:"string",enum:["in","not_in","selector"]},values:{type:"array",items:{type:"string"}}},required:["dimension","type","values"]}},granularity_ms:{type:"number",description:'Force time grouping into buckets of this duration in milliseconds. Only has an effect if "time" is in the "dimensions" list.',minimum:6e4},time_range:{description:"The time range to query.",oneOf:[{type:"object",properties:{tz:{type:"string",default:"Etc/UTC"},type:{type:"string",enum:["relative"]},time_range:{type:"string",enum:["15m","1h","6h","12h","24h","7d","30d","current_week","current_month","previous_week","previous_month"],default:"1h"}},required:["type","time_range"]},{type:"object",description:"A duration representing an exact start and end time.",properties:{tz:{type:"string",default:"Etc/UTC"},type:{type:"string",enum:["absolute"]},start:{type:"string"},end:{type:"string"}},required:["type"]}],default:{type:"relative",time_range:"1h"}},meta:{type:"object"}}},le={type:"object",properties:{query:ce,chart:{oneOf:[ne,oe,ie,se,ae,re]}},required:["query","chart"],additionalProperties:!1},ue={type:"object",properties:{position:{type:"object",properties:{col:{type:"number"},row:{type:"number"}},description:"Position of the tile in the grid.",required:["col","row"],additionalProperties:!1},size:{type:"object",properties:{cols:{type:"number"},rows:{type:"number"},fitToContent:{type:"boolean"}},description:"Number of columns and rows the tile occupies. If fitToContent is true for every tile in a row, and each tile only occupies 1 row, then the row will auto-fit to its content.",required:["cols","rows"],additionalProperties:!1}},required:["position","size"],additionalProperties:!1},pe={type:"object",properties:{definition:le,layout:ue},required:["definition","layout"],additionalProperties:!1},$e={type:"object",properties:{tiles:{type:"array",items:pe},tileHeight:{type:"number",description:"Height of each tile in pixels. Default: 170"},gridSize:{type:"object",properties:{cols:{type:"number"},rows:{type:"number"}},description:"Number of columns and rows in the grid.",required:["cols","rows"],additionalProperties:!1}},required:["tiles","gridSize"],additionalProperties:!1};var de=(e=>(e.VALIDATING="VALIDATING",e.VALIDATING_HAS_DATA="VALIDATING_HAS_DATA",e.PENDING="PENDING",e.SUCCESS="SUCCESS",e.SUCCESS_HAS_DATA="SUCCESS_HAS_DATA",e.ERROR="ERROR",e.STALE_IF_ERROR="STALE_IF_ERROR",e))(de||{});const ze=e=>{var t,r,o,i,a;return e?!!((t=Object.keys(e))!=null&&t.length||(r=e.data)!=null&&r.length||(i=(o=e.data)==null?void 0:o.data)!=null&&i.length||!((a=e.data)!=null&&a.data)&&typeof e.data=="object"&&Object.keys(e==null?void 0:e.data).length):!1};function Ue(e=n.ref({}),t,r,o=ze){const i=n.ref("PENDING");return n.watchEffect(()=>{const a=o(e.value);if(e.value&&a&&r.value){i.value="VALIDATING_HAS_DATA";return}if(e.value&&r.value){i.value="VALIDATING";return}if(e.value&&t.value){i.value="STALE_IF_ERROR";return}if(e.value===void 0&&!t.value){i.value="PENDING";return}if(e.value&&!t.value&&a){i.value="SUCCESS_HAS_DATA";return}if(e.value&&!t.value){i.value="SUCCESS";return}e.value===void 0&&t&&(i.value="ERROR")}),{state:i,swrvState:de}}const Fe={renderer:{noQueryBridge:"No query bridge provided. Unable to render dashboard.",trendRange:{"24h":"Last 24-Hour Summary","30d":"Last 30-Day Summary"}},queryDataProvider:{timeRangeExceeded:"The time range for this report is outside of your organization's data retention period"}};function Pe(){const e=j.createI18n("en-us",Fe);return{i18n:e,i18nT:j.i18nTComponent(e)}}const ye={useI18n:Pe},$=n.defineComponent({__name:"QueryDataProvider",props:{context:{},query:{},queryReady:{type:Boolean}},emits:["queryComplete"],setup(e,{emit:t}){const r=e,o=t,{i18n:i}=ye.useI18n(),a=n.inject(F),s=()=>r.queryReady&&a?JSON.stringify([r.query,r.context]):null,c=new AbortController;n.onUnmounted(()=>{c.abort()});const{data:p,error:u,isValidating:m}=je(s,async()=>{var C,R,x,L;try{const f=[];r.query.filters&&f.push(...r.query.filters),f.push(...r.context.filters);const U={...r.query,time_range:{...r.context.timeSpec,tz:r.context.tz},filters:f};return a==null?void 0:a.queryFn(U,c)}catch(f){y.value=((R=(C=f==null?void 0:f.response)==null?void 0:C.data)==null?void 0:R.message)==="Range not allowed for this tier"?i.t("queryDataProvider.timeRangeExceeded"):((L=(x=f==null?void 0:f.response)==null?void 0:x.data)==null?void 0:L.message)||(f==null?void 0:f.message)}finally{o("queryComplete")}},{refreshInterval:r.context.refreshInterval,revalidateOnFocus:!1}),{state:l,swrvState:h}=Ue(p,u,m),y=n.ref(null),S=n.computed(()=>l.value===h.ERROR||!!y.value),g=n.computed(()=>!r.queryReady||l.value===h.PENDING);return(C,R)=>{const x=n.resolveComponent("KSkeleton"),L=n.resolveComponent("KEmptyState");return g.value||!n.unref(p)&&!S.value?(n.openBlock(),n.createBlock(x,{key:0,class:"chart-skeleton",type:"table"})):S.value?(n.openBlock(),n.createBlock(L,{key:1,"action-button-visible":!1,"data-testid":"chart-empty-state","icon-variant":"error"},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(y.value),1)]),_:1})):n.unref(p)?n.renderSlot(C.$slots,"default",{key:2,data:n.unref(p)}):n.createCommentVNode("",!0)}}}),He={class:"analytics-chart"},Ke=n.defineComponent({__name:"SimpleChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){n.useCssVars(i=>({"8c62ff26":`${i.height}px`}));const t=e,r={[b.Gauge]:E.ChartTypesSimple.GAUGE},o=n.computed(()=>({...t.chartOptions,type:r[t.chartOptions.type]}));return(i,a)=>(n.openBlock(),n.createBlock($,{context:i.context,query:i.query,"query-ready":i.queryReady},{default:n.withCtx(({data:s})=>[n.createElementVNode("div",He,[n.createVNode(n.unref(E.SimpleChart),{"chart-data":s,"chart-options":o.value,"synthetics-data-key":i.chartOptions.syntheticsDataKey},null,8,["chart-data","chart-options","synthetics-data-key"])])]),_:1},8,["context","query","query-ready"]))}}),I=(e,t)=>{const r=e.__vccOpts||e;for(const[o,i]of t)r[o]=i;return r},Me=I(Ke,[["__scopeId","data-v-f0f6ed41"]]),Ge={class:"analytics-chart"},fe=I(n.defineComponent({__name:"BarChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){n.useCssVars(i=>({"1eed717c":`${i.height}px`}));const t=e,r={[b.HorizontalBar]:E.ChartTypes.HORIZONTAL_BAR,[b.VerticalBar]:E.ChartTypes.VERTICAL_BAR},o=n.computed(()=>({type:r[t.chartOptions.type],stacked:t.chartOptions.stacked,chartDatasetColors:t.chartOptions.chartDatasetColors}));return(i,a)=>(n.openBlock(),n.createBlock($,{context:i.context,query:i.query,"query-ready":i.queryReady},{default:n.withCtx(({data:s})=>[n.createElementVNode("div",Ge,[n.createVNode(n.unref(E.AnalyticsChart),{"allow-csv-export":i.chartOptions.allowCsvExport,"chart-data":s,"chart-options":o.value,"chart-title":i.chartOptions.chartTitle,"legend-position":"bottom","show-annotations":!1,"synthetics-data-key":i.chartOptions.syntheticsDataKey,"tooltip-title":""},null,8,["allow-csv-export","chart-data","chart-options","chart-title","synthetics-data-key"])])]),_:1},8,["context","query","query-ready"]))}}),[["__scopeId","data-v-36598a1b"]]),Ye={class:"analytics-chart"},Ze=I(n.defineComponent({__name:"TimeseriesChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){n.useCssVars(i=>({"4efa9c90":`${i.height}px`}));const t=e,r={[b.TimeseriesLine]:E.ChartTypes.TIMESERIES_LINE},o=n.computed(()=>{const i=t.chartOptions.stacked??!1;return{type:r[t.chartOptions.type],stacked:i,chartDatasetColors:t.chartOptions.chartDatasetColors}});return(i,a)=>(n.openBlock(),n.createBlock($,{context:i.context,query:i.query,"query-ready":i.queryReady},{default:n.withCtx(({data:s})=>[n.createElementVNode("div",Ye,[n.createVNode(n.unref(E.AnalyticsChart),{"allow-csv-export":i.chartOptions.allowCsvExport,"chart-data":s,"chart-options":o.value,"chart-title":i.chartOptions.chartTitle,"legend-position":"bottom","synthetics-data-key":i.chartOptions.syntheticsDataKey,"tooltip-title":""},null,8,["allow-csv-export","chart-data","chart-options","chart-title","synthetics-data-key"])])]),_:1},8,["context","query","query-ready"]))}}),[["__scopeId","data-v-ceb07ca8"]]),We={class:"metric-card-tile-wrapper"},Qe=I(n.defineComponent({__name:"GoldenSignalsRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){const t=e,r=n.computed(()=>{const i=t.context.timeSpec;if(i.type==="absolute")return new Q.Timeframe({key:"custom",timeframeText:"custom",display:"custom",startCustom:i.start,endCustom:i.end,timeframeLength:()=>0,defaultResponseGranularity:"daily",dataGranularity:"daily",isRelative:!1,allowedTiers:["free","plus","enterprise"]});const a=Q.TimePeriods.get(i.time_range);if(!a)throw new Error("Unknown time range");return a}),o=n.computed(()=>({overrideTimeframe:r.value,tz:t.context.tz,additionalFilter:t.context.filters,longCardTitles:t.chartOptions.longCardTitles,containerTitle:t.chartOptions.chartTitle,description:t.chartOptions.description,percentileLatency:t.chartOptions.percentileLatency,refreshInterval:t.context.refreshInterval,queryReady:t.queryReady}));return(i,a)=>(n.openBlock(),n.createElementBlock("div",We,[n.createVNode(n.unref(W.MetricsProvider),n.normalizeProps(n.guardReactiveProps(o.value)),{default:n.withCtx(()=>[n.createVNode(n.unref(W.MetricsConsumer))]),_:1},16)]))}}),[["__scopeId","data-v-a637d856"]]),me="20px";var N=(e=>(e[e.Loading=0]="Loading",e[e.Idle=1]="Idle",e[e.NoResults=2]="NoResults",e[e.Error=3]="Error",e))(N||{});function Je(){return{getAxiosInstance:(e={})=>{try{const t=n.inject("get-axios-instance",void 0);return typeof t=="function"?t(e):Z.create({withCredentials:!0,timeout:3e4,...e})}catch(t){return console.warn("getAxiosInstance:",t.message||t),Z.create({withCredentials:!0,timeout:3e4,...e})}},getTraceIdFromError:e=>{var t;return((t=e==null?void 0:e.response)==null?void 0:t.headers["x-datadog-trace-id"])||""}}}function Xe(){return{debounce:(e,t)=>{let r;return(...o)=>{clearTimeout(r),r=window==null?void 0:window.setTimeout(()=>{e(...o)},t)}}}}function H(e={}){const{getAxiosInstance:t}=Je();return{axiosInstance:t(e)}}const et={actions:{copyId:"Copy ID",copied_id:'Copied "{id}" to the clipboard',copyToClipboard:"Copied successfully!",copyToClipboardFailed:"Failed to copy to the clipboard"}},tt={message:"Are you sure you want to delete this {entityType}?",messageWithName:"Are you sure you want to delete this {entityType} {entityName}?"},rt={actions:{viewConfiguration:"View Configuration",save:"Save",cancel:"Cancel",back:"Back"},configuration:{title:"Configuration",message:"Export configurations for core Kong Gateway objects, like services, routes, and plugins, to either YAML or JSON. This allows for straightforward importing into APIOps tools like decK with YAML, or Insomnia and cURL with JSON.",yaml:"YAML",json:"JSON"},errors:{edit:"The entity could not be edited at this time."}},nt={emptyState:{noSearchResultsTitle:"No results found",noSearchResultsMessage:"Please adjust the criteria and try again.",noSearchResultsCtaText:"Clear"}},it={title:"Configuration",actions:{copy:"Copy JSON"},sections:{advanced:"Advanced",plugin:"Plugin Specific Configuration"},commonFields:{id_label:"ID",name_label:"Name",enabled_label:"Enabled",enabled_tooltip:"Enabled is FTW",updated_at_label:"Last Updated",created_at_label:"Created",tags_label:"Tags",link:"Link"},statusBadge:{enabledLabel:"Enabled",disabledLabel:"Disabled"},copy:{tooltip:"Copy {label}",success:"Copied!"},errors:{load:"The entity configuration data could not be loaded at this time.",copy:"Failed to copy to clipboard"},general:{entryTitle:"Entry {index}",structuredFormat:"Structured"}},ot={filterButtonText:"Filter",fieldLabel:"Filter by:",inputPlaceholder:"Enter a value",selectPlaceholder:"Select an item",applyButtonText:"Apply",clearButtonText:"Clear",clearAllButtonText:"Clear all filters"},at={errors:{fetch:"Could not fetch available items",invalid:"Please select a valid value"}},st={unexpected:"An unexpected error has occurred",dataKeyUndefined:'The data key "{dataKey}" does not exist in the response.'},ct={utf8Name:"The name can be any string containing characters, letters, numbers, or the following characters: ., -, _, or ~. Do not use spaces."},lt={enable:{title:"Enable {entityType}",message:"Are you sure you want to enable the {entityType} {entityName}?",confirmText:"Yes, enable"},disable:{title:"Disable {entityType}",message:"Are you sure you want to disable the {entityType} {entityName}?",confirmText:"Yes, disable"}},ut={global:et,deleteModal:tt,baseForm:rt,baseTable:nt,baseConfigCard:it,filter:ot,debouncedFilter:at,errors:st,validationErrors:ct,toggleModal:lt};function z(){const e=j.createI18n("en-us",ut);return{i18n:e,i18nT:j.i18nTComponent(e)}}function he(){const e=(r,o)=>(o==null?void 0:o[r])??void 0,t=(r,o)=>{if(r.length!==o.length)return!1;const i=new Set([...r,...o]);for(const a of i){const s=r.filter(p=>p===a).length,c=o.filter(p=>p===a).length;if(s!==c)return!1}return!0};return{getPropValue:e,objectsAreEqual:(r,o,i)=>{if(i){if(Object.keys(r).length===Object.keys(o).length)for(const a in r)if(Array.isArray(r[a])&&Array.isArray(o[a])){if(t(r[a],o[a]))continue;return!1}else{if(r[a]===o[a])continue;return!1}else return!1;return!0}try{return JSON.stringify(r)===JSON.stringify(o)}catch{return!1}},sortAlpha:r=>(o,i)=>{let a=o[r]===void 0||o[r]===null?"":o[r],s=i[r]===void 0||i[r]===null?"":i[r];return Array.isArray(o[r])&&(a=o[r][0]),Array.isArray(i[r])&&(s=i[r][0]),a.localeCompare(s)},isValidUuid:r=>r?/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/.test(r):!1}}function pt(e,t,r,o={fetchedItemsKey:"data",searchKeys:["id"]}){r||(r="1000");const{axiosInstance:i}=H(e.axiosRequestConfig),{i18n:{t:a}}=z(),{debounce:s}=Xe(),c=s(async f=>{await L(f)},200),p=n.ref(!1),u=n.ref(""),m=n.ref(""),l=n.ref([]),h=n.ref([]),y=n.ref(void 0),S=n.unref(t);let g=`${e.apiBaseUrl}${S}`;e.app==="konnect"?g=g.replace(/{controlPlaneId}/gi,(e==null?void 0:e.controlPlaneId)||""):e.app==="kongManager"&&(g=g.replace(/\/{workspace}/gi,e!=null&&e.workspace?`/${e.workspace}`:""));const{isValidUuid:C}=he(),R=async()=>{try{p.value=!0;const{data:f}=await i.get(`${g}?size=${r}`);f!=null&&f.next||(y.value=o.fetchedItemsKey in f?f[o.fetchedItemsKey]:[]),h.value=o.fetchedItemsKey in f?f[o.fetchedItemsKey]:[],l.value=h.value}catch{l.value=[],u.value=a("debouncedFilter.errors.fetch")}finally{p.value=!1}},x=n.ref(""),L=async f=>{var U,De,Be;if(x.value!==f)if(x.value=f||"",y.value===void 0)try{if(p.value=!0,u.value="",m.value="",e.app==="konnect"){let w=g+"";f&&(w+=`/${f}`);const{data:T}=await i.get(`${w}?size=${r}`);o.fetchedItemsKey in T?l.value=T[o.fetchedItemsKey]:T!=null&&T.id?l.value=[T]:l.value=[]}else if(f){const w=[];C(f)&&o.searchKeys.includes("id")?w.push((async()=>{const{data:k}=await i.get(`${g}/${f}`);return[k[o.fetchedItemsKey]??k]})()):w.push(...o.searchKeys.filter(k=>k!=="id").map(async k=>{const{data:A}=await i.get(`${g}?${k}=${f}`);return A[o.fetchedItemsKey]}));const T=await Promise.all(w),B=new Set;l.value=[],(U=T==null?void 0:T.forEach)==null||U.call(T,k=>{var A;(A=k==null?void 0:k.forEach)==null||A.call(k,Y=>{B.has(Y.id)||(B.add(Y.id),l.value.push(Y))})})}else l.value=h.value}catch(w){((De=w==null?void 0:w.response)==null?void 0:De.status)===404?m.value=a("debouncedFilter.errors.invalid"):(l.value=[],u.value=a("debouncedFilter.errors.fetch"))}finally{p.value=!1}else p.value=!0,m.value="",f?(l.value=(Be=y.value)==null?void 0:Be.filter(w=>{var T;let B=!1;for(const k of o.searchKeys){const A=typeof w[k]=="string"?(T=w[k])==null?void 0:T.toLowerCase():w[k];A!=null&&A.includes(f.toLowerCase())&&(B=!0)}return B}),(!l.value||!l.value.length)&&(m.value=a("debouncedFilter.errors.invalid"))):l.value=y.value,p.value=!1};return{loading:p,error:u,validationError:m,results:l,allRecords:y,loadItems:R,debouncedQueryChange:c}}function dt(e,t){const r=n.unref(t),o=n.computed(()=>e.apiBaseUrl.startsWith("/")?new URL(`${window.location.origin}${r}`):new URL(r));return o.value.search="",i=>`${o.value.href}/${i}`}function yt(){const{i18n:{t:e}}=z();return{getMessageFromError:t=>{var r,o,i,a;if(!t)return e("errors.unexpected");if(((r=t==null?void 0:t.response)==null?void 0:r.status)===401)return console.warn("getMessageFromError: User auth token is expired or missing, returning empty message."),"";if((o=t==null?void 0:t.response)!=null&&o.data){if(t.response.data.detail)return t.response.data.detail;if((i=t.response.data.details)!=null&&i.length)return t.response.data.details.map(s=>{let c=e("errors.unexpected");return s.messages&&typeof s.messages=="object"&&s.messages.length&&(c=s.messages.join(", ")),s.field?`${s.field} - ${c}`:c}).join("; ");if(t.response.data.message){const{message:s}=t.response.data;return Array.isArray(s)?(a=s[0])!=null&&a.constraints?Object.values(s[0].constraints)[0]:s[0]:s}if(typeof t.response.data=="string")return t.response.data;if(typeof t.response.data=="object")return Object.keys(t.response.data).map(s=>`${s} ${t.response.data[s]}`).join(", ")}return t.message||e("errors.unexpected")}}}function ft(e){const t=window.location.origin,r=t.endsWith("/")?t:`${t}/`;try{const o=e.join("/"),i=`${r}${o}`,a=e.some(s=>s.trim()==="");if(/^(https:\/\/(www\.)?([a-zA-Z0-9-]+\.){1,}[a-zA-Z]{2,}(:[0-9]+)?(\/[^\/]+)*)$|^(https|http):\/\/localhost(:[0-9]+)?(\/[^\/]+)*$/.test(i)&&!a&&new URL(i))return`${r}${o}`;throw new Error("Invalid url")}catch(o){return console.warn("Failed to build valid URL:",o),""}}function ge(e,t){const r=n.ref(n.unref(e)),o=n.ref(n.unref(t)),i=n.computed(()=>!!(r.value.app==="konnect"||r.value.isExactMatch)),a=n.computed(()=>o.value.startsWith("/")?new URL(`${window.location.origin}${o.value}`):new URL(o.value));return s=>{const{page:c,pageSize:p,offset:u,sortColumnKey:m,sortColumnOrder:l,query:h}=s;try{let y=new URL(a.value.href);return i.value&&h?(y.search="",y=r.value.isExactMatch?new URL(`${y.href}/${h}/`):new URL(`${y.href}?filter[name][contains]=${h}`)):(i.value||new URLSearchParams(h).forEach((S,g)=>{y.searchParams.append(g,S)}),m&&y.searchParams.append("sort_by",m),l==="desc"&&y.searchParams.append("sort_desc","1"),y.searchParams.append("size",String(p))),u&&c!==1&&y.searchParams.append("offset",String(u)),y.href}catch(y){return console.error("RouteList(fetcher)",y),o.value}}}function mt(e,t,r="data"){const o=n.unref(t),{axiosInstance:i}=H(e.axiosRequestConfig),a=ge(e,o),s=n.ref({status:N.Idle});return{fetcher:async c=>{var p;try{s.value={status:N.Loading};let u=a(c);u.includes("filter[name]")&&(u=`${u}&page[size]=${c.pageSize}&page[number]=${c.page}`);const m=await i.get(u);if(m.status>=400)throw m;const l=m.data,h=r&&r.replace(/[^\w-_]/gi,"");let y;l[h]&&Array.isArray(l[h])?y=l[h]:Array.isArray(l)?y=l:y=Object.keys(l).length?[l]:[];const S={data:y,total:y.length,...l.offset?{pagination:{offset:l.offset}}:null};return s.value={status:N.Idle,response:S},S}catch(u){const m={data:[],total:0};return c.query&&(((p=u.response)==null?void 0:p.status)===404||u.status===404)?(s.value={status:N.NoResults,response:m,error:u.response?u:{response:u}},m):(s.value={status:N.Error,response:m,error:u.response?u:{response:u}},m)}},fetcherState:s}}function ht(){const e=(r,o="_")=>r?r.split(o).map(i=>i.toLowerCase()==="id"?i.toUpperCase():i.charAt(0).toUpperCase()+i.substring(1)).join(" "):"",t=/(?:^|[\s-:'"])\w/g;return{capitalize:r=>r?r.replace(t,o=>o.toUpperCase()):"",convertKeyToTitle:e}}const _e=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,be=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");const t=e.match(_e);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},ke=e=>e==="*"||e==="x"||e==="X",we=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},gt=(e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t],_t=(e,t)=>{if(ke(e)||ke(t))return 0;const[r,o]=gt(we(e),we(t));return r>o?1:r<o?-1:0},Se=(e,t)=>{for(let r=0;r<Math.max(e.length,t.length);r++){const o=_t(e[r]||"0",t[r]||"0");if(o!==0)return o}return 0},bt=(e,t)=>{const r=be(e),o=be(t),i=r.pop(),a=o.pop(),s=Se(r,o);return s!==0?s:i&&a?Se(i.split("."),a.split(".")):i||a?i?-1:1:0},Te=(e,t,r)=>{kt(r);const o=bt(e,t);return Ee[r].includes(o)},Ee={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},Ce=Object.keys(Ee),kt=e=>{if(typeof e!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`);if(Ce.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${Ce.join("|")}`)},wt=e=>typeof e=="string"&&/^[v\d]/.test(e)&&_e.test(e);function St(e){const{gatewayInfo:t,supportedRange:r}=e;if(!t)return!0;const{edition:o,version:i}=t;if(!wt(i))return console.error("Invalid version"),!1;const a=r[o];if(!a)return!1;const[s,c]=a;return!(s&&Te(i,s,"<")||c&&Te(i,c,">"))}function Tt(e){const t=n.ref(0),r=n.ref(0),o=n.ref(!1);return n.watch(e,i=>{i&&!o.value&&(t.value=i.offsetWidth,r.value=i.scrollWidth,o.value=!0)}),{isTruncated:n.computed(()=>t.value<r.value)}}function Et(){const{i18n:{t:e}}=z();return{utf8Name:t=>/^[\p{N}\p{L}.\-_~]*$/u.test(t)?"":e("validationErrors.utf8Name")}}const Ie={useAxios:H,useDebouncedFilter:pt,useDeleteUrlBuilder:dt,useErrors:yt,useExternalLinkCreator:ft,useFetcher:mt,useFetchUrlBuilder:ge,useHelpers:he,useStringHelpers:ht,useI18n:z,useGatewayFeatureSupported:St,useTruncationDetector:Tt,useValidators:Et},Ct=(e,t)=>{const r=e.__vccOpts||e;for(const[o,i]of t)r[o]=i;return r},It="#0044f4",vt="16px";/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function ve(e){return typeof e>"u"||e===null}function xt(e){return typeof e=="object"&&e!==null}function At(e){return Array.isArray(e)?e:ve(e)?[]:[e]}function Nt(e,t){var r,o,i,a;if(t)for(a=Object.keys(t),r=0,o=a.length;r<o;r+=1)i=a[r],e[i]=t[i];return e}function qt(e,t){var r="",o;for(o=0;o<t;o+=1)r+=e;return r}function Rt(e){return e===0&&Number.NEGATIVE_INFINITY===1/e}var Lt=ve,Ot=xt,Dt=At,Bt=qt,jt=Rt,Vt=Nt,K={isNothing:Lt,isObject:Ot,toArray:Dt,repeat:Bt,isNegativeZero:jt,extend:Vt};function xe(e,t){var r="",o=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(r+='in "'+e.mark.name+'" '),r+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!t&&e.mark.snippet&&(r+=`
2
2
 
3
3
  `+e.mark.snippet),o+" "+r):o}function D(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=xe(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}D.prototype=Object.create(Error.prototype),D.prototype.constructor=D,D.prototype.toString=function(e){return this.name+": "+xe(this,e)};var v=D,$t=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],zt=["scalar","sequence","mapping"];function Ut(e){var t={};return e!==null&&Object.keys(e).forEach(function(r){e[r].forEach(function(o){t[String(o)]=r})}),t}function Ft(e,t){if(t=t||{},Object.keys(t).forEach(function(r){if($t.indexOf(r)===-1)throw new v('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(r){return r},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=Ut(t.styleAliases||null),zt.indexOf(this.kind)===-1)throw new v('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var _=Ft;function Ae(e,t){var r=[];return e[t].forEach(function(o){var i=r.length;r.forEach(function(a,s){a.tag===o.tag&&a.kind===o.kind&&a.multi===o.multi&&(i=s)}),r[i]=o}),r}function Pt(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,r;function o(i){i.multi?(e.multi[i.kind].push(i),e.multi.fallback.push(i)):e[i.kind][i.tag]=e.fallback[i.tag]=i}for(t=0,r=arguments.length;t<r;t+=1)arguments[t].forEach(o);return e}function M(e){return this.extend(e)}M.prototype.extend=function(e){var t=[],r=[];if(e instanceof _)r.push(e);else if(Array.isArray(e))r=r.concat(e);else if(e&&(Array.isArray(e.implicit)||Array.isArray(e.explicit)))e.implicit&&(t=t.concat(e.implicit)),e.explicit&&(r=r.concat(e.explicit));else throw new v("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.forEach(function(i){if(!(i instanceof _))throw new v("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(i.loadKind&&i.loadKind!=="scalar")throw new v("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(i.multi)throw new v("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),r.forEach(function(i){if(!(i instanceof _))throw new v("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var o=Object.create(M.prototype);return o.implicit=(this.implicit||[]).concat(t),o.explicit=(this.explicit||[]).concat(r),o.compiledImplicit=Ae(o,"implicit"),o.compiledExplicit=Ae(o,"explicit"),o.compiledTypeMap=Pt(o.compiledImplicit,o.compiledExplicit),o};var Ht=M,Kt=new _("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}}),Mt=new _("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}}),Gt=new _("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}}),Yt=new Ht({explicit:[Kt,Mt,Gt]});function Zt(e){if(e===null)return!0;var t=e.length;return t===1&&e==="~"||t===4&&(e==="null"||e==="Null"||e==="NULL")}function Wt(){return null}function Qt(e){return e===null}var Jt=new _("tag:yaml.org,2002:null",{kind:"scalar",resolve:Zt,construct:Wt,predicate:Qt,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function Xt(e){if(e===null)return!1;var t=e.length;return t===4&&(e==="true"||e==="True"||e==="TRUE")||t===5&&(e==="false"||e==="False"||e==="FALSE")}function er(e){return e==="true"||e==="True"||e==="TRUE"}function tr(e){return Object.prototype.toString.call(e)==="[object Boolean]"}var rr=new _("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Xt,construct:er,predicate:tr,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"});function nr(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function ir(e){return 48<=e&&e<=55}function or(e){return 48<=e&&e<=57}function ar(e){if(e===null)return!1;var t=e.length,r=0,o=!1,i;if(!t)return!1;if(i=e[r],(i==="-"||i==="+")&&(i=e[++r]),i==="0"){if(r+1===t)return!0;if(i=e[++r],i==="b"){for(r++;r<t;r++)if(i=e[r],i!=="_"){if(i!=="0"&&i!=="1")return!1;o=!0}return o&&i!=="_"}if(i==="x"){for(r++;r<t;r++)if(i=e[r],i!=="_"){if(!nr(e.charCodeAt(r)))return!1;o=!0}return o&&i!=="_"}if(i==="o"){for(r++;r<t;r++)if(i=e[r],i!=="_"){if(!ir(e.charCodeAt(r)))return!1;o=!0}return o&&i!=="_"}}if(i==="_")return!1;for(;r<t;r++)if(i=e[r],i!=="_"){if(!or(e.charCodeAt(r)))return!1;o=!0}return!(!o||i==="_")}function sr(e){var t=e,r=1,o;if(t.indexOf("_")!==-1&&(t=t.replace(/_/g,"")),o=t[0],(o==="-"||o==="+")&&(o==="-"&&(r=-1),t=t.slice(1),o=t[0]),t==="0")return 0;if(o==="0"){if(t[1]==="b")return r*parseInt(t.slice(2),2);if(t[1]==="x")return r*parseInt(t.slice(2),16);if(t[1]==="o")return r*parseInt(t.slice(2),8)}return r*parseInt(t,10)}function cr(e){return Object.prototype.toString.call(e)==="[object Number]"&&e%1===0&&!K.isNegativeZero(e)}var lr=new _("tag:yaml.org,2002:int",{kind:"scalar",resolve:ar,construct:sr,predicate:cr,represent:{binary:function(e){return e>=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),ur=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function pr(e){return!(e===null||!ur.test(e)||e[e.length-1]==="_")}function dr(e){var t,r;return t=e.replace(/_/g,"").toLowerCase(),r=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:r*parseFloat(t,10)}var yr=/^[-+]?[0-9]+e/;function fr(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(K.isNegativeZero(e))return"-0.0";return r=e.toString(10),yr.test(r)?r.replace("e",".e"):r}function mr(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||K.isNegativeZero(e))}var hr=new _("tag:yaml.org,2002:float",{kind:"scalar",resolve:pr,construct:dr,predicate:mr,represent:fr,defaultStyle:"lowercase"}),gr=Yt.extend({implicit:[Jt,rr,lr,hr]}),_r=gr,Ne=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),qe=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function br(e){return e===null?!1:Ne.exec(e)!==null||qe.exec(e)!==null}function kr(e){var t,r,o,i,a,s,c,p=0,u=null,m,l,h;if(t=Ne.exec(e),t===null&&(t=qe.exec(e)),t===null)throw new Error("Date resolve error");if(r=+t[1],o=+t[2]-1,i=+t[3],!t[4])return new Date(Date.UTC(r,o,i));if(a=+t[4],s=+t[5],c=+t[6],t[7]){for(p=t[7].slice(0,3);p.length<3;)p+="0";p=+p}return t[9]&&(m=+t[10],l=+(t[11]||0),u=(m*60+l)*6e4,t[9]==="-"&&(u=-u)),h=new Date(Date.UTC(r,o,i,a,s,c,p)),u&&h.setTime(h.getTime()-u),h}function wr(e){return e.toISOString()}var Sr=new _("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:br,construct:kr,instanceOf:Date,represent:wr});function Tr(e){return e==="<<"||e===null}var Er=new _("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Tr}),G=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
4
- \r`;function Cr(e){if(e===null)return!1;var t,r,o=0,i=e.length,a=G;for(r=0;r<i;r++)if(t=a.indexOf(e.charAt(r)),!(t>64)){if(t<0)return!1;o+=6}return o%8===0}function Ir(e){var t,r,o=e.replace(/[\r\n=]/g,""),i=o.length,a=G,s=0,c=[];for(t=0;t<i;t++)t%4===0&&t&&(c.push(s>>16&255),c.push(s>>8&255),c.push(s&255)),s=s<<6|a.indexOf(o.charAt(t));return r=i%4*6,r===0?(c.push(s>>16&255),c.push(s>>8&255),c.push(s&255)):r===18?(c.push(s>>10&255),c.push(s>>2&255)):r===12&&c.push(s>>4&255),new Uint8Array(c)}function vr(e){var t="",r=0,o,i,a=e.length,s=G;for(o=0;o<a;o++)o%3===0&&o&&(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]),r=(r<<8)+e[o];return i=a%3,i===0?(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]):i===2?(t+=s[r>>10&63],t+=s[r>>4&63],t+=s[r<<2&63],t+=s[64]):i===1&&(t+=s[r>>2&63],t+=s[r<<4&63],t+=s[64],t+=s[64]),t}function xr(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var Ar=new _("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Cr,construct:Ir,predicate:xr,represent:vr}),Nr=Object.prototype.hasOwnProperty,qr=Object.prototype.toString;function Rr(e){if(e===null)return!0;var t=[],r,o,i,a,s,c=e;for(r=0,o=c.length;r<o;r+=1){if(i=c[r],s=!1,qr.call(i)!=="[object Object]")return!1;for(a in i)if(Nr.call(i,a))if(!s)s=!0;else return!1;if(!s)return!1;if(t.indexOf(a)===-1)t.push(a);else return!1}return!0}function Or(e){return e!==null?e:[]}var Lr=new _("tag:yaml.org,2002:omap",{kind:"sequence",resolve:Rr,construct:Or}),Dr=Object.prototype.toString;function Br(e){if(e===null)return!0;var t,r,o,i,a,s=e;for(a=new Array(s.length),t=0,r=s.length;t<r;t+=1){if(o=s[t],Dr.call(o)!=="[object Object]"||(i=Object.keys(o),i.length!==1))return!1;a[t]=[i[0],o[i[0]]]}return!0}function jr(e){if(e===null)return[];var t,r,o,i,a,s=e;for(a=new Array(s.length),t=0,r=s.length;t<r;t+=1)o=s[t],i=Object.keys(o),a[t]=[i[0],o[i[0]]];return a}var Vr=new _("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:Br,construct:jr}),$r=Object.prototype.hasOwnProperty;function zr(e){if(e===null)return!0;var t,r=e;for(t in r)if($r.call(r,t)&&r[t]!==null)return!1;return!0}function Ur(e){return e!==null?e:{}}var Fr=new _("tag:yaml.org,2002:set",{kind:"mapping",resolve:zr,construct:Ur});_r.extend({implicit:[Sr,Er],explicit:[Ar,Lr,Vr,Fr]});function Re(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?" ":e===110?`
5
- `:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"…":e===95?" ":e===76?"\u2028":e===80?"\u2029":""}for(var Pr=new Array(256),Hr=new Array(256),q=0;q<256;q++)Pr[q]=Re(q)?1:0,Hr[q]=Re(q);const Oe="24px",Kr=(e,t)=>{const r=e.__vccOpts||e;for(const[o,i]of t)r[o]=i;return r},Mr=e=>(n.pushScopeId("data-v-d5eb3109"),e=e(),n.popScopeId(),e),Gr=["aria-hidden"],Yr={key:0,"data-testid":"kui-icon-svg-title"},Zr=Mr(()=>n.createElementVNode("path",{d:"M5 22C4.45 22 3.97917 21.8042 3.5875 21.4125C3.19583 21.0208 3 20.55 3 20V6H5V20H16V22H5ZM9 18C8.45 18 7.97917 17.8042 7.5875 17.4125C7.19583 17.0208 7 16.55 7 16V4C7 3.45 7.19583 2.97917 7.5875 2.5875C7.97917 2.19583 8.45 2 9 2H18C18.55 2 19.0208 2.19583 19.4125 2.5875C19.8042 2.97917 20 3.45 20 4V16C20 16.55 19.8042 17.0208 19.4125 17.4125C19.0208 17.8042 18.55 18 18 18H9ZM9 16H18V4H9V16Z",fill:"currentColor"},null,-1)),Wr=n.defineComponent({__name:"CopyIcon",props:{title:{type:String,required:!1,default:""},color:{type:String,required:!1,default:"currentColor"},display:{type:String,required:!1,default:"block"},decorative:{type:Boolean,required:!1,default:!1},size:{type:[Number,String],required:!1,default:Oe,validator:e=>{if(typeof e=="number"&&e>0)return!0;if(typeof e=="string"){const t=String(e).replace(/px/gi,""),r=Number(t);if(r&&!isNaN(r)&&Number.isInteger(r)&&r>0)return!0}return!1}},as:{type:String,required:!1,default:"span"}},setup(e){const t=e,r=n.computed(()=>{if(typeof t.size=="number"&&t.size>0)return`${t.size}px`;if(typeof t.size=="string"){const i=String(t.size).replace(/px/gi,""),a=Number(i);if(a&&!isNaN(a)&&Number.isInteger(a)&&a>0)return`${a}px`}return Oe}),o=n.computed(()=>({boxSizing:"border-box",color:t.color,display:t.display,height:r.value,lineHeight:"0",width:r.value}));return(i,a)=>(n.openBlock(),n.createBlock(n.resolveDynamicComponent(e.as),{"aria-hidden":e.decorative?"true":void 0,class:"kui-icon copy-icon","data-testid":"kui-icon-wrapper-copy-icon",style:n.normalizeStyle(o.value)},{default:n.withCtx(()=>[(n.openBlock(),n.createElementBlock("svg",{"aria-hidden":e.decorative?"true":void 0,"data-testid":"kui-icon-svg-copy-icon",fill:"none",height:"100%",role:"img",viewBox:"0 0 24 24",width:"100%",xmlns:"http://www.w3.org/2000/svg"},[e.title?(n.openBlock(),n.createElementBlock("title",Yr,n.toDisplayString(e.title),1)):n.createCommentVNode("",!0),Zr],8,Gr))]),_:1},8,["aria-hidden","style"]))}}),Qr=Kr(Wr,[["__scopeId","data-v-d5eb3109"]]),Jr=[];for(let e=0;e<256;++e)Jr.push((e+256).toString(16).slice(1));typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const Xr={class:"kong-ui-public-entity-link","data-testid":"entity-link-parent"},en={key:0,class:"deleted-entity"},tn={key:1},rn=["onClick"],nn=n.defineComponent({__name:"EntityLink",props:{entityLinkData:{type:Object,required:!0},externalLink:{type:String,required:!1,default:""},newWindow:{type:Boolean,required:!1,default:!1},allowCopy:{type:Boolean,required:!1,default:!1}},setup(e){const t=e,r=n.ref(),{isTruncated:o}=Ie.useTruncationDetector(r),{i18n:{t:i}}=Ie.useI18n(),a=i("global.actions.copyId"),s=n.ref(a),c=n.computed(()=>t.entityLinkData.deleted??!1),p=n.computed(()=>{var l;return(l=t.entityLinkData.id)!=null&&l.toString().includes(":")?t.entityLinkData.id.toString().split(":")[1]:t.entityLinkData.id}),u=n.computed(()=>{var l;return`${(l=p.value)==null?void 0:l.toString().slice(0,5)} (deleted)`}),m=async l=>{await l(p.value||"")&&(s.value=i("global.actions.copyToClipboard"),setTimeout(()=>{s.value=a},1800))};return(l,h)=>{const y=n.resolveComponent("KTooltip"),S=n.resolveComponent("KExternalLink"),g=n.resolveComponent("KClipboardProvider");return n.openBlock(),n.createElementBlock("div",Xr,[c.value?(n.openBlock(),n.createElementBlock("div",en,n.toDisplayString(u.value),1)):p.value?p.value?(n.openBlock(),n.createBlock(S,{key:2,class:"entity-link","hide-icon":!e.newWindow,href:e.externalLink,target:e.newWindow?"_blank":"_self"},{default:n.withCtx(()=>[n.createVNode(y,{text:n.unref(o)&&e.entityLinkData.label||""},{default:n.withCtx(()=>[n.createElementVNode("span",{ref_key:"textContent",ref:r,class:"entity-link-label"},n.toDisplayString(e.entityLinkData.label),513)]),_:1},8,["text"])]),_:1},8,["hide-icon","href","target"])):n.createCommentVNode("",!0):(n.openBlock(),n.createElementBlock("div",tn,n.toDisplayString(" – "))),p.value&&e.allowCopy?(n.openBlock(),n.createBlock(y,{key:s.value,class:"copy-uuid-tooltip","max-width":"160",placement:"bottomEnd",text:s.value},{default:n.withCtx(()=>[n.createVNode(g,null,{default:n.withCtx(({copyToClipboard:C})=>[n.createElementVNode("span",{class:"entity-link-copy-id",onClick:n.withModifiers(R=>m(C),["stop"])},[n.createVNode(n.unref(Qr),{class:"copy-icon",color:n.unref(It),"data-testid":"copy-id",size:n.unref(vt)},null,8,["color","size"])],8,rn)]),_:1})]),_:1},8,["text"])):n.createCommentVNode("",!0)])}}}),on=Ct(nn,[["__scopeId","data-v-be5bda4c"]]),an=n.defineComponent({__name:"TopNTableRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){const t=e,r=o=>{var i;if((i=t.chartOptions)!=null&&i.entityLink)if(o.id.includes(":")){const[a,s]=o.id.split(":");return t.chartOptions.entityLink.replace(J,a).replace(P,s)}else return t.chartOptions.entityLink.replace(P,o.id);return""};return(o,i)=>(n.openBlock(),n.createBlock($,{context:o.context,query:o.query,"query-ready":o.queryReady},{default:n.withCtx(({data:a})=>[n.createVNode(n.unref(E.TopNTable),{data:a,description:o.chartOptions.description,"synthetics-data-key":o.chartOptions.syntheticsDataKey,title:o.chartOptions.chartTitle||""},n.createSlots({_:2},[t.chartOptions.entityLink?{name:"name",fn:n.withCtx(({record:s})=>[n.createVNode(n.unref(on),{"entity-link-data":{id:s.id,label:s.name,deleted:s.deleted},"external-link":r(s)},null,8,["entity-link-data","external-link"])]),key:"0"}:void 0]),1032,["data","description","synthetics-data-key","title"])]),_:1},8,["context","query","query-ready"]))}}),sn={class:"tile-boundary"},cn=I(n.defineComponent({__name:"DashboardTile",props:{definition:{},context:{},height:{default:170},queryReady:{type:Boolean}},setup(e){n.useCssVars(a=>({58871060:`${a.height}px`}));const t=parseInt(me,10),r=e,o={[b.TimeseriesLine]:Ze,[b.HorizontalBar]:fe,[b.VerticalBar]:fe,[b.Gauge]:Me,[b.GoldenSignals]:Qe,[b.TopN]:an,[b.Slottable]:void 0},i=n.computed(()=>{const a=o[r.definition.chart.type];return a&&{component:a,rendererProps:{query:r.definition.query,context:r.context,queryReady:r.queryReady,chartOptions:r.definition.chart,height:r.height-t*2}}});return(a,s)=>(n.openBlock(),n.createElementBlock("div",sn,[i.value?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(i.value.component),n.normalizeProps(n.mergeProps({key:0},i.value.rendererProps)),null,16)):n.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-69b5e552"]]),ln=(e,t,r)=>{const o=new Map;r.forEach(a=>{const s=a.layout.position.row,c=o.get(s),p=a.layout.size.rows===1&&!!a.layout.size.fitToContent;c===void 0?o.set(s,p):o.set(s,c&&p)});const i=[];for(let a=0;a<e;a++)o.get(a)?i.push("auto"):i.push(`${t}px`);return i},Le=I(n.defineComponent({__name:"GridLayout",props:{gridSize:{type:Object,required:!0},tileHeight:{type:Number,required:!1,default:()=>170},tiles:{type:Array,required:!0}},setup(e){n.useCssVars(c=>({"13009fee":e.gridSize.cols,c934c2be:a.value}));const t=e,r=n.ref(null),o=n.ref(0),i=new ResizeObserver(c=>{o.value=c[0].contentRect.width});n.onMounted(()=>{r.value&&i.observe(r.value)}),n.onUnmounted(()=>{r.value&&i.unobserve(r.value)});const a=n.computed(()=>{var p;return ln((p=t.gridSize)==null?void 0:p.rows,t.tileHeight,t.tiles).join(" ")}),s=n.computed(()=>t.tiles.map((c,p)=>({key:`tile-${p}`,tile:c,style:{"grid-column-start":c.layout.position.col+1,"grid-column-end":c.layout.position.col+1+c.layout.size.cols,"grid-row-start":c.layout.position.row+1,"grid-row-end":c.layout.position.row+1+c.layout.size.rows}})));return(c,p)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"gridContainer",ref:r,class:"kong-ui-public-grid-layout"},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(s.value,u=>(n.openBlock(),n.createElementBlock("div",{key:u.key,class:n.normalizeClass(["grid-cell",{"empty-cell":!u.tile}]),style:n.normalizeStyle(u.style)},[n.renderSlot(c.$slots,"tile",{style:n.normalizeStyle(u.style),tile:u.tile},void 0,!0)],6))),128))],512))}}),[["__scopeId","data-v-04f865ab"]]),un={class:"kong-ui-public-dashboard-renderer"},pn={key:0,class:"tile-container"},dn=I(n.defineComponent({__name:"DashboardRenderer",props:{context:{},config:{}},setup(e){const t=e,{i18n:r}=ye.useI18n(),o=n.inject(F);o||(console.warn("Analytics dashboards require a query bridge supplied via provide / inject."),console.warn("Please ensure your application has a query bridge provided under the key 'analytics-query-provider', as described in"),console.warn("https://github.com/Kong/public-ui-components/blob/main/packages/analytics/dashboard-renderer/README.md#requirements"));const i=Ve.useAnalyticsConfigStore(),a=n.computed(()=>t.context.timeSpec?t.context.timeSpec:{type:"relative",time_range:i.defaultQueryTimeForOrg}),s=n.computed(()=>!!t.context.timeSpec||!i.loading),c=n.computed(()=>t.config.tiles.map((u,m)=>{var h;let l=u.definition;if("description"in l.chart){const y=(h=l.chart.description)==null?void 0:h.replace(X,()=>{const g=`renderer.trendRange.${a.value.type==="absolute"?"custom":a.value.time_range}`;return r.te(g)?r.t(g):""});l={...l,chart:{...l.chart,description:y}}}return{layout:u.layout,meta:l,id:m}})),p=n.computed(()=>{let{tz:u,refreshInterval:m}=t.context;return u||(u=new Intl.DateTimeFormat().resolvedOptions().timeZone),m===void 0&&(m=3e4),{...t.context,tz:u,timeSpec:a.value,refreshInterval:m}});return(u,m)=>{const l=n.resolveComponent("KAlert");return n.openBlock(),n.createElementBlock("div",un,[n.unref(o)?(n.openBlock(),n.createBlock(Le,{key:1,"grid-size":u.config.gridSize,"tile-height":u.config.tileHeight,tiles:c.value},{tile:n.withCtx(({tile:h})=>[h.meta.chart.type===n.unref(b).Slottable?(n.openBlock(),n.createElementBlock("div",pn,[n.renderSlot(u.$slots,h.meta.chart.id,{},void 0,!0)])):(n.openBlock(),n.createBlock(cn,{key:1,class:"tile-container",context:p.value,definition:h.meta,height:h.layout.size.rows*(u.config.tileHeight||n.unref(170))+parseInt(n.unref(me),10),"query-ready":s.value},null,8,["context","definition","height","query-ready"]))]),_:3},8,["grid-size","tile-height","tiles"])):(n.openBlock(),n.createBlock(l,{key:0,appearance:"danger"},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(n.unref(r).t("renderer.noQueryBridge")),1)]),_:1}))])}}}),[["__scopeId","data-v-2dd03268"]]);d.CP_ID_TOKEN=J,d.ChartTypes=b,d.DEFAULT_TILE_HEIGHT=170,d.DEFAULT_TILE_REFRESH_INTERVAL_MS=3e4,d.DashboardRenderer=dn,d.ENTITY_ID_TOKEN=P,d.GridLayout=Le,d.INJECT_QUERY_PROVIDER=F,d.TIMEFRAME_TOKEN=X,d.barChartSchema=ne,d.dashboardConfigSchema=$e,d.exploreV4QuerySchema=ce,d.gaugeChartSchema=oe,d.metricCardSchema=se,d.slottableSchema=re,d.tileConfigSchema=pe,d.tileDefinitionSchema=le,d.tileLayoutSchema=ue,d.timeseriesChartSchema=ie,d.topNTableSchema=ae,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
4
+ \r`;function Cr(e){if(e===null)return!1;var t,r,o=0,i=e.length,a=G;for(r=0;r<i;r++)if(t=a.indexOf(e.charAt(r)),!(t>64)){if(t<0)return!1;o+=6}return o%8===0}function Ir(e){var t,r,o=e.replace(/[\r\n=]/g,""),i=o.length,a=G,s=0,c=[];for(t=0;t<i;t++)t%4===0&&t&&(c.push(s>>16&255),c.push(s>>8&255),c.push(s&255)),s=s<<6|a.indexOf(o.charAt(t));return r=i%4*6,r===0?(c.push(s>>16&255),c.push(s>>8&255),c.push(s&255)):r===18?(c.push(s>>10&255),c.push(s>>2&255)):r===12&&c.push(s>>4&255),new Uint8Array(c)}function vr(e){var t="",r=0,o,i,a=e.length,s=G;for(o=0;o<a;o++)o%3===0&&o&&(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]),r=(r<<8)+e[o];return i=a%3,i===0?(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]):i===2?(t+=s[r>>10&63],t+=s[r>>4&63],t+=s[r<<2&63],t+=s[64]):i===1&&(t+=s[r>>2&63],t+=s[r<<4&63],t+=s[64],t+=s[64]),t}function xr(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var Ar=new _("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Cr,construct:Ir,predicate:xr,represent:vr}),Nr=Object.prototype.hasOwnProperty,qr=Object.prototype.toString;function Rr(e){if(e===null)return!0;var t=[],r,o,i,a,s,c=e;for(r=0,o=c.length;r<o;r+=1){if(i=c[r],s=!1,qr.call(i)!=="[object Object]")return!1;for(a in i)if(Nr.call(i,a))if(!s)s=!0;else return!1;if(!s)return!1;if(t.indexOf(a)===-1)t.push(a);else return!1}return!0}function Lr(e){return e!==null?e:[]}var Or=new _("tag:yaml.org,2002:omap",{kind:"sequence",resolve:Rr,construct:Lr}),Dr=Object.prototype.toString;function Br(e){if(e===null)return!0;var t,r,o,i,a,s=e;for(a=new Array(s.length),t=0,r=s.length;t<r;t+=1){if(o=s[t],Dr.call(o)!=="[object Object]"||(i=Object.keys(o),i.length!==1))return!1;a[t]=[i[0],o[i[0]]]}return!0}function jr(e){if(e===null)return[];var t,r,o,i,a,s=e;for(a=new Array(s.length),t=0,r=s.length;t<r;t+=1)o=s[t],i=Object.keys(o),a[t]=[i[0],o[i[0]]];return a}var Vr=new _("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:Br,construct:jr}),$r=Object.prototype.hasOwnProperty;function zr(e){if(e===null)return!0;var t,r=e;for(t in r)if($r.call(r,t)&&r[t]!==null)return!1;return!0}function Ur(e){return e!==null?e:{}}var Fr=new _("tag:yaml.org,2002:set",{kind:"mapping",resolve:zr,construct:Ur});_r.extend({implicit:[Sr,Er],explicit:[Ar,Or,Vr,Fr]});function Re(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?" ":e===110?`
5
+ `:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"…":e===95?" ":e===76?"\u2028":e===80?"\u2029":""}for(var Pr=new Array(256),Hr=new Array(256),q=0;q<256;q++)Pr[q]=Re(q)?1:0,Hr[q]=Re(q);const Le="24px",Kr=(e,t)=>{const r=e.__vccOpts||e;for(const[o,i]of t)r[o]=i;return r},Mr=e=>(n.pushScopeId("data-v-a3352b0f"),e=e(),n.popScopeId(),e),Gr=["aria-hidden"],Yr={key:0,"data-testid":"kui-icon-svg-title"},Zr=Mr(()=>n.createElementVNode("path",{d:"M5 22C4.45 22 3.97917 21.8042 3.5875 21.4125C3.19583 21.0208 3 20.55 3 20V6H5V20H16V22H5ZM9 18C8.45 18 7.97917 17.8042 7.5875 17.4125C7.19583 17.0208 7 16.55 7 16V4C7 3.45 7.19583 2.97917 7.5875 2.5875C7.97917 2.19583 8.45 2 9 2H18C18.55 2 19.0208 2.19583 19.4125 2.5875C19.8042 2.97917 20 3.45 20 4V16C20 16.55 19.8042 17.0208 19.4125 17.4125C19.0208 17.8042 18.55 18 18 18H9ZM9 16H18V4H9V16Z",fill:"currentColor"},null,-1)),Wr=n.defineComponent({__name:"CopyIcon",props:{title:{type:String,required:!1,default:""},color:{type:String,required:!1,default:"currentColor"},display:{type:String,required:!1,default:"block"},decorative:{type:Boolean,required:!1,default:!1},size:{type:[Number,String],required:!1,default:Le,validator:e=>{if(typeof e=="number"&&e>0)return!0;if(typeof e=="string"){const t=String(e).replace(/px/gi,""),r=Number(t);if(r&&!isNaN(r)&&Number.isInteger(r)&&r>0)return!0}return!1}},as:{type:String,required:!1,default:"span"}},setup(e){const t=e,r=n.computed(()=>{if(typeof t.size=="number"&&t.size>0)return`${t.size}px`;if(typeof t.size=="string"){const i=String(t.size).replace(/px/gi,""),a=Number(i);if(a&&!isNaN(a)&&Number.isInteger(a)&&a>0)return`${a}px`}return Le}),o=n.computed(()=>({boxSizing:"border-box",color:t.color,display:t.display,height:r.value,lineHeight:"0",width:r.value}));return(i,a)=>(n.openBlock(),n.createBlock(n.resolveDynamicComponent(e.as),{"aria-hidden":e.decorative?"true":void 0,class:"kui-icon copy-icon","data-testid":"kui-icon-wrapper-copy-icon",style:n.normalizeStyle(o.value)},{default:n.withCtx(()=>[(n.openBlock(),n.createElementBlock("svg",{"aria-hidden":e.decorative?"true":void 0,"data-testid":"kui-icon-svg-copy-icon",fill:"none",height:"100%",role:"img",viewBox:"0 0 24 24",width:"100%",xmlns:"http://www.w3.org/2000/svg"},[e.title?(n.openBlock(),n.createElementBlock("title",Yr,n.toDisplayString(e.title),1)):n.createCommentVNode("",!0),Zr],8,Gr))]),_:1},8,["aria-hidden","style"]))}}),Qr=Kr(Wr,[["__scopeId","data-v-a3352b0f"]]),Jr=[];for(let e=0;e<256;++e)Jr.push((e+256).toString(16).slice(1));typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const Xr={class:"kong-ui-public-entity-link","data-testid":"entity-link-parent"},en={key:0,class:"deleted-entity"},tn={key:1},rn=["onClick"],nn=n.defineComponent({__name:"EntityLink",props:{entityLinkData:{type:Object,required:!0},externalLink:{type:String,required:!1,default:""},newWindow:{type:Boolean,required:!1,default:!1},allowCopy:{type:Boolean,required:!1,default:!1}},setup(e){const t=e,r=n.ref(),{isTruncated:o}=Ie.useTruncationDetector(r),{i18n:{t:i}}=Ie.useI18n(),a=i("global.actions.copyId"),s=n.ref(a),c=n.computed(()=>t.entityLinkData.deleted??!1),p=n.computed(()=>{var l;return(l=t.entityLinkData.id)!=null&&l.toString().includes(":")?t.entityLinkData.id.toString().split(":")[1]:t.entityLinkData.id}),u=n.computed(()=>{var l;return`${(l=p.value)==null?void 0:l.toString().slice(0,5)} (deleted)`}),m=async l=>{await l(p.value||"")&&(s.value=i("global.actions.copyToClipboard"),setTimeout(()=>{s.value=a},1800))};return(l,h)=>{const y=n.resolveComponent("KTooltip"),S=n.resolveComponent("KExternalLink"),g=n.resolveComponent("KClipboardProvider");return n.openBlock(),n.createElementBlock("div",Xr,[c.value?(n.openBlock(),n.createElementBlock("div",en,n.toDisplayString(u.value),1)):p.value?p.value?(n.openBlock(),n.createBlock(S,{key:2,class:"entity-link","hide-icon":!e.newWindow,href:e.externalLink,target:e.newWindow?"_blank":"_self"},{default:n.withCtx(()=>[n.createVNode(y,{text:n.unref(o)&&e.entityLinkData.label||""},{default:n.withCtx(()=>[n.createElementVNode("span",{ref_key:"textContent",ref:r,class:"entity-link-label"},n.toDisplayString(e.entityLinkData.label),513)]),_:1},8,["text"])]),_:1},8,["hide-icon","href","target"])):n.createCommentVNode("",!0):(n.openBlock(),n.createElementBlock("div",tn,n.toDisplayString(" – "))),p.value&&e.allowCopy?(n.openBlock(),n.createBlock(y,{key:s.value,class:"copy-uuid-tooltip","max-width":"160",placement:"bottomEnd",text:s.value},{default:n.withCtx(()=>[n.createVNode(g,null,{default:n.withCtx(({copyToClipboard:C})=>[n.createElementVNode("span",{class:"entity-link-copy-id",onClick:n.withModifiers(R=>m(C),["stop"])},[n.createVNode(n.unref(Qr),{class:"copy-icon",color:n.unref(It),"data-testid":"copy-id",size:n.unref(vt)},null,8,["color","size"])],8,rn)]),_:1})]),_:1},8,["text"])):n.createCommentVNode("",!0)])}}}),on=Ct(nn,[["__scopeId","data-v-be5bda4c"]]),an=n.defineComponent({__name:"TopNTableRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){const t=e,r=o=>{var i;if((i=t.chartOptions)!=null&&i.entityLink)if(o.id.includes(":")){const[a,s]=o.id.split(":");return t.chartOptions.entityLink.replace(J,a).replace(P,s)}else return t.chartOptions.entityLink.replace(P,o.id);return""};return(o,i)=>(n.openBlock(),n.createBlock($,{context:o.context,query:o.query,"query-ready":o.queryReady},{default:n.withCtx(({data:a})=>[n.createVNode(n.unref(E.TopNTable),{data:a,description:o.chartOptions.description,"synthetics-data-key":o.chartOptions.syntheticsDataKey,title:o.chartOptions.chartTitle||""},n.createSlots({_:2},[t.chartOptions.entityLink?{name:"name",fn:n.withCtx(({record:s})=>[n.createVNode(n.unref(on),{"entity-link-data":{id:s.id,label:s.name,deleted:s.deleted},"external-link":r(s)},null,8,["entity-link-data","external-link"])]),key:"0"}:void 0]),1032,["data","description","synthetics-data-key","title"])]),_:1},8,["context","query","query-ready"]))}}),sn={class:"tile-boundary"},cn=I(n.defineComponent({__name:"DashboardTile",props:{definition:{},context:{},height:{default:170},queryReady:{type:Boolean}},setup(e){n.useCssVars(a=>({58871060:`${a.height}px`}));const t=parseInt(me,10),r=e,o={[b.TimeseriesLine]:Ze,[b.HorizontalBar]:fe,[b.VerticalBar]:fe,[b.Gauge]:Me,[b.GoldenSignals]:Qe,[b.TopN]:an,[b.Slottable]:void 0},i=n.computed(()=>{const a=o[r.definition.chart.type];return a&&{component:a,rendererProps:{query:r.definition.query,context:r.context,queryReady:r.queryReady,chartOptions:r.definition.chart,height:r.height-t*2}}});return(a,s)=>(n.openBlock(),n.createElementBlock("div",sn,[i.value?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(i.value.component),n.normalizeProps(n.mergeProps({key:0},i.value.rendererProps)),null,16)):n.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-69b5e552"]]),ln=(e,t,r)=>{const o=new Map;r.forEach(a=>{const s=a.layout.position.row,c=o.get(s),p=a.layout.size.rows===1&&!!a.layout.size.fitToContent;c===void 0?o.set(s,p):o.set(s,c&&p)});const i=[];for(let a=0;a<e;a++)o.get(a)?i.push("auto"):i.push(`${t}px`);return i},Oe=I(n.defineComponent({__name:"GridLayout",props:{gridSize:{type:Object,required:!0},tileHeight:{type:Number,required:!1,default:()=>170},tiles:{type:Array,required:!0}},setup(e){n.useCssVars(c=>({"13009fee":e.gridSize.cols,c934c2be:a.value}));const t=e,r=n.ref(null),o=n.ref(0),i=new ResizeObserver(c=>{o.value=c[0].contentRect.width});n.onMounted(()=>{r.value&&i.observe(r.value)}),n.onUnmounted(()=>{r.value&&i.unobserve(r.value)});const a=n.computed(()=>{var p;return ln((p=t.gridSize)==null?void 0:p.rows,t.tileHeight,t.tiles).join(" ")}),s=n.computed(()=>t.tiles.map((c,p)=>({key:`tile-${p}`,tile:c,style:{"grid-column-start":c.layout.position.col+1,"grid-column-end":c.layout.position.col+1+c.layout.size.cols,"grid-row-start":c.layout.position.row+1,"grid-row-end":c.layout.position.row+1+c.layout.size.rows}})));return(c,p)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"gridContainer",ref:r,class:"kong-ui-public-grid-layout"},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(s.value,u=>(n.openBlock(),n.createElementBlock("div",{key:u.key,class:n.normalizeClass(["grid-cell",{"empty-cell":!u.tile}]),style:n.normalizeStyle(u.style)},[n.renderSlot(c.$slots,"tile",{style:n.normalizeStyle(u.style),tile:u.tile},void 0,!0)],6))),128))],512))}}),[["__scopeId","data-v-04f865ab"]]),un={class:"kong-ui-public-dashboard-renderer"},pn={key:0,class:"tile-container"},dn=I(n.defineComponent({__name:"DashboardRenderer",props:{context:{},config:{}},setup(e){const t=e,{i18n:r}=ye.useI18n(),o=n.inject(F);o||(console.warn("Analytics dashboards require a query bridge supplied via provide / inject."),console.warn("Please ensure your application has a query bridge provided under the key 'analytics-query-provider', as described in"),console.warn("https://github.com/Kong/public-ui-components/blob/main/packages/analytics/dashboard-renderer/README.md#requirements"));const i=Ve.useAnalyticsConfigStore(),a=n.computed(()=>t.context.timeSpec?t.context.timeSpec:{type:"relative",time_range:i.defaultQueryTimeForOrg}),s=n.computed(()=>!!t.context.timeSpec||!i.loading),c=n.computed(()=>t.config.tiles.map((u,m)=>{var h;let l=u.definition;if("description"in l.chart){const y=(h=l.chart.description)==null?void 0:h.replace(X,()=>{const g=`renderer.trendRange.${a.value.type==="absolute"?"custom":a.value.time_range}`;return r.te(g)?r.t(g):""});l={...l,chart:{...l.chart,description:y}}}return{layout:u.layout,meta:l,id:m}})),p=n.computed(()=>{let{tz:u,refreshInterval:m}=t.context;return u||(u=new Intl.DateTimeFormat().resolvedOptions().timeZone),m===void 0&&(m=3e4),{...t.context,tz:u,timeSpec:a.value,refreshInterval:m}});return(u,m)=>{const l=n.resolveComponent("KAlert");return n.openBlock(),n.createElementBlock("div",un,[n.unref(o)?(n.openBlock(),n.createBlock(Oe,{key:1,"grid-size":u.config.gridSize,"tile-height":u.config.tileHeight,tiles:c.value},{tile:n.withCtx(({tile:h})=>[h.meta.chart.type===n.unref(b).Slottable?(n.openBlock(),n.createElementBlock("div",pn,[n.renderSlot(u.$slots,h.meta.chart.id,{},void 0,!0)])):(n.openBlock(),n.createBlock(cn,{key:1,class:"tile-container",context:p.value,definition:h.meta,height:h.layout.size.rows*(u.config.tileHeight||n.unref(170))+parseInt(n.unref(me),10),"query-ready":s.value},null,8,["context","definition","height","query-ready"]))]),_:3},8,["grid-size","tile-height","tiles"])):(n.openBlock(),n.createBlock(l,{key:0,appearance:"danger"},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(n.unref(r).t("renderer.noQueryBridge")),1)]),_:1}))])}}}),[["__scopeId","data-v-2dd03268"]]);d.CP_ID_TOKEN=J,d.ChartTypes=b,d.DEFAULT_TILE_HEIGHT=170,d.DEFAULT_TILE_REFRESH_INTERVAL_MS=3e4,d.DashboardRenderer=dn,d.ENTITY_ID_TOKEN=P,d.GridLayout=Oe,d.INJECT_QUERY_PROVIDER=F,d.TIMEFRAME_TOKEN=X,d.barChartSchema=ne,d.dashboardConfigSchema=$e,d.exploreV4QuerySchema=ce,d.gaugeChartSchema=oe,d.metricCardSchema=se,d.slottableSchema=re,d.tileConfigSchema=pe,d.tileDefinitionSchema=le,d.tileLayoutSchema=ue,d.timeseriesChartSchema=ie,d.topNTableSchema=ae,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kong-ui-public/dashboard-renderer",
3
- "version": "0.22.3",
3
+ "version": "0.22.4",
4
4
  "type": "module",
5
5
  "main": "./dist/dashboard-renderer.umd.js",
6
6
  "module": "./dist/dashboard-renderer.es.js",
@@ -21,18 +21,18 @@
21
21
  "access": "public"
22
22
  },
23
23
  "devDependencies": {
24
- "@kong/design-tokens": "1.12.12",
24
+ "@kong/design-tokens": "1.13.2",
25
25
  "@kong/kongponents": "9.0.0-alpha.162",
26
26
  "json-schema-to-ts": "^3.0.1",
27
27
  "pinia": ">= 2.1.7 < 3",
28
28
  "swrv": "^1.0.4",
29
29
  "vue": "^3.4.27",
30
- "@kong-ui-public/analytics-chart": "^4.1.2",
31
- "@kong-ui-public/analytics-config-store": "^0.6.0",
32
- "@kong-ui-public/analytics-metric-provider": "^7.2.2",
33
- "@kong-ui-public/analytics-utilities": "^3.5.0",
30
+ "@kong-ui-public/analytics-config-store": "^0.6.1",
31
+ "@kong-ui-public/analytics-metric-provider": "^7.2.3",
32
+ "@kong-ui-public/analytics-chart": "^4.1.3",
33
+ "@kong-ui-public/analytics-utilities": "^3.5.1",
34
34
  "@kong-ui-public/i18n": "^2.2.1",
35
- "@kong-ui-public/sandbox-layout": "^2.1.2"
35
+ "@kong-ui-public/sandbox-layout": "^2.1.3"
36
36
  },
37
37
  "repository": {
38
38
  "type": "git",
@@ -55,16 +55,16 @@
55
55
  "@kong/kongponents": "^9.0.0-alpha.162",
56
56
  "swrv": "^1.0.4",
57
57
  "vue": ">= 3.3.13 < 4",
58
- "@kong-ui-public/analytics-chart": "^4.1.2",
59
- "@kong-ui-public/analytics-metric-provider": "^7.2.2",
60
- "@kong-ui-public/analytics-config-store": "^0.6.0",
61
- "@kong-ui-public/i18n": "^2.2.1",
62
- "@kong-ui-public/analytics-utilities": "^3.5.0"
58
+ "@kong-ui-public/analytics-chart": "^4.1.3",
59
+ "@kong-ui-public/analytics-config-store": "^0.6.1",
60
+ "@kong-ui-public/analytics-metric-provider": "^7.2.3",
61
+ "@kong-ui-public/analytics-utilities": "^3.5.1",
62
+ "@kong-ui-public/i18n": "^2.2.1"
63
63
  },
64
64
  "dependencies": {
65
65
  "ajv": "^8.12.0",
66
- "@kong-ui-public/core": "^1.7.1",
67
- "@kong-ui-public/entities-shared": "^3.3.3"
66
+ "@kong-ui-public/core": "^1.7.2",
67
+ "@kong-ui-public/entities-shared": "^3.3.4"
68
68
  },
69
69
  "scripts": {
70
70
  "dev": "cross-env USE_SANDBOX=true vite",