@kong-ui-public/dashboard-renderer 8.36.2-pr.3896.2e2d9b289.0 → 8.36.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as v, ref as p, computed as o, openBlock as q, createBlock as C, withCtx as g, createVNode as x, unref as _ } from "vue";
2
- import { _ as M } from "./index-C6U5g6_x.js";
2
+ import { _ as M } from "./index-tv12VMIr.js";
3
3
  import { exploreResultToCountryMetrics as E, AnalyticsGeoMap as O } from "@kong-ui-public/analytics-geo-map";
4
4
  import { COUNTRIES as R } from "@kong-ui-public/analytics-utilities";
5
5
  const U = /* @__PURE__ */ v({
@@ -1,4 +1,4 @@
1
- import { C as s, a as R, D as _, b as T, c as e, d as i, e as D, E as I, F as L, f as N, G as o, I as r, g as A, T as O, h as S, i as n, j as C, l as F } from "./index-C6U5g6_x.js";
1
+ import { C as s, a as R, D as _, b as T, c as e, d as i, e as D, E as I, F as L, f as N, G as o, I as r, g as A, T as O, h as S, i as n, j as C, l as F } from "./index-tv12VMIr.js";
2
2
  export {
3
3
  s as CP_ID_TOKEN,
4
4
  R as CsvExportModal,
@@ -9,6 +9,6 @@
9
9
  `,te='"',de=te+te,he=!1,X=null,ne=!1,L=((()=>{if(typeof m=="object"){if(typeof m.delimiter!="string"||d.BAD_DELIMITERS.filter(function(T){return m.delimiter.indexOf(T)!==-1}).length||(R=m.delimiter),typeof m.quotes!="boolean"&&typeof m.quotes!="function"&&!Array.isArray(m.quotes)||(_=m.quotes),typeof m.skipEmptyLines!="boolean"&&typeof m.skipEmptyLines!="string"||(he=m.skipEmptyLines),typeof m.newline=="string"&&(A=m.newline),typeof m.quoteChar=="string"&&(te=m.quoteChar,de=te+te),typeof m.header=="boolean"&&(k=m.header),Array.isArray(m.columns)){if(m.columns.length===0)throw new Error("Option columns is empty");X=m.columns}m.escapeChar!==void 0&&(de=m.escapeChar+te),m.escapeFormulae instanceof RegExp?ne=m.escapeFormulae:typeof m.escapeFormulae=="boolean"&&m.escapeFormulae&&(ne=/^[=+\-@\t\r].*$/)}})(),new RegExp(b(te),"g"));if(typeof p=="string"&&(p=JSON.parse(p)),Array.isArray(p)){if(!p.length||Array.isArray(p[0]))return J(null,p,he);if(typeof p[0]=="object")return J(X||Object.keys(p[0]),p,he)}else if(typeof p=="object")return typeof p.data=="string"&&(p.data=JSON.parse(p.data)),Array.isArray(p.data)&&(p.fields||(p.fields=p.meta&&p.meta.fields||X),p.fields||(p.fields=Array.isArray(p.data[0])?p.fields:typeof p.data[0]=="object"?Object.keys(p.data[0]):[]),Array.isArray(p.data[0])||typeof p.data[0]=="object"||(p.data=[p.data])),J(p.fields||[],p.data||[],he);throw new Error("Unable to serialize unrecognized input");function J(T,x,Y){var G="",re=(typeof T=="string"&&(T=JSON.parse(T)),typeof x=="string"&&(x=JSON.parse(x)),Array.isArray(T)&&0<T.length),ce=!Array.isArray(x[0]);if(re&&k){for(var F=0;F<T.length;F++)0<F&&(G+=R),G+=v(T[F],F);0<x.length&&(G+=A)}for(var $=0;$<x.length;$++){var ie=(re?T:x[$]).length,q=!1,se=re?Object.keys(x[$]).length===0:x[$].length===0;if(Y&&!re&&(q=Y==="greedy"?x[$].join("").trim()==="":x[$].length===1&&x[$][0].length===0),Y==="greedy"&&re){for(var oe=[],V=0;V<ie;V++){var Z=ce?T[V]:V;oe.push(x[$][Z])}q=oe.join("").trim()===""}if(!q){for(var U=0;U<ie;U++){0<U&&!se&&(G+=R);var _e=re&&ce?T[U]:U;G+=v(x[$][_e],U)}$<x.length-1&&(!Y||0<ie&&!se)&&(G+=A)}}return G}function v(T,x){var Y,G,re;return T==null?"":T.constructor===Date?isNaN(T.getTime())?"":T.toISOString():(re=!1,ne&&typeof T=="string"&&ne.test(T)&&(T="'"+T,re=!0),G=(Y=T.toString()).replace(L,de),(re=re||_===!0||typeof _=="function"&&_(T,x)||Array.isArray(_)&&_[x]||((ce,F)=>{for(var $=0;$<F.length;$++)if(-1<ce.indexOf(F[$]))return!0;return!1})(G,d.BAD_DELIMITERS)||-1<G.indexOf(R)||-1<Y.indexOf(te)||G.charAt(0)===" "||G.charAt(G.length-1)===" ")?te+G+te:G)}},d.RECORD_SEP="",d.UNIT_SEP="",d.BYTE_ORDER_MARK="\uFEFF",d.BAD_DELIMITERS=["\r",`
10
10
  `,'"',d.BYTE_ORDER_MARK],d.WORKERS_SUPPORTED=!r&&!!i.Worker,d.NODE_STREAM_INPUT=1,d.LocalChunkSize=10485760,d.RemoteChunkSize=5242880,d.DefaultDelimiter=",",d.Parser=N,d.ParserHandle=E,d.NetworkStreamer=h,d.FileStreamer=f,d.StringStreamer=g,d.ReadableStreamStreamer=w,o&&(i.onmessage=function(p){p=p.data,d.WORKER_ID===void 0&&p&&(d.WORKER_ID=p.workerId),typeof p.input=="string"?i.postMessage({workerId:d.WORKER_ID,results:d.parse(p.input,p.config),finished:!0}):(i.File&&p.input instanceof File||p.input instanceof Object)&&(p=d.parse(p.input,p.config))&&i.postMessage({workerId:d.WORKER_ID,results:p,finished:!0})}),(h.prototype=Object.create(u.prototype)).constructor=h,(f.prototype=Object.create(u.prototype)).constructor=f,(g.prototype=Object.create(g.prototype)).constructor=g,(w.prototype=Object.create(u.prototype)).constructor=w,d})})(at)),at.exports}var Kr=jr(),Ve=(n=>(n.String="string",n.Number="number",n.Boolean="boolean",n.Object="object",n.Undefined="undefined",n))(Ve||{});const Qr=["id"],Xr=s.defineComponent({__name:"VueJsonCsv",props:{data:{type:Array,required:!0},fields:{type:Array,required:!1,default:null},labels:{type:Object,required:!1,default:null},filename:{type:String,default:"report-data.csv"},delimiter:{type:String,default:",",required:!1},separatorExcel:{type:Boolean,default:!1},encoding:{type:String,default:"utf-8"},testing:{type:Boolean,required:!1,default:!1}},emits:["export-started","export-finished"],setup(n,{emit:e}){const t=e,i=n,r=s.computed(()=>`export_${new Date().getTime()}`),o=s.computed(()=>{const u=d();return u.length?u:null}),a=()=>{const u=i.labels;if(typeof i.fields!==Ve.Object)throw new Error("Labels needs to be a object containing key / value pairs.");return u!==null&&typeof u===Ve.Object?h=>Object.fromEntries(Object.entries(h).map(([f,g])=>[u[f]||f,g])):h=>h},l=()=>{const u=i.fields;if(typeof i.fields!==Ve.Object&&!Array.isArray(u))throw new Error("Fields needs to be an array of strings.");return Array.isArray(u)?h=>Object.fromEntries(u.filter(f=>f in h).map(f=>[f,h[f]])):h=>h},d=()=>{if(typeof i.fields===Ve.Undefined&&typeof i.labels===Ve.Undefined)return i.data;const u=a(),h=l();return i.data.map(f=>u(h(f)))},c=()=>{if(!o.value){console.warn("No data to export");return}t("export-started",o.value);let u=Kr.unparse(o.value,Object.assign({delimiter:i.delimiter,encoding:i.encoding}));if(i.separatorExcel&&(u="SEP="+i.delimiter+`\r
11
11
  `+u),i.encoding==="utf-8"&&(u="\uFEFF"+u),t("export-finished",i.filename),!i.testing){const h=new Blob([u],{type:"text/csv;charset="+i.encoding});Yr.saveAs(h,i.filename)}};return(u,h)=>(s.openBlock(),s.createElementBlock("div",{id:r.value,"data-testid":"export-csv",onClick:c},[s.renderSlot(u.$slots,"default",{},()=>[s.createTextVNode("Download "+s.toDisplayString(n.filename),1)])],8,Qr))}}),Zr=s.defineComponent({__name:"DownloadCsv",props:{rows:{},headers:{},filename:{}},setup(n){const e=n,t=s.computed(()=>Object.keys(e.headers));return(i,r)=>(s.openBlock(),s.createElementBlock("div",null,[s.createVNode(Xr,{data:n.rows,fields:t.value,filename:n.filename,labels:n.headers},{default:s.withCtx(()=>[s.renderSlot(i.$slots,"default")]),_:3},8,["data","fields","filename","labels"])]))}}),Ei={renderer:{not_configured:{title:"Chart is not fully configured",description:"Begin by choosing at least one metric"},noQueryBridge:"No query bridge provided. Unable to render dashboard.",unexpectedError:"An unexpected error has occurred.",trendRange:{"24h":"Last 24-hour summary","7d":"Last 7-day summary","30d":"Last 30-day summary"},edit:"Edit",duplicateTile:"Duplicate",exit_fullscreen:"Exit fullscreen",fullscreen:"Fullscreen",remove:"Remove",delete:"Delete",as_of_today:"As of today",noDataAvailable:{title:"No data in the current time frame",description:"Once there is traffic, it will display here"},treemapUnsupported:{title:"This query can't be shown as a treemap",description:"Treemaps need a count or total metric, such as requests or tokens, and no time dimension"}},pdfExport:{branding:"Kong Konnect",generated:"Generated {timestamp}",dashboardNote:"For a live, interactive experience, open this dashboard in Konnect",pageOf:"{page} / {total}"},csvExport:{defaultFilename:"Chart export",exportAsCsv:"Export as CSV",dataError:"Error loading data",noDataRange:"No data in selected range",noDataRetry:"Please adjust the time period and try again",timeRangeSelected:"selected",exportPreview:"Export preview",exportTimeRange:"Time range",exportDescription:"Exports a CSV of the data represented in the chart.",maximumRecordAmount:"The number of groups is limited to {value}",previewRows:"Previewing {rowsMax} of {rowsTotal} row{plural}",downloadButton:"Export",cancelButton:"Cancel",UtcOffset:"UTC offset",Timestamp:"Timestamp"},chartLabels:{control_plane:"Control plane",data_plane_node_version:"Data plane node version",env:"Environment",gateway_service:"Gateway service",hostname:"Hostname",plugin:"Plugin",plugin_name:"Plugin name",plugin_scope:"Plugin scope",region:"Region",request_count:"Request count",route:"Route",status_code:"Status code",team:"Team",name:"Name",ai_count:"LLM request count",ai_plugin:"AI plugin",ai_provider:"Provider",ai_request_model:"Request model",ai_response_model:"Response model",error_rate:"Error rate",request_per_minute:"Requests per minute",requests_per_minute:"Requests per minute",response_latency_average:"Response latency (avg)",response_latency_p99:"Response latency (p99)",response_latency_p95:"Response latency (p95)",response_latency_p50:"Response latency (p50)",kong_latency_average:"Kong latency (avg)",kong_latency_p99:"Kong latency (p99)",kong_latency_p95:"Kong latency (p95)",kong_latency_p50:"Kong latency (p50)",kong_internal_latency_average:"Kong internal latency (avg)",kong_internal_latency_p99:"Kong internal latency (p99)",kong_internal_latency_p95:"Kong internal latency (p95)",kong_internal_latency_p50:"Kong internal latency (p50)",llm_cache_status:"Cache status",llm_embeddings_model:"Embeddings model",llm_embeddings_provider:"Embeddings provider",upstream_latency_average:"Upstream latency (avg)",upstream_latency_p99:"Upstream latency (p99)",upstream_latency_p95:"Upstream latency (p95)",upstream_latency_p50:"Upstream latency (p50)",response_size_p99:"Response size (p99)",response_size_p95:"Response size (p95)",response_size_p50:"Response size (p50)",response_size_average:"Response size (avg)",response_size_sum:"Response size (sum)",response_source:"Response source",request_size_p99:"Request size (p99)",request_size_p95:"Request size (p95)",request_size_p50:"Request size (p50)",request_size_average:"Request size (avg)",request_size_sum:"Request size (sum)",total_tokens_per_minute:"Total tokens per minute",control_plane_group:"Control plane group",consumer:"Consumer",country_code:"Country",country:"Country",data_plane_node:"Data plane node",api_package:"API package",api_product:"API product",api_product_version:"API product version",portal:"Portal",realm:"Realm",runtime_group:"Runtime group",application:"Application",status_code_grouped:"Status code (grouped)",upstream_status_code:"Upstream status code",upstream_status_code_grouped:"Upstream status code group",time:"Time",Service:"Service",ServiceVersion:"Service version",Route:"Route",Application:"Application",RuntimeGroup:"Runtime group",GatewayService:"Gateway service",StatusCode:"Status code",CodeClass:"Status code (grouped)",Time:"Time",API_PRODUCT:"Api product",API_PRODUCT_VERSION:"API product version",RUNTIME_GROUP:"Runtime group",GATEWAY_SERVICE:"Gateway service",ROUTE:"Route",APPLICATION:"Application",STATUS_CODE:"Status code",STATUS_CODE_GROUPED:"Status code (grouped)",TIME:"Time",ORGANIZATION:"Organization",TotalRequests:"Request count",RequestsPerMinute:"Requests per minute",LatencyP99:"Response latency (p99)",LatencyP95:"Response latency (p95)",LatencyP50:"Response latency (p50)",LatencyAverage:"Response latency (avg)",UpstreamLatencyP99:"Upstream latency (p99)",UpstreamLatencyP95:"Upstream latency (p95)",UpstreamLatencyP50:"Upstream latency (p50)",UpstreamLatencyAverage:"Upstream latency (avg)",KongLatencyP99:"Kong latency (p99)",KongLatencyP95:"Kong latency (p95)",KongLatencyP50:"Kong latency (p50)",KongLatencyAverage:"Kong latency (avg)",ResponseSizeP99:"Response size (p99)",ResponseSizeP95:"Response size (p95)",ResponseSizeP50:"Response size (p50)",RequestSizeP99:"Request size (p99)",RequestSizeP95:"Request size (p95)",RequestSizeP50:"Request size (p50)",SuccessfulRequests:"Successful requests",SUCCESS:"Successful requests",FailedRequests:"Failed requests",FAILURE:"Failed requests","5XX":"5xx","4XX":"4xx","3XX":"3xx","2XX":"2xx","1XX":"1xx",REQUEST_COUNT:"Request count",REQUEST_PER_MINUTE:"Requests per minute",RESPONSE_LATENCY_P99:"Response latency",RESPONSE_LATENCY_P95:"Response latency",RESPONSE_LATENCY_P50:"Response latency",RESPONSE_SIZE_P99:"Response size (p99)",RESPONSE_SIZE_P95:"Response size (p95)",RESPONSE_SIZE_P50:"Response size (p50)",REQUEST_SIZE_P99:"Request size (p99)",REQUEST_SIZE_P95:"Request size (p95)",REQUEST_SIZE_P50:"Request size (p50)",CONTROL_PLANE:"Control plane",____OTHER____:"Others",ai_request_count:"Request count",total_tokens:"Total token count",prompt_tokens:"Prompt token count",completion_tokens:"Completion token count",cost:"Costs",cost_per_request_average:"Request cost (avg per million)",llm_cache_embeddings_latency_average:"Embeddings latency (avg)",llm_cache_fetch_latency_average:"Fetch latency (avg)",llm_latency_average:"Llm latency (avg)",time_to_first_token_average:"Time to first token (avg)",time_to_first_token_p99:"Time to first token (p99)",time_to_first_token_p95:"Time to first token (p95)",time_to_first_token_p50:"Time to first token (p50)",time_per_token_average:"Time per token (avg)",time_per_token_p99:"Time per token (p99)",time_per_token_p95:"Time per token (p95)",time_per_token_p50:"Time per token (p50)","threshold-warning":"Warning threshold: {value}","threshold-error":"Error threshold: {value}","thatreshold-neutral":"Alert threshold: {value}",api:"API",vulnerability_count:"Vulnerability count",a2a_latency_average:"A2A latency (avg)",a2a_response_size_sum:"A2A response size (sum)",a2a_context_id:"A2A context ID",a2a_error:"A2A error",a2a_method:"A2A method",a2a_task_id:"A2A task ID",active_agents:"Active agents",mcp_error:"MCP error",mcp_method:"MCP method",mcp_latency_average:"MCP latency (avg)",mcp_latency_p99:"MCP latency (p99)",mcp_latency_p95:"MCP latency (p95)",mcp_latency_p50:"MCP latency (p50)",mcp_response_size_sum:"MCP response size (sum)",mcp_session_id:"MCP session ID",mcp_tool_name:"MCP tool name",mcp_response_body_size_sum:"MCP response size (sum)",control_plane_count:"Control plane count",service_count:"Gateway service count","record_bytes:sum":"Record size (sum)","record_count:sum":"Record count (sum)","request_count:sum":"Request count (sum)",route_count:"Route count",consumer_count:"Consumer count",plugin_count:"Plugin count",node_count:"Data plane node count",virtual_cluster_id:"Virtual cluster",backend_cluster_id:"Backend cluster",listener_id:"Listener",principal_name:"Principal name",principal_type:"Principal type",request_type:"Request type",topic_name:"Topic name",partition_index:"Partition index",api_key:"API key",data_plane_group:"Data plane group",managed_cache:"Managed cache",network:"Network",provider:"Provider",provider_region:"Provider region",cache_eviction_rate:"Cache eviction rate",cache_expiration_rate:"Cache expiration rate",cache_items_average:"Cache items (avg)",cache_memory_utilization_max:"Cache memory utilization (max)",cache_status:"Cache status",cache_hit_rate:"Cache hit rate"},jumpToExplore:"Explore",jumpToRequests:"View requests",unsupported_time_range_badge:"Limited timeframe",unsupported_time_range_warning:"The selected timeframe exceeds what this datasource supports, so this tile is limited to the maximum supported timeframe.",query_aged_out_warning:"This tile was configured with {savedGranularity} granularity, which is no longer available. It now shows {currentGranularity} data, the closest available granularity.",granularities:{daily:"1 day",fiveMinutely:"5 minutes",hourly:"1 hour",minutely:"1 minute",tenMinutely:"10 minutes",tenSecondly:"10 seconds",thirtyMinutely:"30 minutes",thirtySecondly:"30 seconds",twelveHourly:"12 hours",twoHourly:"2 hours",weekly:"1 week",unknown:"Unknown"}};function kt(){const n=Ut.createI18n("en-us",Ei);return{i18n:n,i18nT:Ut.i18nTComponent(n)}}const je=170,lt=6,ke="analytics-query-provider",Ci="analytics-dashboard-coordinator",Rt="{entity-id}",ki="{cp-id}",Ri="{timeframe}",Ti=30*1e3,Si=3e5,Di=36e5;function Jr(){const n=s.inject(ke);return{evaluateFeatureFlag:(t,i)=>typeof n?.evaluateFeatureFlagFn!="function"?i:n.evaluateFeatureFlagFn(t,i)}}var Tt={exports:{}},Oi;function es(){return Oi||(Oi=1,(function(n){var e=Object.prototype.hasOwnProperty,t="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(t=!1));function r(d,c,u){this.fn=d,this.context=c,this.once=u||!1}function o(d,c,u,h,f){if(typeof u!="function")throw new TypeError("The listener must be a function");var g=new r(u,h||d,f),w=t?t+c:c;return d._events[w]?d._events[w].fn?d._events[w]=[d._events[w],g]:d._events[w].push(g):(d._events[w]=g,d._eventsCount++),d}function a(d,c){--d._eventsCount===0?d._events=new i:delete d._events[c]}function l(){this._events=new i,this._eventsCount=0}l.prototype.eventNames=function(){var c=[],u,h;if(this._eventsCount===0)return c;for(h in u=this._events)e.call(u,h)&&c.push(t?h.slice(1):h);return Object.getOwnPropertySymbols?c.concat(Object.getOwnPropertySymbols(u)):c},l.prototype.listeners=function(c){var u=t?t+c:c,h=this._events[u];if(!h)return[];if(h.fn)return[h.fn];for(var f=0,g=h.length,w=new Array(g);f<g;f++)w[f]=h[f].fn;return w},l.prototype.listenerCount=function(c){var u=t?t+c:c,h=this._events[u];return h?h.fn?1:h.length:0},l.prototype.emit=function(c,u,h,f,g,w){var E=t?t+c:c;if(!this._events[E])return!1;var b=this._events[E],N=arguments.length,M,C;if(b.fn){switch(b.once&&this.removeListener(c,b.fn,void 0,!0),N){case 1:return b.fn.call(b.context),!0;case 2:return b.fn.call(b.context,u),!0;case 3:return b.fn.call(b.context,u,h),!0;case 4:return b.fn.call(b.context,u,h,f),!0;case 5:return b.fn.call(b.context,u,h,f,g),!0;case 6:return b.fn.call(b.context,u,h,f,g,w),!0}for(C=1,M=new Array(N-1);C<N;C++)M[C-1]=arguments[C];b.fn.apply(b.context,M)}else{var S=b.length,D;for(C=0;C<S;C++)switch(b[C].once&&this.removeListener(c,b[C].fn,void 0,!0),N){case 1:b[C].fn.call(b[C].context);break;case 2:b[C].fn.call(b[C].context,u);break;case 3:b[C].fn.call(b[C].context,u,h);break;case 4:b[C].fn.call(b[C].context,u,h,f);break;default:if(!M)for(D=1,M=new Array(N-1);D<N;D++)M[D-1]=arguments[D];b[C].fn.apply(b[C].context,M)}}return!0},l.prototype.on=function(c,u,h){return o(this,c,u,h,!1)},l.prototype.once=function(c,u,h){return o(this,c,u,h,!0)},l.prototype.removeListener=function(c,u,h,f){var g=t?t+c:c;if(!this._events[g])return this;if(!u)return a(this,g),this;var w=this._events[g];if(w.fn)w.fn===u&&(!f||w.once)&&(!h||w.context===h)&&a(this,g);else{for(var E=0,b=[],N=w.length;E<N;E++)(w[E].fn!==u||f&&!w[E].once||h&&w[E].context!==h)&&b.push(w[E]);b.length?this._events[g]=b.length===1?b[0]:b:a(this,g)}return this},l.prototype.removeAllListeners=function(c){var u;return c?(u=t?t+c:c,this._events[u]&&a(this,u)):(this._events=new i,this._eventsCount=0),this},l.prototype.off=l.prototype.removeListener,l.prototype.addListener=l.prototype.on,l.prefixed=t,l.EventEmitter=l,n.exports=l})(Tt)),Tt.exports}var ts=es();const is=Ur(ts);class St extends Error{name="TimeoutError";constructor(e,t){super(e,t),Error.captureStackTrace?.(this,St)}}const Ni=n=>n.reason??new DOMException("This operation was aborted.","AbortError");function ns(n,e){const{milliseconds:t,fallback:i,message:r,customTimers:o={setTimeout,clearTimeout},signal:a}=e;let l,d;const u=new Promise((h,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(a?.aborted){f(Ni(a));return}if(a&&(d=()=>{f(Ni(a))},a.addEventListener("abort",d,{once:!0})),n.then(h,f),t===Number.POSITIVE_INFINITY)return;const g=new St;l=o.setTimeout.call(void 0,()=>{if(i){try{h(i())}catch(w){f(w)}return}typeof n.cancel=="function"&&n.cancel(),r===!1?h():r instanceof Error?f(r):(g.message=r??`Promise timed out after ${t} milliseconds`,f(g))},t)}).finally(()=>{u.clear(),d&&a&&a.removeEventListener("abort",d)});return u.clear=()=>{o.clearTimeout.call(void 0,l),l=void 0},u}function rs(n,e,t){let i=0,r=n.length;for(;r>0;){const o=Math.trunc(r/2);let a=i+o;t(n[a],e)<=0?(i=++a,r-=o+1):r=o}return i}const ss=100;class Mi{#t=[];#e=0;enqueue(e,t){const{priority:i=0,id:r}=t??{},{size:o}=this,a={priority:i,id:r,run:e};if(o===0){this.#t.length=0,this.#e=0,this.#t.push(a);return}if(this.#t.at(-1).priority>=i){this.#t.push(a);return}this.#s();const l=rs(this.#t,a,(d,c)=>c.priority-d.priority);this.#t.splice(l,0,a)}setPriority(e,t){const i=this.#t.findIndex((o,a)=>a>=this.#e&&o.id===e);if(i===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);const[r]=this.#t.splice(i,1);this.enqueue(r.run,{priority:t,id:e})}remove(e){const t=this.#t.findIndex((i,r)=>r<this.#e?!1:typeof e=="string"?i.id===e:i.run===e);t!==-1&&this.#t.splice(t,1)}dequeue(){if(this.#e===this.#t.length)return;const e=this.#t[this.#e];return this.#e++,this.#e===this.#t.length?(this.#t.length=0,this.#e=0):this.#e>ss&&this.#e>this.#t.length/2&&this.#s(),e?.run}filter(e){const t=[];for(let i=this.#e;i<this.#t.length;i++){const r=this.#t[i];r.priority===e.priority&&t.push(r.run)}return t}get size(){return this.#t.length-this.#e}#s(){this.#e!==0&&(this.#t.splice(0,this.#e),this.#e=0)}}class os extends is{#t;#e;#s=0;#f;#p=!1;#w=!1;#c;#b=0;#l;#u;#a;#o=[];#r=0;#i;#R;#n=0;#g;#d;#M=1n;#y=new Map;#v=new Set;timeout;constructor(e){if(super(),e={carryoverIntervalCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Mi,strict:!1,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);if(e.strict&&e.interval===0)throw new TypeError("The `strict` option requires a non-zero `interval`");if(e.strict&&e.intervalCap===Number.POSITIVE_INFINITY)throw new TypeError("The `strict` option requires a finite `intervalCap`");if(this.#t=e.carryoverIntervalCount??e.carryoverConcurrencyCount??!1,this.#e=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#f=e.intervalCap,this.#c=e.interval,this.#a=e.strict,this.#i=new e.queueClass,this.#R=e.queueClass,this.concurrency=e.concurrency,e.timeout!==void 0&&!(Number.isFinite(e.timeout)&&e.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${e.timeout}\` (${typeof e.timeout})`);this.timeout=e.timeout,this.#d=e.autoStart===!1,this.#H()}#x(e){for(;this.#r<this.#o.length;){const i=this.#o[this.#r];if(i!==void 0&&e-i>=this.#c)this.#r++;else break}(this.#r>100&&this.#r>this.#o.length/2||this.#r===this.#o.length)&&(this.#o=this.#o.slice(this.#r),this.#r=0)}#z(e){this.#a?this.#o.push(e):this.#s++}#A(){this.#a?this.#o.length>this.#r&&this.#o.pop():this.#s>0&&this.#s--}#E(){return this.#o.length-this.#r}get#I(){return this.#e?!0:this.#a?this.#E()<this.#f:this.#s<this.#f}get#q(){return this.#n<this.#g}#L(){this.#n--,this.#n===0&&this.emit("pendingZero"),this.#_(),this.emit("next")}#P(){this.#u=void 0,this.#O(),this.#D()}#B(e){if(this.#a){if(this.#x(e),this.#E()>=this.#f){const i=this.#o[this.#r],r=this.#c-(e-i);return this.#T(r),!0}return!1}if(this.#l===void 0){const t=this.#b-e;if(t<0)this.#s=this.#t?this.#n:0;else return this.#T(t),!0}return!1}#T(e){this.#u===void 0&&(this.#u=setTimeout(()=>{this.#P()},e))}#C(){this.#l&&(clearInterval(this.#l),this.#l=void 0)}#S(){this.#u&&(clearTimeout(this.#u),this.#u=void 0)}#_(){if(this.#i.size===0){if(this.#C(),this.emit("empty"),this.#n===0){if(this.#S(),this.#a&&this.#r>0){const t=Date.now();this.#x(t)}this.emit("idle")}return!1}let e=!1;if(!this.#d){const t=Date.now(),i=!this.#B(t);if(this.#I&&this.#q){const r=this.#i.dequeue();this.#e||(this.#z(t),this.#m()),i&&this.#D(),this.emit("active"),r(),e=!0}}return e}#D(){this.#e||this.#l!==void 0||this.#a||(this.#l=setInterval(()=>{this.#O()},this.#c),this.#b=Date.now()+this.#c)}#O(){this.#a||(this.#l!==void 0&&(this.#s===0&&this.#n===0?this.#C():this.#b=Date.now()+this.#c),this.#s=this.#t?this.#n:0),this.#k(),this.#m()}#k(){for(;this.#_(););}get concurrency(){return this.#g}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#g=e,this.#k()}setPriority(e,t){if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${t}\` (${typeof t})`);this.#i.setPriority(e,t)}async add(e,t={}){if(t={timeout:this.timeout,...t,id:t.id??(this.#M++).toString()},t.timeout!==void 0&&!(Number.isFinite(t.timeout)&&t.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${t.timeout}\` (${typeof t.timeout})`);return new Promise((i,r)=>{const o=Symbol(`task-${t.id}`);let a=()=>{};const l=async()=>{a(),this.#n++,this.#y.set(o,{id:t.id,priority:t.priority??0,startTime:Date.now(),timeout:t.timeout});let c;try{try{t.signal?.throwIfAborted()}catch(f){throw this.#F(),this.#y.delete(o),f}let u=e({signal:t.signal});if(t.timeout!==void 0&&(u=ns(Promise.resolve(u),{milliseconds:t.timeout,message:`Task timed out after ${t.timeout}ms (queue has ${this.#n} running, ${this.#i.size} waiting)`})),t.signal){const{signal:f}=t;u=Promise.race([u,new Promise((g,w)=>{c=()=>{w(f.reason)},f.addEventListener("abort",c,{once:!0})})])}const h=await u;i(h),this.emit("completed",h)}catch(u){r(u),this.emit("error",u)}finally{c&&t.signal?.removeEventListener("abort",c),this.#y.delete(o),queueMicrotask(()=>{this.#L()})}};this.#i.enqueue(l,t);const d=()=>{if(this.#i instanceof Mi){this.#i.remove(l);return}this.#i.remove?.(t.id)};if(t.signal){const{signal:c}=t,u=()=>{a(),d(),r(c.reason),this.#_(),this.emit("next")};if(a=()=>{c.removeEventListener("abort",u),this.#v.delete(a)},c.aborted){u();return}c.addEventListener("abort",u,{once:!0}),this.#v.add(a)}this.emit("add"),this.#_()})}async addAll(e,t){return Promise.all(e.map(async i=>this.add(i,t)))}start(){return this.#d?(this.#d=!1,this.#k(),this):this}pause(){this.#d=!0}clear(){for(const e of this.#v)e();this.#i=new this.#R,this.#C(),this.#N(),this.emit("empty"),this.#n===0&&(this.#S(),this.emit("idle")),this.emit("next")}async onEmpty(){this.#i.size!==0&&await this.#h("empty")}async onSizeLessThan(e){this.#i.size<e||await this.#h(["next","active"],()=>this.#i.size<e)}async onIdle(){this.#n===0&&this.#i.size===0||await this.#h("idle")}async onPendingZero(){this.#n!==0&&await this.#h("pendingZero")}async onRateLimit(){this.isRateLimited||await this.#h("rateLimit")}async onRateLimitCleared(){this.isRateLimited&&await this.#h("rateLimitCleared")}onError(){return new Promise((e,t)=>{const i=r=>{this.off("error",i),t(r)};this.on("error",i)})}async#h(e,t){const i=Array.isArray(e)?e:[e];return new Promise(r=>{const o=()=>{if(!(t&&!t())){for(const a of i)this.off(a,o);r()}};for(const a of i)this.on(a,o)})}get size(){return this.#i.size}sizeBy(e){return this.#i.filter(e).length}get pending(){return this.#n}get isPaused(){return this.#d}#H(){this.#e||(this.on("add",()=>{this.#i.size>0&&this.#m()}),this.on("next",()=>{this.#m()}))}#m(){this.#e||this.#w||(this.#w=!0,queueMicrotask(()=>{this.#w=!1,this.#N()}))}#F(){this.#e||(this.#A(),this.#m())}#N(){const e=this.#p;if(this.#e||this.#i.size===0){e&&(this.#p=!1,this.emit("rateLimitCleared"));return}let t;if(this.#a){const r=Date.now();this.#x(r),t=this.#E()}else t=this.#s;const i=t>=this.#f;i!==e&&(this.#p=i,this.emit(i?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#p}get isSaturated(){return this.#n===this.#g&&this.#i.size>0||this.isRateLimited&&this.#i.size>0}get runningTasks(){return[...this.#y.values()].map(e=>({...e,timeoutRemaining:e.timeout?Math.max(0,e.startTime+e.timeout-Date.now()):void 0}))}}const as=()=>{const n=Me.useAnalyticsConfigStore(),e=s.inject(ke);if(!e)return;if(e.queryFnOverride){console.warn("Detected incorrect use of useRequestQueue. This composable should not be used in nested components. Please discuss with team-data or report an issue if you feel you have a use case.");return}const t=new os({carryoverConcurrencyCount:!0,concurrency:n.maxParallelRequests,interval:n.requestInterval,intervalCap:n.requestIntervalCap}),i={...e,queryFnOverride:!0,queryFn:(r,o)=>t.add(()=>e.queryFn(r,o))};s.provide(ke,i)};function ls(n){const e=`[${n.name}] ${n.message}`,t=[];return n.fix&&t.push(`fix: ${n.fix}`),n.sources?.length&&t.push(`sources: ${n.sources.join(", ")}`),n.docs&&t.push(`see: ${n.docs}`),t.length===0?e:[e,...t.map((i,r)=>`${r<t.length-1?"├▶":"╰▶"} ${i}`)].join(`
12
- `)}function zi(n,...e){return typeof n=="function"?n(...e):n}function cs({method:n="warn",formatter:e=ls}={}){return(t,{method:i=n}={})=>{console[i](e(t))}}const us=Error.captureStackTrace;var ds=class an extends Error{name;code;docs;fix;sources;get why(){return this.message}constructor(e,t=an){super(e.why,{cause:e.cause}),this.code=this.name=e.code,this.fix=e.fix,this.docs=e.docs,this.sources=e.sources,us?.(this,t)}toJSON(){return{name:this.name,why:this.why,fix:this.fix,docs:this.docs,sources:this.sources,cause:this.cause,stack:this.stack}}};function hs(n,e){return typeof n=="string"?`${n}/${e.toLowerCase()}`:n?.(e)}function fs(n){const e=n.reporters??[],t={},{docsBase:i}=n;for(const r of Object.keys(n.codes)){const o=n.codes[r],a=o.docs===!1?void 0:o.docs||hs(i,r),l=(d={},c={})=>{const u=new ds({code:r,why:zi(o.why,d),fix:zi(o.fix,d),docs:a,cause:d.cause,sources:d.sources},l);for(const h of e)h(u,c);return u};t[r]=l}return t}const ms=typeof window<"u",ps=fs({reporters:[cs()],codes:{PINIA_R1001:{why:'Directly pass all stores to "mapStores()" without putting them in an array. This will fail in production.',fix:"Replace mapStores([useAuthStore, useCartStore]) with mapStores(useAuthStore, useCartStore).",docs:"https://pinia.vuejs.org/cookbook/options-api.html#Giving-access-to-the-whole-store"},PINIA_R1002:{why:n=>`A getter cannot have the same name as another state property. Found "${n.name}" in store "${n.id}".`,fix:"Rename either the getter or the state property.",docs:"https://pinia.vuejs.org/core-concepts/getters.html#Accessing-other-getters"},PINIA_R1003:{why:n=>`The "state" must be a plain object. Found in store "${n.id}".`,fix:"Return a plain object, e.g. avoid state: () => new MyClass().",docs:"https://pinia.vuejs.org/core-concepts/state.html#State"},PINIA_R1004:{why:"Pinia instance not found in context. This falls back to the global activePinia, which exposes you to cross-request pollution on the server.",fix:'"useStore()" is a composable and follows the same rules: call it at the top of setup() (or another composable), or pass the pinia instance explicitly when used outside of a component.',docs:"https://pinia.vuejs.org/ssr/#Using-the-store-outside-of-setup-"},PINIA_R1005:{why:n=>`The store id changed from "${n.from}" to "${n.to}", forcing a reload.`,docs:"https://pinia.vuejs.org/cookbook/hot-module-replacement.html#HMR-Hot-Module-Replacement-"},PINIA_R1006:{why:n=>`Property "${n.key}" of store "${n.id}" is not reactive (not a ref, reactive object, or shallowRef), so storeToRefs() ignores it.`,fix:"If it should be reactive state, wrap it with ref(), reactive(), or shallowRef(). If it is an intentional non-reactive property, wrap it with markRaw() so storeToRefs() skips it explicitly.",docs:"https://pinia.vuejs.org/core-concepts/plugins.html#Adding-new-external-properties"},PINIA_R1007:{why:n=>`The same callback was passed to "$subscribe()" of store "${n.id}" more than once. Subscriptions are deduplicated, so the duplicate is ignored.`,fix:"Subscribe each callback only once. If you need to resubscribe, call the returned function to remove the previous subscription first, or create a new function.",docs:"https://pinia.vuejs.org/core-concepts/state.html#Subscribing-to-the-state"}}});let Ai;process.env.NODE_ENV;const Ii=process.env.NODE_ENV!=="production"?Symbol("pinia"):Symbol();process.env.NODE_ENV;function Ke(n){const e=s.toRaw(n),t={};for(const i in e){const r=e[i];r?.effect?t[i]=s.computed({get:()=>n[i],set(o){n[i]=o}}):(s.isRef(r)||s.isReactive(r))&&(t[i]=s.toRef(n,i))}return t}const De=n=>n?.chart.type==="table",Dt=n=>n?.query?.datasource==="requests",Ot=n=>!!n&&!De(n)&&!Dt(n),gs=(n,e)=>{const t=n.header_description??("description"in n.chart?n.chart.description:void 0);if(t)return t.replaceAll(Ri,e)||void 0},ys=["basic","api_usage","llm_usage","agentic_usage","platform","platform_usage","managed_cache_usage",void 0],_s=n=>ys.includes(n);function ws({queryBridge:n,context:e,definition:t,chartData:i}){const r=s.ref(""),o=s.ref(""),a=s.ref(void 0),l=s.ref(void 0),d=Me.useAnalyticsConfigStore(),c=Me.useDatasourceConfigStore(),{stripUnknownFilters:u,loading:h}=Ke(c),f=s.computed(()=>De(t.value));s.onMounted(async()=>{r.value=await n?.exploreBaseUrl?.()??"",o.value=await n?.requestsBaseUrl?.()??""});const g=s.computed(()=>d.analytics&&d.percentiles),w=s.computed(()=>{const _=t.value.chart.type;return["golden_signals","gauge"].includes(_)?!1:_==="top_n"?!!e.value.editable||!!e.value.showTileActions:!0}),E=s.computed(()=>o.value&&t.value.query&&!f.value&&t.value.query.datasource!=="llm_usage"&&t.value.query.datasource!=="managed_cache_usage"&&!K.isPlatformDatasource(t.value.query.datasource)&&g.value&&!h.value),b=s.computed(()=>r.value&&t.value.query&&_s(t.value.query.datasource)&&g.value&&!h.value),N=s.computed(()=>i.value?K.msToGranularity(i.value.meta.granularity_ms):void 0),M=s.computed(()=>{const _=t.value,k=[...e.value.filters,..._.query.filters??[]],R="metrics"in _.query?_.query.metrics:void 0,A=_.query?.datasource??"api_usage";return u.value({datasource:A,filters:k,queryFields:R})}),C=s.computed(()=>{if(!b.value||!w.value)return"";const _=t.value;if(De(_))return m({..._.query,filters:M.value});const k=_.query.time_range||e.value.timeSpec,R=p(k,M.value);return m(R)}),S=s.computed(()=>{if(!E.value||!w.value)return"";const _=M.value,k=t.value;if(De(k))return"";const R=B(k.query.time_range||e.value.timeSpec,_);return D(R)}),D=_=>E.value?`${o.value}?q=${JSON.stringify(_)}`:"",B=(_,k)=>{const R=i.value?.meta?.start?new Date(i.value.meta.start):void 0,A=i.value?.meta?.end?new Date(i.value.meta.end):void 0;return{filter:k,timeframe:{timePeriodsKey:_.type==="relative"?_.time_range:"custom",start:_.type==="absolute"?R:void 0,end:_.type==="absolute"?A:void 0}}},H=(_,k)=>({filter:k,timeframe:{timePeriodsKey:_.type==="relative"?_.time_range:"custom",start:_.type==="absolute"?_.start:void 0,end:_.type==="absolute"?_.end:void 0}}),p=(_,k)=>{const R=t.value;if(!Ot(R))throw new Error("Cannot build a chart explore query for table or api-requests definitions");const A=[...R.query.dimensions??[]],te=[...R.query.metrics??[]];return{filters:k,metrics:te,dimensions:A,time_range:_,granularity:R.query.granularity||N.value||void 0}},m=_=>{if(!b.value)return"";const k=t.value.query.datasource&&t.value.query.datasource!=="basic"?t.value.query.datasource:"api_usage";return`${r.value}?q=${JSON.stringify(_)}&d=${k}&c=${t.value.chart.type}`};return s.watch([E,b],([_,k])=>{_&&(a.value={href:""}),k&&(l.value={href:""})}),{exploreLinkKebabMenu:C,requestsLinkKebabMenu:S,canShowKebabMenu:w,canGenerateRequestsLink:E,canGenerateExploreLink:b,requestsLinkZoomActions:a,exploreLinkZoomActions:l,buildExploreQuery:p,buildRequestsQueryZoomActions:H,buildExploreLink:m,buildRequestLink:D}}const Nt=n=>n.type==="relative"?K.TimePeriods.get(K.TIMEFRAME_LOOKUP[n.time_range])?.timeframeLengthMs():new Date(n.end).getTime()-new Date(n.start).getTime(),bs=n=>n.reduce((e,t)=>{const i=K.TimePeriods.get(K.TIMEFRAME_LOOKUP[t])?.maximumTimeframeLength();return i===void 0||e&&i<=e.durationSeconds?e:{durationSeconds:i,key:t}},void 0),Mt=(n,e)=>{if(!n||!e?.length)return;const t=Nt(n),i=bs(e);return t!==void 0&&i&&t>i.durationSeconds*1e3?i:void 0},zt=(n,e)=>{const t=Mt(n,e);return!t||!n?n:n.type==="relative"?{...n,time_range:t.key}:{...n,start:new Date(new Date(n.end).getTime()-t.durationSeconds*1e3)}};function vs(){const n=s.inject(ke),e=Me.useDatasourceConfigStore(),{datasourceConfigMap:t,stripUnknownFilters:i}=Ke(e);let r=null;return s.onUnmounted(()=>{r?.abort()}),{issueQuery:async(a,l,d)=>{if(!n)throw new Error("Query bridge is not defined");r?.abort();const c=new AbortController;r=c,await e.isReady();const{datasource:u,limit:h,...f}=a,g=u||"basic",w=K.isPlatformDatasource(g),E=i.value({datasource:g,filters:[...a.filters??[],...l.filters],queryFields:a.metrics}).filter(({operator:M})=>!w||!K.requestFilterTypeEmptyV2.some(C=>C===M));let b=a.time_range;!b&&l.timeSpec?b={...l.timeSpec,tz:l.tz}:b&&!b.tz&&(b={...b,tz:l.tz}),b=zt(b,t.value[g]?.timeRangeOptions);const N={datasource:g,query:{...f,time_range:b,filters:E,limit:d??h}};return n.queryFn(N,c)}}}const xs="24H",Es={status_code:"response_http_status",upstream_status_code:"upstream_status"},Cs={cost:"usd",latencies_response_ms:"ms",latencies_upstream_ms:"ms",latencies_kong_gateway_ms:"ms",latencies_kong_internal_ms:"ms",request_body_size:"bytes",response_body_size:"bytes",response_header_content_length:"bytes",ai_count:"count"},ks=n=>K.relativeTimeRangeValuesRequestV2.includes(n),Rs=n=>{const e=n?.tz?{tz:n.tz}:{};if(n?.type==="absolute")return{type:"absolute",start:n.start,end:n.end,...e};const t=n?.time_range.toUpperCase()??"";return{type:"relative",time_range:ks(t)?t:xs,...e}},qi=n=>Es[n]??n,Ts=n=>({metric:qi(n.metric),dimension:n.dimension?qi(n.dimension):void 0,unroll:n.unroll,metricUnit:Cs[n.metric],extraFields:n.extra_fields}),At="requests";function Ss(){const n=s.inject(ke),e=Me.useDatasourceConfigStore(),{datasourceConfigMap:t,stripUnknownFilters:i}=Ke(e);let r=null;s.onUnmounted(()=>{r?.abort()});const o=(l,d)=>{const c=l.time_range??d.timeSpec;return zt(c&&{...c,tz:c.tz??d.tz},t.value[At]?.timeRangeOptions)};return{issueRequestsQuery:async(l,d)=>{const c=n?.requestsQueryFn;if(!c)throw new Error("Query bridge cannot fetch request records");r?.abort();const u=new AbortController;r=u,await e.isReady();const h=i.value({datasource:At,filters:[...l.filters??[],...d.filters]});return K.fetchAllRequests(c,{datasource:At,query:{filters:h,time_range:Rs(o(l,d))}},u,{maxRecords:l.max_records})}}}function Ds({context:n,globalFilters:e=s.ref([]),isFullscreen:t=s.ref(!1),preview:i=s.ref(!1)}){const r=Me.useAnalyticsConfigStore(),o=Me.useDatasourceConfigStore(),{loading:a}=Ke(r),{loading:l}=Ke(o),d=s.computed(()=>n.value.timeSpec?n.value.timeSpec:{type:"relative",time_range:r.defaultQueryTimeForOrg}),c=s.computed(()=>{const{tz:S}=n.value;return S||new Intl.DateTimeFormat().resolvedOptions().timeZone}),u=s.computed(()=>{const{editable:S}=n.value;return S===void 0||i.value?!1:S}),h=s.computed(()=>{const{showTileActions:S}=n.value;return i.value?!1:S===void 0?!0:S}),f=s.computed(()=>[...n.value.filters??[],...e.value]),g=s.computed(()=>{let{refreshInterval:S}=n.value;if(S===void 0&&(S=Ti),t.value){let D=!1;if(d.value.type==="relative")D=["15m","1h","6h","12h","24h"].includes(d.value.time_range);else{const p=d.value.start.getTime(),m=d.value.end.getTime();D=Math.abs(m-p)<=864e5}const B=new Date().getTime();d.value.type==="absolute"&&d.value.end.getTime()<B||d.value.type==="relative"&&["previous_week","previous_month"].includes(d.value.time_range)?S=0:D?S=Si:S=Di}return S}),w=s.computed(()=>({filters:f.value,timeSpec:d.value,tz:c.value,refreshInterval:g.value,editable:u.value,showTileActions:h.value})),E=s.computed(()=>!a.value&&!l.value),b=s.computed(()=>!i.value&&!!s.getCurrentInstance()?.vnode?.props?.onTileTimeRangeZoom),N=s.computed(()=>!i.value),M=s.computed(()=>!i.value),C=s.computed(()=>({enabled:b.value,showExploreAction:N.value,showRequestsAction:M.value,showZoomInAction:b.value}));return{editable:u,enrichedContext:w,filters:f,queryReady:E,refreshInterval:g,showTileActions:h,timeSpec:d,tz:c,zoomConfiguration:C}}const Os=6,Li=6,Pi=4;function Ns(n,e){const{pageWidth:t,pageHeight:i,margin:r}=e,o=r+1,a=r+e.headerHeight-3,l=i-r-Li+3,d=l+4;e.title&&(n.setFont("helvetica","bold"),n.setFontSize(11),n.setTextColor(60),n.text(e.title,r,o)),n.setFont("helvetica","normal"),n.setFontSize(8),n.setTextColor(120),n.text(e.generatedAt,t-r,o,{align:"right"}),e.subtitle&&n.text(e.subtitle,r,o+Pi),n.setDrawColor(220),n.line(r,a,t-r,a),n.line(r,l,t-r,l),n.setFont("helvetica","bold"),n.setTextColor(60),n.text(e.branding,r,d);const c=n.getTextWidth(e.branding);n.setFont("helvetica","normal");const u=` ${e.dashboardNote}`;e.dashboardUrl?(n.setTextColor(0,68,204),n.textWithLink(u,r+c,d,{url:e.dashboardUrl})):(n.setTextColor(120),n.text(u,r+c,d)),n.setTextColor(120),n.text(e.pageLabel,t-r,d,{align:"right"})}function Ms(n){const e=n.querySelector(".kong-ui-public-grid-layout, .grid-stack");if(!e)return[];const t=e.querySelectorAll(":scope > .grid-cell:not(.empty-cell), :scope > .grid-stack-item");if(!t.length)return[];const i=n.getBoundingClientRect().top,r=new Map;return t.forEach(o=>{const a=o.getBoundingClientRect(),l=Math.round(a.top-i),d=Math.round(a.bottom-i),c=r.get(l);r.set(l,c!==void 0?Math.max(c,d):d)}),[...r.entries()].map(([o,a])=>({top:o,bottom:a})).sort((o,a)=>o.top-a.top)}function zs(n,e,t,i){if(!n.length){const a=[];let l=0;for(;l<e;){const d=Math.min(t,e-l);a.push({startY:l,height:d}),l+=d}return a}const r=[];let o=0;for(const a of n){const l=a.top*i,d=a.bottom*i;d-o>t&&(l>o?(r.push({startY:o,height:l-o}),o=l):(r.push({startY:o,height:d-o}),o=d))}return o<e&&r.push({startY:o,height:e-o}),r}function As(n){const{i18n:e}=kt(),t=s.ref({status:"idle"});async function i(r={}){const{filename:o="dashboard-export",title:a,subtitle:l,dashboardUrl:d,orientation:c="landscape",pageSize:u="letter",margin:h=4,scale:f=2,exclude:g=[".tile-actions",".tooltip",".popover",".dropdown-popover"],output:w="download",onBeforeCapture:E,onAfterCapture:b}=r,N=n.value;if(!N){t.value={status:"error",error:new Error("Dashboard layout container not found.")};return}try{t.value={status:"preparing"},await E?.();const[{snapdom:M},{jsPDF:C}]=await Promise.all([import("@zumer/snapdom"),import("jspdf")]);t.value={status:"capturing"};const S={name:"kong-webgl-snapshot",beforeClone:()=>K.prepareForCapture(),afterClone:()=>K.restoreAfterCapture()},D=await M.toCanvas(N,{scale:f,exclude:g,excludeMode:"remove",embedFonts:!0,plugins:[S]}),B=Ms(N),H=N.getBoundingClientRect().width,p=H?D.width/H:f;t.value={status:"generating"};const m=new Date,_=new C({orientation:c,unit:"mm",format:u}),k=_.internal.pageSize.getWidth(),R=_.internal.pageSize.getHeight(),A=Os+(l?Pi:0),te=k-h*2,de=R-h*2-A-Li,he=D.width/te,X=de*he,ne=zs(B,D.height,X,p),L={title:a,subtitle:l,dashboardUrl:d,generatedAt:e.t("pdfExport.generated",{timestamp:m.toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"})}),branding:e.t("pdfExport.branding"),dashboardNote:e.t("pdfExport.dashboardNote"),pageWidth:k,pageHeight:R,headerHeight:A,margin:h};for(let J=0;J<ne.length;J++){J>0&&_.addPage();const{startY:v,height:T}=ne[J],x=document.createElement("canvas");x.width=D.width,x.height=T,x.getContext("2d").drawImage(D,0,v,D.width,T,0,0,D.width,T),_.addImage(x.toDataURL("image/png"),"PNG",h,h+A,te,T/he),Ns(_,{...L,pageLabel:e.t("pdfExport.pageOf",{page:String(J+1),total:String(ne.length)})})}if(w==="blob"){const J=_.output("blob");return t.value={status:"complete",pageCount:ne.length},J}_.save(o),t.value={status:"complete",pageCount:ne.length}}catch(M){t.value={status:"error",error:M}}finally{K.restoreAfterCapture(),await b?.()}}return{exportPdf:i,exportState:s.readonly(t)}}const Is=n=>n.toLowerCase().endsWith("count")?"":n;function qs(){const{i18n:n}=kt(),{formatUnit:e}=K.unitFormatter({i18n:n});return t=>{const i=t.meta?.metric_names?.[0]??"",r=t.meta?.metric_units?.[i]??"",o=`chartLabels.${i}`;return{seriesName:n.te(o)?n.t(o):i,valueFormatter:a=>e(a,r,{translateUnit:Is}).trim()}}}const ae={useContextLinks:ws,useDashboardContext:Ds,useEvaluateFeatureFlag:Jr,useExportPdf:As,useI18n:kt,useIssueQuery:vs,useIssueRequestsQuery:Ss,useMetricFormatter:qs,useRequestQueue:as},Ls={class:"kong-ui-public-csv-export-modal"},Ps={key:0,class:"selected-range"},Bs={key:4,class:"text-muted",tag:"span"},Bi=3,Hi=s.defineComponent({__name:"CsvExportModal",props:{exportState:{},filename:{},modalDescription:{default:void 0}},emits:["closeModal"],setup(n,{emit:e}){const{i18n:t}=ae.useI18n(),i=n,r=e,o=`${i.filename.replace(/\s+/g,"-").toLowerCase()}-${new Date().toISOString().slice(0,10)}.csv`,a=s.ref(1),l=s.computed(()=>f.value.rows.length),d=s.computed(()=>i.exportState.status==="success"&&!!i.exportState.chartData?.data?.length),c=s.computed(()=>{if(i.exportState.status!=="success"||!i.exportState.chartData?.meta)return"";const{start:w,end:E}=i.exportState.chartData.meta;return w&&E?`${K.formatTimestamp(new Date(w))} - ${K.formatTimestamp(new Date(E),{includeTZ:!0})}`:""}),u=s.computed(()=>i.exportState.status!=="success"?"":t.t("csvExport.previewRows",{rowsMax:Math.min(Bi,l.value),rowsTotal:l.value,plural:l.value===1?"":"s"})),h=()=>{r("closeModal")},f=s.computed(()=>{if(i.exportState.status!=="success"||!d.value||!i.exportState.chartData?.meta.metric_names)return{headers:[],rows:[],csvHeaders:{}};const w=i.exportState.chartData,E=w.data.some(D=>D.timestamp!==w.data[0].timestamp),b=w.data.map(D=>{const B=new Date(D.timestamp);return{...Object.keys(D.event).reduce((p,m)=>{if(m in w.meta.display){const _=D.event[m],k=w.meta.display[m];p[m]=_&&k&&k[_].name||D.event[m]}else p[m]=D.event[m];return p},{}),...E?{timestamp:gi(B,"yyyy-MM-dd HH:mm:ss"),tzOffset:gi(B,"XXX")}:{}}});let N=[];E&&(N=[{label:t.t("csvExport.Timestamp"),key:"timestamp"},{label:t.t("csvExport.UtcOffset"),key:"tzOffset"}]);const M="display"in i.exportState.chartData.meta&&i.exportState.chartData.meta.display?i.exportState.chartData.meta.display:{},C=[...N,...Object.keys(M).map(D=>({label:t.t(`chartLabels.${D}`),key:D})),...i.exportState.chartData.meta.metric_names.map(D=>({label:t.t(`chartLabels.${D}`),key:D}))],S=C.reduce((D,B)=>(D[B.key]=B.label,D),{});return{headers:C,csvHeaders:S,rows:b}}),g=async()=>{if(i.exportState.status!=="success")return{total:0,data:[]};const{rows:w}=f.value;return{total:Number(w.length)||0,data:w.slice(0,Bi)}};return s.watch(f,()=>{a.value++}),(w,E)=>{const b=s.resolveComponent("KSkeleton"),N=s.resolveComponent("KEmptyState"),M=s.resolveComponent("KTableData"),C=s.resolveComponent("KTooltip"),S=s.resolveComponent("KButton"),D=s.resolveComponent("KModal");return s.openBlock(),s.createElementBlock("div",Ls,[s.createVNode(D,{class:"vitals-report","data-testid":"csv-export-modal","show-dismiss-icon":"",title:s.unref(t).t("csvExport.exportPreview"),visible:"",onCancel:h,onKeyup:s.withKeys(h,["esc"])},{default:s.withCtx(()=>[s.createElementVNode("div",null,[n.exportState.status==="success"&&d.value?(s.openBlock(),s.createElementBlock("div",Ps,[s.createElementVNode("p",null,s.toDisplayString(n.modalDescription?n.modalDescription:s.unref(t).t("csvExport.exportDescription")),1),s.createElementVNode("p",null,s.toDisplayString(s.unref(t).t("csvExport.exportTimeRange"))+": "+s.toDisplayString(c.value),1)])):s.createCommentVNode("",!0),n.exportState.status==="loading"?(s.openBlock(),s.createBlock(b,{key:1,class:"chart-skeleton",type:"table"})):n.exportState.status==="success"?(s.openBlock(),s.createBlock(M,{key:2,class:"vitals-table",fetcher:g,"fetcher-cache-key":String(a.value),headers:f.value.headers,"hide-pagination":"","row-hover":!1,sortable:!1},{"empty-state":s.withCtx(()=>[s.createVNode(N,{"action-button-visible":!1},{title:s.withCtx(()=>[s.createElementVNode("h5",null,s.toDisplayString(s.unref(t).t("csvExport.noDataRange")),1)]),default:s.withCtx(()=>[s.createElementVNode("p",null,s.toDisplayString(s.unref(t).t("csvExport.noDataRetry")),1)]),_:1})]),_:1},8,["fetcher-cache-key","headers"])):n.exportState.status==="error"?(s.openBlock(),s.createBlock(N,{key:3,"action-button-visible":!1},{title:s.withCtx(()=>[s.createElementVNode("h5",null,s.toDisplayString(s.unref(t).t("csvExport.dataError")),1)]),_:1})):s.createCommentVNode("",!0),n.exportState.status==="success"&&d.value?(s.openBlock(),s.createElementBlock("div",Bs,[s.createTextVNode(s.toDisplayString(u.value)+" ",1),s.createVNode(C,{class:"preview-tooltip",placement:"right",text:s.unref(t).t("csvExport.maximumRecordAmount",{value:s.unref(K.EXPORT_RECORD_LIMIT)})},{default:s.withCtx(()=>[s.createVNode(s.unref(xe.InfoIcon),{color:`var(--kui-color-text-neutral, ${s.unref(Ct)})`,size:`var(--kui-icon-size-30, ${s.unref($r)})`},null,8,["color","size"])]),_:1},8,["text"])])):s.createCommentVNode("",!0)])]),"footer-actions":s.withCtx(()=>[s.createVNode(S,{appearance:"tertiary",class:"cancel-btn",onClick:h},{default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(t).t("csvExport.cancelButton")),1)]),_:1}),s.createVNode(Zr,{class:"vitals-report-export-button",filename:o,headers:f.value.csvHeaders,rows:f.value.rows},{default:s.withCtx(()=>[s.createVNode(S,{appearance:"primary","data-testid":"csv-download-button",disabled:n.exportState.status!=="success"||!d.value},{default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(t).t("csvExport.downloadButton")),1)]),_:1},8,["disabled"])]),_:1},8,["headers","rows"])]),_:1},8,["title"])])}}});var Fi=(n=>(n.VALIDATING="VALIDATING",n.VALIDATING_HAS_DATA="VALIDATING_HAS_DATA",n.PENDING="PENDING",n.SUCCESS="SUCCESS",n.SUCCESS_HAS_DATA="SUCCESS_HAS_DATA",n.ERROR="ERROR",n.STALE_IF_ERROR="STALE_IF_ERROR",n))(Fi||{});const Hs=n=>n?!!(Object.keys(n)?.length||n.data?.length||n.data?.data?.length||!n.data?.data&&typeof n.data=="object"&&Object.keys(n?.data).length):!1;function $i(n=s.ref({}),e,t,i=Hs){const r=s.ref("PENDING");return s.watchEffect(()=>{const o=i(n.value);if(n.value&&o&&t.value){r.value="VALIDATING_HAS_DATA";return}if(n.value&&t.value){r.value="VALIDATING";return}if(n.value&&e.value){r.value="STALE_IF_ERROR";return}if(n.value===void 0&&!e.value){r.value="PENDING";return}if(n.value&&!e.value&&o){r.value="SUCCESS_HAS_DATA";return}if(n.value&&!e.value){r.value="SUCCESS";return}n.value===void 0&&e&&(r.value="ERROR")}),{state:r,swrvState:Fi}}const qe=s.defineComponent({__name:"QueryDataProvider",props:{context:{},limitOverride:{},query:{},queryReady:{type:Boolean},refreshCounter:{}},emits:["chart-data","query-complete"],setup(n,{emit:e}){const t=n,i=e,{i18n:r}=ae.useI18n(),{issueQuery:o}=ae.useIssueQuery(),a=s.inject(ke),l=()=>t.queryReady&&a?JSON.stringify([t.query,t.context,t.refreshCounter]):null,{data:d,error:c,isValidating:u}=Ht(l,async()=>{const M=l();try{const C=await o(t.query,t.context,t.limitOverride);return l()!==M?void 0:(g.value=null,C)}catch(C){if(l()!==M)return;throw g.value=Ee.handleQueryError(C),C}finally{l()===M&&i("query-complete")}},{refreshInterval:t.context.refreshInterval,revalidateOnFocus:!1,shouldRetryOnError:!1}),{state:h,swrvState:f}=$i(d,c,u),g=s.ref(null),w=s.computed(()=>h.value===f.ERROR||!!g.value),E=s.computed(()=>!t.queryReady||h.value===f.PENDING),b=s.ref(),N=s.computed(()=>d.value??(t.queryReady&&h.value===f.PENDING?b.value:void 0));return s.watch([()=>d.value,()=>h.value],([M,C])=>{M&&(C==="SUCCESS_HAS_DATA"||C==="SUCCESS")&&M!==b.value&&(b.value=M,i("chart-data",M))}),(M,C)=>{const S=s.resolveComponent("KSkeleton"),D=s.resolveComponent("KEmptyState");return(E.value||!s.unref(d)&&!w.value)&&!N.value?(s.openBlock(),s.createBlock(S,{key:0,class:"chart-skeleton",type:"table"})):w.value&&!E.value?(s.openBlock(),s.createBlock(D,{key:1,"action-button-visible":!1,"data-testid":"chart-empty-state"},s.createSlots({icon:s.withCtx(()=>[g.value?.type==="forbidden"?(s.openBlock(),s.createBlock(s.unref(xe.VisibilityOffIcon),{key:0})):(s.openBlock(),s.createBlock(s.unref(xe.WarningOutlineIcon),{key:1}))]),title:s.withCtx(()=>[s.createElementVNode("p",null,s.toDisplayString(g.value?.message||s.unref(r).t("renderer.unexpectedError")),1)]),_:2},[g.value?.details?{name:"default",fn:s.withCtx(()=>[s.createElementVNode("p",null,s.toDisplayString(g.value.details),1)]),key:"0"}:void 0]),1024)):N.value?s.renderSlot(M.$slots,"default",{data:N.value},void 0,void 0,2):s.createCommentVNode("",!0)}}}),Fs=s.defineComponent({__name:"SimpleChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},setup(n){const e=n,t=s.computed(()=>e.chartOptions.type==="single_value"),i=s.computed(()=>e.chartOptions.type==="single_value"?{...e.chartOptions,alignX:e.chartOptions.align_x??"left",showTrend:e.query.granularity==="trend"}:e.chartOptions);return(r,o)=>(s.openBlock(),s.createBlock(qe,{context:n.context,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter},{default:s.withCtx(({data:a})=>[s.createElementVNode("div",{class:s.normalizeClass(["analytics-chart",{"single-value":t.value}]),style:s.normalizeStyle(t.value?void 0:{height:`${n.height}px`})},[s.createVNode(s.unref(Ee.SimpleChart),{"chart-data":a,"chart-options":i.value,"synthetics-data-key":t.value?void 0:n.chartOptions.synthetics_data_key},null,8,["chart-data","chart-options","synthetics-data-key"])],6)]),_:1},8,["context","query","query-ready","refresh-counter"]))}}),Re=(n,e)=>{const t=n.__vccOpts||n;for(const[i,r]of e)t[i]=r;return t},Ui=Re(Fs,[["__scopeId","data-v-22077b88"]]),$s={class:"analytics-chart"},It=Re(s.defineComponent({__name:"BaseAnalyticsChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{},extraProps:{}},emits:["edit-tile","chart-data","zoom-time-range","view-requests","select-chart-range"],setup(n,{emit:e}){const t=n,i=e,{i18n:r}=ae.useI18n(),o=s.computed(()=>({type:t.chartOptions.type,stacked:t.chartOptions.stacked??!1,chartDatasetColors:t.chartOptions.chart_dataset_colors,threshold:t.chartOptions.threshold,metricAxisMap:t.chartOptions.metric_axis_map,yAxes:t.chartOptions.y_axes&&{left:a(t.chartOptions.y_axes.left),right:a(t.chartOptions.y_axes.right)},hideTruncationWarning:t.query.limit!==void 0&&t.query.limit>0})),a=c=>c&&{title:c.title,showGrid:c.show_grid},l=()=>{i("edit-tile")},d=c=>{i("chart-data",c)};return(c,u)=>{const h=s.resolveComponent("KDropdownItem");return s.openBlock(),s.createBlock(qe,{context:n.context,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,onChartData:d},{default:s.withCtx(({data:f})=>[s.createElementVNode("div",$s,[s.createVNode(s.unref(Ee.AnalyticsChart),s.mergeProps({"active-metric":n.activeMetric,"chart-data":f,"chart-options":o.value,"explore-link":n.exploreLink,"legend-position":"bottom","requests-link":n.requestsLink,"synthetics-data-key":n.chartOptions.synthetics_data_key,"timeseries-zoom":n.zoomConfiguration?.showZoomInAction,"tooltip-title":""},n.extraProps,{onSelectChartRange:u[0]||(u[0]=g=>i("select-chart-range",g)),onZoomTimeRange:u[1]||(u[1]=g=>i("zoom-time-range",g))}),s.createSlots({_:2},[n.context.editable?{name:"menu-items",fn:s.withCtx(()=>[s.createVNode(h,{onClick:l},{default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(r).t("renderer.edit")),1)]),_:1})]),key:"0"}:void 0]),1040,["active-metric","chart-data","chart-options","explore-link","requests-link","synthetics-data-key","timeseries-zoom"])])]),_:1},8,["context","query","query-ready","refresh-counter"])}}}),[["__scopeId","data-v-5e3d0a14"]]),Wi=s.defineComponent({__name:"BarChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},setup(n){return(e,t)=>(s.openBlock(),s.createBlock(It,{"chart-options":n.chartOptions,context:n.context,"extra-props":{showAnnotations:!1},height:n.height,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter},null,8,["chart-options","context","height","query","query-ready","refresh-counter"]))}}),Us={class:"analytics-chart"},Ws={key:3,class:"analytics-chart"},Gs=Re(s.defineComponent({__name:"ScatterChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},emits:["chart-data","query-complete"],setup(n,{emit:e}){const t=n,i=e,{i18n:r}=ae.useI18n(),{issueRequestsQuery:o}=ae.useIssueRequestsQuery(),a=s.computed(()=>t.query.datasource==="requests"),l=s.computed(()=>{const S=t.query,D=S.time_range??t.context.timeSpec,B=D?Nt(D):void 0;if(!B)return S;const H=K.finestGranularityForDuration(B);let p;return S.granularity&&K.Granularities[S.granularity]>=K.Granularities[H]?p=S.granularity:p=H,{...S,granularity:p}}),d=()=>a.value&&t.queryReady?JSON.stringify([t.query,t.context,t.refreshCounter]):null,c=s.ref(null),{data:u,error:h,isValidating:f}=Ht(d,async()=>{const S=d(),D=t.query;try{const B=await o(D,t.context);return d()!==S?void 0:(c.value=null,Ee.requestsToScatterData(B,Ts(D)))}catch(B){if(d()!==S)return;throw c.value=Ee.handleQueryError(B),B}finally{d()===S&&i("query-complete")}},{refreshInterval:t.context.refreshInterval,revalidateOnFocus:!1,shouldRetryOnError:!1}),{state:g,swrvState:w}=$i(u,h,f),E=s.ref(),b=s.computed(()=>u.value??E.value);s.watch(u,S=>{S&&(E.value=S)});const N=s.computed(()=>g.value===w.ERROR||!!c.value),M=s.computed(()=>!N.value&&(!t.queryReady||g.value===w.PENDING)&&!b.value),C=s.computed(()=>({type:"scatter",chartDatasetColors:t.chartOptions.chart_dataset_colors,scatter:{percentileLines:t.chartOptions.percentile_lines?.map(S=>({percentile:S.percentile,label:S.label,borderDash:S.border_dash,color:S.color})),outlierPercentile:t.chartOptions.outlier_percentile,shadeOutlierRegion:t.chartOptions.shade_outlier_region,jitterMs:t.chartOptions.jitter_ms,pointRadius:t.chartOptions.point_radius,pointOpacity:t.chartOptions.point_opacity}}));return(S,D)=>{const B=s.resolveComponent("KSkeleton"),H=s.resolveComponent("KEmptyState");return a.value?M.value?(s.openBlock(),s.createBlock(B,{key:1,class:"chart-skeleton",type:"table"})):N.value?(s.openBlock(),s.createBlock(H,{key:2,"action-button-visible":!1,"data-testid":"scatter-chart-empty-state"},s.createSlots({icon:s.withCtx(()=>[c.value?.type==="forbidden"?(s.openBlock(),s.createBlock(s.unref(xe.VisibilityOffIcon),{key:0})):(s.openBlock(),s.createBlock(s.unref(xe.WarningOutlineIcon),{key:1}))]),title:s.withCtx(()=>[s.createElementVNode("p",null,s.toDisplayString(c.value?.message||s.unref(r).t("renderer.unexpectedError")),1)]),_:2},[c.value?.details?{name:"default",fn:s.withCtx(()=>[s.createElementVNode("p",null,s.toDisplayString(c.value.details),1)]),key:"0"}:void 0]),1024)):b.value?(s.openBlock(),s.createElementBlock("div",Ws,[s.createVNode(s.unref(Ee.AnalyticsChart),{"chart-data":b.value,"chart-options":C.value,"legend-position":"bottom","synthetics-data-key":n.chartOptions.synthetics_data_key,"tooltip-title":""},null,8,["chart-data","chart-options","synthetics-data-key"])])):s.createCommentVNode("",!0):(s.openBlock(),s.createBlock(qe,{key:0,context:n.context,query:l.value,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,onChartData:D[0]||(D[0]=p=>i("chart-data",p)),onQueryComplete:D[1]||(D[1]=p=>i("query-complete"))},{default:s.withCtx(({data:p})=>[s.createElementVNode("div",Us,[s.createVNode(s.unref(Ee.AnalyticsChart),{"chart-data":p,"chart-options":C.value,"legend-position":"bottom","synthetics-data-key":n.chartOptions.synthetics_data_key,"tooltip-title":""},null,8,["chart-data","chart-options","synthetics-data-key"])])]),_:1},8,["context","query","query-ready","refresh-counter"]))}}}),[["__scopeId","data-v-e823be94"]]),Gi=s.defineComponent({__name:"TimeseriesChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},emits:["zoom-time-range","select-chart-range"],setup(n,{emit:e}){const t=e;return(i,r)=>(s.openBlock(),s.createBlock(It,{"active-metric":n.activeMetric,"chart-options":n.chartOptions,context:n.context,"explore-link":n.exploreLink,height:n.height,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,"requests-link":n.requestsLink,"zoom-configuration":n.zoomConfiguration,onSelectChartRange:r[0]||(r[0]=o=>t("select-chart-range",o)),onZoomTimeRange:r[1]||(r[1]=o=>t("zoom-time-range",o))},null,8,["active-metric","chart-options","context","explore-link","height","query","query-ready","refresh-counter","requests-link","zoom-configuration"]))}}),Ys=Re(s.defineComponent({__name:"GoldenSignalsRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},setup(n){const e=n,t=s.computed(()=>{const r=e.query?.datasource;if(r&&r!=="api_usage"&&r!=="basic")throw new Error(`Invalid datasource value: ${r}`);return{datasource:e.query?.datasource,overrideTimeRange:e.context.timeSpec,additionalFilter:e.context.filters,longCardTitles:e.chartOptions.long_card_titles,percentileLatency:e.chartOptions.percentile_latency,refreshInterval:e.context.refreshInterval,queryReady:e.queryReady,refreshCounter:e.refreshCounter}}),i=s.computed(()=>!!(e.chartOptions.chart_title||e.headerDescription));return(r,o)=>(s.openBlock(),s.createElementBlock("div",{class:s.normalizeClass(["metric-card-tile-wrapper",{titled:i.value}])},[s.createVNode(s.unref(Ft.MetricsProvider),s.normalizeProps(s.guardReactiveProps(t.value)),{default:s.withCtx(()=>[s.createVNode(s.unref(Ft.MetricsConsumer))]),_:1},16)],2))}}),[["__scopeId","data-v-3eda5028"]]),Vs={class:"fallback-entity-link","data-testid":"entity-link-parent"},Yi=s.defineComponent({__name:"FallbackEntityLink",props:{entityLinkData:{}},setup(n){return(e,t)=>(s.openBlock(),s.createElementBlock("div",Vs,s.toDisplayString(n.entityLinkData.label),1))}}),js={key:0},Ks={key:1},Qs=s.defineComponent({__name:"TopNTableRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},setup(n){const e=n,t=s.inject(ke),i=s.defineAsyncComponent(async()=>{if(t?.fetchComponent)try{return await t.fetchComponent("EntityLink")}catch{return Yi}return Yi}),r=s.computed(()=>!!e.chartOptions.entity_link||!!Object.keys(e.chartOptions.entity_links||{}).length),o=c=>{const u=e.chartOptions.entity_links;return u&&(u[c]||Object.entries(u).find(([h])=>h.toLowerCase()===c.toLowerCase())?.[1])||""},a=c=>{const u=c.dimensions?.[0]?.dimension;return!u||u===c.dimension},l=c=>o(c.dimension)||a(c)&&e.chartOptions.entity_link||"",d=c=>{const u=l(c);if(u)if(c.id.includes(":")){const[h,f]=c.id.split(":");return u.replace(ki,h).replace(Rt,f)}else return u.replace(Rt,c.id);return""};return(c,u)=>(s.openBlock(),s.createBlock(qe,{context:n.context,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter},{default:s.withCtx(({data:h})=>[s.createVNode(s.unref(Ee.TopNTable),{"column-options":n.chartOptions.column_options,data:h,"synthetics-data-key":n.chartOptions.synthetics_data_key},s.createSlots({_:2},[r.value?{name:"name",fn:s.withCtx(({record:f})=>[!f.isEmpty&&l(f)?(s.openBlock(),s.createBlock(s.unref(i),{key:0,"entity-link-data":{id:f.id,label:f.name,deleted:f.deleted},"external-link":d(f)},null,8,["entity-link-data","external-link"])):(s.openBlock(),s.createElementBlock(s.Fragment,{key:1},[f.name==="empty"?(s.openBlock(),s.createElementBlock("i",js,s.toDisplayString(f.name),1)):(s.openBlock(),s.createElementBlock("span",Ks,s.toDisplayString(f.name),1))],64))]),key:"0"}:void 0]),1032,["column-options","data","synthetics-data-key"])]),_:1},8,["context","query","query-ready","refresh-counter"]))}}),Xs=s.defineComponent({__name:"TopTalkersRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},emits:["query-complete"],setup(n,{emit:e}){const t=n,i=e,r=s.computed(()=>t.chartOptions.columns.map(c=>({dimension:c.dimension,label:c.label}))),o=c=>({...t.query,dimensions:[c.dimension],filters:[...t.query.filters??[],...c.filters??[]]}),a=s.computed(()=>new Map(r.value.map((c,u)=>[c,o(t.chartOptions.columns[u])]))),l=new Set,d=c=>{l.add(c),l.size===r.value.length&&(l.clear(),i("query-complete"))};return s.watch([a,()=>t.refreshCounter],()=>l.clear()),(c,u)=>(s.openBlock(),s.createBlock(s.unref(Ee.TopTalkersGrid),{"column-options":n.chartOptions.column_options,columns:r.value,"size-metric":n.chartOptions.size_metric},{column:s.withCtx(({column:h})=>[s.createVNode(qe,{context:n.context,query:a.value.get(h),"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,onQueryComplete:f=>d(h)},{default:s.withCtx(({data:f})=>[s.createVNode(s.unref(Ee.TopTalkersColumn),{"column-options":n.chartOptions.column_options,data:f,dimension:h.dimension,label:h.label,"size-metric":n.chartOptions.size_metric},null,8,["column-options","data","dimension","label","size-metric"])]),_:2},1032,["context","query","query-ready","refresh-counter","onQueryComplete"])]),_:1},8,["column-options","columns","size-metric"]))}}),Zs=n=>n.records.map(e=>{const t={...e};return Object.entries(e).forEach(([i,r])=>{if(r===null)return;const o=n.meta.display?.[i]?.[String(r)]?.name;o&&(t[i]=o)}),t}),Vi=({canTranslate:n,columns:e,translate:t})=>e.map(i=>{const r=`chartLabels.${i}`;return{key:i,label:n(r)?t(r):i}}),Js={platform:Vi,platform_usage:Vi},ji=async({abortController:n,context:e,cursor:t,pageSize:i,query:r,onResponseColumns:o,stripUnknownFilters:a,tabularQueryFn:l})=>{if(!l)throw new Error("AnalyticsBridge.tabularQueryFn is not defined");const d=r.query,c=a({datasource:r.datasource,filters:[...d.filters??[],...e.filters],queryFields:d.entity===void 0?void 0:[d.entity]}),u=await l({datasource:r.datasource,query:{columns:d.columns,cursor:t===void 0?d.cursor:String(t),entity:d.entity,filters:c,page_size:i}},n);return u.meta.columns?.length&&o?.(u.meta.columns),{data:Zs(u),cursor:u.meta.cursor,hasMore:!!u.meta.cursor}},eo={platform:ji,platform_usage:ji},to=Re(s.defineComponent({__name:"TableDataGridRenderer",props:{query:{},context:{},queryReady:{type:Boolean},height:{},refreshCounter:{}},emits:["loading-change"],setup(n,{emit:e}){const t=n,i=e,r=s.inject(ke),o=Me.useDatasourceConfigStore(),{i18n:a}=ae.useI18n(),l=new AbortController,d=s.ref([]),c=s.ref(!1),u=s.computed(()=>t.height===void 0?void 0:{height:`${t.height}px`}),h=s.computed(()=>({datasource:t.query.datasource,query:{columns:t.query.columns,cursor:t.query.cursor,entity:t.query.entity,filters:t.query.filters,page_size:t.query.page_size}})),f=s.computed(()=>JSON.stringify({refreshCounter:t.refreshCounter,query:{columns:t.query.columns,datasource:t.query.datasource,entity:t.query.entity,filters:t.query.filters,page_size:t.query.page_size},context:{filters:t.context.filters,timeSpec:t.context.timeSpec,tz:t.context.tz}}));s.onUnmounted(()=>{l.abort()});const g=s.computed(()=>Js[t.query.datasource]({columns:t.query.columns?.length?t.query.columns:d.value,translate:b=>a.t(b),canTranslate:b=>a.te(b)})),w=s.computed(()=>async({cursor:b,pageSize:N})=>{try{await o.isReady();const M=eo[h.value.datasource];if(!M)throw new Error(`No table data grid fetcher found for datasource: ${h.value.datasource}`);const C=await M({abortController:l,context:t.context,cursor:b,pageSize:N,query:h.value,onResponseColumns:S=>{d.value=S},stripUnknownFilters:o.stripUnknownFilters,tabularQueryFn:r?.tabularQueryFn});return c.value=!1,C}catch(M){throw c.value=!0,M}}),E=b=>{b.state==="error"&&(c.value=!0),i("loading-change",b.state==="loading")};return(b,N)=>{const M=s.resolveComponent("KSkeleton");return s.openBlock(),s.createElementBlock("div",{class:"table-data-grid-renderer",style:s.normalizeStyle(u.value)},[n.queryReady?(s.openBlock(),s.createBlock(s.unref(ln.TableDataGrid),{key:1,error:c.value,fetcher:w.value,headers:g.value,"page-size":n.query.page_size,"refresh-key":f.value,onState:E},null,8,["error","fetcher","headers","page-size","refresh-key"])):(s.openBlock(),s.createBlock(M,{key:0,"data-testid":"table-skeleton",type:"table"}))],4)}}}),[["__scopeId","data-v-c49ff2eb"]]),io=s.defineComponent({__name:"DonutChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},setup(n){return(e,t)=>(s.openBlock(),s.createBlock(It,{"chart-options":n.chartOptions,context:n.context,height:n.height,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter},null,8,["chart-options","context","height","query","query-ready","refresh-counter"]))}}),Ki=n=>{if(n==null||typeof n=="string"&&n.trim()==="")return;const e=Number(n);return Number.isFinite(e)?e:void 0},Qi="MMM dd",no=(n,e)=>{const t=[],i=new Date(e);for(const r=new Date(n);r<i;r.setDate(r.getDate()+1))t.push(yt(r,Qi));return t},ro=(n,e)=>{const t=n.indexOf(e);return t===-1?n.push(e)-1:t},so=(n,e)=>n[e]?.name??e,oo=n=>{if(!n?.meta||!n.data)return;const{display:e,metric_names:t,start:i,end:r}=n.meta,o=t?.[0],a=e&&Object.keys(e).find(u=>u!=="time");if(!o||!a||!i||!r){console.error("Cannot build heatmap chart data from this explore result. Missing metric, dimension or time range.");return}const l=no(i,r),d=[],c=[];for(const{timestamp:u,event:h}of n.data){const f=l.indexOf(yt(new Date(u),Qi)),g=Ki(h[o]);f===-1||g===void 0||c.push([f,ro(d,String(h[a])),g])}return{data:c,xAxisLabels:l,yAxisLabels:d.map(u=>so(e[a],u))}},ao={class:"wrapper","data-testid":"heatmap-chart"},lo=10,co=Re(s.defineComponent({__name:"HeatmapRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},emits:["chart-data","query-complete"],setup(n,{emit:e}){const t=e,{i18n:i}=ae.useI18n(),r=ae.useMetricFormatter(),o=d=>{const c=oo(d);if(c?.data.length)return{data:c.data,xAxisLabels:c.xAxisLabels,yAxisLabels:c.yAxisLabels,...r(d)}},a=new WeakMap,l=d=>(a.has(d)||a.set(d,o(d)),a.get(d));return(d,c)=>{const u=s.resolveComponent("KEmptyState");return s.openBlock(),s.createBlock(qe,{context:n.context,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,onChartData:c[0]||(c[0]=h=>t("chart-data",h)),onQueryComplete:c[1]||(c[1]=h=>t("query-complete"))},{default:s.withCtx(({data:h})=>[s.createElementVNode("div",ao,[l(h)?(s.openBlock(),s.createBlock(s.unref($t.HeatmapChart),s.mergeProps({key:0,height:"100%","tooltip-title":n.chartOptions.chart_title??void 0,"visible-rows":lo},l(h)),null,16,["tooltip-title"])):(s.openBlock(),s.createBlock(u,{key:1,"action-button-visible":!1,"data-testid":"no-data-in-report"},{title:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(i).t("renderer.noDataAvailable.title")),1)]),default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(i).t("renderer.noDataAvailable.description")),1)]),_:1}))])]),_:1},8,["context","query","query-ready","refresh-counter"])}}}),[["__scopeId","data-v-937dae87"]]),Xi=(n,e,{otherLabel:t})=>({name:e===Ee.OTHER_DIMENSION_ID&&t||(n?.[e]?.name??e)}),uo=(n,e,t,i)=>({...Xi(e,t,i),itemStyle:{color:K.color({dimension:n,dimensionValue:t})}}),Zi=(n,e,t)=>{const i=n.get(e)??t();return n.set(e,i),i},ho=/_(average|p\d+|rate|max|per_minute)$/,Ji=(n,e)=>!e.includes("time")&&!(n&&ho.test(n)),en=(n,e)=>{n.value=Number(n.value??0)+e},fo=(n,e,t,[i,r],o)=>{const a=new Map,l=(d,c)=>String(d[c]);for(const{event:d}of n){const c=Ki(d[e]);if(c===void 0)continue;const u=l(d,i),h=Zi(a,u,()=>({node:uo(i,t[i],u,o),children:new Map}));if(!r){en(h.node,c);continue}const f=l(d,r),g=Zi(h.children,f,()=>Xi(t[r],f,o));en(g,c)}return a},mo=(n,e={})=>{if(!n?.meta||!n.data)return;const{display:t,metric_names:i}=n.meta,r=i?.[0],o=t?Object.keys(t):[];if(!r||!o.length){console.error("Cannot build treemap chart data from this explore result. Missing metric or dimension.");return}if(!Ji(r,o)){console.error("Cannot build treemap chart data from this explore result. Needs an additive metric and no time dimension.");return}return[...fo(n.data,r,t,o,e).values()].map(({node:l,children:d})=>d.size?{...l,children:[...d.values()]}:l)},po={class:"wrapper","data-testid":"treemap-chart"},go=Re(s.defineComponent({__name:"TreemapRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},emits:["chart-data","query-complete"],setup(n,{emit:e}){const t=n,i=e,{i18n:r}=ae.useI18n(),o=ae.useMetricFormatter(),a=s.computed(()=>Ji(t.query.metrics?.[0],t.query.dimensions??[])),l=u=>{const h=mo(u,{otherLabel:r.t("chartLabels.____OTHER____")});if(h?.length)return{data:h,drillDown:h.some(f=>f.children?.length),...o(u)}},d=new WeakMap,c=u=>(d.has(u)||d.set(u,l(u)),d.get(u));return(u,h)=>{const f=s.resolveComponent("KEmptyState");return s.openBlock(),s.createBlock(qe,{context:n.context,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,onChartData:h[0]||(h[0]=g=>i("chart-data",g)),onQueryComplete:h[1]||(h[1]=g=>i("query-complete"))},{default:s.withCtx(({data:g})=>[s.createElementVNode("div",po,[a.value?c(g)?(s.openBlock(),s.createBlock(s.unref($t.TreeMapChart),s.mergeProps({key:1,height:"100%","tooltip-title":n.chartOptions.chart_title??void 0},c(g)),null,16,["tooltip-title"])):(s.openBlock(),s.createBlock(f,{key:2,"action-button-visible":!1,"data-testid":"no-data-in-report"},{title:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(r).t("renderer.noDataAvailable.title")),1)]),default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(r).t("renderer.noDataAvailable.description")),1)]),_:1})):(s.openBlock(),s.createBlock(f,{key:0,"action-button-visible":!1,"data-testid":"treemap-unsupported"},{title:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(r).t("renderer.treemapUnsupported.title")),1)]),default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(r).t("renderer.treemapUnsupported.description")),1)]),_:1}))])]),_:1},8,["context","query","query-ready","refresh-counter"])}}}),[["__scopeId","data-v-d818a9ae"]]),yo=["data-testid"],_o={key:0,class:"tile-header"},wo={class:"badge-container"},bo={class:"badge-text"},vo={class:"badge-text"},xo={key:0,class:"metric-selector-wrapper"},Eo={key:1},Co=["data-testid"],ko=["data-testid"],Ro=["data-testid"],To={class:"delete-option"},So=["data-testid"],tn=Re(s.defineComponent({__name:"DashboardTile",props:s.mergeModels({context:{},definition:{},height:{default:()=>je},hideActions:{type:Boolean,default:!1},isFullscreen:{type:Boolean},preview:{type:Boolean,default:!1},queryReady:{type:Boolean},showRefresh:{type:Boolean,default:!1},tileId:{},tileType:{default:"chart"}},{refreshCounter:{default:0},refreshCounterModifiers:{}}),emits:s.mergeModels(["chart-data","tile-loaded","edit-tile","duplicate-tile","remove-tile","tile-time-range-zoom","tile-bounds-change"],["update:refreshCounter"]),setup(n,{expose:e,emit:t}){s.useCssVars(O=>({v0b6a9da7:`${O.height}px`}));const i=parseInt(bi,10),{zoomConfiguration:r}=ae.useDashboardContext({context:s.computed(()=>n.context),preview:s.computed(()=>n.preview)}),o=s.useModel(n,"refreshCounter"),a=()=>{C.value=!0,o.value++},l=t,d=s.defineAsyncComponent(()=>Promise.resolve().then(()=>Yo)),c=s.inject(ke),u=Me.useDatasourceConfigStore(),{datasourceConfigMap:h,stripUnknownFilters:f}=Ke(u),{i18n:g}=ae.useI18n(),w=s.ref(),E=s.ref({status:"loading"}),b=s.ref(!1),N=s.ref(),M=s.ref(!1),C=s.ref(!0),S=s.computed(()=>n.definition.chart),D=s.computed(()=>"chart_title"in S.value?S.value.chart_title:void 0),B=s.computed(()=>n.definition.header_description),H=s.computed(()=>S.value.type==="slottable"),p=s.computed(()=>De(n.definition)||Dt(n.definition)?!1:!("allow_csv_export"in S.value)||S.value.allow_csv_export!==!1),{exploreLinkKebabMenu:m,requestsLinkKebabMenu:_,canShowKebabMenu:k,canGenerateRequestsLink:R,canGenerateExploreLink:A,requestsLinkZoomActions:te,exploreLinkZoomActions:de,buildExploreQuery:he,buildExploreLink:X,buildRequestLink:ne,buildRequestsQueryZoomActions:L}=ae.useContextLinks({queryBridge:c,chartData:s.readonly(w),definition:s.toRef(()=>n.definition),context:s.readonly(s.toRef(()=>n.context))}),{issueQuery:J}=ae.useIssueQuery();s.watch(()=>n.definition,async(O,j)=>{await s.nextTick(),N.value&&(M.value=N.value.scrollWidth>N.value.clientWidth);try{JSON.stringify(O?.query)!==JSON.stringify(j?.query)&&(C.value=!0)}catch{}},{immediate:!0,deep:!0});const v=s.computed(()=>g.t("csvExport.defaultFilename")),T=s.computed(()=>!!m.value||p.value||!!n.context.editable),x=s.computed(()=>!n.hideActions&&k.value&&T.value),Y=s.computed(()=>x.value&&T.value&&!n.isFullscreen),G={heatmap:co,treemap:go,timeseries_line:Gi,timeseries_bar:Gi,scatter:Gs,horizontal_bar:Wi,vertical_bar:Wi,gauge:Ui,donut:io,golden_signals:Ys,top_n:Qs,top_talkers:Xs,table:to,slottable:void 0,single_value:Ui,choropleth_map:d},re=s.computed(()=>({...ce.value?.rendererEvents.supportsRequests?{"select-chart-range":$e}:{},...ce.value?.rendererEvents.supportsZoom?{"zoom-time-range":Pe}:{},...ce.value?.rendererEvents.supportsBounds?{"bounds-change":ve}:{},...ce.value?.rendererEvents.supportsLoadingChange?{"loading-change":me}:{}})),ce=s.computed(()=>{const O=G[n.definition.chart.type],j=De(n.definition),fe=!!O?.emits?.includes("select-chart-range"),Ue=!!O?.emits?.includes("zoom-time-range"),Be=n.definition.chart.type==="choropleth_map",We=!!O?.emits?.includes("loading-change"),Pt={query:n.definition.query,context:n.context,queryReady:n.queryReady,height:n.height-i*2,refreshCounter:o.value,zoomConfiguration:r.value},Bt={chartOptions:n.definition.chart,activeMetric:V.value,headerDescription:B.value,requestsLink:r.value.showRequestsAction?te.value:void 0,exploreLink:r.value.showExploreAction?de.value:void 0};return O&&{component:O,rendererProps:{...Pt,...j?{}:Bt},rendererEvents:{supportsRequests:fe,supportsZoom:Ue,supportsBounds:Be,supportsLoadingChange:We}}}),F=s.computed(()=>{if(De(n.definition))return null;const O=n.definition.query,j=O?.time_range;if(K.isPlatformDatasource(O?.datasource)&&!O.dimensions?.includes("time"))return g.t("renderer.as_of_today");if(j?.type==="relative"){const fe=K.TimePeriods.get(K.TIMEFRAME_LOOKUP[j.time_range]);return fe?fe.display:(console.warn("Did not recognize the given relative time range:",j.time_range),j.time_range)}else if(j?.type==="absolute"){const fe=j.tz||"Etc/UTC";return`${K.formatTime(j.start,{short:!0,tz:fe})} - ${K.formatTime(j.end,{short:!0,tz:fe})}`}return null}),$=s.computed(()=>{const O=n.definition.query,j=O?.datasource,fe=j?h.value[j]?.timeRangeOptions:void 0,Be=(O&&"time_range"in O?O.time_range:void 0)??n.context.timeSpec;return Mt(Be,fe)}),ie=s.computed(()=>H.value?!1:[!!D.value,Y.value,!!F.value,$.value,!!B.value,n.showRefresh,U.value].some(Boolean)),q=s.computed(()=>w.value?K.msToGranularity(w.value.meta.granularity_ms):void 0),se=s.computed(()=>["timeseries_line","timeseries_bar"].includes(S.value.type)),oe=s.computed(()=>w.value?.meta.metric_names??[]),V=s.ref();s.watch(oe,O=>{(!V.value||!O.includes(V.value))&&(V.value=O[0])},{immediate:!0});const Z=s.computed(()=>{const O=S.value;return O.type!=="timeseries_line"?!1:oe.value.some(j=>O.metric_axis_map?.[j]==="right")}),U=s.computed(()=>se.value&&!Z.value&&(w.value?.data.length??0)>0&&oe.value.length>1&&Object.keys(w.value?.meta.display??{}).length>0),_e=O=>Object.hasOwn(Ei.chartLabels,O),P=s.computed(()=>oe.value.map(O=>({value:O,label:_e(O)?g.t(`chartLabels.${O}`):O}))),ee=s.computed(()=>{if(!Ot(n.definition)||!se.value||!n.queryReady||C.value)return!1;const O=n.definition.query.granularity;return!O||!q.value?!1:O!==q.value}),ze=s.computed(()=>{const O=K.msToGranularity(w.value?.meta.granularity_ms??0)??"unknown",j=Ot(n.definition)?n.definition.query.granularity??"unknown":"unknown";return g.t("query_aged_out_warning",{currentGranularity:g.t(`granularities.${O}`),savedGranularity:g.t(`granularities.${j}`)})}),Le=s.computed(()=>{const O=[...n.context.filters,...n.definition.query.filters??[]],j="metrics"in n.definition.query?n.definition.query.metrics:void 0,fe=n.definition.query.datasource??"api_usage";return f.value({datasource:fe,filters:O,queryFields:j})}),we=()=>{l("edit-tile",n.definition)},Fe=()=>{l("duplicate-tile",n.definition)},ue=()=>{l("remove-tile",n.definition)},be=O=>{w.value=O,C.value=!1,l("chart-data",O),l("tile-loaded")},le=()=>{C.value=!1,l("tile-loaded")},me=O=>{C.value=O,O||l("tile-loaded")},Se=()=>{b.value=!1},Qe=()=>{if(Dt(n.definition))throw new Error("Cannot export data for a tile backed by the api-requests endpoint");const O=n.definition.query.datasource?.startsWith("goap");return c?.staticConfig?.increaseCsvExportLimit!==!1&&!O?J(n.definition.query,n.context,K.EXPORT_RECORD_LIMIT):w.value?Promise.resolve(w.value):new Promise(fe=>{const Ue=s.watch(w,Be=>{Be&&(fe(Be),Ue())})})},pt=async()=>{b.value=!0,E.value={status:"loading"};try{const O=await Qe();E.value={status:"success",chartData:O}}catch(O){E.value={status:"error",error:O}}},Pe=O=>{const j={tileId:n.tileId.toString(),timeRange:O};l("tile-time-range-zoom",j)},ve=O=>{const j={tileId:n.tileId.toString(),bounds:O};l("tile-bounds-change",j)},$e=O=>{const j=Le.value,fe=he(O,j);de.value=A.value?{href:X(fe)}:void 0,te.value=R.value?{href:ne(L(O,j))}:void 0};return e({getExportData:Qe}),(O,j)=>{const fe=s.resolveComponent("KTooltip"),Ue=s.resolveComponent("KBadge"),Be=s.resolveComponent("KButton"),We=s.resolveComponent("KDropdownItem"),Pt=s.resolveComponent("KDropdown");return s.openBlock(),s.createElementBlock("div",{class:s.normalizeClass(["tile-boundary",{editable:n.context.editable,headless:!ie.value}]),"data-testid":`tile-${n.tileId}`},[ie.value&&!H.value?(s.openBlock(),s.createElementBlock("div",_o,[s.createVNode(fe,{class:"title-tooltip",disabled:!M.value,"max-width":"500",text:D.value},{default:s.withCtx(()=>[s.createElementVNode("div",{ref_key:"titleRef",ref:N,class:"title"},s.toDisplayString(D.value),513)]),_:1},8,["disabled","text"]),s.createElementVNode("div",wo,[$.value?(s.openBlock(),s.createBlock(Ue,{key:0,appearance:"warning","data-testid":"unsupported-time-range-badge",tooltip:s.unref(g).t("unsupported_time_range_warning"),"tooltip-attributes":{maxWidth:"320px"}},{icon:s.withCtx(()=>[s.createVNode(s.unref(xe.WarningIcon),{size:`var(--kui-icon-size-20, ${s.unref(yi)})`},null,8,["size"])]),default:s.withCtx(()=>[s.createElementVNode("span",bo,s.toDisplayString(s.unref(g).t("unsupported_time_range_badge")),1)]),_:1},8,["tooltip"])):s.createCommentVNode("",!0),F.value?(s.openBlock(),s.createBlock(Ue,{key:1,"data-testid":"time-range-badge",tooltip:ee.value?ze.value:void 0,"tooltip-attributes":{maxWidth:"320px"}},s.createSlots({default:s.withCtx(()=>[s.createElementVNode("span",vo,s.toDisplayString(F.value),1)]),_:2},[ee.value?{name:"icon",fn:s.withCtx(()=>[s.createVNode(s.unref(xe.WarningIcon),{size:`var(--kui-icon-size-20, ${s.unref(yi)})`},null,8,["size"])]),key:"0"}:void 0]),1032,["tooltip"])):s.createCommentVNode("",!0)]),U.value?(s.openBlock(),s.createElementBlock("div",xo,[s.createVNode(s.unref(cn.KSegmentedControl),{modelValue:V.value,"onUpdate:modelValue":j[0]||(j[0]=Bt=>V.value=Bt),class:"metric-selector","data-testid":"metric-selector",options:P.value},null,8,["modelValue","options"])])):s.createCommentVNode("",!0),n.showRefresh?(s.openBlock(),s.createElementBlock("div",Eo,[s.createVNode(Be,{appearance:"secondary",class:"refresh-button","data-testid":`tile-refresh-button-${n.tileId}`,disabled:C.value,icon:"",size:"small",onClick:a},{default:s.withCtx(()=>[C.value?(s.openBlock(),s.createBlock(s.unref(xe.ProgressIcon),{key:0,role:"button",size:`var(--kui-icon-size-60, ${s.unref(wi)})`,tabindex:"0"},null,8,["size"])):(s.openBlock(),s.createBlock(s.unref(xe.RefreshIcon),{key:1,role:"button",size:`var(--kui-icon-size-60, ${s.unref(wi)})`,tabindex:"0"},null,8,["size"]))]),_:1},8,["data-testid","disabled"])])):s.createCommentVNode("",!0),B.value?(s.openBlock(),s.createElementBlock("div",{key:2,class:"header-description","data-testid":`tile-description-${n.tileId}`},s.toDisplayString(B.value),9,Co)):s.createCommentVNode("",!0),x.value?(s.openBlock(),s.createElementBlock("div",{key:3,class:"tile-actions","data-testid":`tile-actions-${n.tileId}`},[x.value&&n.context.editable&&!n.isFullscreen?(s.openBlock(),s.createBlock(s.unref(xe.EditIcon),{key:0,class:"edit-icon",color:`var(--kui-color-text-neutral, ${s.unref(Ct)})`,"data-testid":`edit-tile-${n.tileId}`,size:`var(--kui-icon-size-40, ${s.unref(_i)})`,onClick:we},null,8,["color","data-testid","size"])):s.createCommentVNode("",!0),x.value&&T.value&&!n.isFullscreen?(s.openBlock(),s.createBlock(Pt,{key:1,class:"dropdown","data-testid":`chart-action-menu-${n.tileId}`,"kpop-attributes":{placement:"bottom-end"}},{items:s.withCtx(()=>[s.unref(m)?(s.openBlock(),s.createBlock(We,{key:0,"data-testid":`chart-jump-to-explore-${n.tileId}`,item:{label:s.unref(g).t("jumpToExplore"),to:s.unref(m)}},null,8,["data-testid","item"])):s.createCommentVNode("",!0),!s.unref(De)(n.definition)&&s.unref(_)?(s.openBlock(),s.createBlock(We,{key:1,"data-testid":`chart-jump-to-requests-${n.tileId}`,item:{label:s.unref(g).t("jumpToRequests"),to:s.unref(_)}},null,8,["data-testid","item"])):s.createCommentVNode("",!0),p.value?(s.openBlock(),s.createBlock(We,{key:2,class:"chart-export-button","data-testid":`chart-csv-export-${n.tileId}`,onClick:pt},{default:s.withCtx(()=>[s.createElementVNode("span",{class:"chart-export-trigger","data-testid":`csv-export-button-${n.tileId}`},s.toDisplayString(s.unref(g).t("csvExport.exportAsCsv")),9,Ro)]),_:1},8,["data-testid"])):s.createCommentVNode("",!0),n.context.editable?(s.openBlock(),s.createBlock(We,{key:3,"data-testid":`duplicate-tile-${n.tileId}`,onClick:Fe},{default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(g).t("renderer.duplicateTile")),1)]),_:1},8,["data-testid"])):s.createCommentVNode("",!0),n.context.editable?(s.openBlock(),s.createBlock(We,{key:4,"data-testid":`remove-tile-${n.tileId}`,onClick:ue},{default:s.withCtx(()=>[s.createElementVNode("span",To,s.toDisplayString(s.unref(g).t("renderer.delete")),1)]),_:1},8,["data-testid"])):s.createCommentVNode("",!0)]),default:s.withCtx(()=>[s.createVNode(s.unref(xe.MoreIcon),{class:"kebab-action-menu",color:`var(--kui-color-text-neutral, ${s.unref(Ct)})`,"data-testid":`kebab-action-menu-${n.tileId}`,size:`var(--kui-icon-size-40, ${s.unref(_i)})`},null,8,["color","data-testid","size"])]),_:1},8,["data-testid"])):s.createCommentVNode("",!0)],8,ko)):s.createCommentVNode("",!0),b.value?(s.openBlock(),s.createBlock(Hi,{key:4,"data-testid":`csv-export-modal-${n.tileId}`,"export-state":E.value,filename:v.value,onCloseModal:Se},null,8,["data-testid","export-state","filename"])):s.createCommentVNode("",!0)])):s.createCommentVNode("",!0),s.createElementVNode("div",{class:s.normalizeClass(["tile-content",`type-${n.tileType}-${S.value.type}`]),"data-testid":`tile-content-${n.tileId}`},[ce.value?(s.openBlock(),s.createBlock(s.resolveDynamicComponent(ce.value.component),s.mergeProps({key:0},ce.value.rendererProps,s.toHandlers(re.value),{onChartData:be,onQueryComplete:le}),null,16)):s.createCommentVNode("",!0)],10,So)],10,yo)}}}),[["__scopeId","data-v-8be47824"]]),Do=(n,e)=>{let t=0;const i=new Map;e.forEach(o=>{const a=o.layout.position.row,l=i.get(a),d=o.layout.size.rows===1&&!!o.layout.size.fit_to_content;t=Math.max(t,a+o.layout.size.rows),l===void 0?i.set(a,d):i.set(a,l&&d)});const r=[];for(let o=0;o<t;o++)i.get(o)?r.push("auto"):r.push(`${n}px`);return r},nn=Re(s.defineComponent({__name:"GridLayout",props:{tileHeight:{type:Number,required:!1,default:()=>je},columns:{type:Number,required:!1,default:()=>lt},tiles:{type:Array,required:!0}},setup(n){s.useCssVars(l=>({e54d6296:e.columns,v524bdfba:o.value}));const e=n,t=s.ref(null),i=s.ref(0),r=new ResizeObserver(l=>{window.requestAnimationFrame(()=>{!Array.isArray(l)||!l.length||(i.value=l[0].contentRect.width)})});s.onMounted(()=>{t.value&&r.observe(t.value)}),s.onUnmounted(()=>{t.value&&r.unobserve(t.value)});const o=s.computed(()=>Do(e.tileHeight,e.tiles).join(" ")),a=s.computed(()=>e.tiles.map((l,d)=>({key:`tile-${d}`,tile:l,style:{"grid-column-start":l.layout.position.col+1,"grid-column-end":l.layout.position.col+1+l.layout.size.cols,"grid-row-start":l.layout.position.row+1,"grid-row-end":l.layout.position.row+1+l.layout.size.rows}})));return(l,d)=>(s.openBlock(),s.createElementBlock("div",{ref_key:"gridContainer",ref:t,class:"kong-ui-public-grid-layout"},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(a.value,c=>(s.openBlock(),s.createElementBlock("div",{key:c.key,class:s.normalizeClass(["grid-cell",{"empty-cell":!c.tile}]),style:s.normalizeStyle(c.style)},[s.renderSlot(l.$slots,"tile",{style:s.normalizeStyle(c.style),tile:c.tile},void 0,!0)],6))),128))],512))}}),[["__scopeId","data-v-374ba32b"]]);function Oo(n,e,t,i,r){const o=(...a)=>(console.warn("gridstack.js: Function `"+t+"` is deprecated in "+r+" and has been replaced with `"+i+"`. It will be **removed** in a future release"),e.apply(n,a));return o.prototype=e.prototype,o}class y{static getElements(e,t=document){if(typeof e=="string"){const i="getElementById"in t?t:void 0;if(i&&!isNaN(+e[0])){const o=i.getElementById(e);return o?[o]:[]}let r=t.querySelectorAll(e);return!r.length&&e[0]!=="."&&e[0]!=="#"&&(r=t.querySelectorAll("."+e),r.length||(r=t.querySelectorAll("#"+e))),Array.from(r)}return[e]}static getElement(e,t=document){if(typeof e=="string"){const i="getElementById"in t?t:void 0;if(!e.length)return null;if(i&&e[0]==="#")return i.getElementById(e.substring(1));if(e[0]==="#"||e[0]==="."||e[0]==="[")return t.querySelector(e);if(i&&!isNaN(+e[0]))return i.getElementById(e);let r=t.querySelector(e);return i&&!r&&(r=i.getElementById(e)),r||(r=t.querySelector("."+e)),r}return e}static lazyLoad(e){return e.lazyLoad||e.grid?.opts?.lazyLoad&&e.lazyLoad!==!1}static createDiv(e,t){const i=document.createElement("div");return e.forEach(r=>{r&&i.classList.add(r)}),t?.appendChild(i),i}static shouldSizeToContent(e,t=!1){return e?.grid&&(t?e.sizeToContent===!0||e.grid.opts.sizeToContent===!0&&e.sizeToContent===void 0:!!e.sizeToContent||e.grid.opts.sizeToContent&&e.sizeToContent!==!1)}static isIntercepted(e,t){return!(e.y>=t.y+t.h||e.y+e.h<=t.y||e.x+e.w<=t.x||e.x>=t.x+t.w)}static isTouching(e,t){return y.isIntercepted(e,{x:t.x-.5,y:t.y-.5,w:t.w+1,h:t.h+1})}static areaIntercept(e,t){const i=e.x>t.x?e.x:t.x,r=e.x+e.w<t.x+t.w?e.x+e.w:t.x+t.w;if(r<=i)return 0;const o=e.y>t.y?e.y:t.y,a=e.y+e.h<t.y+t.h?e.y+e.h:t.y+t.h;return a<=o?0:(r-i)*(a-o)}static area(e){return e.w*e.h}static sort(e,t=1){return e.sort((r,o)=>{const a=t*((r.y??1e4)-(o.y??1e4));return a===0?t*((r.x??1e4)-(o.x??1e4)):a})}static find(e,t){return t?e.find(i=>i.id===t):void 0}static createStylesheet(e,t,i){const r=document.createElement("style"),o=i?.nonce;return o&&(r.nonce=o),r.setAttribute("type","text/css"),r.setAttribute("gs-style-id",e),r.styleSheet?r.styleSheet.cssText="":r.appendChild(document.createTextNode("")),t?t.insertBefore(r,t.firstChild):(t=document.getElementsByTagName("head")[0],t.appendChild(r)),r}static removeStylesheet(e,t){const r=(t||document).querySelector("STYLE[gs-style-id="+e+"]");r&&r.parentNode&&r.remove()}static addCSSRule(e,t,i){e.textContent+=`${t} { ${i} } `}static toBool(e){return typeof e=="boolean"?e:typeof e=="string"?(e=e.toLowerCase(),!(e===""||e==="no"||e==="false"||e==="0")):!!e}static toNumber(e){return e===null||e.length===0?void 0:Number(e)}static parseHeight(e){let t,i="px";if(typeof e=="string")if(e==="auto"||e==="")t=0;else{const r=e.match(/^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%|cm|mm)?$/);if(!r)throw new Error(`Invalid height val = ${e}`);i=r[2]||"px",t=parseFloat(r[1])}else t=e;return{h:t,unit:i}}static defaults(e,...t){return t.forEach(i=>{for(const r in i){if(!i.hasOwnProperty(r))return;e[r]===null||e[r]===void 0?e[r]=i[r]:typeof i[r]=="object"&&typeof e[r]=="object"&&this.defaults(e[r],i[r])}}),e}static same(e,t){if(typeof e!="object")return e==t;if(typeof e!=typeof t||Object.keys(e).length!==Object.keys(t).length)return!1;for(const i in e)if(e[i]!==t[i])return!1;return!0}static copyPos(e,t,i=!1){return t.x!==void 0&&(e.x=t.x),t.y!==void 0&&(e.y=t.y),t.w!==void 0&&(e.w=t.w),t.h!==void 0&&(e.h=t.h),i&&(t.minW&&(e.minW=t.minW),t.minH&&(e.minH=t.minH),t.maxW&&(e.maxW=t.maxW),t.maxH&&(e.maxH=t.maxH)),e}static samePos(e,t){return e&&t&&e.x===t.x&&e.y===t.y&&(e.w||1)===(t.w||1)&&(e.h||1)===(t.h||1)}static sanitizeMinMax(e){e.minW||delete e.minW,e.minH||delete e.minH,e.maxW||delete e.maxW,e.maxH||delete e.maxH}static removeInternalAndSame(e,t){if(!(typeof e!="object"||typeof t!="object"))for(let i in e){const r=e[i],o=t[i];i[0]==="_"||r===o?delete e[i]:r&&typeof r=="object"&&o!==void 0&&(y.removeInternalAndSame(r,o),Object.keys(r).length||delete e[i])}}static removeInternalForSave(e,t=!0){for(let i in e)(i[0]==="_"||e[i]===null||e[i]===void 0)&&delete e[i];delete e.grid,t&&delete e.el,e.autoPosition||delete e.autoPosition,e.noResize||delete e.noResize,e.noMove||delete e.noMove,e.locked||delete e.locked,(e.w===1||e.w===e.minW)&&delete e.w,(e.h===1||e.h===e.minH)&&delete e.h}static throttle(e,t){let i=!1;return(...r)=>{i||(i=!0,setTimeout(()=>{e(...r),i=!1},t))}}static removePositioningStyles(e){const t=e.style;t.position&&t.removeProperty("position"),t.left&&t.removeProperty("left"),t.top&&t.removeProperty("top"),t.width&&t.removeProperty("width"),t.height&&t.removeProperty("height")}static getScrollElement(e){if(!e)return document.scrollingElement||document.documentElement;const t=getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowY)?e:this.getScrollElement(e.parentElement)}static updateScrollPosition(e,t,i){const r=e.getBoundingClientRect(),o=window.innerHeight||document.documentElement.clientHeight;if(r.top<0||r.bottom>o){const a=r.bottom-o,l=r.top,d=this.getScrollElement(e);if(d!==null){const c=d.scrollTop;r.top<0&&i<0?e.offsetHeight>o?d.scrollTop+=i:d.scrollTop+=Math.abs(l)>Math.abs(i)?i:l:i>0&&(e.offsetHeight>o?d.scrollTop+=i:d.scrollTop+=a>i?i:a),t.top+=d.scrollTop-c}}}static updateScrollResize(e,t,i){const r=this.getScrollElement(t),o=r.clientHeight,a=r===this.getScrollElement()?0:r.getBoundingClientRect().top,l=e.clientY-a,d=l<i,c=l>o-i;d?r.scrollBy({behavior:"smooth",top:l-i}):c&&r.scrollBy({behavior:"smooth",top:i-(o-l)})}static clone(e){return e==null||typeof e!="object"?e:e instanceof Array?[...e]:{...e}}static cloneDeep(e){const t=["parentGrid","el","grid","subGrid","engine"],i=y.clone(e);for(const r in i)i.hasOwnProperty(r)&&typeof i[r]=="object"&&r.substring(0,2)!=="__"&&!t.find(o=>o===r)&&(i[r]=y.cloneDeep(e[r]));return i}static cloneNode(e){const t=e.cloneNode(!0);return t.removeAttribute("id"),t}static appendTo(e,t){let i;typeof t=="string"?i=y.getElement(t):i=t,i&&i.appendChild(e)}static addElStyles(e,t){if(t instanceof Object)for(const i in t)t.hasOwnProperty(i)&&(Array.isArray(t[i])?t[i].forEach(r=>{e.style[i]=r}):e.style[i]=t[i])}static initEvent(e,t){const i={type:t.type},r={button:0,which:0,buttons:1,bubbles:!0,cancelable:!0,target:t.target?t.target:e.target};return["altKey","ctrlKey","metaKey","shiftKey"].forEach(o=>i[o]=e[o]),["pageX","pageY","clientX","clientY","screenX","screenY"].forEach(o=>i[o]=e[o]),{...i,...r}}static simulateMouseEvent(e,t,i){const r=e,o=new MouseEvent(t,{bubbles:!0,composed:!0,cancelable:!0,view:window,detail:1,screenX:e.screenX,screenY:e.screenY,clientX:e.clientX,clientY:e.clientY,ctrlKey:r.ctrlKey??!1,altKey:r.altKey??!1,shiftKey:r.shiftKey??!1,metaKey:r.metaKey??!1,button:0,relatedTarget:e.target});(i||e.target).dispatchEvent(o)}static getValuesFromTransformedElement(e){const t=document.createElement("div");y.addElStyles(t,{opacity:"0",position:"fixed",top:"0px",left:"0px",width:"1px",height:"1px",zIndex:"-999999"}),e.appendChild(t);const i=t.getBoundingClientRect();return e.removeChild(t),t.remove(),{xScale:1/i.width,yScale:1/i.height,xOffset:i.left,yOffset:i.top}}static swap(e,t,i){if(!e)return;const r=e[t];e[t]=e[i],e[i]=r}static canBeRotated(e){return!(!e||e.w===e.h||e.locked||e.noResize||e.grid?.opts.disableResize||e.minW&&e.minW===e.maxW||e.minH&&e.minH===e.maxH)}}class Oe{constructor(e={}){this.addedNodes=[],this.removedNodes=[],this.defaultColumn=12,this.column=e.column||this.defaultColumn,this.column>this.defaultColumn&&(this.defaultColumn=this.column),this.maxRow=e.maxRow,this._float=e.float,this.nodes=e.nodes||[],this.onChange=e.onChange}batchUpdate(e=!0,t=!0){return!!this.batchMode===e?this:(this.batchMode=e,e?(this._prevFloat=this._float,this._float=!0,this.cleanNodes(),this.saveInitial()):(this._float=this._prevFloat,delete this._prevFloat,t&&this._packNodes(),this._notify()),this)}_useEntireRowArea(e,t){return(!this.float||this.batchMode&&!this._prevFloat)&&!this._hasLocked&&(!e._moving||e._skipDown||t.y<=e.y)}_fixCollisions(e,t=e,i,r={}){if(this.sortNodes(-1),i=i||this.collide(e,t),!i)return!1;if(e._moving&&!r.nested&&!this.float&&this.swap(e,i))return!0;let o=t;!this._loading&&this._useEntireRowArea(e,t)&&(o={x:0,w:this.column,y:t.y,h:t.h},i=this.collide(e,o,r.skip));let a=!1;const l={nested:!0,pack:!1};let d=0;for(;i=i||this.collide(e,o,r.skip);){if(d++>this.nodes.length*2)throw new Error("Infinite collide check");let c;if(i.locked||this._loading||e._moving&&!e._skipDown&&t.y>e.y&&!this.float&&(!this.collide(i,{...i,y:e.y},e)||!this.collide(i,{...i,y:t.y-i.h},e))){e._skipDown=e._skipDown||t.y>e.y;const u={...t,y:i.y+i.h,...l};c=this._loading&&y.samePos(e,u)?!0:this.moveNode(e,u),(i.locked||this._loading)&&c?y.copyPos(t,e):!i.locked&&c&&r.pack&&(this._packNodes(),t.y=i.y+i.h,y.copyPos(e,t)),a=a||c}else c=this.moveNode(i,{...i,y:t.y+t.h,skip:e,...l});if(!c)return a;i=void 0}return a}collide(e,t=e,i){const r=e._id,o=i?._id;return this.nodes.find(a=>a._id!==r&&a._id!==o&&y.isIntercepted(a,t))}collideAll(e,t=e,i){const r=e._id,o=i?._id;return this.nodes.filter(a=>a._id!==r&&a._id!==o&&y.isIntercepted(a,t))}directionCollideCoverage(e,t,i){if(!t.rect||!e._rect)return;const r=e._rect,o={...t.rect};o.y>r.y?(o.h+=o.y-r.y,o.y=r.y):o.h+=r.y-o.y,o.x>r.x?(o.w+=o.x-r.x,o.x=r.x):o.w+=r.x-o.x;let a,l=.5;for(let d of i){if(d.locked||!d._rect)break;const c=d._rect;let u=Number.MAX_VALUE,h=Number.MAX_VALUE;r.y<c.y?u=(o.y+o.h-c.y)/c.h:r.y+r.h>c.y+c.h&&(u=(c.y+c.h-o.y)/c.h),r.x<c.x?h=(o.x+o.w-c.x)/c.w:r.x+r.w>c.x+c.w&&(h=(c.x+c.w-o.x)/c.w);const f=Math.min(h,u);f>l&&(l=f,a=d)}return t.collide=a,a}cacheRects(e,t,i,r,o,a){return this.nodes.forEach(l=>l._rect={y:l.y*t+i,x:l.x*e+a,w:l.w*e-a-r,h:l.h*t-i-o}),this}swap(e,t){if(!t||t.locked||!e||e.locked)return!1;function i(){const o=t.x,a=t.y;return t.x=e.x,t.y=e.y,e.h!=t.h?(e.x=o,e.y=t.y+t.h):e.w!=t.w?(e.x=t.x+t.w,e.y=a):(e.x=o,e.y=a),e._dirty=t._dirty=!0,!0}let r;if(e.w===t.w&&e.h===t.h&&(e.x===t.x||e.y===t.y)&&(r=y.isTouching(e,t)))return i();if(r!==!1){if(e.w===t.w&&e.x===t.x&&(r||(r=y.isTouching(e,t)))){if(t.y<e.y){const o=e;e=t,t=o}return i()}if(r!==!1){if(e.h===t.h&&e.y===t.y&&(r||(r=y.isTouching(e,t)))){if(t.x<e.x){const o=e;e=t,t=o}return i()}return!1}}}isAreaEmpty(e,t,i,r){const o={x:e||0,y:t||0,w:i||1,h:r||1};return!this.collide(o)}compact(e="compact",t=!0){if(this.nodes.length===0)return this;t&&this.sortNodes();const i=this.batchMode;i||this.batchUpdate();const r=this._inColumnResize;r||(this._inColumnResize=!0);const o=this.nodes;return this.nodes=[],o.forEach((a,l,d)=>{let c;a.locked||(a.autoPosition=!0,e==="list"&&l&&(c=d[l-1])),this.addNode(a,!1,c)}),r||delete this._inColumnResize,i||this.batchUpdate(!1),this}set float(e){this._float!==e&&(this._float=e||!1,e||this._packNodes()._notify())}get float(){return this._float||!1}sortNodes(e=1){return this.nodes=y.sort(this.nodes,e),this}_packNodes(){return this.batchMode?this:(this.sortNodes(),this.float?this.nodes.forEach(e=>{if(e._updating||e._orig===void 0||e.y===e._orig.y)return;let t=e.y;for(;t>e._orig.y;)--t,this.collide(e,{x:e.x,y:t,w:e.w,h:e.h})||(e._dirty=!0,e.y=t)}):this.nodes.forEach((e,t)=>{if(!e.locked)for(;e.y>0;){const i=t===0?0:e.y-1;if(!(t===0||!this.collide(e,{x:e.x,y:i,w:e.w,h:e.h})))break;e._dirty=e.y!==i,e.y=i}}),this)}prepareNode(e,t){e._id=e._id??Oe._idSeq++;const i=e.id;if(i){let o=1;for(;this.nodes.find(a=>a.id===e.id&&a!==e);)e.id=i+"_"+o++}(e.x===void 0||e.y===void 0||e.x===null||e.y===null)&&(e.autoPosition=!0);const r={x:0,y:0,w:1,h:1};return y.defaults(e,r),e.autoPosition||delete e.autoPosition,e.noResize||delete e.noResize,e.noMove||delete e.noMove,y.sanitizeMinMax(e),typeof e.x=="string"&&(e.x=Number(e.x)),typeof e.y=="string"&&(e.y=Number(e.y)),typeof e.w=="string"&&(e.w=Number(e.w)),typeof e.h=="string"&&(e.h=Number(e.h)),isNaN(e.x)&&(e.x=r.x,e.autoPosition=!0),isNaN(e.y)&&(e.y=r.y,e.autoPosition=!0),isNaN(e.w)&&(e.w=r.w),isNaN(e.h)&&(e.h=r.h),this.nodeBoundFix(e,t),e}nodeBoundFix(e,t){const i=e._orig||y.copyPos({},e);if(e.maxW&&(e.w=Math.min(e.w||1,e.maxW)),e.maxH&&(e.h=Math.min(e.h||1,e.maxH)),e.minW&&(e.w=Math.max(e.w||1,e.minW)),e.minH&&(e.h=Math.max(e.h||1,e.minH)),(e.x||0)+(e.w||1)>this.column&&this.column<this.defaultColumn&&!this._inColumnResize&&!this.skipCacheUpdate&&e._id&&this.findCacheLayout(e,this.defaultColumn)===-1){const o={...e};o.autoPosition||o.x===void 0?(delete o.x,delete o.y):o.x=Math.min(this.defaultColumn-1,o.x),o.w=Math.min(this.defaultColumn,o.w||1),this.cacheOneLayout(o,this.defaultColumn)}return e.w>this.column?e.w=this.column:e.w<1&&(e.w=1),this.maxRow&&e.h>this.maxRow?e.h=this.maxRow:e.h<1&&(e.h=1),e.x<0&&(e.x=0),e.y<0&&(e.y=0),e.x+e.w>this.column&&(t?e.w=this.column-e.x:e.x=this.column-e.w),this.maxRow&&e.y+e.h>this.maxRow&&(t?e.h=this.maxRow-e.y:e.y=this.maxRow-e.h),y.samePos(e,i)||(e._dirty=!0),this}getDirtyNodes(e){return e?this.nodes.filter(t=>t._dirty&&!y.samePos(t,t._orig)):this.nodes.filter(t=>t._dirty)}_notify(e){if(this.batchMode||!this.onChange)return this;const t=(e||[]).concat(this.getDirtyNodes());return this.onChange(t),this}cleanNodes(){return this.batchMode?this:(this.nodes.forEach(e=>{delete e._dirty,delete e._lastTried}),this)}saveInitial(){return this.nodes.forEach(e=>{e._orig=y.copyPos({},e),delete e._dirty}),this._hasLocked=this.nodes.some(e=>e.locked),this}restoreInitial(){return this.nodes.forEach(e=>{!e._orig||y.samePos(e,e._orig)||(y.copyPos(e,e._orig),e._dirty=!0)}),this._notify(),this}findEmptyPosition(e,t=this.nodes,i=this.column,r){const o=r?r.y*i+(r.x+r.w):0;let a=!1;for(let l=o;!a;++l){const d=l%i,c=Math.floor(l/i);if(d+e.w>i)continue;const u={x:d,y:c,w:e.w,h:e.h};t.find(h=>y.isIntercepted(u,h))||((e.x!==d||e.y!==c)&&(e._dirty=!0),e.x=d,e.y=c,delete e.autoPosition,a=!0)}return a}addNode(e,t=!1,i){const r=this.nodes.find(a=>a._id===e._id);if(r)return r;this._inColumnResize?this.nodeBoundFix(e):this.prepareNode(e),delete e._temporaryRemoved,delete e._removeDOM;let o;return e.autoPosition&&this.findEmptyPosition(e,this.nodes,this.column,i)&&(delete e.autoPosition,o=!0),this.nodes.push(e),t&&this.addedNodes.push(e),o||this._fixCollisions(e),this.batchMode||this._packNodes()._notify(),e}removeNode(e,t=!0,i=!1){return this.nodes.find(r=>r._id===e._id)?(i&&this.removedNodes.push(e),t&&(e._removeDOM=!0),this.nodes=this.nodes.filter(r=>r._id!==e._id),e._isAboutToRemove||this._packNodes(),this._notify([e]),this):this}removeAll(e=!0,t=!0){if(delete this._layouts,!this.nodes.length)return this;e&&this.nodes.forEach(r=>r._removeDOM=!0);const i=this.nodes;return this.removedNodes=t?i:[],this.nodes=[],this._notify(i)}moveNodeCheck(e,t){if(!this.changedPosConstrain(e,t))return!1;if(t.pack=!0,!this.maxRow)return this.moveNode(e,t);let i;const r=new Oe({column:this.column,float:this.float,nodes:this.nodes.map(a=>a._id===e._id?(i={...a},i):{...a})});if(!i)return!1;const o=r.moveNode(i,t)&&r.getRow()<=Math.max(this.getRow(),this.maxRow);if(!o&&!t.resizing&&t.collide){const a=t.collide.el.gridstackNode;if(this.swap(e,a))return this._notify(),!0}return o?(r.nodes.filter(a=>a._dirty).forEach(a=>{const l=this.nodes.find(d=>d._id===a._id);l&&(y.copyPos(l,a),l._dirty=!0)}),this._notify(),!0):!1}willItFit(e){if(delete e._willFitPos,!this.maxRow)return!0;const t=new Oe({column:this.column,float:this.float,nodes:this.nodes.map(r=>({...r}))}),i={...e};return this.cleanupNode(i),delete i.el,delete i._id,delete i.content,delete i.grid,t.addNode(i),t.getRow()<=this.maxRow?(e._willFitPos=y.copyPos({},i),!0):!1}changedPosConstrain(e,t){return t.w=t.w||e.w,t.h=t.h||e.h,e.x!==t.x||e.y!==t.y?!0:(e.maxW&&(t.w=Math.min(t.w,e.maxW)),e.maxH&&(t.h=Math.min(t.h,e.maxH)),e.minW&&(t.w=Math.max(t.w,e.minW)),e.minH&&(t.h=Math.max(t.h,e.minH)),e.w!==t.w||e.h!==t.h)}moveNode(e,t){if(!e||!t)return!1;let i;t.pack===void 0&&!this.batchMode&&(i=t.pack=!0),typeof t.x!="number"&&(t.x=e.x),typeof t.y!="number"&&(t.y=e.y),typeof t.w!="number"&&(t.w=e.w),typeof t.h!="number"&&(t.h=e.h);const r=e.w!==t.w||e.h!==t.h,o=y.copyPos({},e,!0);if(y.copyPos(o,t),this.nodeBoundFix(o,r),y.copyPos(t,o),!t.forceCollide&&y.samePos(e,t))return!1;const a=y.copyPos({},e),l=this.collideAll(e,o,t.skip);let d=!0;if(l.length){const c=e._moving&&!t.nested;let u=c?this.directionCollideCoverage(e,t,l):l[0];if(c&&u&&e.grid?.opts?.subGridDynamic&&!e.grid._isTemp){const h=y.areaIntercept(t.rect,u._rect),f=y.area(t.rect),g=y.area(u._rect);h/(f<g?f:g)>.8&&(u.grid.makeSubGrid(u.el,void 0,e),u=void 0)}u?d=!this._fixCollisions(e,o,u,t):(d=!1,i&&delete t.pack)}return d&&!y.samePos(e,o)&&(e._dirty=!0,y.copyPos(e,o)),t.pack&&this._packNodes()._notify(),!y.samePos(e,a)}getRow(){return this.nodes.reduce((e,t)=>Math.max(e,t.y+t.h),0)}beginUpdate(e){return e._updating||(e._updating=!0,delete e._skipDown,this.batchMode||this.saveInitial()),this}endUpdate(){const e=this.nodes.find(t=>t._updating);return e&&(delete e._updating,delete e._skipDown),this}save(e=!0,t){const i=this._layouts?.length,r=i&&this.column!==i-1?this._layouts[i-1]:null,o=[];return this.sortNodes(),this.nodes.forEach(a=>{const l=r?.find(c=>c._id===a._id),d={...a,...l||{}};y.removeInternalForSave(d,!e),t&&t(a,d),o.push(d)}),o}layoutsNodesChange(e){return!this._layouts||this._inColumnResize?this:(this._layouts.forEach((t,i)=>{if(!t||i===this.column)return this;if(i<this.column)this._layouts[i]=void 0;else{const r=i/this.column;e.forEach(o=>{if(!o._orig)return;const a=t.find(l=>l._id===o._id);a&&(a.y>=0&&o.y!==o._orig.y&&(a.y+=o.y-o._orig.y),o.x!==o._orig.x&&(a.x=Math.round(o.x*r)),o.w!==o._orig.w&&(a.w=Math.round(o.w*r)))})}}),this)}columnChanged(e,t,i="moveScale"){if(!this.nodes.length||!t||e===t)return this;const r=i==="compact"||i==="list";r&&this.sortNodes(1),t<e&&this.cacheLayout(this.nodes,e),this.batchUpdate();let o=[],a=r?this.nodes:y.sort(this.nodes,-1);if(t>e&&this._layouts){const l=this._layouts[t]||[],d=this._layouts.length-1;!l.length&&e!==d&&this._layouts[d]?.length&&(e=d,this._layouts[d].forEach(c=>{const u=a.find(h=>h._id===c._id);u&&(!r&&!c.autoPosition&&(u.x=c.x??u.x,u.y=c.y??u.y),u.w=c.w??u.w,(c.x==null||c.y===void 0)&&(u.autoPosition=!0))})),l.forEach(c=>{const u=a.findIndex(h=>h._id===c._id);if(u!==-1){const h=a[u];if(r){h.w=c.w;return}(c.autoPosition||isNaN(c.x)||isNaN(c.y))&&this.findEmptyPosition(c,o),c.autoPosition||(h.x=c.x??h.x,h.y=c.y??h.y,h.w=c.w??h.w,o.push(h)),a.splice(u,1)}})}if(r)this.compact(i,!1);else{if(a.length)if(typeof i=="function")i(t,e,o,a);else{const l=r||i==="none"?1:t/e,d=i==="move"||i==="moveScale",c=i==="scale"||i==="moveScale";a.forEach(u=>{u.x=t===1?0:d?Math.round(u.x*l):Math.min(u.x,t-1),u.w=t===1||e===1?1:c?Math.round(u.w*l)||1:Math.min(u.w,t),o.push(u)}),a=[]}o=y.sort(o,-1),this._inColumnResize=!0,this.nodes=[],o.forEach(l=>{this.addNode(l,!1),delete l._orig})}return this.nodes.forEach(l=>delete l._orig),this.batchUpdate(!1,!r),delete this._inColumnResize,this}cacheLayout(e,t,i=!1){const r=[];return e.forEach((o,a)=>{if(o._id===void 0){const l=o.id?this.nodes.find(d=>d.id===o.id):void 0;o._id=l?._id??Oe._idSeq++}r[a]={x:o.x,y:o.y,w:o.w,_id:o._id}}),this._layouts=i?[]:this._layouts||[],this._layouts[t]=r,this}cacheOneLayout(e,t){e._id=e._id??Oe._idSeq++;const i={x:e.x,y:e.y,w:e.w,_id:e._id};(e.autoPosition||e.x===void 0)&&(delete i.x,delete i.y,e.autoPosition&&(i.autoPosition=!0)),this._layouts=this._layouts||[],this._layouts[t]=this._layouts[t]||[];const r=this.findCacheLayout(e,t);return r===-1?this._layouts[t].push(i):this._layouts[t][r]=i,this}findCacheLayout(e,t){return this._layouts?.[t]?.findIndex(i=>i._id===e._id)??-1}removeNodeFromLayoutCache(e){if(this._layouts)for(let t=0;t<this._layouts.length;t++){const i=this.findCacheLayout(e,t);i!==-1&&this._layouts[t].splice(i,1)}}cleanupNode(e){for(const t in e)t[0]==="_"&&t!=="_id"&&delete e[t];return this}}Oe._idSeq=0;const ye={alwaysShowResizeHandle:"mobile",animate:!0,auto:!0,cellHeight:"auto",cellHeightThrottle:100,cellHeightUnit:"px",column:12,draggable:{handle:".grid-stack-item-content",appendTo:"body",scroll:!0},handle:".grid-stack-item-content",itemClass:"grid-stack-item",margin:10,marginUnit:"px",maxRow:0,minRow:0,placeholderClass:"grid-stack-placeholder",placeholderText:"",removableOptions:{accept:"grid-stack-item",decline:"grid-stack-non-removable"},resizable:{handles:"se"},rtl:"auto"};class I{}const Te=typeof window<"u"&&typeof document<"u"&&("ontouchstart"in document||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0);class Ne{}function ct(n,e){n.touches.length>1||(n.cancelable&&n.preventDefault(),y.simulateMouseEvent(n.changedTouches[0],e))}function rn(n,e){n.cancelable&&n.preventDefault(),y.simulateMouseEvent(n,e)}function ut(n){Ne.touchHandled||(Ne.touchHandled=!0,ct(n,"mousedown"))}function dt(n){Ne.touchHandled&&ct(n,"mousemove")}function ht(n){if(!Ne.touchHandled)return;Ne.pointerLeaveTimeout&&(window.clearTimeout(Ne.pointerLeaveTimeout),delete Ne.pointerLeaveTimeout);const e=!!I.dragElement;ct(n,"mouseup"),e||ct(n,"click"),Ne.touchHandled=!1}function ft(n){n.pointerType!=="mouse"&&n.target.releasePointerCapture(n.pointerId)}function sn(n){I.dragElement&&n.pointerType!=="mouse"&&rn(n,"mouseenter")}function on(n){I.dragElement&&n.pointerType!=="mouse"&&(Ne.pointerLeaveTimeout=window.setTimeout(()=>{delete Ne.pointerLeaveTimeout,rn(n,"mouseleave")},10))}class mt{constructor(e,t,i){this.host=e,this.dir=t,this.option=i,this.moving=!1,this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this._init()}_init(){const e=this.el=document.createElement("div");return e.classList.add("ui-resizable-handle"),e.classList.add(`${mt.prefix}${this.dir}`),e.style.zIndex="100",e.style.userSelect="none",this.host.appendChild(this.el),this.el.addEventListener("mousedown",this._mouseDown),Te&&(this.el.addEventListener("touchstart",ut),this.el.addEventListener("pointerdown",ft)),this}destroy(){return this.moving&&this._mouseUp(this.mouseDownEvent),this.el.removeEventListener("mousedown",this._mouseDown),Te&&(this.el.removeEventListener("touchstart",ut),this.el.removeEventListener("pointerdown",ft)),this.host.removeChild(this.el),delete this.el,delete this.host,this}_mouseDown(e){this.mouseDownEvent=e,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),Te&&(this.el.addEventListener("touchmove",dt),this.el.addEventListener("touchend",ht)),e.stopPropagation(),e.preventDefault()}_mouseMove(e){const t=this.mouseDownEvent;this.moving?this._triggerEvent("move",e):Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>2&&(this.moving=!0,this._triggerEvent("start",this.mouseDownEvent),this._triggerEvent("move",e),document.addEventListener("keydown",this._keyEvent)),e.stopPropagation()}_mouseUp(e){this.moving&&(this._triggerEvent("stop",e),document.removeEventListener("keydown",this._keyEvent)),document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),Te&&(this.el.removeEventListener("touchmove",dt),this.el.removeEventListener("touchend",ht)),delete this.moving,delete this.mouseDownEvent,e.stopPropagation(),e.preventDefault()}_keyEvent(e){e.key==="Escape"&&(this.host.gridstackNode?.grid?.engine.restoreInitial(),this._mouseUp(this.mouseDownEvent))}_triggerEvent(e,t){return this.option[e]&&this.option[e](t),this}}mt.prefix="ui-resizable-";class qt{constructor(){this._eventRegister={}}get disabled(){return this._disabled}on(e,t){this._eventRegister[e]=t}off(e){delete this._eventRegister[e]}enable(){this._disabled=!1}disable(){this._disabled=!0}destroy(){delete this._eventRegister}triggerEvent(e,t){if(!this.disabled&&this._eventRegister&&this._eventRegister[e])return this._eventRegister[e](t)}}class tt extends qt{constructor(e,t={}){super(),this.el=e,this.option=t,this.rectScale={x:1,y:1},this._ui=()=>{const r=this.el.parentElement.getBoundingClientRect(),o={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},a=this.temporalRect||o;return{position:{left:(a.left-r.left)*this.rectScale.x,top:(a.top-r.top)*this.rectScale.y},size:{width:a.width*this.rectScale.x,height:a.height*this.rectScale.y}}},this._mouseOver=this._mouseOver.bind(this),this._mouseOut=this._mouseOut.bind(this),this.enable(),this._setupAutoHide(this.option.autoHide),this._setupHandlers()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){super.enable(),this.el.classList.remove("ui-resizable-disabled"),this._setupAutoHide(this.option.autoHide)}disable(){super.disable(),this.el.classList.add("ui-resizable-disabled"),this._setupAutoHide(!1)}destroy(){this._removeHandlers(),this._setupAutoHide(!1),delete this.el,super.destroy()}updateOption(e){const t=e.handles&&e.handles!==this.option.handles,i=e.autoHide&&e.autoHide!==this.option.autoHide;return Object.keys(e).forEach(r=>this.option[r]=e[r]),t&&(this._removeHandlers(),this._setupHandlers()),i&&this._setupAutoHide(this.option.autoHide),this}_setupAutoHide(e){return e?(this.el.classList.add("ui-resizable-autohide"),this.el.addEventListener("mouseover",this._mouseOver),this.el.addEventListener("mouseout",this._mouseOut)):(this.el.classList.remove("ui-resizable-autohide"),this.el.removeEventListener("mouseover",this._mouseOver),this.el.removeEventListener("mouseout",this._mouseOut),I.overResizeElement===this&&delete I.overResizeElement),this}_mouseOver(e){I.overResizeElement||I.dragElement||(I.overResizeElement=this,this.el.classList.remove("ui-resizable-autohide"))}_mouseOut(e){I.overResizeElement===this&&(delete I.overResizeElement,this.el.classList.add("ui-resizable-autohide"))}_setupHandlers(){return this.handlers=this.option.handles.split(",").map(e=>e.trim()).map(e=>new mt(this.el,e,{start:t=>{this._resizeStart(t)},stop:t=>{this._resizeStop(t)},move:t=>{this._resizing(t,e)}})),this}_resizeStart(e){this.sizeToContent=y.shouldSizeToContent(this.el.gridstackNode,!0),this.originalRect=this.el.getBoundingClientRect(),this.scrollEl=y.getScrollElement(this.el),this.scrollY=this.scrollEl.scrollTop,this.scrolled=0,this.startEvent=e,this._setupHelper(),this._applyChange();const t=y.initEvent(e,{type:"resizestart",target:this.el});return this.option.start&&this.option.start(t,this._ui()),this.el.classList.add("ui-resizable-resizing"),this.triggerEvent("resizestart",t),this}_resizing(e,t){this.scrolled=this.scrollEl.scrollTop-this.scrollY,this.temporalRect=this._getChange(e,t),this._applyChange();const i=y.initEvent(e,{type:"resize",target:this.el});return this.option.resize&&this.option.resize(i,this._ui()),this.triggerEvent("resize",i),this}_resizeStop(e){const t=y.initEvent(e,{type:"resizestop",target:this.el});return this.option.stop&&this.option.stop(t),this.el.classList.remove("ui-resizable-resizing"),this.triggerEvent("resizestop",t),this._cleanHelper(),delete this.startEvent,delete this.originalRect,delete this.temporalRect,delete this.scrollY,delete this.scrolled,this}_setupHelper(){this.elOriginStyleVal=tt._originStyleProp.map(i=>this.el.style[i]),this.parentOriginStylePosition=this.el.parentElement.style.position;const e=this.el.parentElement,t=y.getValuesFromTransformedElement(e);return this.rectScale={x:t.xScale,y:t.yScale},getComputedStyle(this.el.parentElement).position.match(/static/)&&(this.el.parentElement.style.position="relative"),this.el.style.position="absolute",this.el.style.opacity="0.8",this}_cleanHelper(){return tt._originStyleProp.forEach((e,t)=>{this.el.style[e]=this.elOriginStyleVal[t]||null}),this.el.parentElement.style.position=this.parentOriginStylePosition||null,this}_getChange(e,t){const i=this.startEvent,r={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},o=e.clientX-i.clientX,a=this.sizeToContent?0:e.clientY-i.clientY;let l,d;t.indexOf("e")>-1?r.width+=o:t.indexOf("w")>-1&&(r.width-=o,r.left+=o,l=!0),t.indexOf("s")>-1?r.height+=a:t.indexOf("n")>-1&&(r.height-=a,r.top+=a,d=!0);const c=this._constrainSize(r.width,r.height,l,d);return Math.round(r.width)!==Math.round(c.width)&&(t.indexOf("w")>-1&&(r.left+=r.width-c.width),r.width=c.width),Math.round(r.height)!==Math.round(c.height)&&(t.indexOf("n")>-1&&(r.top+=r.height-c.height),r.height=c.height),r}_constrainSize(e,t,i,r){const o=this.option,a=(i?o.maxWidthMoveLeft:o.maxWidth)||Number.MAX_SAFE_INTEGER,l=o.minWidth/this.rectScale.x||e,d=(r?o.maxHeightMoveUp:o.maxHeight)||Number.MAX_SAFE_INTEGER,c=o.minHeight/this.rectScale.y||t,u=Math.min(a,Math.max(l,e)),h=Math.min(d,Math.max(c,t));return{width:u,height:h}}_applyChange(){let e={left:0,top:0,width:0,height:0};if(this.el.style.position==="absolute"){const t=this.el.parentElement,{left:i,top:r}=t.getBoundingClientRect();e={left:i,top:r,width:0,height:0}}return this.temporalRect?(Object.keys(this.temporalRect).forEach(t=>{const i=this.temporalRect[t],r=t==="width"||t==="left"?this.rectScale.x:t==="height"||t==="top"?this.rectScale.y:1;this.el.style[t]=(i-e[t])*r+"px"}),this):this}_removeHandlers(){return this.handlers.forEach(e=>e.destroy()),delete this.handlers,this}}tt._originStyleProp=["width","height","position","left","top","opacity","zIndex"];const No='input,textarea,button,select,option,[contenteditable="true"],.ui-resizable-handle';class it extends qt{constructor(e,t={}){super(),this.el=e,this.option=t,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0};const i=t?.handle?.substring(1),r=e.gridstackNode;this.dragEls=!i||e.classList.contains(i)?[e]:r?.subGrid?[e.querySelector(t.handle)||e]:Array.from(e.querySelectorAll(t.handle)),this.dragEls.length===0&&(this.dragEls=[e]),this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this.enable()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){this.disabled!==!1&&(super.enable(),this.dragEls.forEach(e=>{e.addEventListener("mousedown",this._mouseDown),Te&&(e.addEventListener("touchstart",ut),e.addEventListener("pointerdown",ft))}),this.el.classList.remove("ui-draggable-disabled"))}disable(e=!1){this.disabled!==!0&&(super.disable(),this.dragEls.forEach(t=>{t.removeEventListener("mousedown",this._mouseDown),Te&&(t.removeEventListener("touchstart",ut),t.removeEventListener("pointerdown",ft))}),e||this.el.classList.add("ui-draggable-disabled"))}destroy(){this.dragTimeout&&window.clearTimeout(this.dragTimeout),delete this.dragTimeout,this.mouseDownEvent&&this._mouseUp(this.mouseDownEvent),this.disable(!0),delete this.el,delete this.helper,delete this.option,super.destroy()}updateOption(e){return Object.keys(e).forEach(t=>this.option[t]=e[t]),this}_mouseDown(e){if(!I.mouseHandled)return e.button!==0||!this.dragEls.find(t=>t===e.target)&&e.target.closest(No)||this.option.cancel&&e.target.closest(this.option.cancel)||(this.mouseDownEvent=e,delete this.dragging,delete I.dragElement,delete I.dropElement,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),Te&&(e.currentTarget.addEventListener("touchmove",dt),e.currentTarget.addEventListener("touchend",ht)),e.preventDefault(),document.activeElement&&document.activeElement.blur(),I.mouseHandled=!0),!0}_callDrag(e){if(!this.dragging)return;const t=y.initEvent(e,{target:this.el,type:"drag"});this.option.drag&&this.option.drag(t,this.ui()),this.triggerEvent("drag",t)}_mouseMove(e){const t=this.mouseDownEvent;if(this.lastDrag=e,this.dragging)if(this._dragFollow(e),I.pauseDrag){const i=Number.isInteger(I.pauseDrag)?I.pauseDrag:100;this.dragTimeout&&window.clearTimeout(this.dragTimeout),this.dragTimeout=window.setTimeout(()=>this._callDrag(e),i)}else this._callDrag(e);else if(Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>3){this.dragging=!0,I.dragElement=this;const i=this.el.gridstackNode?.grid;i?I.dropElement=i.el.ddElement.ddDroppable:delete I.dropElement,this.helper=this._createHelper(),this._setupHelperContainmentStyle(),this.dragTransform=y.getValuesFromTransformedElement(this.helperContainment),this.dragOffset=this._getDragOffset(e,this.el,this.helperContainment),this._setupHelperStyle(e);const r=y.initEvent(e,{target:this.el,type:"dragstart"});this.option.start&&this.option.start(r,this.ui()),this.triggerEvent("dragstart",r),document.addEventListener("keydown",this._keyEvent)}return!0}_mouseUp(e){if(document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),Te&&e.currentTarget&&(e.currentTarget.removeEventListener("touchmove",dt,!0),e.currentTarget.removeEventListener("touchend",ht,!0)),this.dragging){delete this.dragging,delete this.el.gridstackNode?._origRotate,document.removeEventListener("keydown",this._keyEvent),I.dropElement?.el===this.el.parentElement&&delete I.dropElement,this.helperContainment.style.position=this.parentOriginStylePosition||null,this.helper!==this.el&&this.helper.remove(),this._removeHelperStyle();const t=y.initEvent(e,{target:this.el,type:"dragstop"});this.option.stop&&this.option.stop(t),this.triggerEvent("dragstop",t),I.dropElement&&I.dropElement.drop(e)}delete this.helper,delete this.mouseDownEvent,delete I.dragElement,delete I.dropElement,delete I.mouseHandled,e.preventDefault()}_keyEvent(e){const t=this.el.gridstackNode,i=t?.grid||I.dropElement?.el?.gridstack;if(e.key==="Escape")t&&t._origRotate&&(t._orig=t._origRotate,delete t._origRotate),i?.cancelDrag(),this._mouseUp(this.mouseDownEvent);else if(t&&i&&(e.key==="r"||e.key==="R")){if(!y.canBeRotated(t))return;t._origRotate=t._origRotate||{...t._orig},delete t._moving,i.setAnimation(!1).rotate(t.el,{top:-this.dragOffset.offsetTop,left:-this.dragOffset.offsetLeft}).setAnimation(),t._moving=!0,this.dragOffset=this._getDragOffset(this.lastDrag,t.el,this.helperContainment),this.helper.style.width=this.dragOffset.width+"px",this.helper.style.height=this.dragOffset.height+"px",y.swap(t._orig,"w","h"),delete t._rect,this._mouseMove(this.lastDrag)}}_createHelper(){let e=this.el;return typeof this.option.helper=="function"?e=this.option.helper(this.el):this.option.helper==="clone"&&(e=y.cloneNode(this.el)),e.parentElement||y.appendTo(e,this.option.appendTo==="parent"?this.el.parentElement:this.option.appendTo),this.dragElementOriginStyle=it.originStyleProp.map(t=>this.el.style[t]),e}_setupHelperStyle(e){this.helper.classList.add("ui-draggable-dragging");const t=this.helper.style;return t.pointerEvents="none",t.width=this.dragOffset.width+"px",t.height=this.dragOffset.height+"px",t.willChange="left, top",t.position="fixed",this._dragFollow(e),t.transition="none",setTimeout(()=>{this.helper&&(t.transition=null)},0),this}_removeHelperStyle(){if(this.helper.classList.remove("ui-draggable-dragging"),!this.helper?.gridstackNode?._isAboutToRemove&&this.dragElementOriginStyle){const t=this.helper,i=this.dragElementOriginStyle.transition||null;t.style.transition=this.dragElementOriginStyle.transition="none",it.originStyleProp.forEach(r=>t.style[r]=this.dragElementOriginStyle[r]||null),setTimeout(()=>t.style.transition=i,50)}return delete this.dragElementOriginStyle,this}_dragFollow(e){const t={left:0,top:0},i=this.helper.style,r=this.dragOffset;i.left=(e.clientX+r.offsetLeft-t.left)*this.dragTransform.xScale+"px",i.top=(e.clientY+r.offsetTop-t.top)*this.dragTransform.yScale+"px"}_setupHelperContainmentStyle(){return this.helperContainment=this.helper.parentElement,this.helper.style.position!=="fixed"&&(this.parentOriginStylePosition=this.helperContainment.style.position,getComputedStyle(this.helperContainment).position.match(/static/)&&(this.helperContainment.style.position="relative")),this}_getDragOffset(e,t,i){let r=0,o=0;i&&(r=this.dragTransform.xOffset,o=this.dragTransform.yOffset);const a=t.getBoundingClientRect();return{left:a.left,top:a.top,offsetLeft:-e.clientX+a.left-r,offsetTop:-e.clientY+a.top-o,width:a.width*this.dragTransform.xScale,height:a.height*this.dragTransform.yScale}}ui(){const t=this.el.parentElement.getBoundingClientRect(),i=this.helper.getBoundingClientRect();return{position:{top:(i.top-t.top)*this.dragTransform.yScale,left:(i.left-t.left)*this.dragTransform.xScale}}}}it.originStyleProp=["width","height","transform","transform-origin","transition","pointerEvents","position","left","top","minWidth","willChange"];class Mo extends qt{constructor(e,t={}){super(),this.el=e,this.option=t,this._mouseEnter=this._mouseEnter.bind(this),this._mouseLeave=this._mouseLeave.bind(this),this.enable(),this._setupAccept()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){this.disabled!==!1&&(super.enable(),this.el.classList.add("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),this.el.addEventListener("mouseenter",this._mouseEnter),this.el.addEventListener("mouseleave",this._mouseLeave),Te&&(this.el.addEventListener("pointerenter",sn),this.el.addEventListener("pointerleave",on)))}disable(e=!1){this.disabled!==!0&&(super.disable(),this.el.classList.remove("ui-droppable"),e||this.el.classList.add("ui-droppable-disabled"),this.el.removeEventListener("mouseenter",this._mouseEnter),this.el.removeEventListener("mouseleave",this._mouseLeave),Te&&(this.el.removeEventListener("pointerenter",sn),this.el.removeEventListener("pointerleave",on)))}destroy(){this.disable(!0),this.el.classList.remove("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),super.destroy()}updateOption(e){return Object.keys(e).forEach(t=>this.option[t]=e[t]),this._setupAccept(),this}_mouseEnter(e){if(!I.dragElement||!this._canDrop(I.dragElement.el))return;e.preventDefault(),e.stopPropagation(),I.dropElement&&I.dropElement!==this&&I.dropElement._mouseLeave(e,!0),I.dropElement=this;const t=y.initEvent(e,{target:this.el,type:"dropover"});this.option.over&&this.option.over(t,this._ui(I.dragElement)),this.triggerEvent("dropover",t),this.el.classList.add("ui-droppable-over")}_mouseLeave(e,t=!1){if(!I.dragElement||I.dropElement!==this)return;e.preventDefault(),e.stopPropagation();const i=y.initEvent(e,{target:this.el,type:"dropout"});if(this.option.out&&this.option.out(i,this._ui(I.dragElement)),this.triggerEvent("dropout",i),I.dropElement===this&&(delete I.dropElement,!t)){let r,o=this.el.parentElement;for(;!r&&o;)r=o.ddElement?.ddDroppable,o=o.parentElement;r&&r._mouseEnter(e)}}drop(e){e.preventDefault();const t=y.initEvent(e,{target:this.el,type:"drop"});this.option.drop&&this.option.drop(t,this._ui(I.dragElement)),this.triggerEvent("drop",t)}_canDrop(e){return e&&(!this.accept||this.accept(e))}_setupAccept(){return this.option.accept?(typeof this.option.accept=="string"?this.accept=e=>e.classList.contains(this.option.accept)||e.matches(this.option.accept):this.accept=this.option.accept,this):this}_ui(e){return{draggable:e.el,...e.ui()}}}class Lt{static init(e){return e.ddElement||(e.ddElement=new Lt(e)),e.ddElement}constructor(e){this.el=e}on(e,t){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(e)>-1?this.ddDraggable.on(e,t):this.ddDroppable&&["drop","dropover","dropout"].indexOf(e)>-1?this.ddDroppable.on(e,t):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(e)>-1&&this.ddResizable.on(e,t),this}off(e){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(e)>-1?this.ddDraggable.off(e):this.ddDroppable&&["drop","dropover","dropout"].indexOf(e)>-1?this.ddDroppable.off(e):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(e)>-1&&this.ddResizable.off(e),this}setupDraggable(e){return this.ddDraggable?this.ddDraggable.updateOption(e):this.ddDraggable=new it(this.el,e),this}cleanDraggable(){return this.ddDraggable&&(this.ddDraggable.destroy(),delete this.ddDraggable),this}setupResizable(e){return this.ddResizable?this.ddResizable.updateOption(e):this.ddResizable=new tt(this.el,e),this}cleanResizable(){return this.ddResizable&&(this.ddResizable.destroy(),delete this.ddResizable),this}setupDroppable(e){return this.ddDroppable?this.ddDroppable.updateOption(e):this.ddDroppable=new Mo(this.el,e),this}cleanDroppable(){return this.ddDroppable&&(this.ddDroppable.destroy(),delete this.ddDroppable),this}}class zo{resizable(e,t,i,r){return this._getDDElements(e,t).forEach(o=>{if(t==="disable"||t==="enable")o.ddResizable&&o.ddResizable[t]();else if(t==="destroy")o.ddResizable&&o.cleanResizable();else if(t==="option")o.setupResizable({[i]:r});else{const l=o.el.gridstackNode.grid;let d=o.el.getAttribute("gs-resize-handles")||l.opts.resizable.handles||"e,s,se";d==="all"&&(d="n,e,s,w,se,sw,ne,nw");const c=!l.opts.alwaysShowResizeHandle;o.setupResizable({...l.opts.resizable,handles:d,autoHide:c,start:t.start,stop:t.stop,resize:t.resize})}}),this}draggable(e,t,i,r){return this._getDDElements(e,t).forEach(o=>{if(t==="disable"||t==="enable")o.ddDraggable&&o.ddDraggable[t]();else if(t==="destroy")o.ddDraggable&&o.cleanDraggable();else if(t==="option")o.setupDraggable({[i]:r});else{const a=o.el.gridstackNode.grid;o.setupDraggable({...a.opts.draggable,start:t.start,stop:t.stop,drag:t.drag})}}),this}dragIn(e,t){return this._getDDElements(e).forEach(i=>i.setupDraggable(t)),this}droppable(e,t,i,r){return typeof t.accept=="function"&&!t._accept&&(t._accept=t.accept,t.accept=o=>t._accept(o)),this._getDDElements(e,t).forEach(o=>{t==="disable"||t==="enable"?o.ddDroppable&&o.ddDroppable[t]():t==="destroy"?o.ddDroppable&&o.cleanDroppable():t==="option"?o.setupDroppable({[i]:r}):o.setupDroppable(t)}),this}isDroppable(e){return!!(e?.ddElement?.ddDroppable&&!e.ddElement.ddDroppable.disabled)}isDraggable(e){return!!(e?.ddElement?.ddDraggable&&!e.ddElement.ddDraggable.disabled)}isResizable(e){return!!(e?.ddElement?.ddResizable&&!e.ddElement.ddResizable.disabled)}on(e,t,i){return this._getDDElements(e).forEach(r=>r.on(t,o=>{i(o,I.dragElement?I.dragElement.el:o.target,I.dragElement?I.dragElement.helper:null)})),this}off(e,t){return this._getDDElements(e).forEach(i=>i.off(t)),this}_getDDElements(e,t){const i=e.gridstack||t!=="destroy"&&t!=="disable",r=y.getElements(e);return r.length?r.map(a=>a.ddElement||(i?Lt.init(a):null)).filter(a=>a):[]}}const ge=new zo;class z{static init(e={},t=".grid-stack"){if(typeof document>"u")return null;const i=z.getGridElement(t);return i?(i.gridstack||(i.gridstack=new z(i,y.cloneDeep(e))),i.gridstack):(console.error(typeof t=="string"?'GridStack.initAll() no grid was found with selector "'+t+`" - element missing or wrong selector ?
12
+ `)}function zi(n,...e){return typeof n=="function"?n(...e):n}function cs({method:n="warn",formatter:e=ls}={}){return(t,{method:i=n}={})=>{console[i](e(t))}}const us=Error.captureStackTrace;var ds=class an extends Error{name;code;docs;fix;sources;get why(){return this.message}constructor(e,t=an){super(e.why,{cause:e.cause}),this.code=this.name=e.code,this.fix=e.fix,this.docs=e.docs,this.sources=e.sources,us?.(this,t)}toJSON(){return{name:this.name,why:this.why,fix:this.fix,docs:this.docs,sources:this.sources,cause:this.cause,stack:this.stack}}};function hs(n,e){return typeof n=="string"?`${n}/${e.toLowerCase()}`:n?.(e)}function fs(n){const e=n.reporters??[],t={},{docsBase:i}=n;for(const r of Object.keys(n.codes)){const o=n.codes[r],a=o.docs===!1?void 0:o.docs||hs(i,r),l=(d={},c={})=>{const u=new ds({code:r,why:zi(o.why,d),fix:zi(o.fix,d),docs:a,cause:d.cause,sources:d.sources},l);for(const h of e)h(u,c);return u};t[r]=l}return t}const ms=typeof window<"u",ps=fs({reporters:[cs()],codes:{PINIA_R1001:{why:'Directly pass all stores to "mapStores()" without putting them in an array. This will fail in production.',fix:"Replace mapStores([useAuthStore, useCartStore]) with mapStores(useAuthStore, useCartStore).",docs:"https://pinia.vuejs.org/cookbook/options-api.html#Giving-access-to-the-whole-store"},PINIA_R1002:{why:n=>`A getter cannot have the same name as another state property. Found "${n.name}" in store "${n.id}".`,fix:"Rename either the getter or the state property.",docs:"https://pinia.vuejs.org/core-concepts/getters.html#Accessing-other-getters"},PINIA_R1003:{why:n=>`The "state" must be a plain object. Found in store "${n.id}".`,fix:"Return a plain object, e.g. avoid state: () => new MyClass().",docs:"https://pinia.vuejs.org/core-concepts/state.html#State"},PINIA_R1004:{why:"Pinia instance not found in context. This falls back to the global activePinia, which exposes you to cross-request pollution on the server.",fix:'"useStore()" is a composable and follows the same rules: call it at the top of setup() (or another composable), or pass the pinia instance explicitly when used outside of a component.',docs:"https://pinia.vuejs.org/ssr/#Using-the-store-outside-of-setup-"},PINIA_R1005:{why:n=>`The store id changed from "${n.from}" to "${n.to}", forcing a reload.`,docs:"https://pinia.vuejs.org/cookbook/hot-module-replacement.html#HMR-Hot-Module-Replacement-"},PINIA_R1006:{why:n=>`Property "${n.key}" of store "${n.id}" is not reactive (not a ref, reactive object, or shallowRef), so storeToRefs() ignores it.`,fix:"If it should be reactive state, wrap it with ref(), reactive(), or shallowRef(). If it is an intentional non-reactive property, wrap it with markRaw() so storeToRefs() skips it explicitly.",docs:"https://pinia.vuejs.org/core-concepts/plugins.html#Adding-new-external-properties"},PINIA_R1007:{why:n=>`The same callback was passed to "$subscribe()" of store "${n.id}" more than once. Subscriptions are deduplicated, so the duplicate is ignored.`,fix:"Subscribe each callback only once. If you need to resubscribe, call the returned function to remove the previous subscription first, or create a new function.",docs:"https://pinia.vuejs.org/core-concepts/state.html#Subscribing-to-the-state"}}});let Ai;process.env.NODE_ENV;const Ii=process.env.NODE_ENV!=="production"?Symbol("pinia"):Symbol();process.env.NODE_ENV;function Ke(n){const e=s.toRaw(n),t={};for(const i in e){const r=e[i];r?.effect?t[i]=s.computed({get:()=>n[i],set(o){n[i]=o}}):(s.isRef(r)||s.isReactive(r))&&(t[i]=s.toRef(n,i))}return t}const De=n=>n?.chart.type==="table",Dt=n=>n?.query?.datasource==="requests",Ot=n=>!!n&&!De(n)&&!Dt(n),gs=(n,e)=>{const t=n.header_description??("description"in n.chart?n.chart.description:void 0);if(t)return t.replaceAll(Ri,e)||void 0},ys=["basic","api_usage","llm_usage","agentic_usage","platform","platform_usage","managed_cache_usage",void 0],_s=n=>ys.includes(n);function ws({queryBridge:n,context:e,definition:t,chartData:i}){const r=s.ref(""),o=s.ref(""),a=s.ref(void 0),l=s.ref(void 0),d=Me.useAnalyticsConfigStore(),c=Me.useDatasourceConfigStore(),{stripUnknownFilters:u,loading:h}=Ke(c),f=s.computed(()=>De(t.value));s.onMounted(async()=>{r.value=await n?.exploreBaseUrl?.()??"",o.value=await n?.requestsBaseUrl?.()??""});const g=s.computed(()=>d.analytics&&d.percentiles),w=s.computed(()=>{const _=t.value.chart.type;return["golden_signals","gauge"].includes(_)?!1:_==="top_n"?!!e.value.editable||!!e.value.showTileActions:!0}),E=s.computed(()=>o.value&&t.value.query&&!f.value&&t.value.query.datasource!=="llm_usage"&&t.value.query.datasource!=="managed_cache_usage"&&!K.isPlatformDatasource(t.value.query.datasource)&&g.value&&!h.value),b=s.computed(()=>r.value&&t.value.query&&_s(t.value.query.datasource)&&g.value&&!h.value),N=s.computed(()=>i.value?K.msToGranularity(i.value.meta.granularity_ms):void 0),M=s.computed(()=>{const _=t.value,k=[...e.value.filters,..._.query.filters??[]],R="metrics"in _.query?_.query.metrics:void 0,A=_.query?.datasource??"api_usage";return u.value({datasource:A,filters:k,queryFields:R})}),C=s.computed(()=>{if(!b.value||!w.value)return"";const _=t.value;if(De(_))return m({..._.query,filters:M.value});const k=_.query.time_range||e.value.timeSpec,R=p(k,M.value);return m(R)}),S=s.computed(()=>{if(!E.value||!w.value)return"";const _=M.value,k=t.value;if(De(k))return"";const R=B(k.query.time_range||e.value.timeSpec,_);return D(R)}),D=_=>E.value?`${o.value}?q=${JSON.stringify(_)}`:"",B=(_,k)=>{const R=i.value?.meta?.start?new Date(i.value.meta.start):void 0,A=i.value?.meta?.end?new Date(i.value.meta.end):void 0;return{filter:k,timeframe:{timePeriodsKey:_.type==="relative"?_.time_range:"custom",start:_.type==="absolute"?R:void 0,end:_.type==="absolute"?A:void 0}}},H=(_,k)=>({filter:k,timeframe:{timePeriodsKey:_.type==="relative"?_.time_range:"custom",start:_.type==="absolute"?_.start:void 0,end:_.type==="absolute"?_.end:void 0}}),p=(_,k)=>{const R=t.value;if(!Ot(R))throw new Error("Cannot build a chart explore query for table or api-requests definitions");const A=[...R.query.dimensions??[]],te=[...R.query.metrics??[]];return{filters:k,metrics:te,dimensions:A,time_range:_,granularity:R.query.granularity||N.value||void 0}},m=_=>{if(!b.value)return"";const k=t.value.query.datasource&&t.value.query.datasource!=="basic"?t.value.query.datasource:"api_usage";return`${r.value}?q=${JSON.stringify(_)}&d=${k}&c=${t.value.chart.type}`};return s.watch([E,b],([_,k])=>{_&&(a.value={href:""}),k&&(l.value={href:""})}),{exploreLinkKebabMenu:C,requestsLinkKebabMenu:S,canShowKebabMenu:w,canGenerateRequestsLink:E,canGenerateExploreLink:b,requestsLinkZoomActions:a,exploreLinkZoomActions:l,buildExploreQuery:p,buildRequestsQueryZoomActions:H,buildExploreLink:m,buildRequestLink:D}}const Nt=n=>n.type==="relative"?K.TimePeriods.get(K.TIMEFRAME_LOOKUP[n.time_range])?.timeframeLengthMs():new Date(n.end).getTime()-new Date(n.start).getTime(),bs=n=>n.reduce((e,t)=>{const i=K.TimePeriods.get(K.TIMEFRAME_LOOKUP[t])?.maximumTimeframeLength();return i===void 0||e&&i<=e.durationSeconds?e:{durationSeconds:i,key:t}},void 0),Mt=(n,e)=>{if(!n||!e?.length)return;const t=Nt(n),i=bs(e);return t!==void 0&&i&&t>i.durationSeconds*1e3?i:void 0},zt=(n,e)=>{const t=Mt(n,e);return!t||!n?n:n.type==="relative"?{...n,time_range:t.key}:{...n,start:new Date(new Date(n.end).getTime()-t.durationSeconds*1e3)}};function vs(){const n=s.inject(ke),e=Me.useDatasourceConfigStore(),{datasourceConfigMap:t,stripUnknownFilters:i}=Ke(e);let r=null;return s.onUnmounted(()=>{r?.abort()}),{issueQuery:async(a,l,d)=>{if(!n)throw new Error("Query bridge is not defined");r?.abort();const c=new AbortController;r=c,await e.isReady();const{datasource:u,limit:h,...f}=a,g=u||"basic",w=K.isPlatformDatasource(g),E=i.value({datasource:g,filters:[...a.filters??[],...l.filters],queryFields:a.metrics}).filter(({operator:M})=>!w||!K.requestFilterTypeEmptyV2.some(C=>C===M));let b=a.time_range;!b&&l.timeSpec?b={...l.timeSpec,tz:l.tz}:b&&!b.tz&&(b={...b,tz:l.tz}),b=zt(b,t.value[g]?.timeRangeOptions);const N={datasource:g,query:{...f,time_range:b,filters:E,limit:d??h}};return n.queryFn(N,c)}}}const xs="24H",Es={status_code:"response_http_status",upstream_status_code:"upstream_status"},Cs={cost:"usd",latencies_response_ms:"ms",latencies_upstream_ms:"ms",latencies_kong_gateway_ms:"ms",latencies_kong_internal_ms:"ms",request_body_size:"bytes",response_body_size:"bytes",response_header_content_length:"bytes",ai_count:"count"},ks=n=>K.relativeTimeRangeValuesRequestV2.includes(n),Rs=n=>{const e=n?.tz?{tz:n.tz}:{};if(n?.type==="absolute")return{type:"absolute",start:n.start,end:n.end,...e};const t=n?.time_range.toUpperCase()??"";return{type:"relative",time_range:ks(t)?t:xs,...e}},qi=n=>Es[n]??n,Ts=n=>({metric:qi(n.metric),dimension:n.dimension?qi(n.dimension):void 0,unroll:n.unroll,metricUnit:Cs[n.metric],extraFields:n.extra_fields}),At="requests";function Ss(){const n=s.inject(ke),e=Me.useDatasourceConfigStore(),{datasourceConfigMap:t,stripUnknownFilters:i}=Ke(e);let r=null;s.onUnmounted(()=>{r?.abort()});const o=(l,d)=>{const c=l.time_range??d.timeSpec;return zt(c&&{...c,tz:c.tz??d.tz},t.value[At]?.timeRangeOptions)};return{issueRequestsQuery:async(l,d)=>{const c=n?.requestsQueryFn;if(!c)throw new Error("Query bridge cannot fetch request records");r?.abort();const u=new AbortController;r=u,await e.isReady();const h=i.value({datasource:At,filters:[...l.filters??[],...d.filters]});return K.fetchAllRequests(c,{datasource:At,query:{filters:h,time_range:Rs(o(l,d))}},u,{maxRecords:l.max_records})}}}function Ds({context:n,globalFilters:e=s.ref([]),isFullscreen:t=s.ref(!1),preview:i=s.ref(!1)}){const r=Me.useAnalyticsConfigStore(),o=Me.useDatasourceConfigStore(),{loading:a}=Ke(r),{loading:l}=Ke(o),d=s.computed(()=>n.value.timeSpec?n.value.timeSpec:{type:"relative",time_range:r.defaultQueryTimeForOrg}),c=s.computed(()=>{const{tz:S}=n.value;return S||new Intl.DateTimeFormat().resolvedOptions().timeZone}),u=s.computed(()=>{const{editable:S}=n.value;return S===void 0||i.value?!1:S}),h=s.computed(()=>{const{showTileActions:S}=n.value;return i.value?!1:S===void 0?!0:S}),f=s.computed(()=>[...n.value.filters??[],...e.value]),g=s.computed(()=>{let{refreshInterval:S}=n.value;if(S===void 0&&(S=Ti),t.value){let D=!1;if(d.value.type==="relative")D=["15m","1h","6h","12h","24h"].includes(d.value.time_range);else{const p=d.value.start.getTime(),m=d.value.end.getTime();D=Math.abs(m-p)<=864e5}const B=new Date().getTime();d.value.type==="absolute"&&d.value.end.getTime()<B||d.value.type==="relative"&&["previous_week","previous_month"].includes(d.value.time_range)?S=0:D?S=Si:S=Di}return S}),w=s.computed(()=>({filters:f.value,timeSpec:d.value,tz:c.value,refreshInterval:g.value,editable:u.value,showTileActions:h.value})),E=s.computed(()=>!a.value&&!l.value),b=s.computed(()=>!i.value&&!!s.getCurrentInstance()?.vnode?.props?.onTileTimeRangeZoom),N=s.computed(()=>!i.value),M=s.computed(()=>!i.value),C=s.computed(()=>({enabled:b.value,showExploreAction:N.value,showRequestsAction:M.value,showZoomInAction:b.value}));return{editable:u,enrichedContext:w,filters:f,queryReady:E,refreshInterval:g,showTileActions:h,timeSpec:d,tz:c,zoomConfiguration:C}}const Os=6,Li=6,Pi=4;function Ns(n,e){const{pageWidth:t,pageHeight:i,margin:r}=e,o=r+1,a=r+e.headerHeight-3,l=i-r-Li+3,d=l+4;e.title&&(n.setFont("helvetica","bold"),n.setFontSize(11),n.setTextColor(60),n.text(e.title,r,o)),n.setFont("helvetica","normal"),n.setFontSize(8),n.setTextColor(120),n.text(e.generatedAt,t-r,o,{align:"right"}),e.subtitle&&n.text(e.subtitle,r,o+Pi),n.setDrawColor(220),n.line(r,a,t-r,a),n.line(r,l,t-r,l),n.setFont("helvetica","bold"),n.setTextColor(60),n.text(e.branding,r,d);const c=n.getTextWidth(e.branding);n.setFont("helvetica","normal");const u=` ${e.dashboardNote}`;e.dashboardUrl?(n.setTextColor(0,68,204),n.textWithLink(u,r+c,d,{url:e.dashboardUrl})):(n.setTextColor(120),n.text(u,r+c,d)),n.setTextColor(120),n.text(e.pageLabel,t-r,d,{align:"right"})}function Ms(n){const e=n.querySelector(".kong-ui-public-grid-layout, .grid-stack");if(!e)return[];const t=e.querySelectorAll(":scope > .grid-cell:not(.empty-cell), :scope > .grid-stack-item");if(!t.length)return[];const i=n.getBoundingClientRect().top,r=new Map;return t.forEach(o=>{const a=o.getBoundingClientRect(),l=Math.round(a.top-i),d=Math.round(a.bottom-i),c=r.get(l);r.set(l,c!==void 0?Math.max(c,d):d)}),[...r.entries()].map(([o,a])=>({top:o,bottom:a})).sort((o,a)=>o.top-a.top)}function zs(n,e,t,i){if(!n.length){const a=[];let l=0;for(;l<e;){const d=Math.min(t,e-l);a.push({startY:l,height:d}),l+=d}return a}const r=[];let o=0;for(const a of n){const l=a.top*i,d=a.bottom*i;d-o>t&&(l>o?(r.push({startY:o,height:l-o}),o=l):(r.push({startY:o,height:d-o}),o=d))}return o<e&&r.push({startY:o,height:e-o}),r}function As(n){const{i18n:e}=kt(),t=s.ref({status:"idle"});async function i(r={}){const{filename:o="dashboard-export",title:a,subtitle:l,dashboardUrl:d,orientation:c="landscape",pageSize:u="letter",margin:h=4,scale:f=2,exclude:g=[".tile-actions",".tooltip",".popover",".dropdown-popover"],output:w="download",onBeforeCapture:E,onAfterCapture:b}=r,N=n.value;if(!N){t.value={status:"error",error:new Error("Dashboard layout container not found.")};return}try{t.value={status:"preparing"},await E?.();const[{snapdom:M},{jsPDF:C}]=await Promise.all([import("@zumer/snapdom"),import("jspdf")]);t.value={status:"capturing"};const S={name:"kong-webgl-snapshot",beforeClone:()=>K.prepareForCapture(),afterClone:()=>K.restoreAfterCapture()},D=await M.toCanvas(N,{scale:f,exclude:g,excludeMode:"remove",embedFonts:!0,plugins:[S]}),B=Ms(N),H=N.getBoundingClientRect().width,p=H?D.width/H:f;t.value={status:"generating"};const m=new Date,_=new C({orientation:c,unit:"mm",format:u}),k=_.internal.pageSize.getWidth(),R=_.internal.pageSize.getHeight(),A=Os+(l?Pi:0),te=k-h*2,de=R-h*2-A-Li,he=D.width/te,X=de*he,ne=zs(B,D.height,X,p),L={title:a,subtitle:l,dashboardUrl:d,generatedAt:e.t("pdfExport.generated",{timestamp:m.toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"})}),branding:e.t("pdfExport.branding"),dashboardNote:e.t("pdfExport.dashboardNote"),pageWidth:k,pageHeight:R,headerHeight:A,margin:h};for(let J=0;J<ne.length;J++){J>0&&_.addPage();const{startY:v,height:T}=ne[J],x=document.createElement("canvas");x.width=D.width,x.height=T,x.getContext("2d").drawImage(D,0,v,D.width,T,0,0,D.width,T),_.addImage(x.toDataURL("image/png"),"PNG",h,h+A,te,T/he),Ns(_,{...L,pageLabel:e.t("pdfExport.pageOf",{page:String(J+1),total:String(ne.length)})})}if(w==="blob"){const J=_.output("blob");return t.value={status:"complete",pageCount:ne.length},J}_.save(o),t.value={status:"complete",pageCount:ne.length}}catch(M){t.value={status:"error",error:M}}finally{K.restoreAfterCapture(),await b?.()}}return{exportPdf:i,exportState:s.readonly(t)}}const Is=n=>n.toLowerCase().endsWith("count")?"":n;function qs(){const{i18n:n}=kt(),{formatUnit:e}=K.unitFormatter({i18n:n});return t=>{const i=t.meta?.metric_names?.[0]??"",r=t.meta?.metric_units?.[i]??"",o=`chartLabels.${i}`;return{seriesName:n.te(o)?n.t(o):i,valueFormatter:a=>e(a,r,{translateUnit:Is})}}}const ae={useContextLinks:ws,useDashboardContext:Ds,useEvaluateFeatureFlag:Jr,useExportPdf:As,useI18n:kt,useIssueQuery:vs,useIssueRequestsQuery:Ss,useMetricFormatter:qs,useRequestQueue:as},Ls={class:"kong-ui-public-csv-export-modal"},Ps={key:0,class:"selected-range"},Bs={key:4,class:"text-muted",tag:"span"},Bi=3,Hi=s.defineComponent({__name:"CsvExportModal",props:{exportState:{},filename:{},modalDescription:{default:void 0}},emits:["closeModal"],setup(n,{emit:e}){const{i18n:t}=ae.useI18n(),i=n,r=e,o=`${i.filename.replace(/\s+/g,"-").toLowerCase()}-${new Date().toISOString().slice(0,10)}.csv`,a=s.ref(1),l=s.computed(()=>f.value.rows.length),d=s.computed(()=>i.exportState.status==="success"&&!!i.exportState.chartData?.data?.length),c=s.computed(()=>{if(i.exportState.status!=="success"||!i.exportState.chartData?.meta)return"";const{start:w,end:E}=i.exportState.chartData.meta;return w&&E?`${K.formatTimestamp(new Date(w))} - ${K.formatTimestamp(new Date(E),{includeTZ:!0})}`:""}),u=s.computed(()=>i.exportState.status!=="success"?"":t.t("csvExport.previewRows",{rowsMax:Math.min(Bi,l.value),rowsTotal:l.value,plural:l.value===1?"":"s"})),h=()=>{r("closeModal")},f=s.computed(()=>{if(i.exportState.status!=="success"||!d.value||!i.exportState.chartData?.meta.metric_names)return{headers:[],rows:[],csvHeaders:{}};const w=i.exportState.chartData,E=w.data.some(D=>D.timestamp!==w.data[0].timestamp),b=w.data.map(D=>{const B=new Date(D.timestamp);return{...Object.keys(D.event).reduce((p,m)=>{if(m in w.meta.display){const _=D.event[m],k=w.meta.display[m];p[m]=_&&k&&k[_].name||D.event[m]}else p[m]=D.event[m];return p},{}),...E?{timestamp:gi(B,"yyyy-MM-dd HH:mm:ss"),tzOffset:gi(B,"XXX")}:{}}});let N=[];E&&(N=[{label:t.t("csvExport.Timestamp"),key:"timestamp"},{label:t.t("csvExport.UtcOffset"),key:"tzOffset"}]);const M="display"in i.exportState.chartData.meta&&i.exportState.chartData.meta.display?i.exportState.chartData.meta.display:{},C=[...N,...Object.keys(M).map(D=>({label:t.t(`chartLabels.${D}`),key:D})),...i.exportState.chartData.meta.metric_names.map(D=>({label:t.t(`chartLabels.${D}`),key:D}))],S=C.reduce((D,B)=>(D[B.key]=B.label,D),{});return{headers:C,csvHeaders:S,rows:b}}),g=async()=>{if(i.exportState.status!=="success")return{total:0,data:[]};const{rows:w}=f.value;return{total:Number(w.length)||0,data:w.slice(0,Bi)}};return s.watch(f,()=>{a.value++}),(w,E)=>{const b=s.resolveComponent("KSkeleton"),N=s.resolveComponent("KEmptyState"),M=s.resolveComponent("KTableData"),C=s.resolveComponent("KTooltip"),S=s.resolveComponent("KButton"),D=s.resolveComponent("KModal");return s.openBlock(),s.createElementBlock("div",Ls,[s.createVNode(D,{class:"vitals-report","data-testid":"csv-export-modal","show-dismiss-icon":"",title:s.unref(t).t("csvExport.exportPreview"),visible:"",onCancel:h,onKeyup:s.withKeys(h,["esc"])},{default:s.withCtx(()=>[s.createElementVNode("div",null,[n.exportState.status==="success"&&d.value?(s.openBlock(),s.createElementBlock("div",Ps,[s.createElementVNode("p",null,s.toDisplayString(n.modalDescription?n.modalDescription:s.unref(t).t("csvExport.exportDescription")),1),s.createElementVNode("p",null,s.toDisplayString(s.unref(t).t("csvExport.exportTimeRange"))+": "+s.toDisplayString(c.value),1)])):s.createCommentVNode("",!0),n.exportState.status==="loading"?(s.openBlock(),s.createBlock(b,{key:1,class:"chart-skeleton",type:"table"})):n.exportState.status==="success"?(s.openBlock(),s.createBlock(M,{key:2,class:"vitals-table",fetcher:g,"fetcher-cache-key":String(a.value),headers:f.value.headers,"hide-pagination":"","row-hover":!1,sortable:!1},{"empty-state":s.withCtx(()=>[s.createVNode(N,{"action-button-visible":!1},{title:s.withCtx(()=>[s.createElementVNode("h5",null,s.toDisplayString(s.unref(t).t("csvExport.noDataRange")),1)]),default:s.withCtx(()=>[s.createElementVNode("p",null,s.toDisplayString(s.unref(t).t("csvExport.noDataRetry")),1)]),_:1})]),_:1},8,["fetcher-cache-key","headers"])):n.exportState.status==="error"?(s.openBlock(),s.createBlock(N,{key:3,"action-button-visible":!1},{title:s.withCtx(()=>[s.createElementVNode("h5",null,s.toDisplayString(s.unref(t).t("csvExport.dataError")),1)]),_:1})):s.createCommentVNode("",!0),n.exportState.status==="success"&&d.value?(s.openBlock(),s.createElementBlock("div",Bs,[s.createTextVNode(s.toDisplayString(u.value)+" ",1),s.createVNode(C,{class:"preview-tooltip",placement:"right",text:s.unref(t).t("csvExport.maximumRecordAmount",{value:s.unref(K.EXPORT_RECORD_LIMIT)})},{default:s.withCtx(()=>[s.createVNode(s.unref(xe.InfoIcon),{color:`var(--kui-color-text-neutral, ${s.unref(Ct)})`,size:`var(--kui-icon-size-30, ${s.unref($r)})`},null,8,["color","size"])]),_:1},8,["text"])])):s.createCommentVNode("",!0)])]),"footer-actions":s.withCtx(()=>[s.createVNode(S,{appearance:"tertiary",class:"cancel-btn",onClick:h},{default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(t).t("csvExport.cancelButton")),1)]),_:1}),s.createVNode(Zr,{class:"vitals-report-export-button",filename:o,headers:f.value.csvHeaders,rows:f.value.rows},{default:s.withCtx(()=>[s.createVNode(S,{appearance:"primary","data-testid":"csv-download-button",disabled:n.exportState.status!=="success"||!d.value},{default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(t).t("csvExport.downloadButton")),1)]),_:1},8,["disabled"])]),_:1},8,["headers","rows"])]),_:1},8,["title"])])}}});var Fi=(n=>(n.VALIDATING="VALIDATING",n.VALIDATING_HAS_DATA="VALIDATING_HAS_DATA",n.PENDING="PENDING",n.SUCCESS="SUCCESS",n.SUCCESS_HAS_DATA="SUCCESS_HAS_DATA",n.ERROR="ERROR",n.STALE_IF_ERROR="STALE_IF_ERROR",n))(Fi||{});const Hs=n=>n?!!(Object.keys(n)?.length||n.data?.length||n.data?.data?.length||!n.data?.data&&typeof n.data=="object"&&Object.keys(n?.data).length):!1;function $i(n=s.ref({}),e,t,i=Hs){const r=s.ref("PENDING");return s.watchEffect(()=>{const o=i(n.value);if(n.value&&o&&t.value){r.value="VALIDATING_HAS_DATA";return}if(n.value&&t.value){r.value="VALIDATING";return}if(n.value&&e.value){r.value="STALE_IF_ERROR";return}if(n.value===void 0&&!e.value){r.value="PENDING";return}if(n.value&&!e.value&&o){r.value="SUCCESS_HAS_DATA";return}if(n.value&&!e.value){r.value="SUCCESS";return}n.value===void 0&&e&&(r.value="ERROR")}),{state:r,swrvState:Fi}}const qe=s.defineComponent({__name:"QueryDataProvider",props:{context:{},limitOverride:{},query:{},queryReady:{type:Boolean},refreshCounter:{}},emits:["chart-data","query-complete"],setup(n,{emit:e}){const t=n,i=e,{i18n:r}=ae.useI18n(),{issueQuery:o}=ae.useIssueQuery(),a=s.inject(ke),l=()=>t.queryReady&&a?JSON.stringify([t.query,t.context,t.refreshCounter]):null,{data:d,error:c,isValidating:u}=Ht(l,async()=>{const M=l();try{const C=await o(t.query,t.context,t.limitOverride);return l()!==M?void 0:(g.value=null,C)}catch(C){if(l()!==M)return;throw g.value=Ee.handleQueryError(C),C}finally{l()===M&&i("query-complete")}},{refreshInterval:t.context.refreshInterval,revalidateOnFocus:!1,shouldRetryOnError:!1}),{state:h,swrvState:f}=$i(d,c,u),g=s.ref(null),w=s.computed(()=>h.value===f.ERROR||!!g.value),E=s.computed(()=>!t.queryReady||h.value===f.PENDING),b=s.ref(),N=s.computed(()=>d.value??(t.queryReady&&h.value===f.PENDING?b.value:void 0));return s.watch([()=>d.value,()=>h.value],([M,C])=>{M&&(C==="SUCCESS_HAS_DATA"||C==="SUCCESS")&&M!==b.value&&(b.value=M,i("chart-data",M))}),(M,C)=>{const S=s.resolveComponent("KSkeleton"),D=s.resolveComponent("KEmptyState");return(E.value||!s.unref(d)&&!w.value)&&!N.value?(s.openBlock(),s.createBlock(S,{key:0,class:"chart-skeleton",type:"table"})):w.value&&!E.value?(s.openBlock(),s.createBlock(D,{key:1,"action-button-visible":!1,"data-testid":"chart-empty-state"},s.createSlots({icon:s.withCtx(()=>[g.value?.type==="forbidden"?(s.openBlock(),s.createBlock(s.unref(xe.VisibilityOffIcon),{key:0})):(s.openBlock(),s.createBlock(s.unref(xe.WarningOutlineIcon),{key:1}))]),title:s.withCtx(()=>[s.createElementVNode("p",null,s.toDisplayString(g.value?.message||s.unref(r).t("renderer.unexpectedError")),1)]),_:2},[g.value?.details?{name:"default",fn:s.withCtx(()=>[s.createElementVNode("p",null,s.toDisplayString(g.value.details),1)]),key:"0"}:void 0]),1024)):N.value?s.renderSlot(M.$slots,"default",{data:N.value},void 0,void 0,2):s.createCommentVNode("",!0)}}}),Fs=s.defineComponent({__name:"SimpleChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},setup(n){const e=n,t=s.computed(()=>e.chartOptions.type==="single_value"),i=s.computed(()=>e.chartOptions.type==="single_value"?{...e.chartOptions,alignX:e.chartOptions.align_x??"left",showTrend:e.query.granularity==="trend"}:e.chartOptions);return(r,o)=>(s.openBlock(),s.createBlock(qe,{context:n.context,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter},{default:s.withCtx(({data:a})=>[s.createElementVNode("div",{class:s.normalizeClass(["analytics-chart",{"single-value":t.value}]),style:s.normalizeStyle(t.value?void 0:{height:`${n.height}px`})},[s.createVNode(s.unref(Ee.SimpleChart),{"chart-data":a,"chart-options":i.value,"synthetics-data-key":t.value?void 0:n.chartOptions.synthetics_data_key},null,8,["chart-data","chart-options","synthetics-data-key"])],6)]),_:1},8,["context","query","query-ready","refresh-counter"]))}}),Re=(n,e)=>{const t=n.__vccOpts||n;for(const[i,r]of e)t[i]=r;return t},Ui=Re(Fs,[["__scopeId","data-v-22077b88"]]),$s={class:"analytics-chart"},It=Re(s.defineComponent({__name:"BaseAnalyticsChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{},extraProps:{}},emits:["edit-tile","chart-data","zoom-time-range","view-requests","select-chart-range"],setup(n,{emit:e}){const t=n,i=e,{i18n:r}=ae.useI18n(),o=s.computed(()=>({type:t.chartOptions.type,stacked:t.chartOptions.stacked??!1,chartDatasetColors:t.chartOptions.chart_dataset_colors,threshold:t.chartOptions.threshold,metricAxisMap:t.chartOptions.metric_axis_map,yAxes:t.chartOptions.y_axes&&{left:a(t.chartOptions.y_axes.left),right:a(t.chartOptions.y_axes.right)},hideTruncationWarning:t.query.limit!==void 0&&t.query.limit>0})),a=c=>c&&{title:c.title,showGrid:c.show_grid},l=()=>{i("edit-tile")},d=c=>{i("chart-data",c)};return(c,u)=>{const h=s.resolveComponent("KDropdownItem");return s.openBlock(),s.createBlock(qe,{context:n.context,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,onChartData:d},{default:s.withCtx(({data:f})=>[s.createElementVNode("div",$s,[s.createVNode(s.unref(Ee.AnalyticsChart),s.mergeProps({"active-metric":n.activeMetric,"chart-data":f,"chart-options":o.value,"explore-link":n.exploreLink,"legend-position":"bottom","requests-link":n.requestsLink,"synthetics-data-key":n.chartOptions.synthetics_data_key,"timeseries-zoom":n.zoomConfiguration?.showZoomInAction,"tooltip-title":""},n.extraProps,{onSelectChartRange:u[0]||(u[0]=g=>i("select-chart-range",g)),onZoomTimeRange:u[1]||(u[1]=g=>i("zoom-time-range",g))}),s.createSlots({_:2},[n.context.editable?{name:"menu-items",fn:s.withCtx(()=>[s.createVNode(h,{onClick:l},{default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(r).t("renderer.edit")),1)]),_:1})]),key:"0"}:void 0]),1040,["active-metric","chart-data","chart-options","explore-link","requests-link","synthetics-data-key","timeseries-zoom"])])]),_:1},8,["context","query","query-ready","refresh-counter"])}}}),[["__scopeId","data-v-5e3d0a14"]]),Wi=s.defineComponent({__name:"BarChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},setup(n){return(e,t)=>(s.openBlock(),s.createBlock(It,{"chart-options":n.chartOptions,context:n.context,"extra-props":{showAnnotations:!1},height:n.height,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter},null,8,["chart-options","context","height","query","query-ready","refresh-counter"]))}}),Us={class:"analytics-chart"},Ws={key:3,class:"analytics-chart"},Gs=Re(s.defineComponent({__name:"ScatterChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},emits:["chart-data","query-complete"],setup(n,{emit:e}){const t=n,i=e,{i18n:r}=ae.useI18n(),{issueRequestsQuery:o}=ae.useIssueRequestsQuery(),a=s.computed(()=>t.query.datasource==="requests"),l=s.computed(()=>{const S=t.query,D=S.time_range??t.context.timeSpec,B=D?Nt(D):void 0;if(!B)return S;const H=K.finestGranularityForDuration(B);let p;return S.granularity&&K.Granularities[S.granularity]>=K.Granularities[H]?p=S.granularity:p=H,{...S,granularity:p}}),d=()=>a.value&&t.queryReady?JSON.stringify([t.query,t.context,t.refreshCounter]):null,c=s.ref(null),{data:u,error:h,isValidating:f}=Ht(d,async()=>{const S=d(),D=t.query;try{const B=await o(D,t.context);return d()!==S?void 0:(c.value=null,Ee.requestsToScatterData(B,Ts(D)))}catch(B){if(d()!==S)return;throw c.value=Ee.handleQueryError(B),B}finally{d()===S&&i("query-complete")}},{refreshInterval:t.context.refreshInterval,revalidateOnFocus:!1,shouldRetryOnError:!1}),{state:g,swrvState:w}=$i(u,h,f),E=s.ref(),b=s.computed(()=>u.value??E.value);s.watch(u,S=>{S&&(E.value=S)});const N=s.computed(()=>g.value===w.ERROR||!!c.value),M=s.computed(()=>!N.value&&(!t.queryReady||g.value===w.PENDING)&&!b.value),C=s.computed(()=>({type:"scatter",chartDatasetColors:t.chartOptions.chart_dataset_colors,scatter:{percentileLines:t.chartOptions.percentile_lines?.map(S=>({percentile:S.percentile,label:S.label,borderDash:S.border_dash,color:S.color})),outlierPercentile:t.chartOptions.outlier_percentile,shadeOutlierRegion:t.chartOptions.shade_outlier_region,jitterMs:t.chartOptions.jitter_ms,pointRadius:t.chartOptions.point_radius,pointOpacity:t.chartOptions.point_opacity}}));return(S,D)=>{const B=s.resolveComponent("KSkeleton"),H=s.resolveComponent("KEmptyState");return a.value?M.value?(s.openBlock(),s.createBlock(B,{key:1,class:"chart-skeleton",type:"table"})):N.value?(s.openBlock(),s.createBlock(H,{key:2,"action-button-visible":!1,"data-testid":"scatter-chart-empty-state"},s.createSlots({icon:s.withCtx(()=>[c.value?.type==="forbidden"?(s.openBlock(),s.createBlock(s.unref(xe.VisibilityOffIcon),{key:0})):(s.openBlock(),s.createBlock(s.unref(xe.WarningOutlineIcon),{key:1}))]),title:s.withCtx(()=>[s.createElementVNode("p",null,s.toDisplayString(c.value?.message||s.unref(r).t("renderer.unexpectedError")),1)]),_:2},[c.value?.details?{name:"default",fn:s.withCtx(()=>[s.createElementVNode("p",null,s.toDisplayString(c.value.details),1)]),key:"0"}:void 0]),1024)):b.value?(s.openBlock(),s.createElementBlock("div",Ws,[s.createVNode(s.unref(Ee.AnalyticsChart),{"chart-data":b.value,"chart-options":C.value,"legend-position":"bottom","synthetics-data-key":n.chartOptions.synthetics_data_key,"tooltip-title":""},null,8,["chart-data","chart-options","synthetics-data-key"])])):s.createCommentVNode("",!0):(s.openBlock(),s.createBlock(qe,{key:0,context:n.context,query:l.value,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,onChartData:D[0]||(D[0]=p=>i("chart-data",p)),onQueryComplete:D[1]||(D[1]=p=>i("query-complete"))},{default:s.withCtx(({data:p})=>[s.createElementVNode("div",Us,[s.createVNode(s.unref(Ee.AnalyticsChart),{"chart-data":p,"chart-options":C.value,"legend-position":"bottom","synthetics-data-key":n.chartOptions.synthetics_data_key,"tooltip-title":""},null,8,["chart-data","chart-options","synthetics-data-key"])])]),_:1},8,["context","query","query-ready","refresh-counter"]))}}}),[["__scopeId","data-v-e823be94"]]),Gi=s.defineComponent({__name:"TimeseriesChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},emits:["zoom-time-range","select-chart-range"],setup(n,{emit:e}){const t=e;return(i,r)=>(s.openBlock(),s.createBlock(It,{"active-metric":n.activeMetric,"chart-options":n.chartOptions,context:n.context,"explore-link":n.exploreLink,height:n.height,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,"requests-link":n.requestsLink,"zoom-configuration":n.zoomConfiguration,onSelectChartRange:r[0]||(r[0]=o=>t("select-chart-range",o)),onZoomTimeRange:r[1]||(r[1]=o=>t("zoom-time-range",o))},null,8,["active-metric","chart-options","context","explore-link","height","query","query-ready","refresh-counter","requests-link","zoom-configuration"]))}}),Ys=Re(s.defineComponent({__name:"GoldenSignalsRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},setup(n){const e=n,t=s.computed(()=>{const r=e.query?.datasource;if(r&&r!=="api_usage"&&r!=="basic")throw new Error(`Invalid datasource value: ${r}`);return{datasource:e.query?.datasource,overrideTimeRange:e.context.timeSpec,additionalFilter:e.context.filters,longCardTitles:e.chartOptions.long_card_titles,percentileLatency:e.chartOptions.percentile_latency,refreshInterval:e.context.refreshInterval,queryReady:e.queryReady,refreshCounter:e.refreshCounter}}),i=s.computed(()=>!!(e.chartOptions.chart_title||e.headerDescription));return(r,o)=>(s.openBlock(),s.createElementBlock("div",{class:s.normalizeClass(["metric-card-tile-wrapper",{titled:i.value}])},[s.createVNode(s.unref(Ft.MetricsProvider),s.normalizeProps(s.guardReactiveProps(t.value)),{default:s.withCtx(()=>[s.createVNode(s.unref(Ft.MetricsConsumer))]),_:1},16)],2))}}),[["__scopeId","data-v-3eda5028"]]),Vs={class:"fallback-entity-link","data-testid":"entity-link-parent"},Yi=s.defineComponent({__name:"FallbackEntityLink",props:{entityLinkData:{}},setup(n){return(e,t)=>(s.openBlock(),s.createElementBlock("div",Vs,s.toDisplayString(n.entityLinkData.label),1))}}),js={key:0},Ks={key:1},Qs=s.defineComponent({__name:"TopNTableRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},setup(n){const e=n,t=s.inject(ke),i=s.defineAsyncComponent(async()=>{if(t?.fetchComponent)try{return await t.fetchComponent("EntityLink")}catch{return Yi}return Yi}),r=s.computed(()=>!!e.chartOptions.entity_link||!!Object.keys(e.chartOptions.entity_links||{}).length),o=c=>{const u=e.chartOptions.entity_links;return u&&(u[c]||Object.entries(u).find(([h])=>h.toLowerCase()===c.toLowerCase())?.[1])||""},a=c=>{const u=c.dimensions?.[0]?.dimension;return!u||u===c.dimension},l=c=>o(c.dimension)||a(c)&&e.chartOptions.entity_link||"",d=c=>{const u=l(c);if(u)if(c.id.includes(":")){const[h,f]=c.id.split(":");return u.replace(ki,h).replace(Rt,f)}else return u.replace(Rt,c.id);return""};return(c,u)=>(s.openBlock(),s.createBlock(qe,{context:n.context,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter},{default:s.withCtx(({data:h})=>[s.createVNode(s.unref(Ee.TopNTable),{"column-options":n.chartOptions.column_options,data:h,"synthetics-data-key":n.chartOptions.synthetics_data_key},s.createSlots({_:2},[r.value?{name:"name",fn:s.withCtx(({record:f})=>[!f.isEmpty&&l(f)?(s.openBlock(),s.createBlock(s.unref(i),{key:0,"entity-link-data":{id:f.id,label:f.name,deleted:f.deleted},"external-link":d(f)},null,8,["entity-link-data","external-link"])):(s.openBlock(),s.createElementBlock(s.Fragment,{key:1},[f.name==="empty"?(s.openBlock(),s.createElementBlock("i",js,s.toDisplayString(f.name),1)):(s.openBlock(),s.createElementBlock("span",Ks,s.toDisplayString(f.name),1))],64))]),key:"0"}:void 0]),1032,["column-options","data","synthetics-data-key"])]),_:1},8,["context","query","query-ready","refresh-counter"]))}}),Xs=s.defineComponent({__name:"TopTalkersRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},emits:["query-complete"],setup(n,{emit:e}){const t=n,i=e,r=s.computed(()=>t.chartOptions.columns.map(c=>({dimension:c.dimension,label:c.label}))),o=c=>({...t.query,dimensions:[c.dimension],filters:[...t.query.filters??[],...c.filters??[]]}),a=s.computed(()=>new Map(r.value.map((c,u)=>[c,o(t.chartOptions.columns[u])]))),l=new Set,d=c=>{l.add(c),l.size===r.value.length&&(l.clear(),i("query-complete"))};return s.watch([a,()=>t.refreshCounter],()=>l.clear()),(c,u)=>(s.openBlock(),s.createBlock(s.unref(Ee.TopTalkersGrid),{"column-options":n.chartOptions.column_options,columns:r.value,"size-metric":n.chartOptions.size_metric},{column:s.withCtx(({column:h})=>[s.createVNode(qe,{context:n.context,query:a.value.get(h),"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,onQueryComplete:f=>d(h)},{default:s.withCtx(({data:f})=>[s.createVNode(s.unref(Ee.TopTalkersColumn),{"column-options":n.chartOptions.column_options,data:f,dimension:h.dimension,label:h.label,"size-metric":n.chartOptions.size_metric},null,8,["column-options","data","dimension","label","size-metric"])]),_:2},1032,["context","query","query-ready","refresh-counter","onQueryComplete"])]),_:1},8,["column-options","columns","size-metric"]))}}),Zs=n=>n.records.map(e=>{const t={...e};return Object.entries(e).forEach(([i,r])=>{if(r===null)return;const o=n.meta.display?.[i]?.[String(r)]?.name;o&&(t[i]=o)}),t}),Vi=({canTranslate:n,columns:e,translate:t})=>e.map(i=>{const r=`chartLabels.${i}`;return{key:i,label:n(r)?t(r):i}}),Js={platform:Vi,platform_usage:Vi},ji=async({abortController:n,context:e,cursor:t,pageSize:i,query:r,onResponseColumns:o,stripUnknownFilters:a,tabularQueryFn:l})=>{if(!l)throw new Error("AnalyticsBridge.tabularQueryFn is not defined");const d=r.query,c=a({datasource:r.datasource,filters:[...d.filters??[],...e.filters],queryFields:d.entity===void 0?void 0:[d.entity]}),u=await l({datasource:r.datasource,query:{columns:d.columns,cursor:t===void 0?d.cursor:String(t),entity:d.entity,filters:c,page_size:i}},n);return u.meta.columns?.length&&o?.(u.meta.columns),{data:Zs(u),cursor:u.meta.cursor,hasMore:!!u.meta.cursor}},eo={platform:ji,platform_usage:ji},to=Re(s.defineComponent({__name:"TableDataGridRenderer",props:{query:{},context:{},queryReady:{type:Boolean},height:{},refreshCounter:{}},emits:["loading-change"],setup(n,{emit:e}){const t=n,i=e,r=s.inject(ke),o=Me.useDatasourceConfigStore(),{i18n:a}=ae.useI18n(),l=new AbortController,d=s.ref([]),c=s.ref(!1),u=s.computed(()=>t.height===void 0?void 0:{height:`${t.height}px`}),h=s.computed(()=>({datasource:t.query.datasource,query:{columns:t.query.columns,cursor:t.query.cursor,entity:t.query.entity,filters:t.query.filters,page_size:t.query.page_size}})),f=s.computed(()=>JSON.stringify({refreshCounter:t.refreshCounter,query:{columns:t.query.columns,datasource:t.query.datasource,entity:t.query.entity,filters:t.query.filters,page_size:t.query.page_size},context:{filters:t.context.filters,timeSpec:t.context.timeSpec,tz:t.context.tz}}));s.onUnmounted(()=>{l.abort()});const g=s.computed(()=>Js[t.query.datasource]({columns:t.query.columns?.length?t.query.columns:d.value,translate:b=>a.t(b),canTranslate:b=>a.te(b)})),w=s.computed(()=>async({cursor:b,pageSize:N})=>{try{await o.isReady();const M=eo[h.value.datasource];if(!M)throw new Error(`No table data grid fetcher found for datasource: ${h.value.datasource}`);const C=await M({abortController:l,context:t.context,cursor:b,pageSize:N,query:h.value,onResponseColumns:S=>{d.value=S},stripUnknownFilters:o.stripUnknownFilters,tabularQueryFn:r?.tabularQueryFn});return c.value=!1,C}catch(M){throw c.value=!0,M}}),E=b=>{b.state==="error"&&(c.value=!0),i("loading-change",b.state==="loading")};return(b,N)=>{const M=s.resolveComponent("KSkeleton");return s.openBlock(),s.createElementBlock("div",{class:"table-data-grid-renderer",style:s.normalizeStyle(u.value)},[n.queryReady?(s.openBlock(),s.createBlock(s.unref(ln.TableDataGrid),{key:1,error:c.value,fetcher:w.value,headers:g.value,"page-size":n.query.page_size,"refresh-key":f.value,onState:E},null,8,["error","fetcher","headers","page-size","refresh-key"])):(s.openBlock(),s.createBlock(M,{key:0,"data-testid":"table-skeleton",type:"table"}))],4)}}}),[["__scopeId","data-v-c49ff2eb"]]),io=s.defineComponent({__name:"DonutChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},setup(n){return(e,t)=>(s.openBlock(),s.createBlock(It,{"chart-options":n.chartOptions,context:n.context,height:n.height,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter},null,8,["chart-options","context","height","query","query-ready","refresh-counter"]))}}),Ki=n=>{if(n==null||typeof n=="string"&&n.trim()==="")return;const e=Number(n);return Number.isFinite(e)?e:void 0},Qi="MMM dd",no=(n,e)=>{const t=[],i=new Date(e);for(const r=new Date(n);r<i;r.setDate(r.getDate()+1))t.push(yt(r,Qi));return t},ro=(n,e)=>{const t=n.indexOf(e);return t===-1?n.push(e)-1:t},so=(n,e)=>n[e]?.name??e,oo=n=>{if(!n?.meta||!n.data)return;const{display:e,metric_names:t,start:i,end:r}=n.meta,o=t?.[0],a=e&&Object.keys(e).find(u=>u!=="time");if(!o||!a||!i||!r){console.error("Cannot build heatmap chart data from this explore result. Missing metric, dimension or time range.");return}const l=no(i,r),d=[],c=[];for(const{timestamp:u,event:h}of n.data){const f=l.indexOf(yt(new Date(u),Qi)),g=Ki(h[o]);f===-1||g===void 0||c.push([f,ro(d,String(h[a])),g])}return{data:c,xAxisLabels:l,yAxisLabels:d.map(u=>so(e[a],u))}},ao={class:"wrapper","data-testid":"heatmap-chart"},lo=10,co=Re(s.defineComponent({__name:"HeatmapRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},emits:["chart-data","query-complete"],setup(n,{emit:e}){const t=e,{i18n:i}=ae.useI18n(),r=ae.useMetricFormatter(),o=d=>{const c=oo(d);if(c?.data.length)return{data:c.data,xAxisLabels:c.xAxisLabels,yAxisLabels:c.yAxisLabels,...r(d)}},a=new WeakMap,l=d=>(a.has(d)||a.set(d,o(d)),a.get(d));return(d,c)=>{const u=s.resolveComponent("KEmptyState");return s.openBlock(),s.createBlock(qe,{context:n.context,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,onChartData:c[0]||(c[0]=h=>t("chart-data",h)),onQueryComplete:c[1]||(c[1]=h=>t("query-complete"))},{default:s.withCtx(({data:h})=>[s.createElementVNode("div",ao,[l(h)?(s.openBlock(),s.createBlock(s.unref($t.HeatmapChart),s.mergeProps({key:0,height:"100%","tooltip-title":n.chartOptions.chart_title??void 0,"visible-rows":lo},l(h)),null,16,["tooltip-title"])):(s.openBlock(),s.createBlock(u,{key:1,"action-button-visible":!1,"data-testid":"no-data-in-report"},{title:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(i).t("renderer.noDataAvailable.title")),1)]),default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(i).t("renderer.noDataAvailable.description")),1)]),_:1}))])]),_:1},8,["context","query","query-ready","refresh-counter"])}}}),[["__scopeId","data-v-937dae87"]]),Xi=(n,e,{otherLabel:t})=>({name:e===Ee.OTHER_DIMENSION_ID&&t||(n?.[e]?.name??e)}),uo=(n,e,t,i)=>({...Xi(e,t,i),itemStyle:{color:K.color({dimension:n,dimensionValue:t})}}),Zi=(n,e,t)=>{const i=n.get(e)??t();return n.set(e,i),i},ho=/_(average|p\d+|rate|max|per_minute)$/,Ji=(n,e)=>!e.includes("time")&&!(n&&ho.test(n)),en=(n,e)=>{n.value=Number(n.value??0)+e},fo=(n,e,t,[i,r],o)=>{const a=new Map,l=(d,c)=>String(d[c]);for(const{event:d}of n){const c=Ki(d[e]);if(c===void 0)continue;const u=l(d,i),h=Zi(a,u,()=>({node:uo(i,t[i],u,o),children:new Map}));if(!r){en(h.node,c);continue}const f=l(d,r),g=Zi(h.children,f,()=>Xi(t[r],f,o));en(g,c)}return a},mo=(n,e={})=>{if(!n?.meta||!n.data)return;const{display:t,metric_names:i}=n.meta,r=i?.[0],o=t?Object.keys(t):[];if(!r||!o.length){console.error("Cannot build treemap chart data from this explore result. Missing metric or dimension.");return}if(!Ji(r,o)){console.error("Cannot build treemap chart data from this explore result. Needs an additive metric and no time dimension.");return}return[...fo(n.data,r,t,o,e).values()].map(({node:l,children:d})=>d.size?{...l,children:[...d.values()]}:l)},po={class:"wrapper","data-testid":"treemap-chart"},go=Re(s.defineComponent({__name:"TreemapRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},emits:["chart-data","query-complete"],setup(n,{emit:e}){const t=n,i=e,{i18n:r}=ae.useI18n(),o=ae.useMetricFormatter(),a=s.computed(()=>Ji(t.query.metrics?.[0],t.query.dimensions??[])),l=u=>{const h=mo(u,{otherLabel:r.t("chartLabels.____OTHER____")});if(h?.length)return{data:h,drillDown:h.some(f=>f.children?.length),...o(u)}},d=new WeakMap,c=u=>(d.has(u)||d.set(u,l(u)),d.get(u));return(u,h)=>{const f=s.resolveComponent("KEmptyState");return s.openBlock(),s.createBlock(qe,{context:n.context,query:n.query,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,onChartData:h[0]||(h[0]=g=>i("chart-data",g)),onQueryComplete:h[1]||(h[1]=g=>i("query-complete"))},{default:s.withCtx(({data:g})=>[s.createElementVNode("div",po,[a.value?c(g)?(s.openBlock(),s.createBlock(s.unref($t.TreeMapChart),s.mergeProps({key:1,height:"100%","tooltip-title":n.chartOptions.chart_title??void 0},c(g)),null,16,["tooltip-title"])):(s.openBlock(),s.createBlock(f,{key:2,"action-button-visible":!1,"data-testid":"no-data-in-report"},{title:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(r).t("renderer.noDataAvailable.title")),1)]),default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(r).t("renderer.noDataAvailable.description")),1)]),_:1})):(s.openBlock(),s.createBlock(f,{key:0,"action-button-visible":!1,"data-testid":"treemap-unsupported"},{title:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(r).t("renderer.treemapUnsupported.title")),1)]),default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(r).t("renderer.treemapUnsupported.description")),1)]),_:1}))])]),_:1},8,["context","query","query-ready","refresh-counter"])}}}),[["__scopeId","data-v-d818a9ae"]]),yo=["data-testid"],_o={key:0,class:"tile-header"},wo={class:"badge-container"},bo={class:"badge-text"},vo={class:"badge-text"},xo={key:0,class:"metric-selector-wrapper"},Eo={key:1},Co=["data-testid"],ko=["data-testid"],Ro=["data-testid"],To={class:"delete-option"},So=["data-testid"],tn=Re(s.defineComponent({__name:"DashboardTile",props:s.mergeModels({context:{},definition:{},height:{default:()=>je},hideActions:{type:Boolean,default:!1},isFullscreen:{type:Boolean},preview:{type:Boolean,default:!1},queryReady:{type:Boolean},showRefresh:{type:Boolean,default:!1},tileId:{},tileType:{default:"chart"}},{refreshCounter:{default:0},refreshCounterModifiers:{}}),emits:s.mergeModels(["chart-data","tile-loaded","edit-tile","duplicate-tile","remove-tile","tile-time-range-zoom","tile-bounds-change"],["update:refreshCounter"]),setup(n,{expose:e,emit:t}){s.useCssVars(O=>({v0b6a9da7:`${O.height}px`}));const i=parseInt(bi,10),{zoomConfiguration:r}=ae.useDashboardContext({context:s.computed(()=>n.context),preview:s.computed(()=>n.preview)}),o=s.useModel(n,"refreshCounter"),a=()=>{C.value=!0,o.value++},l=t,d=s.defineAsyncComponent(()=>Promise.resolve().then(()=>Yo)),c=s.inject(ke),u=Me.useDatasourceConfigStore(),{datasourceConfigMap:h,stripUnknownFilters:f}=Ke(u),{i18n:g}=ae.useI18n(),w=s.ref(),E=s.ref({status:"loading"}),b=s.ref(!1),N=s.ref(),M=s.ref(!1),C=s.ref(!0),S=s.computed(()=>n.definition.chart),D=s.computed(()=>"chart_title"in S.value?S.value.chart_title:void 0),B=s.computed(()=>n.definition.header_description),H=s.computed(()=>S.value.type==="slottable"),p=s.computed(()=>De(n.definition)||Dt(n.definition)?!1:!("allow_csv_export"in S.value)||S.value.allow_csv_export!==!1),{exploreLinkKebabMenu:m,requestsLinkKebabMenu:_,canShowKebabMenu:k,canGenerateRequestsLink:R,canGenerateExploreLink:A,requestsLinkZoomActions:te,exploreLinkZoomActions:de,buildExploreQuery:he,buildExploreLink:X,buildRequestLink:ne,buildRequestsQueryZoomActions:L}=ae.useContextLinks({queryBridge:c,chartData:s.readonly(w),definition:s.toRef(()=>n.definition),context:s.readonly(s.toRef(()=>n.context))}),{issueQuery:J}=ae.useIssueQuery();s.watch(()=>n.definition,async(O,j)=>{await s.nextTick(),N.value&&(M.value=N.value.scrollWidth>N.value.clientWidth);try{JSON.stringify(O?.query)!==JSON.stringify(j?.query)&&(C.value=!0)}catch{}},{immediate:!0,deep:!0});const v=s.computed(()=>g.t("csvExport.defaultFilename")),T=s.computed(()=>!!m.value||p.value||!!n.context.editable),x=s.computed(()=>!n.hideActions&&k.value&&T.value),Y=s.computed(()=>x.value&&T.value&&!n.isFullscreen),G={heatmap:co,treemap:go,timeseries_line:Gi,timeseries_bar:Gi,scatter:Gs,horizontal_bar:Wi,vertical_bar:Wi,gauge:Ui,donut:io,golden_signals:Ys,top_n:Qs,top_talkers:Xs,table:to,slottable:void 0,single_value:Ui,choropleth_map:d},re=s.computed(()=>({...ce.value?.rendererEvents.supportsRequests?{"select-chart-range":$e}:{},...ce.value?.rendererEvents.supportsZoom?{"zoom-time-range":Pe}:{},...ce.value?.rendererEvents.supportsBounds?{"bounds-change":ve}:{},...ce.value?.rendererEvents.supportsLoadingChange?{"loading-change":me}:{}})),ce=s.computed(()=>{const O=G[n.definition.chart.type],j=De(n.definition),fe=!!O?.emits?.includes("select-chart-range"),Ue=!!O?.emits?.includes("zoom-time-range"),Be=n.definition.chart.type==="choropleth_map",We=!!O?.emits?.includes("loading-change"),Pt={query:n.definition.query,context:n.context,queryReady:n.queryReady,height:n.height-i*2,refreshCounter:o.value,zoomConfiguration:r.value},Bt={chartOptions:n.definition.chart,activeMetric:V.value,headerDescription:B.value,requestsLink:r.value.showRequestsAction?te.value:void 0,exploreLink:r.value.showExploreAction?de.value:void 0};return O&&{component:O,rendererProps:{...Pt,...j?{}:Bt},rendererEvents:{supportsRequests:fe,supportsZoom:Ue,supportsBounds:Be,supportsLoadingChange:We}}}),F=s.computed(()=>{if(De(n.definition))return null;const O=n.definition.query,j=O?.time_range;if(K.isPlatformDatasource(O?.datasource)&&!O.dimensions?.includes("time"))return g.t("renderer.as_of_today");if(j?.type==="relative"){const fe=K.TimePeriods.get(K.TIMEFRAME_LOOKUP[j.time_range]);return fe?fe.display:(console.warn("Did not recognize the given relative time range:",j.time_range),j.time_range)}else if(j?.type==="absolute"){const fe=j.tz||"Etc/UTC";return`${K.formatTime(j.start,{short:!0,tz:fe})} - ${K.formatTime(j.end,{short:!0,tz:fe})}`}return null}),$=s.computed(()=>{const O=n.definition.query,j=O?.datasource,fe=j?h.value[j]?.timeRangeOptions:void 0,Be=(O&&"time_range"in O?O.time_range:void 0)??n.context.timeSpec;return Mt(Be,fe)}),ie=s.computed(()=>H.value?!1:[!!D.value,Y.value,!!F.value,$.value,!!B.value,n.showRefresh,U.value].some(Boolean)),q=s.computed(()=>w.value?K.msToGranularity(w.value.meta.granularity_ms):void 0),se=s.computed(()=>["timeseries_line","timeseries_bar"].includes(S.value.type)),oe=s.computed(()=>w.value?.meta.metric_names??[]),V=s.ref();s.watch(oe,O=>{(!V.value||!O.includes(V.value))&&(V.value=O[0])},{immediate:!0});const Z=s.computed(()=>{const O=S.value;return O.type!=="timeseries_line"?!1:oe.value.some(j=>O.metric_axis_map?.[j]==="right")}),U=s.computed(()=>se.value&&!Z.value&&(w.value?.data.length??0)>0&&oe.value.length>1&&Object.keys(w.value?.meta.display??{}).length>0),_e=O=>Object.hasOwn(Ei.chartLabels,O),P=s.computed(()=>oe.value.map(O=>({value:O,label:_e(O)?g.t(`chartLabels.${O}`):O}))),ee=s.computed(()=>{if(!Ot(n.definition)||!se.value||!n.queryReady||C.value)return!1;const O=n.definition.query.granularity;return!O||!q.value?!1:O!==q.value}),ze=s.computed(()=>{const O=K.msToGranularity(w.value?.meta.granularity_ms??0)??"unknown",j=Ot(n.definition)?n.definition.query.granularity??"unknown":"unknown";return g.t("query_aged_out_warning",{currentGranularity:g.t(`granularities.${O}`),savedGranularity:g.t(`granularities.${j}`)})}),Le=s.computed(()=>{const O=[...n.context.filters,...n.definition.query.filters??[]],j="metrics"in n.definition.query?n.definition.query.metrics:void 0,fe=n.definition.query.datasource??"api_usage";return f.value({datasource:fe,filters:O,queryFields:j})}),we=()=>{l("edit-tile",n.definition)},Fe=()=>{l("duplicate-tile",n.definition)},ue=()=>{l("remove-tile",n.definition)},be=O=>{w.value=O,C.value=!1,l("chart-data",O),l("tile-loaded")},le=()=>{C.value=!1,l("tile-loaded")},me=O=>{C.value=O,O||l("tile-loaded")},Se=()=>{b.value=!1},Qe=()=>{if(Dt(n.definition))throw new Error("Cannot export data for a tile backed by the api-requests endpoint");const O=n.definition.query.datasource?.startsWith("goap");return c?.staticConfig?.increaseCsvExportLimit!==!1&&!O?J(n.definition.query,n.context,K.EXPORT_RECORD_LIMIT):w.value?Promise.resolve(w.value):new Promise(fe=>{const Ue=s.watch(w,Be=>{Be&&(fe(Be),Ue())})})},pt=async()=>{b.value=!0,E.value={status:"loading"};try{const O=await Qe();E.value={status:"success",chartData:O}}catch(O){E.value={status:"error",error:O}}},Pe=O=>{const j={tileId:n.tileId.toString(),timeRange:O};l("tile-time-range-zoom",j)},ve=O=>{const j={tileId:n.tileId.toString(),bounds:O};l("tile-bounds-change",j)},$e=O=>{const j=Le.value,fe=he(O,j);de.value=A.value?{href:X(fe)}:void 0,te.value=R.value?{href:ne(L(O,j))}:void 0};return e({getExportData:Qe}),(O,j)=>{const fe=s.resolveComponent("KTooltip"),Ue=s.resolveComponent("KBadge"),Be=s.resolveComponent("KButton"),We=s.resolveComponent("KDropdownItem"),Pt=s.resolveComponent("KDropdown");return s.openBlock(),s.createElementBlock("div",{class:s.normalizeClass(["tile-boundary",{editable:n.context.editable,headless:!ie.value}]),"data-testid":`tile-${n.tileId}`},[ie.value&&!H.value?(s.openBlock(),s.createElementBlock("div",_o,[s.createVNode(fe,{class:"title-tooltip",disabled:!M.value,"max-width":"500",text:D.value},{default:s.withCtx(()=>[s.createElementVNode("div",{ref_key:"titleRef",ref:N,class:"title"},s.toDisplayString(D.value),513)]),_:1},8,["disabled","text"]),s.createElementVNode("div",wo,[$.value?(s.openBlock(),s.createBlock(Ue,{key:0,appearance:"warning","data-testid":"unsupported-time-range-badge",tooltip:s.unref(g).t("unsupported_time_range_warning"),"tooltip-attributes":{maxWidth:"320px"}},{icon:s.withCtx(()=>[s.createVNode(s.unref(xe.WarningIcon),{size:`var(--kui-icon-size-20, ${s.unref(yi)})`},null,8,["size"])]),default:s.withCtx(()=>[s.createElementVNode("span",bo,s.toDisplayString(s.unref(g).t("unsupported_time_range_badge")),1)]),_:1},8,["tooltip"])):s.createCommentVNode("",!0),F.value?(s.openBlock(),s.createBlock(Ue,{key:1,"data-testid":"time-range-badge",tooltip:ee.value?ze.value:void 0,"tooltip-attributes":{maxWidth:"320px"}},s.createSlots({default:s.withCtx(()=>[s.createElementVNode("span",vo,s.toDisplayString(F.value),1)]),_:2},[ee.value?{name:"icon",fn:s.withCtx(()=>[s.createVNode(s.unref(xe.WarningIcon),{size:`var(--kui-icon-size-20, ${s.unref(yi)})`},null,8,["size"])]),key:"0"}:void 0]),1032,["tooltip"])):s.createCommentVNode("",!0)]),U.value?(s.openBlock(),s.createElementBlock("div",xo,[s.createVNode(s.unref(cn.KSegmentedControl),{modelValue:V.value,"onUpdate:modelValue":j[0]||(j[0]=Bt=>V.value=Bt),class:"metric-selector","data-testid":"metric-selector",options:P.value},null,8,["modelValue","options"])])):s.createCommentVNode("",!0),n.showRefresh?(s.openBlock(),s.createElementBlock("div",Eo,[s.createVNode(Be,{appearance:"secondary",class:"refresh-button","data-testid":`tile-refresh-button-${n.tileId}`,disabled:C.value,icon:"",size:"small",onClick:a},{default:s.withCtx(()=>[C.value?(s.openBlock(),s.createBlock(s.unref(xe.ProgressIcon),{key:0,role:"button",size:`var(--kui-icon-size-60, ${s.unref(wi)})`,tabindex:"0"},null,8,["size"])):(s.openBlock(),s.createBlock(s.unref(xe.RefreshIcon),{key:1,role:"button",size:`var(--kui-icon-size-60, ${s.unref(wi)})`,tabindex:"0"},null,8,["size"]))]),_:1},8,["data-testid","disabled"])])):s.createCommentVNode("",!0),B.value?(s.openBlock(),s.createElementBlock("div",{key:2,class:"header-description","data-testid":`tile-description-${n.tileId}`},s.toDisplayString(B.value),9,Co)):s.createCommentVNode("",!0),x.value?(s.openBlock(),s.createElementBlock("div",{key:3,class:"tile-actions","data-testid":`tile-actions-${n.tileId}`},[x.value&&n.context.editable&&!n.isFullscreen?(s.openBlock(),s.createBlock(s.unref(xe.EditIcon),{key:0,class:"edit-icon",color:`var(--kui-color-text-neutral, ${s.unref(Ct)})`,"data-testid":`edit-tile-${n.tileId}`,size:`var(--kui-icon-size-40, ${s.unref(_i)})`,onClick:we},null,8,["color","data-testid","size"])):s.createCommentVNode("",!0),x.value&&T.value&&!n.isFullscreen?(s.openBlock(),s.createBlock(Pt,{key:1,class:"dropdown","data-testid":`chart-action-menu-${n.tileId}`,"kpop-attributes":{placement:"bottom-end"}},{items:s.withCtx(()=>[s.unref(m)?(s.openBlock(),s.createBlock(We,{key:0,"data-testid":`chart-jump-to-explore-${n.tileId}`,item:{label:s.unref(g).t("jumpToExplore"),to:s.unref(m)}},null,8,["data-testid","item"])):s.createCommentVNode("",!0),!s.unref(De)(n.definition)&&s.unref(_)?(s.openBlock(),s.createBlock(We,{key:1,"data-testid":`chart-jump-to-requests-${n.tileId}`,item:{label:s.unref(g).t("jumpToRequests"),to:s.unref(_)}},null,8,["data-testid","item"])):s.createCommentVNode("",!0),p.value?(s.openBlock(),s.createBlock(We,{key:2,class:"chart-export-button","data-testid":`chart-csv-export-${n.tileId}`,onClick:pt},{default:s.withCtx(()=>[s.createElementVNode("span",{class:"chart-export-trigger","data-testid":`csv-export-button-${n.tileId}`},s.toDisplayString(s.unref(g).t("csvExport.exportAsCsv")),9,Ro)]),_:1},8,["data-testid"])):s.createCommentVNode("",!0),n.context.editable?(s.openBlock(),s.createBlock(We,{key:3,"data-testid":`duplicate-tile-${n.tileId}`,onClick:Fe},{default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(g).t("renderer.duplicateTile")),1)]),_:1},8,["data-testid"])):s.createCommentVNode("",!0),n.context.editable?(s.openBlock(),s.createBlock(We,{key:4,"data-testid":`remove-tile-${n.tileId}`,onClick:ue},{default:s.withCtx(()=>[s.createElementVNode("span",To,s.toDisplayString(s.unref(g).t("renderer.delete")),1)]),_:1},8,["data-testid"])):s.createCommentVNode("",!0)]),default:s.withCtx(()=>[s.createVNode(s.unref(xe.MoreIcon),{class:"kebab-action-menu",color:`var(--kui-color-text-neutral, ${s.unref(Ct)})`,"data-testid":`kebab-action-menu-${n.tileId}`,size:`var(--kui-icon-size-40, ${s.unref(_i)})`},null,8,["color","data-testid","size"])]),_:1},8,["data-testid"])):s.createCommentVNode("",!0)],8,ko)):s.createCommentVNode("",!0),b.value?(s.openBlock(),s.createBlock(Hi,{key:4,"data-testid":`csv-export-modal-${n.tileId}`,"export-state":E.value,filename:v.value,onCloseModal:Se},null,8,["data-testid","export-state","filename"])):s.createCommentVNode("",!0)])):s.createCommentVNode("",!0),s.createElementVNode("div",{class:s.normalizeClass(["tile-content",`type-${n.tileType}-${S.value.type}`]),"data-testid":`tile-content-${n.tileId}`},[ce.value?(s.openBlock(),s.createBlock(s.resolveDynamicComponent(ce.value.component),s.mergeProps({key:0},ce.value.rendererProps,s.toHandlers(re.value),{onChartData:be,onQueryComplete:le}),null,16)):s.createCommentVNode("",!0)],10,So)],10,yo)}}}),[["__scopeId","data-v-8be47824"]]),Do=(n,e)=>{let t=0;const i=new Map;e.forEach(o=>{const a=o.layout.position.row,l=i.get(a),d=o.layout.size.rows===1&&!!o.layout.size.fit_to_content;t=Math.max(t,a+o.layout.size.rows),l===void 0?i.set(a,d):i.set(a,l&&d)});const r=[];for(let o=0;o<t;o++)i.get(o)?r.push("auto"):r.push(`${n}px`);return r},nn=Re(s.defineComponent({__name:"GridLayout",props:{tileHeight:{type:Number,required:!1,default:()=>je},columns:{type:Number,required:!1,default:()=>lt},tiles:{type:Array,required:!0}},setup(n){s.useCssVars(l=>({e54d6296:e.columns,v524bdfba:o.value}));const e=n,t=s.ref(null),i=s.ref(0),r=new ResizeObserver(l=>{window.requestAnimationFrame(()=>{!Array.isArray(l)||!l.length||(i.value=l[0].contentRect.width)})});s.onMounted(()=>{t.value&&r.observe(t.value)}),s.onUnmounted(()=>{t.value&&r.unobserve(t.value)});const o=s.computed(()=>Do(e.tileHeight,e.tiles).join(" ")),a=s.computed(()=>e.tiles.map((l,d)=>({key:`tile-${d}`,tile:l,style:{"grid-column-start":l.layout.position.col+1,"grid-column-end":l.layout.position.col+1+l.layout.size.cols,"grid-row-start":l.layout.position.row+1,"grid-row-end":l.layout.position.row+1+l.layout.size.rows}})));return(l,d)=>(s.openBlock(),s.createElementBlock("div",{ref_key:"gridContainer",ref:t,class:"kong-ui-public-grid-layout"},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(a.value,c=>(s.openBlock(),s.createElementBlock("div",{key:c.key,class:s.normalizeClass(["grid-cell",{"empty-cell":!c.tile}]),style:s.normalizeStyle(c.style)},[s.renderSlot(l.$slots,"tile",{style:s.normalizeStyle(c.style),tile:c.tile},void 0,!0)],6))),128))],512))}}),[["__scopeId","data-v-374ba32b"]]);function Oo(n,e,t,i,r){const o=(...a)=>(console.warn("gridstack.js: Function `"+t+"` is deprecated in "+r+" and has been replaced with `"+i+"`. It will be **removed** in a future release"),e.apply(n,a));return o.prototype=e.prototype,o}class y{static getElements(e,t=document){if(typeof e=="string"){const i="getElementById"in t?t:void 0;if(i&&!isNaN(+e[0])){const o=i.getElementById(e);return o?[o]:[]}let r=t.querySelectorAll(e);return!r.length&&e[0]!=="."&&e[0]!=="#"&&(r=t.querySelectorAll("."+e),r.length||(r=t.querySelectorAll("#"+e))),Array.from(r)}return[e]}static getElement(e,t=document){if(typeof e=="string"){const i="getElementById"in t?t:void 0;if(!e.length)return null;if(i&&e[0]==="#")return i.getElementById(e.substring(1));if(e[0]==="#"||e[0]==="."||e[0]==="[")return t.querySelector(e);if(i&&!isNaN(+e[0]))return i.getElementById(e);let r=t.querySelector(e);return i&&!r&&(r=i.getElementById(e)),r||(r=t.querySelector("."+e)),r}return e}static lazyLoad(e){return e.lazyLoad||e.grid?.opts?.lazyLoad&&e.lazyLoad!==!1}static createDiv(e,t){const i=document.createElement("div");return e.forEach(r=>{r&&i.classList.add(r)}),t?.appendChild(i),i}static shouldSizeToContent(e,t=!1){return e?.grid&&(t?e.sizeToContent===!0||e.grid.opts.sizeToContent===!0&&e.sizeToContent===void 0:!!e.sizeToContent||e.grid.opts.sizeToContent&&e.sizeToContent!==!1)}static isIntercepted(e,t){return!(e.y>=t.y+t.h||e.y+e.h<=t.y||e.x+e.w<=t.x||e.x>=t.x+t.w)}static isTouching(e,t){return y.isIntercepted(e,{x:t.x-.5,y:t.y-.5,w:t.w+1,h:t.h+1})}static areaIntercept(e,t){const i=e.x>t.x?e.x:t.x,r=e.x+e.w<t.x+t.w?e.x+e.w:t.x+t.w;if(r<=i)return 0;const o=e.y>t.y?e.y:t.y,a=e.y+e.h<t.y+t.h?e.y+e.h:t.y+t.h;return a<=o?0:(r-i)*(a-o)}static area(e){return e.w*e.h}static sort(e,t=1){return e.sort((r,o)=>{const a=t*((r.y??1e4)-(o.y??1e4));return a===0?t*((r.x??1e4)-(o.x??1e4)):a})}static find(e,t){return t?e.find(i=>i.id===t):void 0}static createStylesheet(e,t,i){const r=document.createElement("style"),o=i?.nonce;return o&&(r.nonce=o),r.setAttribute("type","text/css"),r.setAttribute("gs-style-id",e),r.styleSheet?r.styleSheet.cssText="":r.appendChild(document.createTextNode("")),t?t.insertBefore(r,t.firstChild):(t=document.getElementsByTagName("head")[0],t.appendChild(r)),r}static removeStylesheet(e,t){const r=(t||document).querySelector("STYLE[gs-style-id="+e+"]");r&&r.parentNode&&r.remove()}static addCSSRule(e,t,i){e.textContent+=`${t} { ${i} } `}static toBool(e){return typeof e=="boolean"?e:typeof e=="string"?(e=e.toLowerCase(),!(e===""||e==="no"||e==="false"||e==="0")):!!e}static toNumber(e){return e===null||e.length===0?void 0:Number(e)}static parseHeight(e){let t,i="px";if(typeof e=="string")if(e==="auto"||e==="")t=0;else{const r=e.match(/^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%|cm|mm)?$/);if(!r)throw new Error(`Invalid height val = ${e}`);i=r[2]||"px",t=parseFloat(r[1])}else t=e;return{h:t,unit:i}}static defaults(e,...t){return t.forEach(i=>{for(const r in i){if(!i.hasOwnProperty(r))return;e[r]===null||e[r]===void 0?e[r]=i[r]:typeof i[r]=="object"&&typeof e[r]=="object"&&this.defaults(e[r],i[r])}}),e}static same(e,t){if(typeof e!="object")return e==t;if(typeof e!=typeof t||Object.keys(e).length!==Object.keys(t).length)return!1;for(const i in e)if(e[i]!==t[i])return!1;return!0}static copyPos(e,t,i=!1){return t.x!==void 0&&(e.x=t.x),t.y!==void 0&&(e.y=t.y),t.w!==void 0&&(e.w=t.w),t.h!==void 0&&(e.h=t.h),i&&(t.minW&&(e.minW=t.minW),t.minH&&(e.minH=t.minH),t.maxW&&(e.maxW=t.maxW),t.maxH&&(e.maxH=t.maxH)),e}static samePos(e,t){return e&&t&&e.x===t.x&&e.y===t.y&&(e.w||1)===(t.w||1)&&(e.h||1)===(t.h||1)}static sanitizeMinMax(e){e.minW||delete e.minW,e.minH||delete e.minH,e.maxW||delete e.maxW,e.maxH||delete e.maxH}static removeInternalAndSame(e,t){if(!(typeof e!="object"||typeof t!="object"))for(let i in e){const r=e[i],o=t[i];i[0]==="_"||r===o?delete e[i]:r&&typeof r=="object"&&o!==void 0&&(y.removeInternalAndSame(r,o),Object.keys(r).length||delete e[i])}}static removeInternalForSave(e,t=!0){for(let i in e)(i[0]==="_"||e[i]===null||e[i]===void 0)&&delete e[i];delete e.grid,t&&delete e.el,e.autoPosition||delete e.autoPosition,e.noResize||delete e.noResize,e.noMove||delete e.noMove,e.locked||delete e.locked,(e.w===1||e.w===e.minW)&&delete e.w,(e.h===1||e.h===e.minH)&&delete e.h}static throttle(e,t){let i=!1;return(...r)=>{i||(i=!0,setTimeout(()=>{e(...r),i=!1},t))}}static removePositioningStyles(e){const t=e.style;t.position&&t.removeProperty("position"),t.left&&t.removeProperty("left"),t.top&&t.removeProperty("top"),t.width&&t.removeProperty("width"),t.height&&t.removeProperty("height")}static getScrollElement(e){if(!e)return document.scrollingElement||document.documentElement;const t=getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowY)?e:this.getScrollElement(e.parentElement)}static updateScrollPosition(e,t,i){const r=e.getBoundingClientRect(),o=window.innerHeight||document.documentElement.clientHeight;if(r.top<0||r.bottom>o){const a=r.bottom-o,l=r.top,d=this.getScrollElement(e);if(d!==null){const c=d.scrollTop;r.top<0&&i<0?e.offsetHeight>o?d.scrollTop+=i:d.scrollTop+=Math.abs(l)>Math.abs(i)?i:l:i>0&&(e.offsetHeight>o?d.scrollTop+=i:d.scrollTop+=a>i?i:a),t.top+=d.scrollTop-c}}}static updateScrollResize(e,t,i){const r=this.getScrollElement(t),o=r.clientHeight,a=r===this.getScrollElement()?0:r.getBoundingClientRect().top,l=e.clientY-a,d=l<i,c=l>o-i;d?r.scrollBy({behavior:"smooth",top:l-i}):c&&r.scrollBy({behavior:"smooth",top:i-(o-l)})}static clone(e){return e==null||typeof e!="object"?e:e instanceof Array?[...e]:{...e}}static cloneDeep(e){const t=["parentGrid","el","grid","subGrid","engine"],i=y.clone(e);for(const r in i)i.hasOwnProperty(r)&&typeof i[r]=="object"&&r.substring(0,2)!=="__"&&!t.find(o=>o===r)&&(i[r]=y.cloneDeep(e[r]));return i}static cloneNode(e){const t=e.cloneNode(!0);return t.removeAttribute("id"),t}static appendTo(e,t){let i;typeof t=="string"?i=y.getElement(t):i=t,i&&i.appendChild(e)}static addElStyles(e,t){if(t instanceof Object)for(const i in t)t.hasOwnProperty(i)&&(Array.isArray(t[i])?t[i].forEach(r=>{e.style[i]=r}):e.style[i]=t[i])}static initEvent(e,t){const i={type:t.type},r={button:0,which:0,buttons:1,bubbles:!0,cancelable:!0,target:t.target?t.target:e.target};return["altKey","ctrlKey","metaKey","shiftKey"].forEach(o=>i[o]=e[o]),["pageX","pageY","clientX","clientY","screenX","screenY"].forEach(o=>i[o]=e[o]),{...i,...r}}static simulateMouseEvent(e,t,i){const r=e,o=new MouseEvent(t,{bubbles:!0,composed:!0,cancelable:!0,view:window,detail:1,screenX:e.screenX,screenY:e.screenY,clientX:e.clientX,clientY:e.clientY,ctrlKey:r.ctrlKey??!1,altKey:r.altKey??!1,shiftKey:r.shiftKey??!1,metaKey:r.metaKey??!1,button:0,relatedTarget:e.target});(i||e.target).dispatchEvent(o)}static getValuesFromTransformedElement(e){const t=document.createElement("div");y.addElStyles(t,{opacity:"0",position:"fixed",top:"0px",left:"0px",width:"1px",height:"1px",zIndex:"-999999"}),e.appendChild(t);const i=t.getBoundingClientRect();return e.removeChild(t),t.remove(),{xScale:1/i.width,yScale:1/i.height,xOffset:i.left,yOffset:i.top}}static swap(e,t,i){if(!e)return;const r=e[t];e[t]=e[i],e[i]=r}static canBeRotated(e){return!(!e||e.w===e.h||e.locked||e.noResize||e.grid?.opts.disableResize||e.minW&&e.minW===e.maxW||e.minH&&e.minH===e.maxH)}}class Oe{constructor(e={}){this.addedNodes=[],this.removedNodes=[],this.defaultColumn=12,this.column=e.column||this.defaultColumn,this.column>this.defaultColumn&&(this.defaultColumn=this.column),this.maxRow=e.maxRow,this._float=e.float,this.nodes=e.nodes||[],this.onChange=e.onChange}batchUpdate(e=!0,t=!0){return!!this.batchMode===e?this:(this.batchMode=e,e?(this._prevFloat=this._float,this._float=!0,this.cleanNodes(),this.saveInitial()):(this._float=this._prevFloat,delete this._prevFloat,t&&this._packNodes(),this._notify()),this)}_useEntireRowArea(e,t){return(!this.float||this.batchMode&&!this._prevFloat)&&!this._hasLocked&&(!e._moving||e._skipDown||t.y<=e.y)}_fixCollisions(e,t=e,i,r={}){if(this.sortNodes(-1),i=i||this.collide(e,t),!i)return!1;if(e._moving&&!r.nested&&!this.float&&this.swap(e,i))return!0;let o=t;!this._loading&&this._useEntireRowArea(e,t)&&(o={x:0,w:this.column,y:t.y,h:t.h},i=this.collide(e,o,r.skip));let a=!1;const l={nested:!0,pack:!1};let d=0;for(;i=i||this.collide(e,o,r.skip);){if(d++>this.nodes.length*2)throw new Error("Infinite collide check");let c;if(i.locked||this._loading||e._moving&&!e._skipDown&&t.y>e.y&&!this.float&&(!this.collide(i,{...i,y:e.y},e)||!this.collide(i,{...i,y:t.y-i.h},e))){e._skipDown=e._skipDown||t.y>e.y;const u={...t,y:i.y+i.h,...l};c=this._loading&&y.samePos(e,u)?!0:this.moveNode(e,u),(i.locked||this._loading)&&c?y.copyPos(t,e):!i.locked&&c&&r.pack&&(this._packNodes(),t.y=i.y+i.h,y.copyPos(e,t)),a=a||c}else c=this.moveNode(i,{...i,y:t.y+t.h,skip:e,...l});if(!c)return a;i=void 0}return a}collide(e,t=e,i){const r=e._id,o=i?._id;return this.nodes.find(a=>a._id!==r&&a._id!==o&&y.isIntercepted(a,t))}collideAll(e,t=e,i){const r=e._id,o=i?._id;return this.nodes.filter(a=>a._id!==r&&a._id!==o&&y.isIntercepted(a,t))}directionCollideCoverage(e,t,i){if(!t.rect||!e._rect)return;const r=e._rect,o={...t.rect};o.y>r.y?(o.h+=o.y-r.y,o.y=r.y):o.h+=r.y-o.y,o.x>r.x?(o.w+=o.x-r.x,o.x=r.x):o.w+=r.x-o.x;let a,l=.5;for(let d of i){if(d.locked||!d._rect)break;const c=d._rect;let u=Number.MAX_VALUE,h=Number.MAX_VALUE;r.y<c.y?u=(o.y+o.h-c.y)/c.h:r.y+r.h>c.y+c.h&&(u=(c.y+c.h-o.y)/c.h),r.x<c.x?h=(o.x+o.w-c.x)/c.w:r.x+r.w>c.x+c.w&&(h=(c.x+c.w-o.x)/c.w);const f=Math.min(h,u);f>l&&(l=f,a=d)}return t.collide=a,a}cacheRects(e,t,i,r,o,a){return this.nodes.forEach(l=>l._rect={y:l.y*t+i,x:l.x*e+a,w:l.w*e-a-r,h:l.h*t-i-o}),this}swap(e,t){if(!t||t.locked||!e||e.locked)return!1;function i(){const o=t.x,a=t.y;return t.x=e.x,t.y=e.y,e.h!=t.h?(e.x=o,e.y=t.y+t.h):e.w!=t.w?(e.x=t.x+t.w,e.y=a):(e.x=o,e.y=a),e._dirty=t._dirty=!0,!0}let r;if(e.w===t.w&&e.h===t.h&&(e.x===t.x||e.y===t.y)&&(r=y.isTouching(e,t)))return i();if(r!==!1){if(e.w===t.w&&e.x===t.x&&(r||(r=y.isTouching(e,t)))){if(t.y<e.y){const o=e;e=t,t=o}return i()}if(r!==!1){if(e.h===t.h&&e.y===t.y&&(r||(r=y.isTouching(e,t)))){if(t.x<e.x){const o=e;e=t,t=o}return i()}return!1}}}isAreaEmpty(e,t,i,r){const o={x:e||0,y:t||0,w:i||1,h:r||1};return!this.collide(o)}compact(e="compact",t=!0){if(this.nodes.length===0)return this;t&&this.sortNodes();const i=this.batchMode;i||this.batchUpdate();const r=this._inColumnResize;r||(this._inColumnResize=!0);const o=this.nodes;return this.nodes=[],o.forEach((a,l,d)=>{let c;a.locked||(a.autoPosition=!0,e==="list"&&l&&(c=d[l-1])),this.addNode(a,!1,c)}),r||delete this._inColumnResize,i||this.batchUpdate(!1),this}set float(e){this._float!==e&&(this._float=e||!1,e||this._packNodes()._notify())}get float(){return this._float||!1}sortNodes(e=1){return this.nodes=y.sort(this.nodes,e),this}_packNodes(){return this.batchMode?this:(this.sortNodes(),this.float?this.nodes.forEach(e=>{if(e._updating||e._orig===void 0||e.y===e._orig.y)return;let t=e.y;for(;t>e._orig.y;)--t,this.collide(e,{x:e.x,y:t,w:e.w,h:e.h})||(e._dirty=!0,e.y=t)}):this.nodes.forEach((e,t)=>{if(!e.locked)for(;e.y>0;){const i=t===0?0:e.y-1;if(!(t===0||!this.collide(e,{x:e.x,y:i,w:e.w,h:e.h})))break;e._dirty=e.y!==i,e.y=i}}),this)}prepareNode(e,t){e._id=e._id??Oe._idSeq++;const i=e.id;if(i){let o=1;for(;this.nodes.find(a=>a.id===e.id&&a!==e);)e.id=i+"_"+o++}(e.x===void 0||e.y===void 0||e.x===null||e.y===null)&&(e.autoPosition=!0);const r={x:0,y:0,w:1,h:1};return y.defaults(e,r),e.autoPosition||delete e.autoPosition,e.noResize||delete e.noResize,e.noMove||delete e.noMove,y.sanitizeMinMax(e),typeof e.x=="string"&&(e.x=Number(e.x)),typeof e.y=="string"&&(e.y=Number(e.y)),typeof e.w=="string"&&(e.w=Number(e.w)),typeof e.h=="string"&&(e.h=Number(e.h)),isNaN(e.x)&&(e.x=r.x,e.autoPosition=!0),isNaN(e.y)&&(e.y=r.y,e.autoPosition=!0),isNaN(e.w)&&(e.w=r.w),isNaN(e.h)&&(e.h=r.h),this.nodeBoundFix(e,t),e}nodeBoundFix(e,t){const i=e._orig||y.copyPos({},e);if(e.maxW&&(e.w=Math.min(e.w||1,e.maxW)),e.maxH&&(e.h=Math.min(e.h||1,e.maxH)),e.minW&&(e.w=Math.max(e.w||1,e.minW)),e.minH&&(e.h=Math.max(e.h||1,e.minH)),(e.x||0)+(e.w||1)>this.column&&this.column<this.defaultColumn&&!this._inColumnResize&&!this.skipCacheUpdate&&e._id&&this.findCacheLayout(e,this.defaultColumn)===-1){const o={...e};o.autoPosition||o.x===void 0?(delete o.x,delete o.y):o.x=Math.min(this.defaultColumn-1,o.x),o.w=Math.min(this.defaultColumn,o.w||1),this.cacheOneLayout(o,this.defaultColumn)}return e.w>this.column?e.w=this.column:e.w<1&&(e.w=1),this.maxRow&&e.h>this.maxRow?e.h=this.maxRow:e.h<1&&(e.h=1),e.x<0&&(e.x=0),e.y<0&&(e.y=0),e.x+e.w>this.column&&(t?e.w=this.column-e.x:e.x=this.column-e.w),this.maxRow&&e.y+e.h>this.maxRow&&(t?e.h=this.maxRow-e.y:e.y=this.maxRow-e.h),y.samePos(e,i)||(e._dirty=!0),this}getDirtyNodes(e){return e?this.nodes.filter(t=>t._dirty&&!y.samePos(t,t._orig)):this.nodes.filter(t=>t._dirty)}_notify(e){if(this.batchMode||!this.onChange)return this;const t=(e||[]).concat(this.getDirtyNodes());return this.onChange(t),this}cleanNodes(){return this.batchMode?this:(this.nodes.forEach(e=>{delete e._dirty,delete e._lastTried}),this)}saveInitial(){return this.nodes.forEach(e=>{e._orig=y.copyPos({},e),delete e._dirty}),this._hasLocked=this.nodes.some(e=>e.locked),this}restoreInitial(){return this.nodes.forEach(e=>{!e._orig||y.samePos(e,e._orig)||(y.copyPos(e,e._orig),e._dirty=!0)}),this._notify(),this}findEmptyPosition(e,t=this.nodes,i=this.column,r){const o=r?r.y*i+(r.x+r.w):0;let a=!1;for(let l=o;!a;++l){const d=l%i,c=Math.floor(l/i);if(d+e.w>i)continue;const u={x:d,y:c,w:e.w,h:e.h};t.find(h=>y.isIntercepted(u,h))||((e.x!==d||e.y!==c)&&(e._dirty=!0),e.x=d,e.y=c,delete e.autoPosition,a=!0)}return a}addNode(e,t=!1,i){const r=this.nodes.find(a=>a._id===e._id);if(r)return r;this._inColumnResize?this.nodeBoundFix(e):this.prepareNode(e),delete e._temporaryRemoved,delete e._removeDOM;let o;return e.autoPosition&&this.findEmptyPosition(e,this.nodes,this.column,i)&&(delete e.autoPosition,o=!0),this.nodes.push(e),t&&this.addedNodes.push(e),o||this._fixCollisions(e),this.batchMode||this._packNodes()._notify(),e}removeNode(e,t=!0,i=!1){return this.nodes.find(r=>r._id===e._id)?(i&&this.removedNodes.push(e),t&&(e._removeDOM=!0),this.nodes=this.nodes.filter(r=>r._id!==e._id),e._isAboutToRemove||this._packNodes(),this._notify([e]),this):this}removeAll(e=!0,t=!0){if(delete this._layouts,!this.nodes.length)return this;e&&this.nodes.forEach(r=>r._removeDOM=!0);const i=this.nodes;return this.removedNodes=t?i:[],this.nodes=[],this._notify(i)}moveNodeCheck(e,t){if(!this.changedPosConstrain(e,t))return!1;if(t.pack=!0,!this.maxRow)return this.moveNode(e,t);let i;const r=new Oe({column:this.column,float:this.float,nodes:this.nodes.map(a=>a._id===e._id?(i={...a},i):{...a})});if(!i)return!1;const o=r.moveNode(i,t)&&r.getRow()<=Math.max(this.getRow(),this.maxRow);if(!o&&!t.resizing&&t.collide){const a=t.collide.el.gridstackNode;if(this.swap(e,a))return this._notify(),!0}return o?(r.nodes.filter(a=>a._dirty).forEach(a=>{const l=this.nodes.find(d=>d._id===a._id);l&&(y.copyPos(l,a),l._dirty=!0)}),this._notify(),!0):!1}willItFit(e){if(delete e._willFitPos,!this.maxRow)return!0;const t=new Oe({column:this.column,float:this.float,nodes:this.nodes.map(r=>({...r}))}),i={...e};return this.cleanupNode(i),delete i.el,delete i._id,delete i.content,delete i.grid,t.addNode(i),t.getRow()<=this.maxRow?(e._willFitPos=y.copyPos({},i),!0):!1}changedPosConstrain(e,t){return t.w=t.w||e.w,t.h=t.h||e.h,e.x!==t.x||e.y!==t.y?!0:(e.maxW&&(t.w=Math.min(t.w,e.maxW)),e.maxH&&(t.h=Math.min(t.h,e.maxH)),e.minW&&(t.w=Math.max(t.w,e.minW)),e.minH&&(t.h=Math.max(t.h,e.minH)),e.w!==t.w||e.h!==t.h)}moveNode(e,t){if(!e||!t)return!1;let i;t.pack===void 0&&!this.batchMode&&(i=t.pack=!0),typeof t.x!="number"&&(t.x=e.x),typeof t.y!="number"&&(t.y=e.y),typeof t.w!="number"&&(t.w=e.w),typeof t.h!="number"&&(t.h=e.h);const r=e.w!==t.w||e.h!==t.h,o=y.copyPos({},e,!0);if(y.copyPos(o,t),this.nodeBoundFix(o,r),y.copyPos(t,o),!t.forceCollide&&y.samePos(e,t))return!1;const a=y.copyPos({},e),l=this.collideAll(e,o,t.skip);let d=!0;if(l.length){const c=e._moving&&!t.nested;let u=c?this.directionCollideCoverage(e,t,l):l[0];if(c&&u&&e.grid?.opts?.subGridDynamic&&!e.grid._isTemp){const h=y.areaIntercept(t.rect,u._rect),f=y.area(t.rect),g=y.area(u._rect);h/(f<g?f:g)>.8&&(u.grid.makeSubGrid(u.el,void 0,e),u=void 0)}u?d=!this._fixCollisions(e,o,u,t):(d=!1,i&&delete t.pack)}return d&&!y.samePos(e,o)&&(e._dirty=!0,y.copyPos(e,o)),t.pack&&this._packNodes()._notify(),!y.samePos(e,a)}getRow(){return this.nodes.reduce((e,t)=>Math.max(e,t.y+t.h),0)}beginUpdate(e){return e._updating||(e._updating=!0,delete e._skipDown,this.batchMode||this.saveInitial()),this}endUpdate(){const e=this.nodes.find(t=>t._updating);return e&&(delete e._updating,delete e._skipDown),this}save(e=!0,t){const i=this._layouts?.length,r=i&&this.column!==i-1?this._layouts[i-1]:null,o=[];return this.sortNodes(),this.nodes.forEach(a=>{const l=r?.find(c=>c._id===a._id),d={...a,...l||{}};y.removeInternalForSave(d,!e),t&&t(a,d),o.push(d)}),o}layoutsNodesChange(e){return!this._layouts||this._inColumnResize?this:(this._layouts.forEach((t,i)=>{if(!t||i===this.column)return this;if(i<this.column)this._layouts[i]=void 0;else{const r=i/this.column;e.forEach(o=>{if(!o._orig)return;const a=t.find(l=>l._id===o._id);a&&(a.y>=0&&o.y!==o._orig.y&&(a.y+=o.y-o._orig.y),o.x!==o._orig.x&&(a.x=Math.round(o.x*r)),o.w!==o._orig.w&&(a.w=Math.round(o.w*r)))})}}),this)}columnChanged(e,t,i="moveScale"){if(!this.nodes.length||!t||e===t)return this;const r=i==="compact"||i==="list";r&&this.sortNodes(1),t<e&&this.cacheLayout(this.nodes,e),this.batchUpdate();let o=[],a=r?this.nodes:y.sort(this.nodes,-1);if(t>e&&this._layouts){const l=this._layouts[t]||[],d=this._layouts.length-1;!l.length&&e!==d&&this._layouts[d]?.length&&(e=d,this._layouts[d].forEach(c=>{const u=a.find(h=>h._id===c._id);u&&(!r&&!c.autoPosition&&(u.x=c.x??u.x,u.y=c.y??u.y),u.w=c.w??u.w,(c.x==null||c.y===void 0)&&(u.autoPosition=!0))})),l.forEach(c=>{const u=a.findIndex(h=>h._id===c._id);if(u!==-1){const h=a[u];if(r){h.w=c.w;return}(c.autoPosition||isNaN(c.x)||isNaN(c.y))&&this.findEmptyPosition(c,o),c.autoPosition||(h.x=c.x??h.x,h.y=c.y??h.y,h.w=c.w??h.w,o.push(h)),a.splice(u,1)}})}if(r)this.compact(i,!1);else{if(a.length)if(typeof i=="function")i(t,e,o,a);else{const l=r||i==="none"?1:t/e,d=i==="move"||i==="moveScale",c=i==="scale"||i==="moveScale";a.forEach(u=>{u.x=t===1?0:d?Math.round(u.x*l):Math.min(u.x,t-1),u.w=t===1||e===1?1:c?Math.round(u.w*l)||1:Math.min(u.w,t),o.push(u)}),a=[]}o=y.sort(o,-1),this._inColumnResize=!0,this.nodes=[],o.forEach(l=>{this.addNode(l,!1),delete l._orig})}return this.nodes.forEach(l=>delete l._orig),this.batchUpdate(!1,!r),delete this._inColumnResize,this}cacheLayout(e,t,i=!1){const r=[];return e.forEach((o,a)=>{if(o._id===void 0){const l=o.id?this.nodes.find(d=>d.id===o.id):void 0;o._id=l?._id??Oe._idSeq++}r[a]={x:o.x,y:o.y,w:o.w,_id:o._id}}),this._layouts=i?[]:this._layouts||[],this._layouts[t]=r,this}cacheOneLayout(e,t){e._id=e._id??Oe._idSeq++;const i={x:e.x,y:e.y,w:e.w,_id:e._id};(e.autoPosition||e.x===void 0)&&(delete i.x,delete i.y,e.autoPosition&&(i.autoPosition=!0)),this._layouts=this._layouts||[],this._layouts[t]=this._layouts[t]||[];const r=this.findCacheLayout(e,t);return r===-1?this._layouts[t].push(i):this._layouts[t][r]=i,this}findCacheLayout(e,t){return this._layouts?.[t]?.findIndex(i=>i._id===e._id)??-1}removeNodeFromLayoutCache(e){if(this._layouts)for(let t=0;t<this._layouts.length;t++){const i=this.findCacheLayout(e,t);i!==-1&&this._layouts[t].splice(i,1)}}cleanupNode(e){for(const t in e)t[0]==="_"&&t!=="_id"&&delete e[t];return this}}Oe._idSeq=0;const ye={alwaysShowResizeHandle:"mobile",animate:!0,auto:!0,cellHeight:"auto",cellHeightThrottle:100,cellHeightUnit:"px",column:12,draggable:{handle:".grid-stack-item-content",appendTo:"body",scroll:!0},handle:".grid-stack-item-content",itemClass:"grid-stack-item",margin:10,marginUnit:"px",maxRow:0,minRow:0,placeholderClass:"grid-stack-placeholder",placeholderText:"",removableOptions:{accept:"grid-stack-item",decline:"grid-stack-non-removable"},resizable:{handles:"se"},rtl:"auto"};class I{}const Te=typeof window<"u"&&typeof document<"u"&&("ontouchstart"in document||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0);class Ne{}function ct(n,e){n.touches.length>1||(n.cancelable&&n.preventDefault(),y.simulateMouseEvent(n.changedTouches[0],e))}function rn(n,e){n.cancelable&&n.preventDefault(),y.simulateMouseEvent(n,e)}function ut(n){Ne.touchHandled||(Ne.touchHandled=!0,ct(n,"mousedown"))}function dt(n){Ne.touchHandled&&ct(n,"mousemove")}function ht(n){if(!Ne.touchHandled)return;Ne.pointerLeaveTimeout&&(window.clearTimeout(Ne.pointerLeaveTimeout),delete Ne.pointerLeaveTimeout);const e=!!I.dragElement;ct(n,"mouseup"),e||ct(n,"click"),Ne.touchHandled=!1}function ft(n){n.pointerType!=="mouse"&&n.target.releasePointerCapture(n.pointerId)}function sn(n){I.dragElement&&n.pointerType!=="mouse"&&rn(n,"mouseenter")}function on(n){I.dragElement&&n.pointerType!=="mouse"&&(Ne.pointerLeaveTimeout=window.setTimeout(()=>{delete Ne.pointerLeaveTimeout,rn(n,"mouseleave")},10))}class mt{constructor(e,t,i){this.host=e,this.dir=t,this.option=i,this.moving=!1,this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this._init()}_init(){const e=this.el=document.createElement("div");return e.classList.add("ui-resizable-handle"),e.classList.add(`${mt.prefix}${this.dir}`),e.style.zIndex="100",e.style.userSelect="none",this.host.appendChild(this.el),this.el.addEventListener("mousedown",this._mouseDown),Te&&(this.el.addEventListener("touchstart",ut),this.el.addEventListener("pointerdown",ft)),this}destroy(){return this.moving&&this._mouseUp(this.mouseDownEvent),this.el.removeEventListener("mousedown",this._mouseDown),Te&&(this.el.removeEventListener("touchstart",ut),this.el.removeEventListener("pointerdown",ft)),this.host.removeChild(this.el),delete this.el,delete this.host,this}_mouseDown(e){this.mouseDownEvent=e,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),Te&&(this.el.addEventListener("touchmove",dt),this.el.addEventListener("touchend",ht)),e.stopPropagation(),e.preventDefault()}_mouseMove(e){const t=this.mouseDownEvent;this.moving?this._triggerEvent("move",e):Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>2&&(this.moving=!0,this._triggerEvent("start",this.mouseDownEvent),this._triggerEvent("move",e),document.addEventListener("keydown",this._keyEvent)),e.stopPropagation()}_mouseUp(e){this.moving&&(this._triggerEvent("stop",e),document.removeEventListener("keydown",this._keyEvent)),document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),Te&&(this.el.removeEventListener("touchmove",dt),this.el.removeEventListener("touchend",ht)),delete this.moving,delete this.mouseDownEvent,e.stopPropagation(),e.preventDefault()}_keyEvent(e){e.key==="Escape"&&(this.host.gridstackNode?.grid?.engine.restoreInitial(),this._mouseUp(this.mouseDownEvent))}_triggerEvent(e,t){return this.option[e]&&this.option[e](t),this}}mt.prefix="ui-resizable-";class qt{constructor(){this._eventRegister={}}get disabled(){return this._disabled}on(e,t){this._eventRegister[e]=t}off(e){delete this._eventRegister[e]}enable(){this._disabled=!1}disable(){this._disabled=!0}destroy(){delete this._eventRegister}triggerEvent(e,t){if(!this.disabled&&this._eventRegister&&this._eventRegister[e])return this._eventRegister[e](t)}}class tt extends qt{constructor(e,t={}){super(),this.el=e,this.option=t,this.rectScale={x:1,y:1},this._ui=()=>{const r=this.el.parentElement.getBoundingClientRect(),o={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},a=this.temporalRect||o;return{position:{left:(a.left-r.left)*this.rectScale.x,top:(a.top-r.top)*this.rectScale.y},size:{width:a.width*this.rectScale.x,height:a.height*this.rectScale.y}}},this._mouseOver=this._mouseOver.bind(this),this._mouseOut=this._mouseOut.bind(this),this.enable(),this._setupAutoHide(this.option.autoHide),this._setupHandlers()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){super.enable(),this.el.classList.remove("ui-resizable-disabled"),this._setupAutoHide(this.option.autoHide)}disable(){super.disable(),this.el.classList.add("ui-resizable-disabled"),this._setupAutoHide(!1)}destroy(){this._removeHandlers(),this._setupAutoHide(!1),delete this.el,super.destroy()}updateOption(e){const t=e.handles&&e.handles!==this.option.handles,i=e.autoHide&&e.autoHide!==this.option.autoHide;return Object.keys(e).forEach(r=>this.option[r]=e[r]),t&&(this._removeHandlers(),this._setupHandlers()),i&&this._setupAutoHide(this.option.autoHide),this}_setupAutoHide(e){return e?(this.el.classList.add("ui-resizable-autohide"),this.el.addEventListener("mouseover",this._mouseOver),this.el.addEventListener("mouseout",this._mouseOut)):(this.el.classList.remove("ui-resizable-autohide"),this.el.removeEventListener("mouseover",this._mouseOver),this.el.removeEventListener("mouseout",this._mouseOut),I.overResizeElement===this&&delete I.overResizeElement),this}_mouseOver(e){I.overResizeElement||I.dragElement||(I.overResizeElement=this,this.el.classList.remove("ui-resizable-autohide"))}_mouseOut(e){I.overResizeElement===this&&(delete I.overResizeElement,this.el.classList.add("ui-resizable-autohide"))}_setupHandlers(){return this.handlers=this.option.handles.split(",").map(e=>e.trim()).map(e=>new mt(this.el,e,{start:t=>{this._resizeStart(t)},stop:t=>{this._resizeStop(t)},move:t=>{this._resizing(t,e)}})),this}_resizeStart(e){this.sizeToContent=y.shouldSizeToContent(this.el.gridstackNode,!0),this.originalRect=this.el.getBoundingClientRect(),this.scrollEl=y.getScrollElement(this.el),this.scrollY=this.scrollEl.scrollTop,this.scrolled=0,this.startEvent=e,this._setupHelper(),this._applyChange();const t=y.initEvent(e,{type:"resizestart",target:this.el});return this.option.start&&this.option.start(t,this._ui()),this.el.classList.add("ui-resizable-resizing"),this.triggerEvent("resizestart",t),this}_resizing(e,t){this.scrolled=this.scrollEl.scrollTop-this.scrollY,this.temporalRect=this._getChange(e,t),this._applyChange();const i=y.initEvent(e,{type:"resize",target:this.el});return this.option.resize&&this.option.resize(i,this._ui()),this.triggerEvent("resize",i),this}_resizeStop(e){const t=y.initEvent(e,{type:"resizestop",target:this.el});return this.option.stop&&this.option.stop(t),this.el.classList.remove("ui-resizable-resizing"),this.triggerEvent("resizestop",t),this._cleanHelper(),delete this.startEvent,delete this.originalRect,delete this.temporalRect,delete this.scrollY,delete this.scrolled,this}_setupHelper(){this.elOriginStyleVal=tt._originStyleProp.map(i=>this.el.style[i]),this.parentOriginStylePosition=this.el.parentElement.style.position;const e=this.el.parentElement,t=y.getValuesFromTransformedElement(e);return this.rectScale={x:t.xScale,y:t.yScale},getComputedStyle(this.el.parentElement).position.match(/static/)&&(this.el.parentElement.style.position="relative"),this.el.style.position="absolute",this.el.style.opacity="0.8",this}_cleanHelper(){return tt._originStyleProp.forEach((e,t)=>{this.el.style[e]=this.elOriginStyleVal[t]||null}),this.el.parentElement.style.position=this.parentOriginStylePosition||null,this}_getChange(e,t){const i=this.startEvent,r={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},o=e.clientX-i.clientX,a=this.sizeToContent?0:e.clientY-i.clientY;let l,d;t.indexOf("e")>-1?r.width+=o:t.indexOf("w")>-1&&(r.width-=o,r.left+=o,l=!0),t.indexOf("s")>-1?r.height+=a:t.indexOf("n")>-1&&(r.height-=a,r.top+=a,d=!0);const c=this._constrainSize(r.width,r.height,l,d);return Math.round(r.width)!==Math.round(c.width)&&(t.indexOf("w")>-1&&(r.left+=r.width-c.width),r.width=c.width),Math.round(r.height)!==Math.round(c.height)&&(t.indexOf("n")>-1&&(r.top+=r.height-c.height),r.height=c.height),r}_constrainSize(e,t,i,r){const o=this.option,a=(i?o.maxWidthMoveLeft:o.maxWidth)||Number.MAX_SAFE_INTEGER,l=o.minWidth/this.rectScale.x||e,d=(r?o.maxHeightMoveUp:o.maxHeight)||Number.MAX_SAFE_INTEGER,c=o.minHeight/this.rectScale.y||t,u=Math.min(a,Math.max(l,e)),h=Math.min(d,Math.max(c,t));return{width:u,height:h}}_applyChange(){let e={left:0,top:0,width:0,height:0};if(this.el.style.position==="absolute"){const t=this.el.parentElement,{left:i,top:r}=t.getBoundingClientRect();e={left:i,top:r,width:0,height:0}}return this.temporalRect?(Object.keys(this.temporalRect).forEach(t=>{const i=this.temporalRect[t],r=t==="width"||t==="left"?this.rectScale.x:t==="height"||t==="top"?this.rectScale.y:1;this.el.style[t]=(i-e[t])*r+"px"}),this):this}_removeHandlers(){return this.handlers.forEach(e=>e.destroy()),delete this.handlers,this}}tt._originStyleProp=["width","height","position","left","top","opacity","zIndex"];const No='input,textarea,button,select,option,[contenteditable="true"],.ui-resizable-handle';class it extends qt{constructor(e,t={}){super(),this.el=e,this.option=t,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0};const i=t?.handle?.substring(1),r=e.gridstackNode;this.dragEls=!i||e.classList.contains(i)?[e]:r?.subGrid?[e.querySelector(t.handle)||e]:Array.from(e.querySelectorAll(t.handle)),this.dragEls.length===0&&(this.dragEls=[e]),this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this.enable()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){this.disabled!==!1&&(super.enable(),this.dragEls.forEach(e=>{e.addEventListener("mousedown",this._mouseDown),Te&&(e.addEventListener("touchstart",ut),e.addEventListener("pointerdown",ft))}),this.el.classList.remove("ui-draggable-disabled"))}disable(e=!1){this.disabled!==!0&&(super.disable(),this.dragEls.forEach(t=>{t.removeEventListener("mousedown",this._mouseDown),Te&&(t.removeEventListener("touchstart",ut),t.removeEventListener("pointerdown",ft))}),e||this.el.classList.add("ui-draggable-disabled"))}destroy(){this.dragTimeout&&window.clearTimeout(this.dragTimeout),delete this.dragTimeout,this.mouseDownEvent&&this._mouseUp(this.mouseDownEvent),this.disable(!0),delete this.el,delete this.helper,delete this.option,super.destroy()}updateOption(e){return Object.keys(e).forEach(t=>this.option[t]=e[t]),this}_mouseDown(e){if(!I.mouseHandled)return e.button!==0||!this.dragEls.find(t=>t===e.target)&&e.target.closest(No)||this.option.cancel&&e.target.closest(this.option.cancel)||(this.mouseDownEvent=e,delete this.dragging,delete I.dragElement,delete I.dropElement,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),Te&&(e.currentTarget.addEventListener("touchmove",dt),e.currentTarget.addEventListener("touchend",ht)),e.preventDefault(),document.activeElement&&document.activeElement.blur(),I.mouseHandled=!0),!0}_callDrag(e){if(!this.dragging)return;const t=y.initEvent(e,{target:this.el,type:"drag"});this.option.drag&&this.option.drag(t,this.ui()),this.triggerEvent("drag",t)}_mouseMove(e){const t=this.mouseDownEvent;if(this.lastDrag=e,this.dragging)if(this._dragFollow(e),I.pauseDrag){const i=Number.isInteger(I.pauseDrag)?I.pauseDrag:100;this.dragTimeout&&window.clearTimeout(this.dragTimeout),this.dragTimeout=window.setTimeout(()=>this._callDrag(e),i)}else this._callDrag(e);else if(Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>3){this.dragging=!0,I.dragElement=this;const i=this.el.gridstackNode?.grid;i?I.dropElement=i.el.ddElement.ddDroppable:delete I.dropElement,this.helper=this._createHelper(),this._setupHelperContainmentStyle(),this.dragTransform=y.getValuesFromTransformedElement(this.helperContainment),this.dragOffset=this._getDragOffset(e,this.el,this.helperContainment),this._setupHelperStyle(e);const r=y.initEvent(e,{target:this.el,type:"dragstart"});this.option.start&&this.option.start(r,this.ui()),this.triggerEvent("dragstart",r),document.addEventListener("keydown",this._keyEvent)}return!0}_mouseUp(e){if(document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),Te&&e.currentTarget&&(e.currentTarget.removeEventListener("touchmove",dt,!0),e.currentTarget.removeEventListener("touchend",ht,!0)),this.dragging){delete this.dragging,delete this.el.gridstackNode?._origRotate,document.removeEventListener("keydown",this._keyEvent),I.dropElement?.el===this.el.parentElement&&delete I.dropElement,this.helperContainment.style.position=this.parentOriginStylePosition||null,this.helper!==this.el&&this.helper.remove(),this._removeHelperStyle();const t=y.initEvent(e,{target:this.el,type:"dragstop"});this.option.stop&&this.option.stop(t),this.triggerEvent("dragstop",t),I.dropElement&&I.dropElement.drop(e)}delete this.helper,delete this.mouseDownEvent,delete I.dragElement,delete I.dropElement,delete I.mouseHandled,e.preventDefault()}_keyEvent(e){const t=this.el.gridstackNode,i=t?.grid||I.dropElement?.el?.gridstack;if(e.key==="Escape")t&&t._origRotate&&(t._orig=t._origRotate,delete t._origRotate),i?.cancelDrag(),this._mouseUp(this.mouseDownEvent);else if(t&&i&&(e.key==="r"||e.key==="R")){if(!y.canBeRotated(t))return;t._origRotate=t._origRotate||{...t._orig},delete t._moving,i.setAnimation(!1).rotate(t.el,{top:-this.dragOffset.offsetTop,left:-this.dragOffset.offsetLeft}).setAnimation(),t._moving=!0,this.dragOffset=this._getDragOffset(this.lastDrag,t.el,this.helperContainment),this.helper.style.width=this.dragOffset.width+"px",this.helper.style.height=this.dragOffset.height+"px",y.swap(t._orig,"w","h"),delete t._rect,this._mouseMove(this.lastDrag)}}_createHelper(){let e=this.el;return typeof this.option.helper=="function"?e=this.option.helper(this.el):this.option.helper==="clone"&&(e=y.cloneNode(this.el)),e.parentElement||y.appendTo(e,this.option.appendTo==="parent"?this.el.parentElement:this.option.appendTo),this.dragElementOriginStyle=it.originStyleProp.map(t=>this.el.style[t]),e}_setupHelperStyle(e){this.helper.classList.add("ui-draggable-dragging");const t=this.helper.style;return t.pointerEvents="none",t.width=this.dragOffset.width+"px",t.height=this.dragOffset.height+"px",t.willChange="left, top",t.position="fixed",this._dragFollow(e),t.transition="none",setTimeout(()=>{this.helper&&(t.transition=null)},0),this}_removeHelperStyle(){if(this.helper.classList.remove("ui-draggable-dragging"),!this.helper?.gridstackNode?._isAboutToRemove&&this.dragElementOriginStyle){const t=this.helper,i=this.dragElementOriginStyle.transition||null;t.style.transition=this.dragElementOriginStyle.transition="none",it.originStyleProp.forEach(r=>t.style[r]=this.dragElementOriginStyle[r]||null),setTimeout(()=>t.style.transition=i,50)}return delete this.dragElementOriginStyle,this}_dragFollow(e){const t={left:0,top:0},i=this.helper.style,r=this.dragOffset;i.left=(e.clientX+r.offsetLeft-t.left)*this.dragTransform.xScale+"px",i.top=(e.clientY+r.offsetTop-t.top)*this.dragTransform.yScale+"px"}_setupHelperContainmentStyle(){return this.helperContainment=this.helper.parentElement,this.helper.style.position!=="fixed"&&(this.parentOriginStylePosition=this.helperContainment.style.position,getComputedStyle(this.helperContainment).position.match(/static/)&&(this.helperContainment.style.position="relative")),this}_getDragOffset(e,t,i){let r=0,o=0;i&&(r=this.dragTransform.xOffset,o=this.dragTransform.yOffset);const a=t.getBoundingClientRect();return{left:a.left,top:a.top,offsetLeft:-e.clientX+a.left-r,offsetTop:-e.clientY+a.top-o,width:a.width*this.dragTransform.xScale,height:a.height*this.dragTransform.yScale}}ui(){const t=this.el.parentElement.getBoundingClientRect(),i=this.helper.getBoundingClientRect();return{position:{top:(i.top-t.top)*this.dragTransform.yScale,left:(i.left-t.left)*this.dragTransform.xScale}}}}it.originStyleProp=["width","height","transform","transform-origin","transition","pointerEvents","position","left","top","minWidth","willChange"];class Mo extends qt{constructor(e,t={}){super(),this.el=e,this.option=t,this._mouseEnter=this._mouseEnter.bind(this),this._mouseLeave=this._mouseLeave.bind(this),this.enable(),this._setupAccept()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){this.disabled!==!1&&(super.enable(),this.el.classList.add("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),this.el.addEventListener("mouseenter",this._mouseEnter),this.el.addEventListener("mouseleave",this._mouseLeave),Te&&(this.el.addEventListener("pointerenter",sn),this.el.addEventListener("pointerleave",on)))}disable(e=!1){this.disabled!==!0&&(super.disable(),this.el.classList.remove("ui-droppable"),e||this.el.classList.add("ui-droppable-disabled"),this.el.removeEventListener("mouseenter",this._mouseEnter),this.el.removeEventListener("mouseleave",this._mouseLeave),Te&&(this.el.removeEventListener("pointerenter",sn),this.el.removeEventListener("pointerleave",on)))}destroy(){this.disable(!0),this.el.classList.remove("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),super.destroy()}updateOption(e){return Object.keys(e).forEach(t=>this.option[t]=e[t]),this._setupAccept(),this}_mouseEnter(e){if(!I.dragElement||!this._canDrop(I.dragElement.el))return;e.preventDefault(),e.stopPropagation(),I.dropElement&&I.dropElement!==this&&I.dropElement._mouseLeave(e,!0),I.dropElement=this;const t=y.initEvent(e,{target:this.el,type:"dropover"});this.option.over&&this.option.over(t,this._ui(I.dragElement)),this.triggerEvent("dropover",t),this.el.classList.add("ui-droppable-over")}_mouseLeave(e,t=!1){if(!I.dragElement||I.dropElement!==this)return;e.preventDefault(),e.stopPropagation();const i=y.initEvent(e,{target:this.el,type:"dropout"});if(this.option.out&&this.option.out(i,this._ui(I.dragElement)),this.triggerEvent("dropout",i),I.dropElement===this&&(delete I.dropElement,!t)){let r,o=this.el.parentElement;for(;!r&&o;)r=o.ddElement?.ddDroppable,o=o.parentElement;r&&r._mouseEnter(e)}}drop(e){e.preventDefault();const t=y.initEvent(e,{target:this.el,type:"drop"});this.option.drop&&this.option.drop(t,this._ui(I.dragElement)),this.triggerEvent("drop",t)}_canDrop(e){return e&&(!this.accept||this.accept(e))}_setupAccept(){return this.option.accept?(typeof this.option.accept=="string"?this.accept=e=>e.classList.contains(this.option.accept)||e.matches(this.option.accept):this.accept=this.option.accept,this):this}_ui(e){return{draggable:e.el,...e.ui()}}}class Lt{static init(e){return e.ddElement||(e.ddElement=new Lt(e)),e.ddElement}constructor(e){this.el=e}on(e,t){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(e)>-1?this.ddDraggable.on(e,t):this.ddDroppable&&["drop","dropover","dropout"].indexOf(e)>-1?this.ddDroppable.on(e,t):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(e)>-1&&this.ddResizable.on(e,t),this}off(e){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(e)>-1?this.ddDraggable.off(e):this.ddDroppable&&["drop","dropover","dropout"].indexOf(e)>-1?this.ddDroppable.off(e):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(e)>-1&&this.ddResizable.off(e),this}setupDraggable(e){return this.ddDraggable?this.ddDraggable.updateOption(e):this.ddDraggable=new it(this.el,e),this}cleanDraggable(){return this.ddDraggable&&(this.ddDraggable.destroy(),delete this.ddDraggable),this}setupResizable(e){return this.ddResizable?this.ddResizable.updateOption(e):this.ddResizable=new tt(this.el,e),this}cleanResizable(){return this.ddResizable&&(this.ddResizable.destroy(),delete this.ddResizable),this}setupDroppable(e){return this.ddDroppable?this.ddDroppable.updateOption(e):this.ddDroppable=new Mo(this.el,e),this}cleanDroppable(){return this.ddDroppable&&(this.ddDroppable.destroy(),delete this.ddDroppable),this}}class zo{resizable(e,t,i,r){return this._getDDElements(e,t).forEach(o=>{if(t==="disable"||t==="enable")o.ddResizable&&o.ddResizable[t]();else if(t==="destroy")o.ddResizable&&o.cleanResizable();else if(t==="option")o.setupResizable({[i]:r});else{const l=o.el.gridstackNode.grid;let d=o.el.getAttribute("gs-resize-handles")||l.opts.resizable.handles||"e,s,se";d==="all"&&(d="n,e,s,w,se,sw,ne,nw");const c=!l.opts.alwaysShowResizeHandle;o.setupResizable({...l.opts.resizable,handles:d,autoHide:c,start:t.start,stop:t.stop,resize:t.resize})}}),this}draggable(e,t,i,r){return this._getDDElements(e,t).forEach(o=>{if(t==="disable"||t==="enable")o.ddDraggable&&o.ddDraggable[t]();else if(t==="destroy")o.ddDraggable&&o.cleanDraggable();else if(t==="option")o.setupDraggable({[i]:r});else{const a=o.el.gridstackNode.grid;o.setupDraggable({...a.opts.draggable,start:t.start,stop:t.stop,drag:t.drag})}}),this}dragIn(e,t){return this._getDDElements(e).forEach(i=>i.setupDraggable(t)),this}droppable(e,t,i,r){return typeof t.accept=="function"&&!t._accept&&(t._accept=t.accept,t.accept=o=>t._accept(o)),this._getDDElements(e,t).forEach(o=>{t==="disable"||t==="enable"?o.ddDroppable&&o.ddDroppable[t]():t==="destroy"?o.ddDroppable&&o.cleanDroppable():t==="option"?o.setupDroppable({[i]:r}):o.setupDroppable(t)}),this}isDroppable(e){return!!(e?.ddElement?.ddDroppable&&!e.ddElement.ddDroppable.disabled)}isDraggable(e){return!!(e?.ddElement?.ddDraggable&&!e.ddElement.ddDraggable.disabled)}isResizable(e){return!!(e?.ddElement?.ddResizable&&!e.ddElement.ddResizable.disabled)}on(e,t,i){return this._getDDElements(e).forEach(r=>r.on(t,o=>{i(o,I.dragElement?I.dragElement.el:o.target,I.dragElement?I.dragElement.helper:null)})),this}off(e,t){return this._getDDElements(e).forEach(i=>i.off(t)),this}_getDDElements(e,t){const i=e.gridstack||t!=="destroy"&&t!=="disable",r=y.getElements(e);return r.length?r.map(a=>a.ddElement||(i?Lt.init(a):null)).filter(a=>a):[]}}const ge=new zo;class z{static init(e={},t=".grid-stack"){if(typeof document>"u")return null;const i=z.getGridElement(t);return i?(i.gridstack||(i.gridstack=new z(i,y.cloneDeep(e))),i.gridstack):(console.error(typeof t=="string"?'GridStack.initAll() no grid was found with selector "'+t+`" - element missing or wrong selector ?
13
13
  Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`:"GridStack.init() no grid element was passed."),null)}static initAll(e={},t=".grid-stack"){const i=[];return typeof document>"u"||(z.getGridElements(t).forEach(r=>{r.gridstack||(r.gridstack=new z(r,y.cloneDeep(e))),i.push(r.gridstack)}),i.length===0&&console.error('GridStack.initAll() no grid was found with selector "'+t+`" - element missing or wrong selector ?
14
14
  Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`)),i}static addGrid(e,t={}){if(!e)return null;let i=e;if(i.gridstack){const a=i.gridstack;return t&&(a.opts={...a.opts,...t}),t.children!==void 0&&a.load(t.children),a}return(!e.classList.contains("grid-stack")||z.addRemoveCB)&&(z.addRemoveCB?i=z.addRemoveCB(e,t,!0,!0):i=y.createDiv(["grid-stack",t.class],e)),z.init(t,i)}static registerEngine(e){z.engineClass=e}get placeholder(){if(!this._placeholder){this._placeholder=y.createDiv([this.opts.placeholderClass,ye.itemClass,this.opts.itemClass]);const e=y.createDiv(["placeholder-content"],this._placeholder);this.opts.placeholderText&&(e.textContent=this.opts.placeholderText)}return this._placeholder}constructor(e,t={}){this.el=e,this.opts=t,this.animationDelay=310,this._gsEventHandler={},this._extraDragRow=0,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0},e.gridstack=this,this.opts=t=t||{},e.classList.contains("grid-stack")||this.el.classList.add("grid-stack"),t.row&&(t.minRow=t.maxRow=t.row,delete t.row);const i=y.toNumber(e.getAttribute("gs-row"));t.column==="auto"&&delete t.column,t.alwaysShowResizeHandle!==void 0&&(t._alwaysShowResizeHandle=t.alwaysShowResizeHandle);let r=t.columnOpts?.breakpoints;const o=t;if(o.oneColumnModeDomSort&&(delete o.oneColumnModeDomSort,console.log("warning: Gridstack oneColumnModeDomSort no longer supported. Use GridStackOptions.columnOpts instead.")),o.oneColumnSize||o.disableOneColumnMode===!1){const h=o.oneColumnSize||768;delete o.oneColumnSize,delete o.disableOneColumnMode,t.columnOpts=t.columnOpts||{},r=t.columnOpts.breakpoints=t.columnOpts.breakpoints||[];let f=r.find(g=>g.c===1);f?f.w=h:(f={c:1,w:h},r.push(f,{c:12,w:h+1}))}const a=t.columnOpts;a&&(!a.columnWidth&&!a.breakpoints?.length?(delete t.columnOpts,r=void 0):a.columnMax=a.columnMax||12),r?.length>1&&r.sort((h,f)=>(f.w||0)-(h.w||0));const l={...y.cloneDeep(ye),column:y.toNumber(e.getAttribute("gs-column"))||ye.column,minRow:i||y.toNumber(e.getAttribute("gs-min-row"))||ye.minRow,maxRow:i||y.toNumber(e.getAttribute("gs-max-row"))||ye.maxRow,staticGrid:y.toBool(e.getAttribute("gs-static"))||ye.staticGrid,sizeToContent:y.toBool(e.getAttribute("gs-size-to-content"))||void 0,draggable:{handle:(t.handleClass?"."+t.handleClass:t.handle?t.handle:"")||ye.draggable.handle},removableOptions:{accept:t.itemClass||ye.removableOptions.accept,decline:ye.removableOptions.decline}};e.getAttribute("gs-animate")&&(l.animate=y.toBool(e.getAttribute("gs-animate"))),t=y.defaults(t,l),this._initMargin(),this.checkDynamicColumn(),this.el.classList.add("gs-"+t.column),t.rtl==="auto"&&(t.rtl=e.style.direction==="rtl"),t.rtl&&this.el.classList.add("grid-stack-rtl");const c=this.el.closest("."+ye.itemClass)?.gridstackNode;c&&(c.subGrid=this,this.parentGridNode=c,this.el.classList.add("grid-stack-nested"),c.el.classList.add("grid-stack-sub-grid")),this._isAutoCellHeight=t.cellHeight==="auto",this._isAutoCellHeight||t.cellHeight==="initial"?this.cellHeight(void 0,!1):(typeof t.cellHeight=="number"&&t.cellHeightUnit&&t.cellHeightUnit!==ye.cellHeightUnit&&(t.cellHeight=t.cellHeight+t.cellHeightUnit,delete t.cellHeightUnit),this.cellHeight(t.cellHeight,!1)),t.alwaysShowResizeHandle==="mobile"&&(t.alwaysShowResizeHandle=Te),this._styleSheetClass="gs-id-"+Oe._idSeq++,this.el.classList.add(this._styleSheetClass),this._setStaticClass();const u=t.engineClass||z.engineClass||Oe;if(this.engine=new u({column:this.getColumn(),float:t.float,maxRow:t.maxRow,onChange:h=>{let f=0;this.engine.nodes.forEach(g=>{f=Math.max(f,g.y+g.h)}),h.forEach(g=>{const w=g.el;w&&(g._removeDOM?(w&&w.remove(),delete g._removeDOM):this._writePosAttr(w,g))}),this._updateStyles(!1,f)}}),this._updateStyles(!1,0),t.auto&&(this.batchUpdate(),this.engine._loading=!0,this.getGridItems().forEach(h=>this._prepareElement(h)),delete this.engine._loading,this.batchUpdate(!1)),t.children){const h=t.children;delete t.children,h.length&&this.load(h)}this.setAnimation(),t.subGridDynamic&&!I.pauseDrag&&(I.pauseDrag=!0),t.draggable?.pause!==void 0&&(I.pauseDrag=t.draggable.pause),this._setupRemoveDrop(),this._setupAcceptWidget(),this._updateResizeEvent()}addWidget(e){if(typeof e=="string"){console.error("V11: GridStack.addWidget() does not support string anymore. see #2736");return}if(e.ELEMENT_NODE)return console.error("V11: GridStack.addWidget() does not support HTMLElement anymore. use makeWidget()"),this.makeWidget(e);let t,i=e;if(i.grid=this,i?.el?t=i.el:z.addRemoveCB?t=z.addRemoveCB(this.el,e,!0,!1):t=this.createWidgetDivs(i),!t)return;if(i=t.gridstackNode,i&&t.parentElement===this.el&&this.engine.nodes.find(o=>o._id===i._id))return t;const r=this._readAttr(t);return y.defaults(e,r),this.engine.prepareNode(e),this.el.appendChild(t),this.makeWidget(t,e),t}createWidgetDivs(e){const t=y.createDiv(["grid-stack-item",this.opts.itemClass]),i=y.createDiv(["grid-stack-item-content"],t);return y.lazyLoad(e)?e.visibleObservable||(e.visibleObservable=new IntersectionObserver(([r])=>{r.isIntersecting&&(e.visibleObservable?.disconnect(),delete e.visibleObservable,z.renderCB(i,e),e.grid?.prepareDragDrop(e.el))}),window.setTimeout(()=>e.visibleObservable?.observe(t))):z.renderCB(i,e),t}makeSubGrid(e,t,i,r=!0){let o=e.gridstackNode;if(o||(o=this.makeWidget(e).gridstackNode),o.subGrid?.el)return o.subGrid;let a,l=this;for(;l&&!a;)a=l.opts?.subGridOpts,l=l.parentGridNode?.grid;t=y.cloneDeep({...this.opts,id:void 0,children:void 0,column:"auto",columnOpts:void 0,layout:"list",subGridOpts:void 0,...a||{},...t||o.subGridOpts||{}}),o.subGridOpts=t;let d;t.column==="auto"&&(d=!0,t.column=Math.max(o.w||1,i?.w||1),delete t.columnOpts);let c=o.el.querySelector(".grid-stack-item-content"),u,h;if(r&&(this._removeDD(o.el),h={...o,x:0,y:0},y.removeInternalForSave(h),delete h.subGridOpts,o.content&&(h.content=o.content,delete o.content),z.addRemoveCB?u=z.addRemoveCB(this.el,h,!0,!1):(u=y.createDiv(["grid-stack-item"]),u.appendChild(c),c=y.createDiv(["grid-stack-item-content"],o.el)),this.prepareDragDrop(o.el)),i){const g=d?t.column:o.w,w=o.h+i.h,E=o.el.style;E.transition="none",this.update(o.el,{w:g,h:w}),setTimeout(()=>E.transition=null)}const f=o.subGrid=z.addGrid(c,t);return i?._moving&&(f._isTemp=!0),d&&(f._autoColumn=!0),r&&f.makeWidget(u,h),i&&(i._moving?window.setTimeout(()=>y.simulateMouseEvent(i._event,"mouseenter",f.el),0):f.makeWidget(o.el,o)),this.resizeToContentCheck(!1,o),f}removeAsSubGrid(e){const t=this.parentGridNode?.grid;t&&(t.batchUpdate(),t.removeWidget(this.parentGridNode.el,!0,!0),this.engine.nodes.forEach(i=>{i.x+=this.parentGridNode.x,i.y+=this.parentGridNode.y,t.makeWidget(i.el,i)}),t.batchUpdate(!1),this.parentGridNode&&delete this.parentGridNode.subGrid,delete this.parentGridNode,e&&window.setTimeout(()=>y.simulateMouseEvent(e._event,"mouseenter",t.el),0))}save(e=!0,t=!1,i=z.saveCB){const r=this.engine.save(e,i);if(r.forEach(o=>{if(e&&o.el&&!o.subGrid&&!i){const a=o.el.querySelector(".grid-stack-item-content");o.content=a?.innerHTML,o.content||delete o.content}else if(!e&&!i&&delete o.content,o.subGrid?.el){const a=o.subGrid.save(e,t,i);o.subGridOpts=t?a:{children:a},delete o.subGrid}delete o.el}),t){const o=y.cloneDeep(this.opts);o.marginBottom===o.marginTop&&o.marginRight===o.marginLeft&&o.marginTop===o.marginRight&&(o.margin=o.marginTop,delete o.marginTop,delete o.marginRight,delete o.marginBottom,delete o.marginLeft),o.rtl===(this.el.style.direction==="rtl")&&(o.rtl="auto"),this._isAutoCellHeight&&(o.cellHeight="auto"),this._autoColumn&&(o.column="auto");const a=o._alwaysShowResizeHandle;return delete o._alwaysShowResizeHandle,a!==void 0?o.alwaysShowResizeHandle=a:delete o.alwaysShowResizeHandle,y.removeInternalAndSame(o,ye),o.children=r,o}return r}load(e,t=z.addRemoveCB||!0){e=y.cloneDeep(e);const i=this.getColumn();e.forEach(c=>{c.w=c.w||1,c.h=c.h||1}),e=y.sort(e),this.engine.skipCacheUpdate=this._ignoreLayoutsNodeChange=!0;let r=0;e.forEach(c=>{r=Math.max(r,(c.x||0)+c.w)}),r>this.engine.defaultColumn&&(this.engine.defaultColumn=r),r>i&&this.engine.cacheLayout(e,r,!0);const o=z.addRemoveCB;typeof t=="function"&&(z.addRemoveCB=t);const a=[];this.batchUpdate();const l=!this.engine.nodes.length;l&&this.setAnimation(!1),!l&&t&&[...this.engine.nodes].forEach(u=>{if(!u.id)return;y.find(e,u.id)||(z.addRemoveCB&&z.addRemoveCB(this.el,u,!1,!1),a.push(u),this.removeWidget(u.el,!0,!1))}),this.engine._loading=!0;const d=[];return this.engine.nodes=this.engine.nodes.filter(c=>y.find(e,c.id)?(d.push(c),!1):!0),e.forEach(c=>{const u=y.find(d,c.id);if(u){if(y.shouldSizeToContent(u)&&(c.h=u.h),this.engine.nodeBoundFix(c),(c.autoPosition||c.x===void 0||c.y===void 0)&&(c.w=c.w||u.w,c.h=c.h||u.h,this.engine.findEmptyPosition(c)),this.engine.nodes.push(u),y.samePos(u,c)&&this.engine.nodes.length>1&&(this.moveNode(u,{...c,forceCollide:!0}),y.copyPos(c,u)),this.update(u.el,c),c.subGridOpts?.children){const h=u.el.querySelector(".grid-stack");h&&h.gridstack&&h.gridstack.load(c.subGridOpts.children)}}else t&&this.addWidget(c)}),delete this.engine._loading,this.engine.removedNodes=a,this.batchUpdate(!1),delete this._ignoreLayoutsNodeChange,delete this.engine.skipCacheUpdate,o?z.addRemoveCB=o:delete z.addRemoveCB,l&&this.opts?.animate&&this.setAnimation(this.opts.animate,!0),this}batchUpdate(e=!0){return this.engine.batchUpdate(e),e||(this._updateContainerHeight(),this._triggerRemoveEvent(),this._triggerAddEvent(),this._triggerChangeEvent()),this}getCellHeight(e=!1){if(this.opts.cellHeight&&this.opts.cellHeight!=="auto"&&(!e||!this.opts.cellHeightUnit||this.opts.cellHeightUnit==="px"))return this.opts.cellHeight;if(this.opts.cellHeightUnit==="rem")return this.opts.cellHeight*parseFloat(getComputedStyle(document.documentElement).fontSize);if(this.opts.cellHeightUnit==="em")return this.opts.cellHeight*parseFloat(getComputedStyle(this.el).fontSize);if(this.opts.cellHeightUnit==="cm")return this.opts.cellHeight*(96/2.54);if(this.opts.cellHeightUnit==="mm")return this.opts.cellHeight*(96/2.54)/10;const t=this.el.querySelector("."+this.opts.itemClass);if(t){const r=y.toNumber(t.getAttribute("gs-h"))||1;return Math.round(t.offsetHeight/r)}const i=parseInt(this.el.getAttribute("gs-current-row"));return i?Math.round(this.el.getBoundingClientRect().height/i):this.opts.cellHeight}cellHeight(e,t=!0){if(t&&e!==void 0&&this._isAutoCellHeight!==(e==="auto")&&(this._isAutoCellHeight=e==="auto",this._updateResizeEvent()),(e==="initial"||e==="auto")&&(e=void 0),e===void 0){const r=-this.opts.marginRight-this.opts.marginLeft+this.opts.marginTop+this.opts.marginBottom;e=this.cellWidth()+r}const i=y.parseHeight(e);return this.opts.cellHeightUnit===i.unit&&this.opts.cellHeight===i.h?this:(this.opts.cellHeightUnit=i.unit,this.opts.cellHeight=i.h,this.resizeToContentCheck(),t&&this._updateStyles(!0),this)}cellWidth(){return this._widthOrContainer()/this.getColumn()}_widthOrContainer(e=!1){return e&&this.opts.columnOpts?.breakpointForWindow?window.innerWidth:this.el.clientWidth||this.el.parentElement.clientWidth||window.innerWidth}checkDynamicColumn(){const e=this.opts.columnOpts;if(!e||!e.columnWidth&&!e.breakpoints?.length)return!1;const t=this.getColumn();let i=t;const r=this._widthOrContainer(!0);if(e.columnWidth)i=Math.min(Math.round(r/e.columnWidth)||1,e.columnMax);else{i=e.columnMax;let o=0;for(;o<e.breakpoints.length&&r<=e.breakpoints[o].w;)i=e.breakpoints[o++].c||t}if(i!==t){const o=e.breakpoints?.find(a=>a.c===i);return this.column(i,o?.layout||e.layout),!0}return!1}compact(e="compact",t=!0){return this.engine.compact(e,t),this._triggerChangeEvent(),this}column(e,t="moveScale"){if(!e||e<1||this.opts.column===e)return this;const i=this.getColumn();return this.opts.column=e,this.engine?(this.engine.column=e,this.el.classList.remove("gs-"+i),this.el.classList.add("gs-"+e),this.engine.columnChanged(i,e,t),this._isAutoCellHeight&&this.cellHeight(),this.resizeToContentCheck(!0),this._ignoreLayoutsNodeChange=!0,this._triggerChangeEvent(),delete this._ignoreLayoutsNodeChange,this):this}getColumn(){return this.opts.column}getGridItems(){return Array.from(this.el.children).filter(e=>e.matches("."+this.opts.itemClass)&&!e.matches("."+this.opts.placeholderClass))}isIgnoreChangeCB(){return this._ignoreLayoutsNodeChange}destroy(e=!0){if(this.el)return this.offAll(),this._updateResizeEvent(!0),this.setStatic(!0,!1),this.setAnimation(!1),e?this.el.parentNode.removeChild(this.el):(this.removeAll(e),this.el.classList.remove(this._styleSheetClass),this.el.removeAttribute("gs-current-row")),this._removeStylesheet(),delete this.parentGridNode?.subGrid,delete this.parentGridNode,delete this.opts,delete this._placeholder?.gridstackNode,delete this._placeholder,delete this.engine,delete this.el.gridstack,delete this.el,this}float(e){return this.opts.float!==e&&(this.opts.float=this.engine.float=e,this._triggerChangeEvent()),this}getFloat(){return this.engine.float}getCellFromPixel(e,t=!1){const i=this.el.getBoundingClientRect();let r;t?r={top:i.top+document.documentElement.scrollTop,left:i.left}:r={top:this.el.offsetTop,left:this.el.offsetLeft};const o=e.left-r.left,a=e.top-r.top,l=i.width/this.getColumn(),d=i.height/parseInt(this.el.getAttribute("gs-current-row"));return{x:Math.floor(o/l),y:Math.floor(a/d)}}getRow(){return Math.max(this.engine.getRow(),this.opts.minRow)}isAreaEmpty(e,t,i,r){return this.engine.isAreaEmpty(e,t,i,r)}makeWidget(e,t){const i=z.getElement(e);if(!i)return;i.parentElement||this.el.appendChild(i),this._prepareElement(i,!0,t);const r=i.gridstackNode;this._updateContainerHeight(),r.subGridOpts&&this.makeSubGrid(i,r.subGridOpts,void 0,!1);let o;return this.opts.column===1&&!this._ignoreLayoutsNodeChange&&(o=this._ignoreLayoutsNodeChange=!0),this._triggerAddEvent(),this._triggerChangeEvent(),o&&delete this._ignoreLayoutsNodeChange,i}on(e,t){return e.indexOf(" ")!==-1?(e.split(" ").forEach(r=>this.on(r,t)),this):(e==="change"||e==="added"||e==="removed"||e==="enable"||e==="disable"?(e==="enable"||e==="disable"?this._gsEventHandler[e]=r=>t(r):this._gsEventHandler[e]=r=>{r.detail&&t(r,r.detail)},this.el.addEventListener(e,this._gsEventHandler[e])):e==="drag"||e==="dragstart"||e==="dragstop"||e==="resizestart"||e==="resize"||e==="resizestop"||e==="dropped"||e==="resizecontent"?this._gsEventHandler[e]=t:console.error("GridStack.on("+e+") event not supported"),this)}off(e){return e.indexOf(" ")!==-1?(e.split(" ").forEach(i=>this.off(i)),this):((e==="change"||e==="added"||e==="removed"||e==="enable"||e==="disable")&&this._gsEventHandler[e]&&this.el.removeEventListener(e,this._gsEventHandler[e]),delete this._gsEventHandler[e],this)}offAll(){return Object.keys(this._gsEventHandler).forEach(e=>this.off(e)),this}removeWidget(e,t=!0,i=!0){return e?(z.getElements(e).forEach(r=>{if(r.parentElement&&r.parentElement!==this.el)return;let o=r.gridstackNode;o||(o=this.engine.nodes.find(a=>r===a.el)),o&&(t&&z.addRemoveCB&&z.addRemoveCB(this.el,o,!1,!1),delete r.gridstackNode,this._removeDD(r),this.engine.removeNode(o,t,i),t&&r.parentElement&&r.remove())}),i&&(this._triggerRemoveEvent(),this._triggerChangeEvent()),this):(console.error("Error: GridStack.removeWidget(undefined) called"),this)}removeAll(e=!0,t=!0){return this.engine.nodes.forEach(i=>{e&&z.addRemoveCB&&z.addRemoveCB(this.el,i,!1,!1),delete i.el.gridstackNode,this.opts.staticGrid||this._removeDD(i.el)}),this.engine.removeAll(e,t),t&&this._triggerRemoveEvent(),this}setAnimation(e=this.opts.animate,t){return t?setTimeout(()=>{this.opts&&this.setAnimation(e)}):e?this.el.classList.add("grid-stack-animate"):this.el.classList.remove("grid-stack-animate"),this}hasAnimationCSS(){return this.el.classList.contains("grid-stack-animate")}setStatic(e,t=!0,i=!0){return!!this.opts.staticGrid===e?this:(e?this.opts.staticGrid=!0:delete this.opts.staticGrid,this._setupRemoveDrop(),this._setupAcceptWidget(),this.engine.nodes.forEach(r=>{this.prepareDragDrop(r.el),r.subGrid&&i&&r.subGrid.setStatic(e,t,i)}),t&&this._setStaticClass(),this)}updateOptions(e){const t=this.opts;return e.acceptWidgets!==void 0&&this._setupAcceptWidget(),e.animate!==void 0&&this.setAnimation(),e.cellHeight&&(this.cellHeight(e.cellHeight,!0),delete e.cellHeight),e.class&&e.class!==t.class&&(t.class&&this.el.classList.remove(t.class),this.el.classList.add(e.class)),typeof e.column=="number"&&!e.columnOpts&&(this.column(e.column),delete e.column),e.margin!==void 0&&this.margin(e.margin),e.staticGrid!==void 0&&this.setStatic(e.staticGrid),e.disableDrag!==void 0&&!e.staticGrid&&this.enableMove(!e.disableDrag),e.disableResize!==void 0&&!e.staticGrid&&this.enableResize(!e.disableResize),e.float!==void 0&&this.float(e.float),e.row!==void 0&&(t.minRow=t.maxRow=e.row),e.children?.length&&(this.load(e.children),delete e.children),this.opts={...this.opts,...e},this}update(e,t){return z.getElements(e).forEach(i=>{const r=i?.gridstackNode;if(!r)return;const o={...y.copyPos({},r),...y.cloneDeep(t)};this.engine.nodeBoundFix(o),delete o.autoPosition;const a=["x","y","w","h"];let l;if(a.some(u=>o[u]!==void 0&&o[u]!==r[u])&&(l={},a.forEach(u=>{l[u]=o[u]!==void 0?o[u]:r[u],delete o[u]})),!l&&(o.minW||o.minH||o.maxW||o.maxH)&&(l={}),o.content!==void 0){const u=i.querySelector(".grid-stack-item-content");u&&u.textContent!==o.content&&(r.content=o.content,z.renderCB(u,o),r.subGrid?.el&&(u.appendChild(r.subGrid.el),r.subGrid.opts.styleInHead||r.subGrid._updateStyles(!0))),delete o.content}let d=!1,c=!1;for(const u in o)u[0]!=="_"&&r[u]!==o[u]&&(r[u]=o[u],d=!0,c=c||!this.opts.staticGrid&&(u==="noResize"||u==="noMove"||u==="locked"));if(y.sanitizeMinMax(r),l){const u=l.w!==void 0&&l.w!==r.w;this.moveNode(r,l),u&&r.subGrid?r.subGrid.onResize(this.hasAnimationCSS()?r.w:void 0):this.resizeToContentCheck(u,r),delete r._orig}(l||d)&&this._writeAttr(i,r),c&&this.prepareDragDrop(r.el)}),this}moveNode(e,t){const i=e._updating;i||this.engine.cleanNodes().beginUpdate(e),this.engine.moveNode(e,t),this._updateContainerHeight(),i||(this._triggerChangeEvent(),this.engine.endUpdate())}resizeToContent(e){if(!e||(e.classList.remove("size-to-content-max"),!e.clientHeight))return;const t=e.gridstackNode;if(!t)return;const i=t.grid;if(!i||e.parentElement!==i.el)return;const r=i.getCellHeight(!0);if(!r)return;let o=t.h?t.h*r:e.clientHeight,a;if(t.resizeToContentParent&&(a=e.querySelector(t.resizeToContentParent)),a||(a=e.querySelector(z.resizeToContentParent)),!a)return;const l=e.clientHeight-a.clientHeight,d=t.h?t.h*r-l:a.clientHeight;let c;if(t.subGrid){c=t.subGrid.getRow()*t.subGrid.getCellHeight(!0);const f=t.subGrid.el.getBoundingClientRect(),g=t.subGrid.el.parentElement.getBoundingClientRect();c+=f.top-g.top}else{if(t.subGridOpts?.children?.length)return;{const f=a.firstElementChild;if(!f){console.error(`Error: GridStack.resizeToContent() widget id:${t.id} '${z.resizeToContentParent}'.firstElementChild is null, make sure to have a div like container. Skipping sizing.`);return}c=f.getBoundingClientRect().height||d}}if(d===c)return;o+=c-d;let u=Math.ceil(o/r);const h=Number.isInteger(t.sizeToContent)?t.sizeToContent:0;h&&u>h&&(u=h,e.classList.add("size-to-content-max")),t.minH&&u<t.minH?u=t.minH:t.maxH&&u>t.maxH&&(u=t.maxH),u!==t.h&&(i._ignoreLayoutsNodeChange=!0,i.moveNode(t,{h:u}),delete i._ignoreLayoutsNodeChange)}resizeToContentCBCheck(e){z.resizeToContentCB?z.resizeToContentCB(e):this.resizeToContent(e)}rotate(e,t){return z.getElements(e).forEach(i=>{const r=i.gridstackNode;if(!y.canBeRotated(r))return;const o={w:r.h,h:r.w,minH:r.minW,minW:r.minH,maxH:r.maxW,maxW:r.maxH};if(t){const l=t.left>0?Math.floor(t.left/this.cellWidth()):0,d=t.top>0?Math.floor(t.top/this.opts.cellHeight):0;o.x=r.x+l-(r.h-(d+1)),o.y=r.y+d-l}Object.keys(o).forEach(l=>{o[l]===void 0&&delete o[l]});const a=r._orig;this.update(i,o),r._orig=a}),this}margin(e){if(!(typeof e=="string"&&e.split(" ").length>1)){const i=y.parseHeight(e);if(this.opts.marginUnit===i.unit&&this.opts.margin===i.h)return}return this.opts.margin=e,this.opts.marginTop=this.opts.marginBottom=this.opts.marginLeft=this.opts.marginRight=void 0,this._initMargin(),this._updateStyles(!0),this}getMargin(){return this.opts.margin}willItFit(e){if(arguments.length>1){console.warn("gridstack.ts: `willItFit(x,y,w,h,autoPosition)` is deprecated. Use `willItFit({x, y,...})`. It will be removed soon");const t=arguments;let i=0,r={x:t[i++],y:t[i++],w:t[i++],h:t[i++],autoPosition:t[i++]};return this.willItFit(r)}return this.engine.willItFit(e)}_triggerChangeEvent(){if(this.engine.batchMode)return this;const e=this.engine.getDirtyNodes(!0);return e&&e.length&&(this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(e),this._triggerEvent("change",e)),this.engine.saveInitial(),this}_triggerAddEvent(){if(this.engine.batchMode)return this;if(this.engine.addedNodes?.length){this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(this.engine.addedNodes),this.engine.addedNodes.forEach(t=>{delete t._dirty});const e=[...this.engine.addedNodes];this.engine.addedNodes=[],this._triggerEvent("added",e)}return this}_triggerRemoveEvent(){if(this.engine.batchMode)return this;if(this.engine.removedNodes?.length){const e=[...this.engine.removedNodes];this.engine.removedNodes=[],this._triggerEvent("removed",e)}return this}_triggerEvent(e,t){const i=t?new CustomEvent(e,{bubbles:!1,detail:t}):new Event(e);return this.el.dispatchEvent(i),this}_removeStylesheet(){if(this._styles){const e=this.opts.styleInHead?void 0:this.el.parentNode;y.removeStylesheet(this._styleSheetClass,e),delete this._styles}return this}_updateStyles(e=!1,t){if(e&&this._removeStylesheet(),t===void 0&&(t=this.getRow()),this._updateContainerHeight(),this.opts.cellHeight===0)return this;const i=this.opts.cellHeight,r=this.opts.cellHeightUnit,o=`.${this._styleSheetClass} > .${this.opts.itemClass}`;if(!this._styles){const a=this.opts.styleInHead?void 0:this.el.parentNode;if(this._styles=y.createStylesheet(this._styleSheetClass,a,{nonce:this.opts.nonce}),!this._styles)return this;this._styles._max=0,y.addCSSRule(this._styles,o,`height: ${i}${r}`);const l=this.opts.marginTop+this.opts.marginUnit,d=this.opts.marginBottom+this.opts.marginUnit,c=this.opts.marginRight+this.opts.marginUnit,u=this.opts.marginLeft+this.opts.marginUnit,h=`${o} > .grid-stack-item-content`,f=`.${this._styleSheetClass} > .grid-stack-placeholder > .placeholder-content`;y.addCSSRule(this._styles,h,`top: ${l}; right: ${c}; bottom: ${d}; left: ${u};`),y.addCSSRule(this._styles,f,`top: ${l}; right: ${c}; bottom: ${d}; left: ${u};`),y.addCSSRule(this._styles,`${o} > .ui-resizable-n`,`top: ${l};`),y.addCSSRule(this._styles,`${o} > .ui-resizable-s`,`bottom: ${d}`),y.addCSSRule(this._styles,`${o} > .ui-resizable-ne`,`right: ${c}; top: ${l}`),y.addCSSRule(this._styles,`${o} > .ui-resizable-e`,`right: ${c}`),y.addCSSRule(this._styles,`${o} > .ui-resizable-se`,`right: ${c}; bottom: ${d}`),y.addCSSRule(this._styles,`${o} > .ui-resizable-nw`,`left: ${u}; top: ${l}`),y.addCSSRule(this._styles,`${o} > .ui-resizable-w`,`left: ${u}`),y.addCSSRule(this._styles,`${o} > .ui-resizable-sw`,`left: ${u}; bottom: ${d}`)}if(t=t||this._styles._max,t>this._styles._max){const a=l=>i*l+r;for(let l=this._styles._max+1;l<=t;l++)y.addCSSRule(this._styles,`${o}[gs-y="${l}"]`,`top: ${a(l)}`),y.addCSSRule(this._styles,`${o}[gs-h="${l+1}"]`,`height: ${a(l+1)}`);this._styles._max=t}return this}_updateContainerHeight(){if(!this.engine||this.engine.batchMode)return this;const e=this.parentGridNode;let t=this.getRow()+this._extraDragRow;const i=this.opts.cellHeight,r=this.opts.cellHeightUnit;if(!i)return this;if(!e){const o=y.parseHeight(getComputedStyle(this.el).minHeight);if(o.h>0&&o.unit===r){const a=Math.floor(o.h/i);t<a&&(t=a)}}return this.el.setAttribute("gs-current-row",String(t)),this.el.style.removeProperty("min-height"),this.el.style.removeProperty("height"),t&&(this.el.style[e?"minHeight":"height"]=t*i+r),e&&!e.grid.engine.batchMode&&y.shouldSizeToContent(e)&&e.grid.resizeToContentCBCheck(e.el),this}_prepareElement(e,t=!1,i){i=i||this._readAttr(e),e.gridstackNode=i,i.el=e,i.grid=this,i=this.engine.addNode(i,t),this._writeAttr(e,i),e.classList.add(ye.itemClass,this.opts.itemClass);const r=y.shouldSizeToContent(i);return r?e.classList.add("size-to-content"):e.classList.remove("size-to-content"),r&&this.resizeToContentCheck(!1,i),y.lazyLoad(i)||this.prepareDragDrop(i.el),this}_writePosAttr(e,t){return t.x!==void 0&&t.x!==null&&e.setAttribute("gs-x",String(t.x)),t.y!==void 0&&t.y!==null&&e.setAttribute("gs-y",String(t.y)),t.w>1?e.setAttribute("gs-w",String(t.w)):e.removeAttribute("gs-w"),t.h>1?e.setAttribute("gs-h",String(t.h)):e.removeAttribute("gs-h"),this}_writeAttr(e,t){if(!t)return this;this._writePosAttr(e,t);const i={noResize:"gs-no-resize",noMove:"gs-no-move",locked:"gs-locked",id:"gs-id",sizeToContent:"gs-size-to-content"};for(const r in i)t[r]?e.setAttribute(i[r],String(t[r])):e.removeAttribute(i[r]);return this}_readAttr(e,t=!0){const i={};i.x=y.toNumber(e.getAttribute("gs-x")),i.y=y.toNumber(e.getAttribute("gs-y")),i.w=y.toNumber(e.getAttribute("gs-w")),i.h=y.toNumber(e.getAttribute("gs-h")),i.autoPosition=y.toBool(e.getAttribute("gs-auto-position")),i.noResize=y.toBool(e.getAttribute("gs-no-resize")),i.noMove=y.toBool(e.getAttribute("gs-no-move")),i.locked=y.toBool(e.getAttribute("gs-locked"));const r=e.getAttribute("gs-size-to-content");r&&(r==="true"||r==="false"?i.sizeToContent=y.toBool(r):i.sizeToContent=parseInt(r,10)),i.id=e.getAttribute("gs-id"),i.maxW=y.toNumber(e.getAttribute("gs-max-w")),i.minW=y.toNumber(e.getAttribute("gs-min-w")),i.maxH=y.toNumber(e.getAttribute("gs-max-h")),i.minH=y.toNumber(e.getAttribute("gs-min-h")),t&&(i.w===1&&e.removeAttribute("gs-w"),i.h===1&&e.removeAttribute("gs-h"),i.maxW&&e.removeAttribute("gs-max-w"),i.minW&&e.removeAttribute("gs-min-w"),i.maxH&&e.removeAttribute("gs-max-h"),i.minH&&e.removeAttribute("gs-min-h"));for(const o in i){if(!i.hasOwnProperty(o))return;!i[o]&&i[o]!==0&&o!=="gs-size-to-content"&&delete i[o]}return i}_setStaticClass(){const e=["grid-stack-static"];return this.opts.staticGrid?(this.el.classList.add(...e),this.el.setAttribute("gs-static","true")):(this.el.classList.remove(...e),this.el.removeAttribute("gs-static")),this}onResize(e=this.el?.clientWidth){if(!e||this.prevWidth===e)return;this.prevWidth=e,this.batchUpdate();let t=!1;return this._autoColumn&&this.parentGridNode?this.opts.column!==this.parentGridNode.w&&(this.column(this.parentGridNode.w,this.opts.layout||"list"),t=!0):t=this.checkDynamicColumn(),this._isAutoCellHeight&&this.cellHeight(),this.engine.nodes.forEach(i=>{i.subGrid&&i.subGrid.onResize()}),this._skipInitialResize||this.resizeToContentCheck(t),delete this._skipInitialResize,this.batchUpdate(!1),this}resizeToContentCheck(e=!1,t=void 0){if(this.engine){if(e&&this.hasAnimationCSS())return setTimeout(()=>this.resizeToContentCheck(!1,t),this.animationDelay);if(t)y.shouldSizeToContent(t)&&this.resizeToContentCBCheck(t.el);else if(this.engine.nodes.some(i=>y.shouldSizeToContent(i))){const i=[...this.engine.nodes];this.batchUpdate(),i.forEach(r=>{y.shouldSizeToContent(r)&&this.resizeToContentCBCheck(r.el)}),this.batchUpdate(!1)}this._gsEventHandler.resizecontent&&this._gsEventHandler.resizecontent(null,t?[t]:this.engine.nodes)}}_updateResizeEvent(e=!1){const t=!this.parentGridNode&&(this._isAutoCellHeight||this.opts.sizeToContent||this.opts.columnOpts||this.engine.nodes.find(i=>i.sizeToContent));return!e&&t&&!this.resizeObserver?(this._sizeThrottle=y.throttle(()=>this.onResize(),this.opts.cellHeightThrottle),this.resizeObserver=new ResizeObserver(()=>this._sizeThrottle()),this.resizeObserver.observe(this.el),this._skipInitialResize=!0):(e||!t)&&this.resizeObserver&&(this.resizeObserver.disconnect(),delete this.resizeObserver,delete this._sizeThrottle),this}static getElement(e=".grid-stack-item"){return y.getElement(e)}static getElements(e=".grid-stack-item"){return y.getElements(e)}static getGridElement(e){return z.getElement(e)}static getGridElements(e){return y.getElements(e)}_initMargin(){let e,t=0,i=[];return typeof this.opts.margin=="string"&&(i=this.opts.margin.split(" ")),i.length===2?(this.opts.marginTop=this.opts.marginBottom=i[0],this.opts.marginLeft=this.opts.marginRight=i[1]):i.length===4?(this.opts.marginTop=i[0],this.opts.marginRight=i[1],this.opts.marginBottom=i[2],this.opts.marginLeft=i[3]):(e=y.parseHeight(this.opts.margin),this.opts.marginUnit=e.unit,t=this.opts.margin=e.h),this.opts.marginTop===void 0?this.opts.marginTop=t:(e=y.parseHeight(this.opts.marginTop),this.opts.marginTop=e.h,delete this.opts.margin),this.opts.marginBottom===void 0?this.opts.marginBottom=t:(e=y.parseHeight(this.opts.marginBottom),this.opts.marginBottom=e.h,delete this.opts.margin),this.opts.marginRight===void 0?this.opts.marginRight=t:(e=y.parseHeight(this.opts.marginRight),this.opts.marginRight=e.h,delete this.opts.margin),this.opts.marginLeft===void 0?this.opts.marginLeft=t:(e=y.parseHeight(this.opts.marginLeft),this.opts.marginLeft=e.h,delete this.opts.margin),this.opts.marginUnit=e.unit,this.opts.marginTop===this.opts.marginBottom&&this.opts.marginLeft===this.opts.marginRight&&this.opts.marginTop===this.opts.marginRight&&(this.opts.margin=this.opts.marginTop),this}static getDD(){return ge}static setupDragIn(e,t,i,r=document){t?.pause!==void 0&&(I.pauseDrag=t.pause),t={appendTo:"body",helper:"clone",...t||{}},(typeof e=="string"?y.getElements(e,r):e).forEach((a,l)=>{ge.isDraggable(a)||ge.dragIn(a,t),i?.[l]&&(a.gridstackNode=i[l])})}movable(e,t){return this.opts.staticGrid?this:(z.getElements(e).forEach(i=>{const r=i.gridstackNode;r&&(t?delete r.noMove:r.noMove=!0,this.prepareDragDrop(r.el))}),this)}resizable(e,t){return this.opts.staticGrid?this:(z.getElements(e).forEach(i=>{const r=i.gridstackNode;r&&(t?delete r.noResize:r.noResize=!0,this.prepareDragDrop(r.el))}),this)}disable(e=!0){if(!this.opts.staticGrid)return this.enableMove(!1,e),this.enableResize(!1,e),this._triggerEvent("disable"),this}enable(e=!0){if(!this.opts.staticGrid)return this.enableMove(!0,e),this.enableResize(!0,e),this._triggerEvent("enable"),this}enableMove(e,t=!0){return this.opts.staticGrid?this:(e?delete this.opts.disableDrag:this.opts.disableDrag=!0,this.engine.nodes.forEach(i=>{this.prepareDragDrop(i.el),i.subGrid&&t&&i.subGrid.enableMove(e,t)}),this)}enableResize(e,t=!0){return this.opts.staticGrid?this:(e?delete this.opts.disableResize:this.opts.disableResize=!0,this.engine.nodes.forEach(i=>{this.prepareDragDrop(i.el),i.subGrid&&t&&i.subGrid.enableResize(e,t)}),this)}cancelDrag(){const e=this._placeholder?.gridstackNode;e&&(e._isExternal?(e._isAboutToRemove=!0,this.engine.removeNode(e)):e._isAboutToRemove&&z._itemRemoving(e.el,!1),this.engine.restoreInitial())}_removeDD(e){return ge.draggable(e,"destroy").resizable(e,"destroy"),e.gridstackNode&&delete e.gridstackNode._initDD,delete e.ddElement,this}_setupAcceptWidget(){if(this.opts.staticGrid||!this.opts.acceptWidgets&&!this.opts.removable)return ge.droppable(this.el,"destroy"),this;let e,t;const i=(r,o,a)=>{a=a||o;const l=a.gridstackNode;if(!l)return;if(!l.grid?.el){a.style.transform=`scale(${1/this.dragTransform.xScale},${1/this.dragTransform.yScale})`;const f=a.getBoundingClientRect();a.style.left=f.x+(this.dragTransform.xScale-1)*(r.clientX-f.x)/this.dragTransform.xScale+"px",a.style.top=f.y+(this.dragTransform.yScale-1)*(r.clientY-f.y)/this.dragTransform.yScale+"px",a.style.transformOrigin="0px 0px"}let{top:d,left:c}=a.getBoundingClientRect();const u=this.el.getBoundingClientRect();c-=u.left,d-=u.top;const h={position:{top:d*this.dragTransform.xScale,left:c*this.dragTransform.yScale}};if(l._temporaryRemoved){if(l.x=Math.max(0,Math.round(c/t)),l.y=Math.max(0,Math.round(d/e)),delete l.autoPosition,this.engine.nodeBoundFix(l),!this.engine.willItFit(l)){if(l.autoPosition=!0,!this.engine.willItFit(l)){ge.off(o,"drag");return}l._willFitPos&&(y.copyPos(l,l._willFitPos),delete l._willFitPos)}this._onStartMoving(a,r,h,l,t,e)}else this._dragOrResize(a,r,h,l,t,e)};return ge.droppable(this.el,{accept:r=>{const o=r.gridstackNode||this._readAttr(r,!1);if(o?.grid===this)return!0;if(!this.opts.acceptWidgets)return!1;let a=!0;if(typeof this.opts.acceptWidgets=="function")a=this.opts.acceptWidgets(r);else{const l=this.opts.acceptWidgets===!0?".grid-stack-item":this.opts.acceptWidgets;a=r.matches(l)}if(a&&o&&this.opts.maxRow){const l={w:o.w,h:o.h,minW:o.minW,minH:o.minH};a=this.engine.willItFit(l)}return a}}).on(this.el,"dropover",(r,o,a)=>{let l=a?.gridstackNode||o.gridstackNode;if(l?.grid===this&&!l._temporaryRemoved)return!1;if(l?._sidebarOrig&&(l.w=l._sidebarOrig.w,l.h=l._sidebarOrig.h),l?.grid&&l.grid!==this&&!l._temporaryRemoved&&l.grid._leave(o,a),a=a||o,t=this.cellWidth(),e=this.getCellHeight(!0),!l){const u=a.getAttribute("data-gs-widget")||a.getAttribute("gridstacknode");if(u){try{l=JSON.parse(u)}catch{console.error("Gridstack dropover: Bad JSON format: ",u)}a.removeAttribute("data-gs-widget"),a.removeAttribute("gridstacknode")}l||(l=this._readAttr(a)),l._sidebarOrig={w:l.w,h:l.h}}l.grid||(l.el||(l={...l}),l._isExternal=!0,a.gridstackNode=l);const d=l.w||Math.round(a.offsetWidth/t)||1,c=l.h||Math.round(a.offsetHeight/e)||1;return l.grid&&l.grid!==this?(o._gridstackNodeOrig||(o._gridstackNodeOrig=l),o.gridstackNode=l={...l,w:d,h:c,grid:this},delete l.x,delete l.y,this.engine.cleanupNode(l).nodeBoundFix(l),l._initDD=l._isExternal=l._temporaryRemoved=!0):(l.w=d,l.h=c,l._temporaryRemoved=!0),z._itemRemoving(l.el,!1),ge.on(o,"drag",i),i(r,o,a),!1}).on(this.el,"dropout",(r,o,a)=>{const l=a?.gridstackNode||o.gridstackNode;return l&&(!l.grid||l.grid===this)&&(this._leave(o,a),this._isTemp&&this.removeAsSubGrid(l)),!1}).on(this.el,"drop",(r,o,a)=>{const l=a?.gridstackNode||o.gridstackNode;if(l?.grid===this&&!l._isExternal)return!1;const d=!!this.placeholder.parentElement,c=o!==a;this.placeholder.remove(),delete this.placeholder.gridstackNode;const u=d&&this.opts.animate;u&&this.setAnimation(!1);const h=o._gridstackNodeOrig;if(delete o._gridstackNodeOrig,d&&h?.grid&&h.grid!==this){const g=h.grid;g.engine.removeNodeFromLayoutCache(h),g.engine.removedNodes.push(h),g._triggerRemoveEvent()._triggerChangeEvent(),g.parentGridNode&&!g.engine.nodes.length&&g.opts.subGridDynamic&&g.removeAsSubGrid()}if(!l||(d&&(this.engine.cleanupNode(l),l.grid=this),delete l.grid?._isTemp,ge.off(o,"drag"),a!==o?(a.remove(),o=a):o.remove(),this._removeDD(o),!d))return!1;const f=l.subGrid?.el?.gridstack;return y.copyPos(l,this._readAttr(this.placeholder)),y.removePositioningStyles(o),c&&(l.content||l.subGridOpts||z.addRemoveCB)?(delete l.el,o=this.addWidget(l)):(this._prepareElement(o,!0,l),this.el.appendChild(o),this.resizeToContentCheck(!1,l),f&&(f.parentGridNode=l,f.opts.styleInHead||f._updateStyles(!0)),this._updateContainerHeight()),this.engine.addedNodes.push(l),this._triggerAddEvent(),this._triggerChangeEvent(),this.engine.endUpdate(),this._gsEventHandler.dropped&&this._gsEventHandler.dropped({...r,type:"dropped"},h&&h.grid?h:void 0,l),u&&this.setAnimation(this.opts.animate,!0),!1}),this}static _itemRemoving(e,t){if(!e)return;const i=e?e.gridstackNode:void 0;!i?.grid||e.classList.contains(i.grid.opts.removableOptions.decline)||(t?i._isAboutToRemove=!0:delete i._isAboutToRemove,t?e.classList.add("grid-stack-item-removing"):e.classList.remove("grid-stack-item-removing"))}_setupRemoveDrop(){if(typeof this.opts.removable!="string")return this;const e=document.querySelector(this.opts.removable);return e?(!this.opts.staticGrid&&!ge.isDroppable(e)&&ge.droppable(e,this.opts.removableOptions).on(e,"dropover",(t,i)=>z._itemRemoving(i,!0)).on(e,"dropout",(t,i)=>z._itemRemoving(i,!1)),this):this}prepareDragDrop(e,t=!1){const i=e?.gridstackNode;if(!i)return;const r=i.noMove||this.opts.disableDrag,o=i.noResize||this.opts.disableResize,a=this.opts.staticGrid||r&&o;if((t||a)&&(i._initDD&&(this._removeDD(e),delete i._initDD),a&&e.classList.add("ui-draggable-disabled","ui-resizable-disabled"),!t))return this;if(!i._initDD){let l,d;const c=(f,g)=>{this._gsEventHandler[f.type]&&this._gsEventHandler[f.type](f,f.target),l=this.cellWidth(),d=this.getCellHeight(!0),this._onStartMoving(e,f,g,i,l,d)},u=(f,g)=>{this._dragOrResize(e,f,g,i,l,d)},h=f=>{this.placeholder.remove(),delete this.placeholder.gridstackNode,delete i._moving,delete i._event,delete i._lastTried;const g=i.w!==i._orig.w,w=f.target;if(!(!w.gridstackNode||w.gridstackNode.grid!==this)){if(i.el=w,i._isAboutToRemove){const E=e.gridstackNode.grid;E._gsEventHandler[f.type]&&E._gsEventHandler[f.type](f,w),E.engine.nodes.push(i),E.removeWidget(e,!0,!0)}else y.removePositioningStyles(w),i._temporaryRemoved?(y.copyPos(i,i._orig),this._writePosAttr(w,i),this.engine.addNode(i)):this._writePosAttr(w,i),this._gsEventHandler[f.type]&&this._gsEventHandler[f.type](f,w);this._extraDragRow=0,this._updateContainerHeight(),this._triggerChangeEvent(),this.engine.endUpdate(),f.type==="resizestop"&&(Number.isInteger(i.sizeToContent)&&(i.sizeToContent=i.h),this.resizeToContentCheck(g,i))}};ge.draggable(e,{start:c,stop:h,drag:u}).resizable(e,{start:c,stop:h,resize:u}),i._initDD=!0}return ge.draggable(e,r?"disable":"enable").resizable(e,o?"disable":"enable"),this}_onStartMoving(e,t,i,r,o,a){if(this.engine.cleanNodes().beginUpdate(r),this._writePosAttr(this.placeholder,r),this.el.appendChild(this.placeholder),this.placeholder.gridstackNode=r,r.grid?.el)this.dragTransform=y.getValuesFromTransformedElement(e);else if(this.placeholder&&this.placeholder.closest(".grid-stack")){const l=this.placeholder.closest(".grid-stack");this.dragTransform=y.getValuesFromTransformedElement(l)}else this.dragTransform={xScale:1,xOffset:0,yScale:1,yOffset:0};if(r.el=this.placeholder,r._lastUiPosition=i.position,r._prevYPix=i.position.top,r._moving=t.type==="dragstart",delete r._lastTried,t.type==="dropover"&&r._temporaryRemoved&&(this.engine.addNode(r),r._moving=!0),this.engine.cacheRects(o,a,this.opts.marginTop,this.opts.marginRight,this.opts.marginBottom,this.opts.marginLeft),t.type==="resizestart"){const l=this.getColumn()-r.x,d=(this.opts.maxRow||Number.MAX_SAFE_INTEGER)-r.y;ge.resizable(e,"option","minWidth",o*Math.min(r.minW||1,l)).resizable(e,"option","minHeight",a*Math.min(r.minH||1,d)).resizable(e,"option","maxWidth",o*Math.min(r.maxW||Number.MAX_SAFE_INTEGER,l)).resizable(e,"option","maxWidthMoveLeft",o*Math.min(r.maxW||Number.MAX_SAFE_INTEGER,r.x+r.w)).resizable(e,"option","maxHeight",a*Math.min(r.maxH||Number.MAX_SAFE_INTEGER,d)).resizable(e,"option","maxHeightMoveUp",a*Math.min(r.maxH||Number.MAX_SAFE_INTEGER,r.y+r.h))}}_dragOrResize(e,t,i,r,o,a){const l={...r._orig};let d,c=this.opts.marginLeft,u=this.opts.marginRight,h=this.opts.marginTop,f=this.opts.marginBottom;const g=Math.round(a*.1),w=Math.round(o*.1);if(c=Math.min(c,w),u=Math.min(u,w),h=Math.min(h,g),f=Math.min(f,g),t.type==="drag"){if(r._temporaryRemoved)return;const b=i.position.top-r._prevYPix;r._prevYPix=i.position.top,this.opts.draggable.scroll!==!1&&y.updateScrollPosition(e,i.position,b);const N=i.position.left+(i.position.left>r._lastUiPosition.left?-u:c),M=i.position.top+(i.position.top>r._lastUiPosition.top?-f:h);l.x=Math.round(N/o),l.y=Math.round(M/a);const C=this._extraDragRow;if(this.engine.collide(r,l)){const S=this.getRow();let D=Math.max(0,l.y+r.h-S);this.opts.maxRow&&S+D>this.opts.maxRow&&(D=Math.max(0,this.opts.maxRow-S)),this._extraDragRow=D}else this._extraDragRow=0;if(this._extraDragRow!==C&&this._updateContainerHeight(),r.x===l.x&&r.y===l.y)return}else if(t.type==="resize"){if(l.x<0||(y.updateScrollResize(t,e,a),l.w=Math.round((i.size.width-c)/o),l.h=Math.round((i.size.height-h)/a),r.w===l.w&&r.h===l.h)||r._lastTried&&r._lastTried.w===l.w&&r._lastTried.h===l.h)return;const b=i.position.left+c,N=i.position.top+h;l.x=Math.round(b/o),l.y=Math.round(N/a),d=!0}r._event=t,r._lastTried=l;const E={x:i.position.left+c,y:i.position.top+h,w:(i.size?i.size.width:r.w*o)-c-u,h:(i.size?i.size.height:r.h*a)-h-f};if(this.engine.moveNodeCheck(r,{...l,cellWidth:o,cellHeight:a,rect:E,resizing:d})){r._lastUiPosition=i.position,this.engine.cacheRects(o,a,h,u,f,c),delete r._skipDown,d&&r.subGrid&&r.subGrid.onResize(),this._extraDragRow=0,this._updateContainerHeight();const b=t.target;r._sidebarOrig||this._writePosAttr(b,r),this._gsEventHandler[t.type]&&this._gsEventHandler[t.type](t,b)}}_leave(e,t){t=t||e;const i=t.gridstackNode;if(!i||(t.style.transform=t.style.transformOrigin=null,ge.off(e,"drag"),i._temporaryRemoved))return;i._temporaryRemoved=!0,this.engine.removeNode(i),i.el=i._isExternal&&t?t:e;const r=i._sidebarOrig;i._isExternal&&this.engine.cleanupNode(i),i._sidebarOrig=r,this.opts.removable===!0&&z._itemRemoving(e,!0),e._gridstackNodeOrig?(e.gridstackNode=e._gridstackNodeOrig,delete e._gridstackNodeOrig):i._isExternal&&this.engine.restoreInitial()}commit(){return Oo(this,this.batchUpdate(!1),"commit","batchUpdate","5.2"),this}}z.renderCB=(n,e)=>{n&&e?.content&&(n.textContent=e.content)},z.resizeToContentParent=".grid-stack-item-content",z.Utils=y,z.Engine=Oe,z.GDRev="11.5.1";const Ao=["data-id","data-testid","gs-h","gs-w","gs-x","gs-y"],Io={class:"grid-stack-item-content"},qo=Re(s.defineComponent({__name:"DraggableGridLayout",props:{tiles:{},tileHeight:{default:je},columns:{default:lt}},emits:["update-tiles"],setup(n,{expose:e,emit:t}){const i=n,r=t,o=s.ref(null),a=s.ref(new Map(i.tiles.map(g=>[`${g.id}`,g])));let l=null;const d=g=>`[data-id="${g}"]`,c=g=>g.map(w=>{const E=a.value.get(`${w.el?.getAttribute("data-id")}`);if(E)return{...E,layout:{position:{col:Number(w.x),row:Number(w.y)},size:{cols:Number(w.w),rows:Number(w.h)}}}}).filter(w=>w!==void 0),u=(g,w)=>{l&&(c(w).forEach(b=>{a.value.set(`${b.id}`,b)}),r("update-tiles",Array.from(a.value.values())))},h=(g,w)=>{w.forEach(E=>{a.value.delete(`${E.el?.getAttribute("data-id")}`)}),r("update-tiles",Array.from(a.value.values()))};s.onMounted(()=>{o.value&&(l=z.init({margin:5,column:i.columns,cellHeight:i.tileHeight,resizable:{handles:"se, sw"},handle:".tile-header"},o.value),l.on("change",u),l.on("added",u),l.on("removed",h))}),s.onUnmounted(()=>{l&&l.destroy(!1)});const f=g=>{if(l&&o.value){const w=o.value.querySelector(d(g));w&&l.removeWidget(w)}};return s.watch(()=>i.tiles.length,async(g,w)=>{if(g>w&&l){const E=i.tiles.slice(w);for(const b of E)a.value.set(`${b.id}`,b),await s.nextTick(),l.makeWidget(d(b.id),{autoPosition:!0,w:b.layout.size.cols,h:b.layout.size.rows})}}),s.watchEffect(()=>{i.tiles.forEach(g=>{a.value.set(`${g.id}`,g)})}),e({removeWidget:f}),(g,w)=>(s.openBlock(),s.createElementBlock("div",{ref_key:"gridContainer",ref:o,class:"grid-stack"},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(i.tiles,E=>(s.openBlock(),s.createElementBlock("div",{key:E.id,class:"grid-stack-item","data-id":`${E.id}`,"data-testid":`grid-stack-item-${E.id}`,"gs-h":E.layout.size.rows,"gs-lazy-load":!0,"gs-w":E.layout.size.cols,"gs-x":E.layout.position.col,"gs-y":E.layout.position.row},[s.createElementVNode("div",Io,[s.renderSlot(g.$slots,"tile",{tile:E},void 0,!0)])],8,Ao))),128))],512))}}),[["__scopeId","data-v-0b128fad"]]),Lo=n=>{const e={position:{col:0,row:0},size:n.layout.size};if(n.type==="slottable")return{id:crypto.randomUUID(),type:"slottable",layout:e};const t=n.meta,i={...t,chart:{...t.chart}};return"chart_title"in i.chart&&(i.chart.chart_title=i.chart.chart_title?`Copy of ${i.chart.chart_title}`:""),{id:crypto.randomUUID(),type:"chart",definition:i,layout:e}},Po={key:0,class:"fullscreen-header"},Bo={key:0,class:"tile-container slottable-tile"},Ho=Re(s.defineComponent({__name:"DashboardRenderer",props:s.mergeModels({context:{},preview:{type:Boolean,default:!1}},{modelValue:{required:!0},modelModifiers:{}}),emits:s.mergeModels(["edit-tile","tile-time-range-zoom","tiles-loaded"],["update:modelValue"]),setup(n,{expose:e,emit:t}){if(s.useCssVars(v=>({v0e9c369a:u.value})),n.context.disableCoordination!==!0){const v=K.useInteractionCoordinator();s.provide(Ci,v)}const i=t,r=s.useModel(n,"modelValue"),{i18n:o}=ae.useI18n(),a=s.ref(0),l=s.ref(null),d=s.ref(),c=s.ref(),u=s.ref("scale(1)"),h=new Set,f=s.inject(ke);f||(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")),ae.useRequestQueue();const{exportPdf:g,exportState:w}=ae.useExportPdf(c),E=v=>{h.add(v.id);const T=M.value.filter(x=>!S(x)).length;h.size>=T&&i("tiles-loaded",!0)},b=s.computed(()=>{const T=`renderer.trendRange.${J.value.type==="absolute"?"custom":J.value.time_range}`;return o.te(T)?o.t(T):""}),N=(v,T)=>{const x=v.layout.position.row-T.layout.position.row;return x!==0?x:v.layout.position.col-T.layout.position.col},M=s.computed(()=>r.value.tiles.map(v=>{if(he.value&&!v.id&&console.warn("No id provided for tile. One will be generated automatically,","however tracking changes to this tile may not work as expected.",v),v.type==="slottable")return{layout:v.layout,type:v.type,id:v.id??crypto.randomUUID()};let T=v.definition;const x=v.type??"chart",Y=gs(T,b.value);return Y!==T.header_description&&(T={...T,header_description:Y}),{layout:v.layout,meta:T,type:x,id:v.id??crypto.randomUUID()}})),C=v=>{i("edit-tile",v)},S=v=>v.type==="slottable"?!0:v.meta?.chart.type==="slottable",D=v=>v.type==="slottable",B=v=>{if(v.type==="slottable")return v.id;const T=v.meta?.chart;return T&&D(T)?T.id:void 0},H=v=>{try{const T=Lo(v);r.value.tiles.push(JSON.parse(JSON.stringify(T)))}catch(T){console.warn(T)}},p=v=>{l.value&&l.value.removeWidget(v.id),h.delete(v.id)},m=()=>{h.clear(),a.value++},_=v=>{const T=v.map(x=>x.type==="slottable"?{id:x.id,type:x.type,layout:x.layout}:{id:x.id,type:x.type,layout:x.layout,definition:x.meta});r.value.tiles=T.sort(N)},k=async()=>{if(u.value="scale(1)",await s.nextTick(),c.value){const{availWidth:v,availHeight:T}=window.screen,{width:x,height:Y}=c.value.getBoundingClientRect(),G=Math.min(T/Y,v/x);u.value=`scale(${G})`}},R=()=>{d.value&&(document.fullscreenElement?document.exitFullscreen():d.value.requestFullscreen())},A=s.ref(!1),te=()=>{A.value=document.fullscreenElement!==null,A.value&&k()},de=s.computed(()=>r.value.preset_filters??[]),{editable:he,enrichedContext:X,queryReady:ne,showTileActions:L,timeSpec:J}=ae.useDashboardContext({globalFilters:de,context:s.computed(()=>n.context),isFullscreen:A,preview:s.computed(()=>n.preview)});return e({refresh:m,toggleFullscreen:R,exportPdf:g,pdfExportState:w}),(v,T)=>{const x=s.resolveComponent("KAlert");return s.openBlock(),s.createElementBlock("div",{ref_key:"dashboardContainer",ref:d,class:s.normalizeClass(["kong-ui-public-dashboard-renderer",{"is-fullscreen":A.value}]),onFullscreenchange:te},[s.createElementVNode("div",{ref_key:"layoutContainer",ref:c,class:"layout"},[s.unref(f)&&A.value?(s.openBlock(),s.createElementBlock("div",Po,[s.renderSlot(v.$slots,"fullscreenHeader",{},void 0,!0)])):s.createCommentVNode("",!0),s.unref(f)?(s.openBlock(),s.createBlock(s.resolveDynamicComponent(s.unref(he)&&!A.value?qo:nn),{key:2,ref_key:"gridLayoutRef",ref:l,columns:r.value.columns,"tile-height":r.value.tile_height,tiles:M.value,onUpdateTiles:_},{tile:s.withCtx(({tile:Y})=>[S(Y)?(s.openBlock(),s.createElementBlock("div",Bo,[s.renderSlot(v.$slots,B(Y),{},void 0,!0)])):(s.openBlock(),s.createBlock(tn,{key:A.value?`${Y.id}-tile`:`${Y.id}-tile-fullscreen`,"refresh-counter":a.value,"onUpdate:refreshCounter":T[0]||(T[0]=G=>a.value=G),class:"tile-container",context:s.unref(X),definition:Y.meta,height:Y.layout.size.rows*(r.value.tile_height||s.unref(je))+parseInt(s.unref(bi),10),"hide-actions":!s.unref(L),"is-fullscreen":A.value,preview:n.preview,"query-ready":s.unref(ne),"tile-id":Y.id,"tile-type":Y.type,onDuplicateTile:G=>H(Y),onEditTile:G=>C(Y),onRemoveTile:G=>p(Y),onTileLoaded:G=>E(Y),onTileTimeRangeZoom:T[1]||(T[1]=G=>i("tile-time-range-zoom",G))},null,8,["refresh-counter","context","definition","height","hide-actions","is-fullscreen","preview","query-ready","tile-id","tile-type","onDuplicateTile","onEditTile","onRemoveTile","onTileLoaded"]))]),_:3},40,["columns","tile-height","tiles"])):(s.openBlock(),s.createBlock(x,{key:1,appearance:"danger"},{default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(s.unref(o).t("renderer.noQueryBridge")),1)]),_:1}))],512)],34)}}}),[["__scopeId","data-v-a3dc2a78"]]),Fo=s.defineComponent({__name:"DashboardTilePreview",props:{context:{},definition:{},globalFilters:{default:()=>[]},preview:{type:Boolean,default:!1}},emits:["chart-data","tile-time-range-zoom","tile-bounds-change"],setup(n,{expose:e,emit:t}){const i=s.useTemplateRef("root"),r=s.useTemplateRef("dashboard-tile"),o=crypto.randomUUID(),a=t,l=C=>{a("tile-time-range-zoom",C)},d=C=>{a("chart-data",C)},c=C=>{a("tile-bounds-change",C)},{i18n:u}=ae.useI18n(),{enrichedContext:h,queryReady:f}=ae.useDashboardContext({globalFilters:s.toRef(()=>n.globalFilters),context:s.toRef(()=>n.context),preview:s.computed(()=>n.preview)}),g=s.computed(()=>De(n.definition)),w=s.computed(()=>g.value?"columns"in n.definition.query&&!n.definition.query.columns?.length:!("metrics"in n.definition.query)||!n.definition.query.metrics||n.definition.query.metrics.length===0),E=s.ref(je);let b;s.onMounted(()=>{const C=i.value?.parentElement;C&&(E.value=C.getBoundingClientRect().height,b=new ResizeObserver(([S])=>{const{height:D}=S.contentRect;E.value=D}),b.observe(C))}),s.onUnmounted(()=>b?.disconnect());const N=s.ref(0);return e({refresh:()=>{N.value++},getExportData:()=>r.value?.getExportData()}),(C,S)=>{const D=s.resolveComponent("KEmptyState");return s.openBlock(),s.createElementBlock("div",{ref_key:"root",ref:i,"data-testid":"dashboard-tile-preview-root"},[w.value?(s.openBlock(),s.createBlock(D,{key:0,"action-button-visible":!1,"data-testid":"chart-not-configured-empty-state"},{title:s.withCtx(()=>[s.createElementVNode("p",null,s.toDisplayString(s.unref(u).t("renderer.not_configured.title")),1)]),default:s.withCtx(()=>[s.createElementVNode("p",null,s.toDisplayString(s.unref(u).t("renderer.not_configured.description")),1)]),_:1})):(s.openBlock(),s.createBlock(tn,{key:1,ref:"dashboard-tile","refresh-counter":N.value,"onUpdate:refreshCounter":S[0]||(S[0]=B=>N.value=B),context:{...s.unref(h),editable:!1},definition:n.definition,height:E.value,"hide-actions":"",preview:n.preview,"query-ready":s.unref(f),"show-refresh":"","tile-id":s.unref(o),onChartData:d,onTileBoundsChange:c,onTileTimeRangeZoom:l},null,8,["refresh-counter","context","definition","height","preview","query-ready","tile-id"]))],512)}}}),$o=n=>{if(n.type!=="chart")return n;const e=n.definition?.query;if(!e)return n;if(e.datasource==="api_usage"){console.warn("[@kong-ui-public/dashboard-renderer] A tile was filtered out for the Basic Tier",n);return}return n},Uo=n=>{if(n.type!=="chart"||De(n.definition))return n;const e=n.definition?.query;if(!e)return n;const t={...e,datasource:e.datasource==="basic"?"api_usage":e.datasource};return{...n,definition:{...n.definition,query:t}}},Wo=(n,e=lt)=>{if(!n.length)return[];let t=0,i=0,r=0;const o=[];for(const a of n){const l=a.layout?.size?.cols??1,d=a.layout?.size?.rows??1;i+l>e&&(t+=r,i=0,r=0);const c={...a,layout:{...a.layout,position:{...a.layout?.position??{},col:i,row:t}}};o.push(c),i+=l,r=Math.max(r,d)}return o},Go=(n,e)=>{if(e){const r=n.tiles.map(Uo);return{...n,tiles:r}}const t=n.tiles.map($o).filter(r=>r!==void 0),i=Wo(t,n.columns);return{...n,tiles:i}},Yo=Object.freeze(Object.defineProperty({__proto__:null,default:s.defineComponent({__name:"GeoMapRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},activeMetric:{},headerDescription:{},requestsLink:{},exploreLink:{},zoomConfiguration:{}},emits:["bounds-change"],setup(n,{emit:e}){const t=n,i=s.ref(void 0),r=s.computed(()=>i.value?Wt.exploreResultToCountryMetrics(i.value):{}),o=s.computed(()=>i.value?i.value?.meta.metric_names&&i.value.meta.metric_names[0]:""),a=s.computed(()=>t.query.limit!==void 0&&t.query.limit>0?t.query.limit:K.COUNTRIES.length),l=s.computed(()=>{if(!t.query.filters?.find(({field:g,operator:w})=>g==="country_code"&&(w==="not_empty"||w==="empty"||w==="in"))){const g={field:"country_code",operator:"not_empty"};return{...t.query,filters:[...t.query.filters||[],g]}}return t.query}),d=s.computed(()=>{if(!i.value)return"";const f=i?.value?.meta.metric_units,g=i?.value?.meta?.metric_names;return f&&g&&f[g[0]]}),c=f=>{i.value=f},u=e,h=f=>{u("bounds-change",f)};return(f,g)=>(s.openBlock(),s.createBlock(qe,{context:n.context,"limit-override":a.value,query:l.value,"query-ready":n.queryReady,"refresh-counter":n.refreshCounter,onChartData:c},{default:s.withCtx(()=>[s.createVNode(s.unref(Wt.AnalyticsGeoMap),{bounds:n.chartOptions.bounds,"country-metrics":r.value,"fit-to-country":n.chartOptions.fit_to_country,metric:o.value,"metric-unit":d.value,"with-legend":n.chartOptions.legend||!1,onBoundsChange:h},null,8,["bounds","country-metrics","fit-to-country","metric","metric-unit","with-legend"])]),_:1},8,["context","limit-override","query","query-ready","refresh-counter"]))}})},Symbol.toStringTag,{value:"Module"}));W.CP_ID_TOKEN=ki,W.CsvExportModal=Hi,W.DASHBOARD_COLS=lt,W.DEFAULT_TILE_HEIGHT=je,W.DEFAULT_TILE_REFRESH_INTERVAL_MS=Ti,W.DashboardRenderer=Ho,W.DashboardTilePreview=Fo,W.ENTITY_ID_TOKEN=Rt,W.FULLSCREEN_LONG_REFRESH_INTERVAL_MS=Di,W.FULLSCREEN_SHORT_REFRESH_INTERVAL_MS=Si,W.GridLayout=nn,W.INJECT_DASHBOARD_COORDINATOR=Ci,W.INJECT_QUERY_PROVIDER=ke,W.TIMEFRAME_TOKEN=Ri,W.configureAllowedDefinition=Go,W.getTimeRangeDurationMs=Nt,W.isTimeRangeUnsupported=Mt,W.limitTimeRange=zt,Object.defineProperty(W,Symbol.toStringTag,{value:"Module"})}));
@@ -3673,7 +3673,7 @@ function pa() {
3673
3673
  return {
3674
3674
  // @ts-ignore dynamic lookup
3675
3675
  seriesName: s.te(r) ? s.t(r) : i,
3676
- valueFormatter: (o) => e(o, n, { translateUnit: ma }).trim()
3676
+ valueFormatter: (o) => e(o, n, { translateUnit: ma })
3677
3677
  };
3678
3678
  };
3679
3679
  }
@@ -4889,7 +4889,7 @@ const tt = /* @__PURE__ */ pe({
4889
4889
  preview: b(() => s.preview)
4890
4890
  }), r = ds(s, "refreshCounter"), o = () => {
4891
4891
  C.value = !0, r.value++;
4892
- }, a = t, c = cs(() => import("./GeoMapRenderer-C31VcVcd.js")), l = Ie($e), u = ut(), { datasourceConfigMap: d, stripUnknownFilters: h } = at(u), { i18n: g } = ye.useI18n(), v = Q(), k = Q({ status: "loading" }), _ = Q(!1), A = Q(), N = Q(!1), C = Q(!0), O = b(() => s.definition.chart), z = b(() => "chart_title" in O.value ? O.value.chart_title : void 0), B = b(() => s.definition.header_description), W = b(() => O.value.type === "slottable"), m = b(() => Fe(s.definition) || Xt(s.definition) ? !1 : !("allow_csv_export" in O.value) || O.value.allow_csv_export !== !1), {
4892
+ }, a = t, c = cs(() => import("./GeoMapRenderer-kFIU3WlC.js")), l = Ie($e), u = ut(), { datasourceConfigMap: d, stripUnknownFilters: h } = at(u), { i18n: g } = ye.useI18n(), v = Q(), k = Q({ status: "loading" }), _ = Q(!1), A = Q(), N = Q(!1), C = Q(!0), O = b(() => s.definition.chart), z = b(() => "chart_title" in O.value ? O.value.chart_title : void 0), B = b(() => s.definition.header_description), W = b(() => O.value.type === "slottable"), m = b(() => Fe(s.definition) || Xt(s.definition) ? !1 : !("allow_csv_export" in O.value) || O.value.allow_csv_export !== !1), {
4893
4893
  exploreLinkKebabMenu: f,
4894
4894
  requestsLinkKebabMenu: y,
4895
4895
  canShowKebabMenu: R,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kong-ui-public/dashboard-renderer",
3
- "version": "8.36.2-pr.3896.2e2d9b289.0",
3
+ "version": "8.36.2",
4
4
  "type": "module",
5
5
  "main": "./dist/dashboard-renderer.umd.js",
6
6
  "module": "./dist/dashboard-renderer.es.js",
@@ -21,19 +21,19 @@
21
21
  "access": "public"
22
22
  },
23
23
  "devDependencies": {
24
- "@kong-ui-public/analytics-chart": "^10.39.1-pr.3896.2e2d9b289.0",
25
- "@kong-ui-public/analytics-config-store": "^1.4.54",
26
- "@kong-ui-public/analytics-geo-map": "^1.9.48-pr.3896.2e2d9b289.0",
27
- "@kong-ui-public/analytics-metric-provider": "^11.6.61-pr.3896.2e2d9b289.0",
28
- "@kong-ui-public/analytics-utilities": "^12.51.0",
29
- "@kong-ui-public/echarts": "^0.7.1-pr.3896.2e2d9b289.0",
30
- "@kong-ui-public/entities-shared": "^3.68.4-pr.3896.2e2d9b289.0",
24
+ "@kong-ui-public/analytics-chart": "^10.39.1",
25
+ "@kong-ui-public/analytics-config-store": "^1.4.55",
26
+ "@kong-ui-public/analytics-geo-map": "^1.9.48",
27
+ "@kong-ui-public/analytics-metric-provider": "^11.6.61",
28
+ "@kong-ui-public/analytics-utilities": "^12.51.1",
29
+ "@kong-ui-public/echarts": "^0.7.0",
30
+ "@kong-ui-public/entities-shared": "^3.68.3",
31
31
  "@kong-ui-public/i18n": "^2.5.1",
32
- "@kong-ui-public/sandbox-layout": "^2.7.8-pr.3896.2e2d9b289.0",
33
- "@kong-ui-public/table-data-grid": "^0.7.1-pr.3896.2e2d9b289.0",
32
+ "@kong-ui-public/sandbox-layout": "^2.7.7",
33
+ "@kong-ui-public/table-data-grid": "^0.7.0",
34
34
  "@kong/design-tokens": "3.3.1",
35
35
  "@kong/icons": "^1.62.1",
36
- "@kong/kongponents": "9.64.23",
36
+ "@kong/kongponents": "9.64.18",
37
37
  "@types/file-saver": "^2.0.7",
38
38
  "@types/papaparse": "^5.5.2",
39
39
  "ajv": "^8.20.0",
@@ -60,14 +60,14 @@
60
60
  "errorLimit": "2MB"
61
61
  },
62
62
  "peerDependencies": {
63
- "@kong-ui-public/analytics-chart": "^10.39.1-pr.3896.2e2d9b289.0",
64
- "@kong-ui-public/analytics-config-store": "^1.4.54",
65
- "@kong-ui-public/analytics-geo-map": "^1.9.48-pr.3896.2e2d9b289.0",
66
- "@kong-ui-public/analytics-metric-provider": "^11.6.61-pr.3896.2e2d9b289.0",
67
- "@kong-ui-public/analytics-utilities": "^12.51.0",
68
- "@kong-ui-public/echarts": "^0.7.1-pr.3896.2e2d9b289.0",
63
+ "@kong-ui-public/analytics-chart": "^10.39.1",
64
+ "@kong-ui-public/analytics-config-store": "^1.4.55",
65
+ "@kong-ui-public/analytics-geo-map": "^1.9.48",
66
+ "@kong-ui-public/analytics-metric-provider": "^11.6.61",
67
+ "@kong-ui-public/analytics-utilities": "^12.51.1",
68
+ "@kong-ui-public/echarts": "^0.7.0",
69
69
  "@kong-ui-public/i18n": "^2.5.1",
70
- "@kong-ui-public/table-data-grid": "^0.7.1-pr.3896.2e2d9b289.0",
70
+ "@kong-ui-public/table-data-grid": "^0.7.0",
71
71
  "@kong/icons": "^1.58.0",
72
72
  "@kong/kongponents": "^9.64.0",
73
73
  "swrv": "^1.3.0",