@kong-ui-public/dashboard-renderer 8.9.10 → 8.9.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{GeoMapRenderer-DwpwiD-Y.js → GeoMapRenderer-CTei4zeC.js} +1 -1
- package/dist/dashboard-renderer.es.js +1 -1
- package/dist/dashboard-renderer.umd.js +7 -3
- package/dist/{index-Df_ifG7X.js → index-DGAMoPpS.js} +1025 -980
- package/dist/style.css +1 -1
- package/dist/types/components/DashboardRenderer.vue.d.ts +192 -84
- package/dist/types/components/DashboardRenderer.vue.d.ts.map +1 -1
- package/dist/types/components/DashboardTile.vue.d.ts +282 -120
- package/dist/types/components/DashboardTile.vue.d.ts.map +1 -1
- package/dist/types/composables/useContextLinks.d.ts +7 -0
- package/dist/types/composables/useContextLinks.d.ts.map +1 -1
- package/dist/types/composables/useIssueQuery.d.ts.map +1 -1
- package/package.json +14 -14
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
(function(v,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue"),require("@kong-ui-public/analytics-utilities"),require("@kong-ui-public/analytics-chart"),require("@kong-ui-public/analytics-metric-provider"),require("@kong/icons"),require("@kong-ui-public/analytics-config-store"),require("swrv"),require("axios"),require("@kong-ui-public/i18n"),require("@kong-ui-public/analytics-geo-map")):typeof define=="function"&&define.amd?define(["exports","vue","@kong-ui-public/analytics-utilities","@kong-ui-public/analytics-chart","@kong-ui-public/analytics-metric-provider","@kong/icons","@kong-ui-public/analytics-config-store","swrv","axios","@kong-ui-public/i18n","@kong-ui-public/analytics-geo-map"],n):(v=typeof globalThis<"u"?globalThis:v||self,n(v["kong-ui-public-dashboard-renderer"]={},v.Vue,v["kong-ui-public-analytics-utilities"],v["kong-ui-public-analytics-chart"],v["kong-ui-public-analytics-metric-provider"],v.KongIcons,v["kong-ui-public-analytics-config-store"],v.swrv,v.axios,v["kong-ui-public-i18n"],v["kong-ui-public-analytics-geo-map"]))})(this,function(v,n,S,ie,ze,de,Ee,At,Ki,Ye,Xe){"use strict";var Wi=Object.defineProperty;var kt=v=>{throw TypeError(v)};var Vi=(v,n,S)=>n in v?Wi(v,n,{enumerable:!0,configurable:!0,writable:!0,value:S}):v[n]=S;var Rt=(v,n,S)=>Vi(v,typeof n!="symbol"?n+"":n,S),Ke=(v,n,S)=>n.has(v)||kt("Cannot "+S);var w=(v,n,S)=>(Ke(v,n,"read from private field"),S?S.call(v):n.get(v)),B=(v,n,S)=>n.has(v)?kt("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(v):n.set(v,S),M=(v,n,S,ie)=>(Ke(v,n,"write to private field"),ie?ie.call(v,S):n.set(v,S),S),P=(v,n,S)=>(Ke(v,n,"access private method"),S);var De=(v,n,S,ie)=>({set _(ze){M(v,n,ze,S)},get _(){return w(v,n,ie)}});var j,fe,me,ae,ke,ge,Re,Y,pe,W,Te,X,ye,oe,Se,Be,D,Tt,St,Dt,zt,Nt,Pe,Qe,je,$e,Lt,Fe;var Ze=(l=>(l.VALIDATING="VALIDATING",l.VALIDATING_HAS_DATA="VALIDATING_HAS_DATA",l.PENDING="PENDING",l.SUCCESS="SUCCESS",l.SUCCESS_HAS_DATA="SUCCESS_HAS_DATA",l.ERROR="ERROR",l.STALE_IF_ERROR="STALE_IF_ERROR",l))(Ze||{});const Ot=l=>{var e,t,i,s,r;return l?!!((e=Object.keys(l))!=null&&e.length||(t=l.data)!=null&&t.length||(s=(i=l.data)==null?void 0:i.data)!=null&&s.length||!((r=l.data)!=null&&r.data)&&typeof l.data=="object"&&Object.keys(l==null?void 0:l.data).length):!1};function Ht(l=n.ref({}),e,t,i=Ot){const s=n.ref("PENDING");return n.watchEffect(()=>{const r=i(l.value);if(l.value&&r&&t.value){s.value="VALIDATING_HAS_DATA";return}if(l.value&&t.value){s.value="VALIDATING";return}if(l.value&&e.value){s.value="STALE_IF_ERROR";return}if(l.value===void 0&&!e.value){s.value="PENDING";return}if(l.value&&!e.value&&r){s.value="SUCCESS_HAS_DATA";return}if(l.value&&!e.value){s.value="SUCCESS";return}l.value===void 0&&e&&(s.value="ERROR")}),{state:s,swrvState:Ze}}const It={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"},csvExport:{defaultFilename:"Chart export",exportAsCsv:"Export as CSV"},jumpToExplore:"Explore",jumpToRequests:"View requests",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 Mt(){const l=Ye.createI18n("en-us",It);return{i18n:l,i18nT:Ye.i18nTComponent(l)}}const ue=170,Ne=6,ne="analytics-query-provider",Ge="{entity-id}",Je="{cp-id}",et="{timeframe}",tt=30*1e3,it=3e5,st=36e5;function qt(){const l=n.inject(ne);return{evaluateFeatureFlag:(t,i)=>l?l.evaluateFeatureFlagFn(t,i):i}}function Bt(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}var rt={exports:{}};(function(l){var e=Object.prototype.hasOwnProperty,t="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(t=!1));function s(u,c,d){this.fn=u,this.context=c,this.once=d||!1}function r(u,c,d,h,m){if(typeof d!="function")throw new TypeError("The listener must be a function");var p=new s(d,h||u,m),y=t?t+c:c;return u._events[y]?u._events[y].fn?u._events[y]=[u._events[y],p]:u._events[y].push(p):(u._events[y]=p,u._eventsCount++),u}function a(u,c){--u._eventsCount===0?u._events=new i:delete u._events[c]}function o(){this._events=new i,this._eventsCount=0}o.prototype.eventNames=function(){var c=[],d,h;if(this._eventsCount===0)return c;for(h in d=this._events)e.call(d,h)&&c.push(t?h.slice(1):h);return Object.getOwnPropertySymbols?c.concat(Object.getOwnPropertySymbols(d)):c},o.prototype.listeners=function(c){var d=t?t+c:c,h=this._events[d];if(!h)return[];if(h.fn)return[h.fn];for(var m=0,p=h.length,y=new Array(p);m<p;m++)y[m]=h[m].fn;return y},o.prototype.listenerCount=function(c){var d=t?t+c:c,h=this._events[d];return h?h.fn?1:h.length:0},o.prototype.emit=function(c,d,h,m,p,y){var _=t?t+c:c;if(!this._events[_])return!1;var g=this._events[_],R=arguments.length,O,x;if(g.fn){switch(g.once&&this.removeListener(c,g.fn,void 0,!0),R){case 1:return g.fn.call(g.context),!0;case 2:return g.fn.call(g.context,d),!0;case 3:return g.fn.call(g.context,d,h),!0;case 4:return g.fn.call(g.context,d,h,m),!0;case 5:return g.fn.call(g.context,d,h,m,p),!0;case 6:return g.fn.call(g.context,d,h,m,p,y),!0}for(x=1,O=new Array(R-1);x<R;x++)O[x-1]=arguments[x];g.fn.apply(g.context,O)}else{var H=g.length,L;for(x=0;x<H;x++)switch(g[x].once&&this.removeListener(c,g[x].fn,void 0,!0),R){case 1:g[x].fn.call(g[x].context);break;case 2:g[x].fn.call(g[x].context,d);break;case 3:g[x].fn.call(g[x].context,d,h);break;case 4:g[x].fn.call(g[x].context,d,h,m);break;default:if(!O)for(L=1,O=new Array(R-1);L<R;L++)O[L-1]=arguments[L];g[x].fn.apply(g[x].context,O)}}return!0},o.prototype.on=function(c,d,h){return r(this,c,d,h,!1)},o.prototype.once=function(c,d,h){return r(this,c,d,h,!0)},o.prototype.removeListener=function(c,d,h,m){var p=t?t+c:c;if(!this._events[p])return this;if(!d)return a(this,p),this;var y=this._events[p];if(y.fn)y.fn===d&&(!m||y.once)&&(!h||y.context===h)&&a(this,p);else{for(var _=0,g=[],R=y.length;_<R;_++)(y[_].fn!==d||m&&!y[_].once||h&&y[_].context!==h)&&g.push(y[_]);g.length?this._events[p]=g.length===1?g[0]:g:a(this,p)}return this},o.prototype.removeAllListeners=function(c){var d;return c?(d=t?t+c:c,this._events[d]&&a(this,d)):(this._events=new i,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=t,o.EventEmitter=o,l.exports=o})(rt);var Pt=rt.exports;const $t=Bt(Pt);class nt extends Error{constructor(e){super(e),this.name="TimeoutError"}}class Ft extends Error{constructor(e){super(),this.name="AbortError",this.message=e}}const ot=l=>globalThis.DOMException===void 0?new Ft(l):new DOMException(l),at=l=>{const e=l.reason===void 0?ot("This operation was aborted."):l.reason;return e instanceof Error?e:ot(e)};function Gt(l,e){const{milliseconds:t,fallback:i,message:s,customTimers:r={setTimeout,clearTimeout}}=e;let a,o;const c=new Promise((d,h)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){const{signal:p}=e;p.aborted&&h(at(p)),o=()=>{h(at(p))},p.addEventListener("abort",o,{once:!0})}if(t===Number.POSITIVE_INFINITY){l.then(d,h);return}const m=new nt;a=r.setTimeout.call(void 0,()=>{if(i){try{d(i())}catch(p){h(p)}return}typeof l.cancel=="function"&&l.cancel(),s===!1?d():s instanceof Error?h(s):(m.message=s??`Promise timed out after ${t} milliseconds`,h(m))},t),(async()=>{try{d(await l)}catch(p){h(p)}})()}).finally(()=>{c.clear(),o&&e.signal&&e.signal.removeEventListener("abort",o)});return c.clear=()=>{r.clearTimeout.call(void 0,a),a=void 0},c}function Ut(l,e,t){let i=0,s=l.length;for(;s>0;){const r=Math.trunc(s/2);let a=i+r;t(l[a],e)<=0?(i=++a,s-=r+1):s=r}return i}class Wt{constructor(){B(this,j,[])}enqueue(e,t){t={priority:0,...t};const i={priority:t.priority,id:t.id,run:e};if(this.size===0||w(this,j)[this.size-1].priority>=t.priority){w(this,j).push(i);return}const s=Ut(w(this,j),i,(r,a)=>a.priority-r.priority);w(this,j).splice(s,0,i)}setPriority(e,t){const i=w(this,j).findIndex(r=>r.id===e);if(i===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);const[s]=w(this,j).splice(i,1);this.enqueue(s.run,{priority:t,id:e})}dequeue(){const e=w(this,j).shift();return e==null?void 0:e.run}filter(e){return w(this,j).filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return w(this,j).length}}j=new WeakMap;class Vt extends $t{constructor(t){var i,s;super();B(this,D);B(this,fe);B(this,me);B(this,ae,0);B(this,ke);B(this,ge);B(this,Re,0);B(this,Y);B(this,pe);B(this,W);B(this,Te);B(this,X,0);B(this,ye);B(this,oe);B(this,Se);B(this,Be,1n);Rt(this,"timeout");if(t={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Wt,...t},!(typeof t.intervalCap=="number"&&t.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${((i=t.intervalCap)==null?void 0:i.toString())??""}\` (${typeof t.intervalCap})`);if(t.interval===void 0||!(Number.isFinite(t.interval)&&t.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${((s=t.interval)==null?void 0:s.toString())??""}\` (${typeof t.interval})`);M(this,fe,t.carryoverConcurrencyCount),M(this,me,t.intervalCap===Number.POSITIVE_INFINITY||t.interval===0),M(this,ke,t.intervalCap),M(this,ge,t.interval),M(this,W,new t.queueClass),M(this,Te,t.queueClass),this.concurrency=t.concurrency,this.timeout=t.timeout,M(this,Se,t.throwOnTimeout===!0),M(this,oe,t.autoStart===!1)}get concurrency(){return w(this,ye)}set concurrency(t){if(!(typeof t=="number"&&t>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${t}\` (${typeof t})`);M(this,ye,t),P(this,D,$e).call(this)}setPriority(t,i){w(this,W).setPriority(t,i)}async add(t,i={}){return i.id??(i.id=(De(this,Be)._++).toString()),i={timeout:this.timeout,throwOnTimeout:w(this,Se),...i},new Promise((s,r)=>{w(this,W).enqueue(async()=>{var a;De(this,X)._++;try{(a=i.signal)==null||a.throwIfAborted(),De(this,ae)._++;let o=t({signal:i.signal});i.timeout&&(o=Gt(Promise.resolve(o),{milliseconds:i.timeout})),i.signal&&(o=Promise.race([o,P(this,D,Lt).call(this,i.signal)]));const u=await o;s(u),this.emit("completed",u)}catch(o){if(o instanceof nt&&!i.throwOnTimeout){s();return}r(o),this.emit("error",o)}finally{P(this,D,Dt).call(this)}},i),this.emit("add"),P(this,D,Pe).call(this)})}async addAll(t,i){return Promise.all(t.map(async s=>this.add(s,i)))}start(){return w(this,oe)?(M(this,oe,!1),P(this,D,$e).call(this),this):this}pause(){M(this,oe,!0)}clear(){M(this,W,new(w(this,Te)))}async onEmpty(){w(this,W).size!==0&&await P(this,D,Fe).call(this,"empty")}async onSizeLessThan(t){w(this,W).size<t||await P(this,D,Fe).call(this,"next",()=>w(this,W).size<t)}async onIdle(){w(this,X)===0&&w(this,W).size===0||await P(this,D,Fe).call(this,"idle")}get size(){return w(this,W).size}sizeBy(t){return w(this,W).filter(t).length}get pending(){return w(this,X)}get isPaused(){return w(this,oe)}}fe=new WeakMap,me=new WeakMap,ae=new WeakMap,ke=new WeakMap,ge=new WeakMap,Re=new WeakMap,Y=new WeakMap,pe=new WeakMap,W=new WeakMap,Te=new WeakMap,X=new WeakMap,ye=new WeakMap,oe=new WeakMap,Se=new WeakMap,Be=new WeakMap,D=new WeakSet,Tt=function(){return w(this,me)||w(this,ae)<w(this,ke)},St=function(){return w(this,X)<w(this,ye)},Dt=function(){De(this,X)._--,P(this,D,Pe).call(this),this.emit("next")},zt=function(){P(this,D,je).call(this),P(this,D,Qe).call(this),M(this,pe,void 0)},Nt=function(){const t=Date.now();if(w(this,Y)===void 0){const i=w(this,Re)-t;if(i<0)M(this,ae,w(this,fe)?w(this,X):0);else return w(this,pe)===void 0&&M(this,pe,setTimeout(()=>{P(this,D,zt).call(this)},i)),!0}return!1},Pe=function(){if(w(this,W).size===0)return w(this,Y)&&clearInterval(w(this,Y)),M(this,Y,void 0),this.emit("empty"),w(this,X)===0&&this.emit("idle"),!1;if(!w(this,oe)){const t=!w(this,D,Nt);if(w(this,D,Tt)&&w(this,D,St)){const i=w(this,W).dequeue();return i?(this.emit("active"),i(),t&&P(this,D,Qe).call(this),!0):!1}}return!1},Qe=function(){w(this,me)||w(this,Y)!==void 0||(M(this,Y,setInterval(()=>{P(this,D,je).call(this)},w(this,ge))),M(this,Re,Date.now()+w(this,ge)))},je=function(){w(this,ae)===0&&w(this,X)===0&&w(this,Y)&&(clearInterval(w(this,Y)),M(this,Y,void 0)),M(this,ae,w(this,fe)?w(this,X):0),P(this,D,$e).call(this)},$e=function(){for(;P(this,D,Pe).call(this););},Lt=async function(t){return new Promise((i,s)=>{t.addEventListener("abort",()=>{s(t.reason)},{once:!0})})},Fe=async function(t,i){return new Promise(s=>{const r=()=>{i&&!i()||(this.off(t,r),s())};this.on(t,r)})};const Kt=()=>{const l=Ee.useAnalyticsConfigStore(),e=n.inject(ne);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 Vt({carryoverConcurrencyCount:!0,concurrency:l.maxParallelRequests,interval:l.requestInterval,intervalCap:l.requestIntervalCap}),i={...e,queryFnOverride:!0,queryFn:(s,r)=>t.add(()=>e.queryFn(s,r),{throwOnTimeout:!0})};n.provide(ne,i)},Qt=["basic","api_usage","llm_usage","agentic_usage","platform",void 0];function jt({queryBridge:l,context:e,definition:t,chartData:i}){const s=n.ref(""),r=n.ref(""),a=n.ref(void 0),o=n.ref(void 0),u=Ee.useAnalyticsConfigStore();n.onMounted(async()=>{var k,I;s.value=await((k=l==null?void 0:l.exploreBaseUrl)==null?void 0:k.call(l))??"",r.value=await((I=l==null?void 0:l.requestsBaseUrl)==null?void 0:I.call(l))??""});const c=n.computed(()=>u.analytics&&u.percentiles),d=n.computed(()=>{const k=t.value.chart.type;return["golden_signals","gauge"].includes(k)?!1:k==="top_n"?e.value.editable||e.value.showTileActions:!0}),h=n.computed(()=>r.value&&t.value.query&&t.value.query.datasource!=="llm_usage"&&c.value),m=n.computed(()=>s.value&&t.value.query&&Qt.includes(t.value.query.datasource)&&c.value),p=n.computed(()=>i.value?S.msToGranularity(i.value.meta.granularity_ms):void 0),y=n.computed(()=>{var Z;const k=[...e.value.filters,...t.value.query.filters??[]],I=((Z=t.value.query)==null?void 0:Z.datasource)??"api_usage";return k.filter(le=>S.getFieldDataSources(le.field).some(he=>I===he))}),_=n.computed(()=>{if(!m.value||!d.value)return"";const k=y.value,I=t.value.query.time_range||e.value.timeSpec,Z=H(I,k);return L(Z)}),g=n.computed(()=>{if(!h.value||!d.value)return"";const k=y.value,I=O(t.value.query.time_range||e.value.timeSpec,k);return R(I)}),R=k=>h.value?`${r.value}?q=${JSON.stringify(k)}`:"",O=(k,I)=>{var V,he,_e,be;const Z=(he=(V=i.value)==null?void 0:V.meta)!=null&&he.start?new Date(i.value.meta.start):void 0,le=(be=(_e=i.value)==null?void 0:_e.meta)!=null&&be.end?new Date(i.value.meta.end):void 0;return{filter:I,timeframe:{timePeriodsKey:k.type==="relative"?k.time_range:"custom",start:k.type==="absolute"?Z:void 0,end:k.type==="absolute"?le:void 0}}},x=(k,I)=>({filter:I,timeframe:{timePeriodsKey:k.type==="relative"?k.time_range:"custom",start:k.type==="absolute"?k.start:void 0,end:k.type==="absolute"?k.end:void 0}}),H=(k,I)=>{const Z=t.value.query.dimensions??[];return{filters:I,metrics:t.value.query.metrics??[],dimensions:Z,time_range:k,granularity:t.value.query.granularity||p.value}},L=k=>{if(!m.value)return"";const I=["api_usage","llm_usage","agentic_usage"].includes(t.value.query.datasource)?t.value.query.datasource:"api_usage";return`${s.value}?q=${JSON.stringify(k)}&d=${I}&c=${t.value.chart.type}`};return n.watch([h,m],([k,I])=>{k&&(a.value={href:""}),I&&(o.value={href:""})}),{exploreLinkKebabMenu:_,requestsLinkKebabMenu:g,canShowKebabMenu:d,canGenerateRequestsLink:h,canGenerateExploreLink:m,requestsLinkZoomActions:a,exploreLinkZoomActions:o,buildExploreQuery:H,buildRequestsQueryZoomActions:x,buildExploreLink:L,buildRequestLink:R}}const Yt=(l,e,t)=>{const i=[];return e&&i.push(...e),i.push(...S.stripUnknownFilters(l,t)),i};function Xt(){const l=n.inject(ne),e=new AbortController;return n.onUnmounted(()=>{e.abort()}),{issueQuery:async(i,s,r)=>{if(!l)throw new Error("Query bridge is not defined");const{datasource:a,limit:o,...u}=i,c=a||"basic",d=Yt(c,i.filters,s.filters);let h=i.time_range;h?h.tz||(h={...h,tz:s.tz}):h={...s.timeSpec,tz:s.tz};const m={datasource:c,query:{...u,time_range:h,filters:d,limit:r??o}};return l.queryFn(m,e)}}}function Zt({context:l,globalFilters:e=n.ref([]),isFullscreen:t=n.ref(!1)}){const i=Ee.useAnalyticsConfigStore(),s=n.computed(()=>l.value.timeSpec?l.value.timeSpec:{type:"relative",time_range:i.defaultQueryTimeForOrg});return{internalContext:n.computed(()=>{var m,p,y;let{tz:a,refreshInterval:o,editable:u,showTileActions:c}=l.value;const d=[...l.value.filters??[],...e.value];if(a||(a=new Intl.DateTimeFormat().resolvedOptions().timeZone),o===void 0&&(o=tt),t.value){let _=!1;if(s.value.type==="relative")_=["15m","1h","6h","12h","24h"].includes(s.value.time_range);else{const O=s.value.start.getTime(),x=s.value.end.getTime();_=Math.abs(x-O)<=864e5}const g=new Date().getTime();s.value.type==="absolute"&&s.value.end.getTime()<g||s.value.type==="relative"&&["previous_week","previous_month"].includes(s.value.time_range)?o=0:_?o=it:o=st}u===void 0&&(u=!1),c===void 0&&(c=!0);const h=!!((y=(p=(m=n.getCurrentInstance())==null?void 0:m.vnode)==null?void 0:p.props)!=null&&y.onTileTimeRangeZoom);return{filters:d,tz:a,timeSpec:s.value,refreshInterval:o,editable:u,showTileActions:c,zoomable:h}})}}const J={useContextLinks:jt,useDashboardInternalContext:Zt,useEvaluateFeatureFlag:qt,useI18n:Mt,useIssueQuery:Xt,useRequestQueue:Kt},Le=n.defineComponent({__name:"QueryDataProvider",props:{context:{},limitOverride:{},query:{},queryReady:{type:Boolean},refreshCounter:{}},emits:["chart-data","queryComplete"],setup(l,{emit:e}){const t=l,i=e,{i18n:s}=J.useI18n(),{issueQuery:r}=J.useIssueQuery(),a=n.inject(ne),o=()=>t.queryReady&&a?JSON.stringify([t.query,t.context,t.refreshCounter]):null,{data:u,error:c,isValidating:d}=At(o,async()=>{try{const g=await r(t.query,t.context,t.limitOverride);return p.value=null,g}catch(g){throw p.value=ie.handleQueryError(g),g}finally{i("queryComplete")}},{refreshInterval:t.context.refreshInterval,revalidateOnFocus:!1,shouldRetryOnError:!1}),{state:h,swrvState:m}=Ht(u,c,d),p=n.ref(null),y=n.computed(()=>h.value===m.ERROR||!!p.value),_=n.computed(()=>!t.queryReady||h.value===m.PENDING);return n.watch([()=>u.value,()=>h.value],([g,R])=>{g&&(R==="SUCCESS_HAS_DATA"||R==="SUCCESS")&&i("chart-data",g)}),(g,R)=>{var H;const O=n.resolveComponent("KSkeleton"),x=n.resolveComponent("KEmptyState");return _.value||!n.unref(u)&&!y.value?(n.openBlock(),n.createBlock(O,{key:0,class:"chart-skeleton",type:"table"})):y.value?(n.openBlock(),n.createBlock(x,{key:1,"action-button-visible":!1,"data-testid":"chart-empty-state"},n.createSlots({icon:n.withCtx(()=>{var L;return[((L=p.value)==null?void 0:L.type)==="forbidden"?(n.openBlock(),n.createBlock(n.unref(de.VisibilityOffIcon),{key:0})):(n.openBlock(),n.createBlock(n.unref(de.WarningOutlineIcon),{key:1}))]}),title:n.withCtx(()=>{var L;return[n.createElementVNode("p",null,n.toDisplayString(((L=p.value)==null?void 0:L.message)||n.unref(s).t("renderer.unexpectedError")),1)]}),_:2},[(H=p.value)!=null&&H.details?{name:"default",fn:n.withCtx(()=>[n.createElementVNode("p",null,n.toDisplayString(p.value.details),1)]),key:"0"}:void 0]),1024)):n.unref(u)?n.renderSlot(g.$slots,"default",{key:2,data:n.unref(u)}):n.createCommentVNode("",!0)}}}),Jt=n.defineComponent({__name:"SimpleChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},setup(l){const e=l,t=n.computed(()=>e.chartOptions.type==="single_value");return(i,s)=>(n.openBlock(),n.createBlock(Le,{context:l.context,query:l.query,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter},{default:n.withCtx(({data:r})=>[n.createElementVNode("div",{class:n.normalizeClass(["analytics-chart",{"single-value":t.value}]),style:n.normalizeStyle(t.value?void 0:{height:`${l.height}px`})},[n.createVNode(n.unref(ie.SimpleChart),{"chart-data":r,"chart-options":l.chartOptions,"synthetics-data-key":t.value?void 0:l.chartOptions.synthetics_data_key},null,8,["chart-data","chart-options","synthetics-data-key"])],6)]),_:1},8,["context","query","query-ready","refresh-counter"]))}}),ce=(l,e)=>{const t=l.__vccOpts||l;for(const[i,s]of e)t[i]=s;return t},lt=ce(Jt,[["__scopeId","data-v-d4c69df4"]]),ei={class:"analytics-chart"},Ue=ce(n.defineComponent({__name:"BaseAnalyticsChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{},extraProps:{}},emits:["edit-tile","chart-data","zoom-time-range","view-requests","select-chart-range"],setup(l,{emit:e}){const t=l,i=e,{i18n:s}=J.useI18n(),r=n.computed(()=>({type:t.chartOptions.type,stacked:t.chartOptions.stacked??!1,chartDatasetColors:t.chartOptions.chart_dataset_colors,threshold:t.chartOptions.threshold,hideTruncationWarning:t.query.limit!==void 0&&t.query.limit>0})),a=n.computed(()=>t.context.zoomable),o=()=>{i("edit-tile")},u=c=>{i("chart-data",c)};return(c,d)=>{const h=n.resolveComponent("KDropdownItem");return n.openBlock(),n.createBlock(Le,{context:l.context,query:l.query,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter,onChartData:u},{default:n.withCtx(({data:m})=>[n.createElementVNode("div",ei,[n.createVNode(n.unref(ie.AnalyticsChart),n.mergeProps({"chart-data":m,"chart-options":r.value,"explore-link":l.exploreLink,"legend-position":"bottom","requests-link":l.requestsLink,"synthetics-data-key":l.chartOptions.synthetics_data_key,"timeseries-zoom":a.value,"tooltip-title":""},l.extraProps,{onSelectChartRange:d[0]||(d[0]=p=>i("select-chart-range",p)),onZoomTimeRange:d[1]||(d[1]=p=>i("zoom-time-range",p))}),n.createSlots({_:2},[l.context.editable?{name:"menu-items",fn:n.withCtx(()=>[n.createVNode(h,{onClick:o},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(n.unref(s).t("renderer.edit")),1)]),_:1})]),key:"0"}:void 0]),1040,["chart-data","chart-options","explore-link","requests-link","synthetics-data-key","timeseries-zoom"])])]),_:1},8,["context","query","query-ready","refresh-counter"])}}}),[["__scopeId","data-v-52357845"]]),ht=n.defineComponent({__name:"BarChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},setup(l){return(e,t)=>(n.openBlock(),n.createBlock(Ue,{"chart-options":l.chartOptions,context:l.context,"extra-props":{showAnnotations:!1},height:l.height,query:l.query,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter},null,8,["chart-options","context","height","query","query-ready","refresh-counter"]))}}),dt=n.defineComponent({__name:"TimeseriesChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},emits:["zoom-time-range","select-chart-range"],setup(l,{emit:e}){const t=e;return(i,s)=>(n.openBlock(),n.createBlock(Ue,{"chart-options":l.chartOptions,context:l.context,"explore-link":l.exploreLink,height:l.height,query:l.query,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter,"requests-link":l.requestsLink,onSelectChartRange:s[0]||(s[0]=r=>t("select-chart-range",r)),onZoomTimeRange:s[1]||(s[1]=r=>t("zoom-time-range",r))},null,8,["chart-options","context","explore-link","height","query","query-ready","refresh-counter","requests-link"]))}}),ti=ce(n.defineComponent({__name:"GoldenSignalsRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},setup(l){const e=l,t=n.computed(()=>{var s,r;const i=(s=e.query)==null?void 0:s.datasource;if(i&&i!=="api_usage"&&i!=="basic")throw new Error(`Invalid datasource value: ${i}`);return{datasource:(r=e.query)==null?void 0:r.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}});return(i,s)=>(n.openBlock(),n.createElementBlock("div",{class:n.normalizeClass(["metric-card-tile-wrapper",{titled:!!e.chartOptions.chart_title}])},[n.createVNode(n.unref(ze.MetricsProvider),n.normalizeProps(n.guardReactiveProps(t.value)),{default:n.withCtx(()=>[n.createVNode(n.unref(ze.MetricsConsumer))]),_:1},16)],2))}}),[["__scopeId","data-v-8a51fd28"]]),ii={class:"fallback-entity-link","data-testid":"entity-link-parent"},ct=n.defineComponent({__name:"FallbackEntityLink",props:{entityLinkData:{}},setup(l){return(e,t)=>(n.openBlock(),n.createElementBlock("div",ii,n.toDisplayString(l.entityLinkData.label),1))}}),si=n.defineComponent({__name:"TopNTableRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},setup(l){const e=l,t=n.inject(ne),i=n.defineAsyncComponent(async()=>{if(t!=null&&t.fetchComponent)try{return await t.fetchComponent("EntityLink")}catch{return ct}return ct}),s=r=>{var a;if((a=e.chartOptions)!=null&&a.entity_link)if(r.id.includes(":")){const[o,u]=r.id.split(":");return e.chartOptions.entity_link.replace(Je,o).replace(Ge,u)}else return e.chartOptions.entity_link.replace(Ge,r.id);return""};return(r,a)=>(n.openBlock(),n.createBlock(Le,{context:l.context,query:l.query,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter},{default:n.withCtx(({data:o})=>[n.createVNode(n.unref(ie.TopNTable),{data:o,"synthetics-data-key":l.chartOptions.synthetics_data_key},n.createSlots({_:2},[e.chartOptions.entity_link?{name:"name",fn:n.withCtx(({record:u})=>[n.createVNode(n.unref(i),{"entity-link-data":{id:u.id,label:u.name,deleted:u.deleted},"external-link":s(u)},null,8,["entity-link-data","external-link"])]),key:"0"}:void 0]),1032,["data","synthetics-data-key"])]),_:1},8,["context","query","query-ready","refresh-counter"]))}}),ut="#6c7489",ri="12px",ft="20px",mt="32px",gt="20px",ni=n.defineComponent({__name:"DonutChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},setup(l){return(e,t)=>(n.openBlock(),n.createBlock(Ue,{"chart-options":l.chartOptions,context:l.context,height:l.height,query:l.query,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter},null,8,["chart-options","context","height","query","query-ready","refresh-counter"]))}}),oi=["data-testid"],ai={key:0,class:"tile-header"},li={class:"badge-container"},hi={class:"badge-text"},di={key:0},ci=["data-testid"],ui=["data-testid"],fi={class:"delete-option"},mi=["data-testid"],gi=["data-testid"],pt=ce(n.defineComponent({__name:"DashboardTile",props:n.mergeModels({context:{},definition:{},height:{default:ue},isFullscreen:{type:Boolean},hideActions:{type:Boolean,default:!1},queryReady:{type:Boolean},showRefresh:{type:Boolean,default:!1},tileId:{}},{refreshCounter:{default:0},refreshCounterModifiers:{}}),emits:n.mergeModels(["chart-data","edit-tile","duplicate-tile","remove-tile","tile-time-range-zoom","tile-bounds-change"],["update:refreshCounter"]),setup(l,{expose:e,emit:t}){n.useCssVars(b=>({a3979a26:`${b.height}px`}));const i=parseInt(gt,10),s=l,r=n.useModel(l,"refreshCounter"),a=()=>{g.value=!0,r.value++},o=t,u=n.defineAsyncComponent(()=>Promise.resolve().then(()=>Li)),c=n.inject(ne),{i18n:d}=J.useI18n(),h=n.ref(),m=n.ref({status:"loading"}),p=n.ref(!1),y=n.ref(),_=n.ref(!1),g=n.ref(!0),{exploreLinkKebabMenu:R,requestsLinkKebabMenu:O,canShowKebabMenu:x,canGenerateRequestsLink:H,canGenerateExploreLink:L,requestsLinkZoomActions:k,exploreLinkZoomActions:I,buildExploreQuery:Z,buildExploreLink:le,buildRequestLink:V,buildRequestsQueryZoomActions:he}=J.useContextLinks({queryBridge:c,chartData:n.readonly(h),definition:n.readonly(n.toRef(s,"definition")),context:n.readonly(n.toRef(s,"context"))}),{issueQuery:_e}=J.useIssueQuery();n.watch(()=>s.definition,async(b,z)=>{await n.nextTick(),y.value&&(_.value=y.value.scrollWidth>y.value.clientWidth);try{JSON.stringify(b==null?void 0:b.query)!==JSON.stringify(z==null?void 0:z.query)&&(g.value=!0)}catch{}},{immediate:!0,deep:!0});const be=n.computed(()=>d.t("csvExport.defaultFilename")),T=n.computed(()=>x.value&&!s.hideActions&&(A.value||s.context.editable)),A=n.computed(()=>!!R.value||("allow_csv_export"in s.definition.chart?s.definition.chart.allow_csv_export:!0)||s.context.editable),q={timeseries_line:dt,timeseries_bar:dt,horizontal_bar:ht,vertical_bar:ht,gauge:lt,donut:ni,golden_signals:ti,top_n:si,slottable:void 0,single_value:lt,choropleth_map:u},$=n.computed(()=>{var b,z,N;return{...(b=F.value)!=null&&b.rendererEvents.supportsRequests?{"select-chart-range":Ui}:{},...(z=F.value)!=null&&z.rendererEvents.supportsZoom?{"zoom-time-range":Fi}:{},...(N=F.value)!=null&&N.rendererEvents.supportsBounds?{"bounds-change":Gi}:{}}}),F=n.computed(()=>{var Q,te;const b=q[s.definition.chart.type],z=!!((Q=b==null?void 0:b.emits)!=null&&Q.includes("select-chart-range")),N=!!((te=b==null?void 0:b.emits)!=null&&te.includes("zoom-time-range")),G=s.definition.chart.type==="choropleth_map";return b&&{component:b,rendererProps:{query:s.definition.query,context:s.context,queryReady:s.queryReady,chartOptions:s.definition.chart,height:s.height-i*2,refreshCounter:r.value,requestsLink:k.value,exploreLink:I.value},rendererEvents:{supportsRequests:z,supportsZoom:N,supportsBounds:G}}}),ve=n.computed(()=>{var z;const b=(z=s.definition.query)==null?void 0:z.time_range;if((b==null?void 0:b.type)==="relative"){const N=S.TimePeriods.get(S.TIMEFRAME_LOOKUP[b.time_range]);return N?N.display:(console.warn("Did not recognize the given relative time range:",b.time_range),b.time_range)}else if((b==null?void 0:b.type)==="absolute"){const N=b.tz||"Etc/UTC";return`${S.formatTime(b.start,{short:!0,tz:N})} - ${S.formatTime(b.end,{short:!0,tz:N})}`}return null}),wt=n.computed(()=>{if(s.definition.chart.type==="slottable")return!1;const b=!!s.definition.chart.chart_title,z=s.definition.chart.type==="golden_signals"&&!!s.definition.chart.description,N=s.showRefresh,G=T.value&&A.value&&!s.isFullscreen,Q=!!ve.value;return b||G||Q||z||N}),Et=n.computed(()=>h.value?S.msToGranularity(h.value.meta.granularity_ms):void 0),Ai=n.computed(()=>["timeseries_line","timeseries_bar"].includes(s.definition.chart.type)),xt=n.computed(()=>{var z,N;if(!Ai.value||!s.queryReady||g.value)return!1;const b=(N=(z=s.definition)==null?void 0:z.query)==null?void 0:N.granularity;return!b||!Et.value?!1:b!==Et.value}),Oi=n.computed(()=>{var N,G,Q;const b=S.msToGranularity(((N=h.value)==null?void 0:N.meta.granularity_ms)??0)??"unknown",z=((Q=(G=s.definition)==null?void 0:G.query)==null?void 0:Q.granularity)??"unknown";return d.t("query_aged_out_warning",{currentGranularity:d.t(`granularities.${b}`),savedGranularity:d.t(`granularities.${z}`)})}),Hi=n.computed(()=>{var N,G;const b=[...s.context.filters,...s.definition.query.filters??[]],z=((G=(N=s.definition)==null?void 0:N.query)==null?void 0:G.datasource)??"api_usage";return b.filter(Q=>S.getFieldDataSources(Q.field).some(we=>z===we))}),Ii=()=>{o("edit-tile",s.definition)},Mi=()=>{o("duplicate-tile",s.definition)},qi=()=>{o("remove-tile",s.definition)},Bi=b=>{h.value=b,g.value=!1,o("chart-data",b)},Pi=()=>{p.value=!1},Ct=()=>{var N,G;const b=(N=s.definition.query.datasource)==null?void 0:N.startsWith("goap");return((G=c==null?void 0:c.staticConfig)==null?void 0:G.increaseCsvExportLimit)!==!1&&!b?_e(s.definition.query,s.context,S.EXPORT_RECORD_LIMIT):h.value?Promise.resolve(h.value):new Promise(Q=>{const te=n.watch(h,we=>{we&&(Q(we),te())})})},$i=async()=>{p.value=!0,m.value={status:"loading"};try{const b=await Ct();m.value={status:"success",chartData:b}}catch(b){m.value={status:"error",error:b}}},Fi=b=>{const z={tileId:s.tileId.toString(),timeRange:b};o("tile-time-range-zoom",z)},Gi=b=>{const z={tileId:s.tileId.toString(),bounds:b};o("tile-bounds-change",z)},Ui=b=>{const z=Hi.value,N=he(b,z),G=Z(b,z);k.value=H.value?{href:V(N)}:void 0,I.value=L.value?{href:le(G)}:void 0};return e({getExportData:Ct}),(b,z)=>{const N=n.resolveComponent("KTooltip"),G=n.resolveComponent("KBadge"),Q=n.resolveComponent("KButton"),te=n.resolveComponent("KDropdownItem"),we=n.resolveComponent("KDropdown");return n.openBlock(),n.createElementBlock("div",{class:n.normalizeClass(["tile-boundary",{editable:l.context.editable,headless:!wt.value}]),"data-testid":`tile-${l.tileId}`},[wt.value&&l.definition.chart.type!=="slottable"?(n.openBlock(),n.createElementBlock("div",ai,[n.createVNode(N,{class:"title-tooltip",disabled:!_.value,"max-width":"500",text:l.definition.chart.chart_title},{default:n.withCtx(()=>[n.createElementVNode("div",{ref_key:"titleRef",ref:y,class:"title"},n.toDisplayString(l.definition.chart.chart_title),513)]),_:1},8,["disabled","text"]),n.createElementVNode("div",li,[ve.value?(n.openBlock(),n.createBlock(G,{key:0,"data-testid":"time-range-badge",tooltip:xt.value?Oi.value:void 0,"tooltip-attributes":{maxWidth:"320px"}},n.createSlots({default:n.withCtx(()=>[n.createElementVNode("span",hi,n.toDisplayString(ve.value),1)]),_:2},[xt.value?{name:"icon",fn:n.withCtx(()=>[n.createVNode(n.unref(de.WarningIcon),{size:n.unref(ri)},null,8,["size"])]),key:"0"}:void 0]),1032,["tooltip"])):n.createCommentVNode("",!0)]),l.showRefresh?(n.openBlock(),n.createElementBlock("div",di,[n.createVNode(Q,{appearance:"secondary",class:"refresh-button","data-testid":`tile-refresh-button-${l.tileId}`,disabled:g.value,icon:"",size:"small",onClick:a},{default:n.withCtx(()=>[g.value?(n.openBlock(),n.createBlock(n.unref(de.ProgressIcon),{key:0,role:"button",size:n.unref(mt),tabindex:"0"},null,8,["size"])):(n.openBlock(),n.createBlock(n.unref(de.RefreshIcon),{key:1,role:"button",size:n.unref(mt),tabindex:"0"},null,8,["size"]))]),_:1},8,["data-testid","disabled"])])):n.createCommentVNode("",!0),T.value?(n.openBlock(),n.createElementBlock("div",{key:1,class:"tile-actions","data-testid":`tile-actions-${l.tileId}`},[n.unref(x)&&l.context.editable&&!l.isFullscreen?(n.openBlock(),n.createBlock(n.unref(de.EditIcon),{key:0,class:"edit-icon",color:n.unref(ut),"data-testid":`edit-tile-${l.tileId}`,size:n.unref(ft),onClick:Ii},null,8,["color","data-testid","size"])):n.createCommentVNode("",!0),n.unref(x)&&A.value&&!l.isFullscreen?(n.openBlock(),n.createBlock(we,{key:1,class:"dropdown","data-testid":`chart-action-menu-${l.tileId}`,"kpop-attributes":{placement:"bottom-end"}},{items:n.withCtx(()=>[n.unref(R)?(n.openBlock(),n.createBlock(te,{key:0,"data-testid":`chart-jump-to-explore-${l.tileId}`,item:{label:n.unref(d).t("jumpToExplore"),to:n.unref(R)}},null,8,["data-testid","item"])):n.createCommentVNode("",!0),n.unref(O)?(n.openBlock(),n.createBlock(te,{key:1,"data-testid":`chart-jump-to-requests-${l.tileId}`,item:{label:n.unref(d).t("jumpToRequests"),to:n.unref(O)}},null,8,["data-testid","item"])):n.createCommentVNode("",!0),!("allow_csv_export"in l.definition.chart)||l.definition.chart.allow_csv_export?(n.openBlock(),n.createBlock(te,{key:2,class:"chart-export-button","data-testid":`chart-csv-export-${l.tileId}`,onClick:$i},{default:n.withCtx(()=>[n.createElementVNode("span",{class:"chart-export-trigger","data-testid":`csv-export-button-${l.tileId}`},n.toDisplayString(n.unref(d).t("csvExport.exportAsCsv")),9,ui)]),_:1},8,["data-testid"])):n.createCommentVNode("",!0),l.context.editable?(n.openBlock(),n.createBlock(te,{key:3,"data-testid":`duplicate-tile-${l.tileId}`,onClick:Mi},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(n.unref(d).t("renderer.duplicateTile")),1)]),_:1},8,["data-testid"])):n.createCommentVNode("",!0),l.context.editable?(n.openBlock(),n.createBlock(te,{key:4,"data-testid":`remove-tile-${l.tileId}`,onClick:qi},{default:n.withCtx(()=>[n.createElementVNode("span",fi,n.toDisplayString(n.unref(d).t("renderer.delete")),1)]),_:1},8,["data-testid"])):n.createCommentVNode("",!0)]),default:n.withCtx(()=>[n.createVNode(n.unref(de.MoreIcon),{class:"kebab-action-menu",color:n.unref(ut),"data-testid":`kebab-action-menu-${l.tileId}`,size:n.unref(ft)},null,8,["color","data-testid","size"])]),_:1},8,["data-testid"])):n.createCommentVNode("",!0)],8,ci)):"description"in l.definition.chart?(n.openBlock(),n.createElementBlock("div",{key:2,class:"header-description","data-testid":`tile-description-${l.tileId}`},n.toDisplayString(l.definition.chart.description),9,mi)):n.createCommentVNode("",!0),p.value?(n.openBlock(),n.createBlock(n.unref(ie.CsvExportModal),{key:3,"data-testid":`csv-export-modal-${l.tileId}`,"export-state":m.value,filename:be.value,onCloseModal:Pi},null,8,["data-testid","export-state","filename"])):n.createCommentVNode("",!0)])):n.createCommentVNode("",!0),n.createElementVNode("div",{class:n.normalizeClass(["tile-content",`type-${l.definition.chart.type}`]),"data-testid":`tile-content-${l.tileId}`},[F.value?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(F.value.component),n.mergeProps({key:0},F.value.rendererProps,n.toHandlers($.value),{onChartData:Bi}),null,16)):n.createCommentVNode("",!0)],10,gi)],10,oi)}}}),[["__scopeId","data-v-5513f736"]]),pi=(l,e)=>{let t=0;const i=new Map;e.forEach(r=>{const a=r.layout.position.row,o=i.get(a),u=r.layout.size.rows===1&&!!r.layout.size.fit_to_content;t=Math.max(t,a+r.layout.size.rows),o===void 0?i.set(a,u):i.set(a,o&&u)});const s=[];for(let r=0;r<t;r++)i.get(r)?s.push("auto"):s.push(`${l}px`);return s},yt=ce(n.defineComponent({__name:"GridLayout",props:{tileHeight:{type:Number,required:!1,default:()=>ue},tiles:{type:Array,required:!0}},setup(l){n.useCssVars(o=>({v2a38e79e:n.unref(Ne),v4cc71de6:r.value}));const e=l,t=n.ref(null),i=n.ref(0),s=new ResizeObserver(o=>{window.requestAnimationFrame(()=>{!Array.isArray(o)||!o.length||(i.value=o[0].contentRect.width)})});n.onMounted(()=>{t.value&&s.observe(t.value)}),n.onUnmounted(()=>{t.value&&s.unobserve(t.value)});const r=n.computed(()=>pi(e.tileHeight,e.tiles).join(" ")),a=n.computed(()=>e.tiles.map((o,u)=>({key:`tile-${u}`,tile:o,style:{"grid-column-start":o.layout.position.col+1,"grid-column-end":o.layout.position.col+1+o.layout.size.cols,"grid-row-start":o.layout.position.row+1,"grid-row-end":o.layout.position.row+1+o.layout.size.rows}})));return(o,u)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"gridContainer",ref:t,class:"kong-ui-public-grid-layout"},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(a.value,c=>(n.openBlock(),n.createElementBlock("div",{key:c.key,class:n.normalizeClass(["grid-cell",{"empty-cell":!c.tile}]),style:n.normalizeStyle(c.style)},[n.renderSlot(o.$slots,"tile",{style:n.normalizeStyle(c.style),tile:c.tile},void 0,!0)],6))),128))],512))}}),[["__scopeId","data-v-354b7177"]]);function yi(l,e,t,i,s){const r=(...a)=>(console.warn("gridstack.js: Function `"+t+"` is deprecated in "+s+" and has been replaced with `"+i+"`. It will be **removed** in a future release"),e.apply(l,a));return r.prototype=e.prototype,r}class f{static getElements(e,t=document){if(typeof e=="string"){const i="getElementById"in t?t:void 0;if(i&&!isNaN(+e[0])){const r=i.getElementById(e);return r?[r]:[]}let s=t.querySelectorAll(e);return!s.length&&e[0]!=="."&&e[0]!=="#"&&(s=t.querySelectorAll("."+e),s.length||(s=t.querySelectorAll("#"+e))),Array.from(s)}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 s=t.querySelector(e);return i&&!s&&(s=i.getElementById(e)),s||(s=t.querySelector("."+e)),s}return e}static lazyLoad(e){var t,i;return e.lazyLoad||((i=(t=e.grid)==null?void 0:t.opts)==null?void 0:i.lazyLoad)&&e.lazyLoad!==!1}static createDiv(e,t){const i=document.createElement("div");return e.forEach(s=>{s&&i.classList.add(s)}),t==null||t.appendChild(i),i}static shouldSizeToContent(e,t=!1){return(e==null?void 0: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 f.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,s=e.x+e.w<t.x+t.w?e.x+e.w:t.x+t.w;if(s<=i)return 0;const r=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<=r?0:(s-i)*(a-r)}static area(e){return e.w*e.h}static sort(e,t=1){return e.sort((s,r)=>{const a=t*((s.y??1e4)-(r.y??1e4));return a===0?t*((s.x??1e4)-(r.x??1e4)):a})}static find(e,t){return t?e.find(i=>i.id===t):void 0}static createStylesheet(e,t,i){const s=document.createElement("style"),r=i==null?void 0:i.nonce;return r&&(s.nonce=r),s.setAttribute("type","text/css"),s.setAttribute("gs-style-id",e),s.styleSheet?s.styleSheet.cssText="":s.appendChild(document.createTextNode("")),t?t.insertBefore(s,t.firstChild):(t=document.getElementsByTagName("head")[0],t.appendChild(s)),s}static removeStylesheet(e,t){const s=(t||document).querySelector("STYLE[gs-style-id="+e+"]");s&&s.parentNode&&s.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 s=e.match(/^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%|cm|mm)?$/);if(!s)throw new Error(`Invalid height val = ${e}`);i=s[2]||"px",t=parseFloat(s[1])}else t=e;return{h:t,unit:i}}static defaults(e,...t){return t.forEach(i=>{for(const s in i){if(!i.hasOwnProperty(s))return;e[s]===null||e[s]===void 0?e[s]=i[s]:typeof i[s]=="object"&&typeof e[s]=="object"&&this.defaults(e[s],i[s])}}),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 s=e[i],r=t[i];i[0]==="_"||s===r?delete e[i]:s&&typeof s=="object"&&r!==void 0&&(f.removeInternalAndSame(s,r),Object.keys(s).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(...s)=>{i||(i=!0,setTimeout(()=>{e(...s),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 s=e.getBoundingClientRect(),r=window.innerHeight||document.documentElement.clientHeight;if(s.top<0||s.bottom>r){const a=s.bottom-r,o=s.top,u=this.getScrollElement(e);if(u!==null){const c=u.scrollTop;s.top<0&&i<0?e.offsetHeight>r?u.scrollTop+=i:u.scrollTop+=Math.abs(o)>Math.abs(i)?i:o:i>0&&(e.offsetHeight>r?u.scrollTop+=i:u.scrollTop+=a>i?i:a),t.top+=u.scrollTop-c}}}static updateScrollResize(e,t,i){const s=this.getScrollElement(t),r=s.clientHeight,a=s===this.getScrollElement()?0:s.getBoundingClientRect().top,o=e.clientY-a,u=o<i,c=o>r-i;u?s.scrollBy({behavior:"smooth",top:o-i}):c&&s.scrollBy({behavior:"smooth",top:i-(r-o)})}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=f.clone(e);for(const s in i)i.hasOwnProperty(s)&&typeof i[s]=="object"&&s.substring(0,2)!=="__"&&!t.find(r=>r===s)&&(i[s]=f.cloneDeep(e[s]));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=f.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(s=>{e.style[i]=s}):e.style[i]=t[i])}static initEvent(e,t){const i={type:t.type},s={button:0,which:0,buttons:1,bubbles:!0,cancelable:!0,target:t.target?t.target:e.target};return["altKey","ctrlKey","metaKey","shiftKey"].forEach(r=>i[r]=e[r]),["pageX","pageY","clientX","clientY","screenX","screenY"].forEach(r=>i[r]=e[r]),{...i,...s}}static simulateMouseEvent(e,t,i){const s=e,r=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:s.ctrlKey??!1,altKey:s.altKey??!1,shiftKey:s.shiftKey??!1,metaKey:s.metaKey??!1,button:0,relatedTarget:e.target});(i||e.target).dispatchEvent(r)}static getValuesFromTransformedElement(e){const t=document.createElement("div");f.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 s=e[t];e[t]=e[i],e[i]=s}static canBeRotated(e){var t;return!(!e||e.w===e.h||e.locked||e.noResize||(t=e.grid)!=null&&t.opts.disableResize||e.minW&&e.minW===e.maxW||e.minH&&e.minH===e.maxH)}}class se{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,s={}){if(this.sortNodes(-1),i=i||this.collide(e,t),!i)return!1;if(e._moving&&!s.nested&&!this.float&&this.swap(e,i))return!0;let r=t;!this._loading&&this._useEntireRowArea(e,t)&&(r={x:0,w:this.column,y:t.y,h:t.h},i=this.collide(e,r,s.skip));let a=!1;const o={nested:!0,pack:!1};let u=0;for(;i=i||this.collide(e,r,s.skip);){if(u++>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 d={...t,y:i.y+i.h,...o};c=this._loading&&f.samePos(e,d)?!0:this.moveNode(e,d),(i.locked||this._loading)&&c?f.copyPos(t,e):!i.locked&&c&&s.pack&&(this._packNodes(),t.y=i.y+i.h,f.copyPos(e,t)),a=a||c}else c=this.moveNode(i,{...i,y:t.y+t.h,skip:e,...o});if(!c)return a;i=void 0}return a}collide(e,t=e,i){const s=e._id,r=i==null?void 0:i._id;return this.nodes.find(a=>a._id!==s&&a._id!==r&&f.isIntercepted(a,t))}collideAll(e,t=e,i){const s=e._id,r=i==null?void 0:i._id;return this.nodes.filter(a=>a._id!==s&&a._id!==r&&f.isIntercepted(a,t))}directionCollideCoverage(e,t,i){if(!t.rect||!e._rect)return;const s=e._rect,r={...t.rect};r.y>s.y?(r.h+=r.y-s.y,r.y=s.y):r.h+=s.y-r.y,r.x>s.x?(r.w+=r.x-s.x,r.x=s.x):r.w+=s.x-r.x;let a,o=.5;for(let u of i){if(u.locked||!u._rect)break;const c=u._rect;let d=Number.MAX_VALUE,h=Number.MAX_VALUE;s.y<c.y?d=(r.y+r.h-c.y)/c.h:s.y+s.h>c.y+c.h&&(d=(c.y+c.h-r.y)/c.h),s.x<c.x?h=(r.x+r.w-c.x)/c.w:s.x+s.w>c.x+c.w&&(h=(c.x+c.w-r.x)/c.w);const m=Math.min(h,d);m>o&&(o=m,a=u)}return t.collide=a,a}cacheRects(e,t,i,s,r,a){return this.nodes.forEach(o=>o._rect={y:o.y*t+i,x:o.x*e+a,w:o.w*e-a-s,h:o.h*t-i-r}),this}swap(e,t){if(!t||t.locked||!e||e.locked)return!1;function i(){const r=t.x,a=t.y;return t.x=e.x,t.y=e.y,e.h!=t.h?(e.x=r,e.y=t.y+t.h):e.w!=t.w?(e.x=t.x+t.w,e.y=a):(e.x=r,e.y=a),e._dirty=t._dirty=!0,!0}let s;if(e.w===t.w&&e.h===t.h&&(e.x===t.x||e.y===t.y)&&(s=f.isTouching(e,t)))return i();if(s!==!1){if(e.w===t.w&&e.x===t.x&&(s||(s=f.isTouching(e,t)))){if(t.y<e.y){const r=e;e=t,t=r}return i()}if(s!==!1){if(e.h===t.h&&e.y===t.y&&(s||(s=f.isTouching(e,t)))){if(t.x<e.x){const r=e;e=t,t=r}return i()}return!1}}}isAreaEmpty(e,t,i,s){const r={x:e||0,y:t||0,w:i||1,h:s||1};return!this.collide(r)}compact(e="compact",t=!0){if(this.nodes.length===0)return this;t&&this.sortNodes();const i=this.batchMode;i||this.batchUpdate();const s=this._inColumnResize;s||(this._inColumnResize=!0);const r=this.nodes;return this.nodes=[],r.forEach((a,o,u)=>{let c;a.locked||(a.autoPosition=!0,e==="list"&&o&&(c=u[o-1])),this.addNode(a,!1,c)}),s||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=f.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??se._idSeq++;const i=e.id;if(i){let r=1;for(;this.nodes.find(a=>a.id===e.id&&a!==e);)e.id=i+"_"+r++}(e.x===void 0||e.y===void 0||e.x===null||e.y===null)&&(e.autoPosition=!0);const s={x:0,y:0,w:1,h:1};return f.defaults(e,s),e.autoPosition||delete e.autoPosition,e.noResize||delete e.noResize,e.noMove||delete e.noMove,f.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=s.x,e.autoPosition=!0),isNaN(e.y)&&(e.y=s.y,e.autoPosition=!0),isNaN(e.w)&&(e.w=s.w),isNaN(e.h)&&(e.h=s.h),this.nodeBoundFix(e,t),e}nodeBoundFix(e,t){const i=e._orig||f.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 r={...e};r.autoPosition||r.x===void 0?(delete r.x,delete r.y):r.x=Math.min(this.defaultColumn-1,r.x),r.w=Math.min(this.defaultColumn,r.w||1),this.cacheOneLayout(r,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),f.samePos(e,i)||(e._dirty=!0),this}getDirtyNodes(e){return e?this.nodes.filter(t=>t._dirty&&!f.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=f.copyPos({},e),delete e._dirty}),this._hasLocked=this.nodes.some(e=>e.locked),this}restoreInitial(){return this.nodes.forEach(e=>{!e._orig||f.samePos(e,e._orig)||(f.copyPos(e,e._orig),e._dirty=!0)}),this._notify(),this}findEmptyPosition(e,t=this.nodes,i=this.column,s){const r=s?s.y*i+(s.x+s.w):0;let a=!1;for(let o=r;!a;++o){const u=o%i,c=Math.floor(o/i);if(u+e.w>i)continue;const d={x:u,y:c,w:e.w,h:e.h};t.find(h=>f.isIntercepted(d,h))||((e.x!==u||e.y!==c)&&(e._dirty=!0),e.x=u,e.y=c,delete e.autoPosition,a=!0)}return a}addNode(e,t=!1,i){const s=this.nodes.find(a=>a._id===e._id);if(s)return s;this._inColumnResize?this.nodeBoundFix(e):this.prepareNode(e),delete e._temporaryRemoved,delete e._removeDOM;let r;return e.autoPosition&&this.findEmptyPosition(e,this.nodes,this.column,i)&&(delete e.autoPosition,r=!0),this.nodes.push(e),t&&this.addedNodes.push(e),r||this._fixCollisions(e),this.batchMode||this._packNodes()._notify(),e}removeNode(e,t=!0,i=!1){return this.nodes.find(s=>s._id===e._id)?(i&&this.removedNodes.push(e),t&&(e._removeDOM=!0),this.nodes=this.nodes.filter(s=>s._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(s=>s._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 s=new se({column:this.column,float:this.float,nodes:this.nodes.map(a=>a._id===e._id?(i={...a},i):{...a})});if(!i)return!1;const r=s.moveNode(i,t)&&s.getRow()<=Math.max(this.getRow(),this.maxRow);if(!r&&!t.resizing&&t.collide){const a=t.collide.el.gridstackNode;if(this.swap(e,a))return this._notify(),!0}return r?(s.nodes.filter(a=>a._dirty).forEach(a=>{const o=this.nodes.find(u=>u._id===a._id);o&&(f.copyPos(o,a),o._dirty=!0)}),this._notify(),!0):!1}willItFit(e){if(delete e._willFitPos,!this.maxRow)return!0;const t=new se({column:this.column,float:this.float,nodes:this.nodes.map(s=>({...s}))}),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=f.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){var c,d;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 s=e.w!==t.w||e.h!==t.h,r=f.copyPos({},e,!0);if(f.copyPos(r,t),this.nodeBoundFix(r,s),f.copyPos(t,r),!t.forceCollide&&f.samePos(e,t))return!1;const a=f.copyPos({},e),o=this.collideAll(e,r,t.skip);let u=!0;if(o.length){const h=e._moving&&!t.nested;let m=h?this.directionCollideCoverage(e,t,o):o[0];if(h&&m&&((d=(c=e.grid)==null?void 0:c.opts)!=null&&d.subGridDynamic)&&!e.grid._isTemp){const p=f.areaIntercept(t.rect,m._rect),y=f.area(t.rect),_=f.area(m._rect);p/(y<_?y:_)>.8&&(m.grid.makeSubGrid(m.el,void 0,e),m=void 0)}m?u=!this._fixCollisions(e,r,m,t):(u=!1,i&&delete t.pack)}return u&&!f.samePos(e,r)&&(e._dirty=!0,f.copyPos(e,r)),t.pack&&this._packNodes()._notify(),!f.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){var a;const i=(a=this._layouts)==null?void 0:a.length,s=i&&this.column!==i-1?this._layouts[i-1]:null,r=[];return this.sortNodes(),this.nodes.forEach(o=>{const u=s==null?void 0:s.find(d=>d._id===o._id),c={...o,...u||{}};f.removeInternalForSave(c,!e),t&&t(o,c),r.push(c)}),r}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 s=i/this.column;e.forEach(r=>{if(!r._orig)return;const a=t.find(o=>o._id===r._id);a&&(a.y>=0&&r.y!==r._orig.y&&(a.y+=r.y-r._orig.y),r.x!==r._orig.x&&(a.x=Math.round(r.x*s)),r.w!==r._orig.w&&(a.w=Math.round(r.w*s)))})}}),this)}columnChanged(e,t,i="moveScale"){var o;if(!this.nodes.length||!t||e===t)return this;const s=i==="compact"||i==="list";s&&this.sortNodes(1),t<e&&this.cacheLayout(this.nodes,e),this.batchUpdate();let r=[],a=s?this.nodes:f.sort(this.nodes,-1);if(t>e&&this._layouts){const u=this._layouts[t]||[],c=this._layouts.length-1;!u.length&&e!==c&&((o=this._layouts[c])!=null&&o.length)&&(e=c,this._layouts[c].forEach(d=>{const h=a.find(m=>m._id===d._id);h&&(!s&&!d.autoPosition&&(h.x=d.x??h.x,h.y=d.y??h.y),h.w=d.w??h.w,(d.x==null||d.y===void 0)&&(h.autoPosition=!0))})),u.forEach(d=>{const h=a.findIndex(m=>m._id===d._id);if(h!==-1){const m=a[h];if(s){m.w=d.w;return}(d.autoPosition||isNaN(d.x)||isNaN(d.y))&&this.findEmptyPosition(d,r),d.autoPosition||(m.x=d.x??m.x,m.y=d.y??m.y,m.w=d.w??m.w,r.push(m)),a.splice(h,1)}})}if(s)this.compact(i,!1);else{if(a.length)if(typeof i=="function")i(t,e,r,a);else{const u=s||i==="none"?1:t/e,c=i==="move"||i==="moveScale",d=i==="scale"||i==="moveScale";a.forEach(h=>{h.x=t===1?0:c?Math.round(h.x*u):Math.min(h.x,t-1),h.w=t===1||e===1?1:d?Math.round(h.w*u)||1:Math.min(h.w,t),r.push(h)}),a=[]}r=f.sort(r,-1),this._inColumnResize=!0,this.nodes=[],r.forEach(u=>{this.addNode(u,!1),delete u._orig})}return this.nodes.forEach(u=>delete u._orig),this.batchUpdate(!1,!s),delete this._inColumnResize,this}cacheLayout(e,t,i=!1){const s=[];return e.forEach((r,a)=>{if(r._id===void 0){const o=r.id?this.nodes.find(u=>u.id===r.id):void 0;r._id=(o==null?void 0:o._id)??se._idSeq++}s[a]={x:r.x,y:r.y,w:r.w,_id:r._id}}),this._layouts=i?[]:this._layouts||[],this._layouts[t]=s,this}cacheOneLayout(e,t){e._id=e._id??se._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 s=this.findCacheLayout(e,t);return s===-1?this._layouts[t].push(i):this._layouts[t][s]=i,this}findCacheLayout(e,t){var i,s;return((s=(i=this._layouts)==null?void 0:i[t])==null?void 0:s.findIndex(r=>r._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}}se._idSeq=0;const K={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 C{}const ee=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 re{}function Ae(l,e){l.touches.length>1||(l.cancelable&&l.preventDefault(),f.simulateMouseEvent(l.changedTouches[0],e))}function _t(l,e){l.cancelable&&l.preventDefault(),f.simulateMouseEvent(l,e)}function Oe(l){re.touchHandled||(re.touchHandled=!0,Ae(l,"mousedown"))}function He(l){re.touchHandled&&Ae(l,"mousemove")}function Ie(l){if(!re.touchHandled)return;re.pointerLeaveTimeout&&(window.clearTimeout(re.pointerLeaveTimeout),delete re.pointerLeaveTimeout);const e=!!C.dragElement;Ae(l,"mouseup"),e||Ae(l,"click"),re.touchHandled=!1}function Me(l){l.pointerType!=="mouse"&&l.target.releasePointerCapture(l.pointerId)}function bt(l){C.dragElement&&l.pointerType!=="mouse"&&_t(l,"mouseenter")}function vt(l){C.dragElement&&l.pointerType!=="mouse"&&(re.pointerLeaveTimeout=window.setTimeout(()=>{delete re.pointerLeaveTimeout,_t(l,"mouseleave")},10))}class qe{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(`${qe.prefix}${this.dir}`),e.style.zIndex="100",e.style.userSelect="none",this.host.appendChild(this.el),this.el.addEventListener("mousedown",this._mouseDown),ee&&(this.el.addEventListener("touchstart",Oe),this.el.addEventListener("pointerdown",Me)),this}destroy(){return this.moving&&this._mouseUp(this.mouseDownEvent),this.el.removeEventListener("mousedown",this._mouseDown),ee&&(this.el.removeEventListener("touchstart",Oe),this.el.removeEventListener("pointerdown",Me)),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),ee&&(this.el.addEventListener("touchmove",He),this.el.addEventListener("touchend",Ie)),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),ee&&(this.el.removeEventListener("touchmove",He),this.el.removeEventListener("touchend",Ie)),delete this.moving,delete this.mouseDownEvent,e.stopPropagation(),e.preventDefault()}_keyEvent(e){var t,i;e.key==="Escape"&&((i=(t=this.host.gridstackNode)==null?void 0:t.grid)==null||i.engine.restoreInitial(),this._mouseUp(this.mouseDownEvent))}_triggerEvent(e,t){return this.option[e]&&this.option[e](t),this}}qe.prefix="ui-resizable-";class We{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 xe extends We{constructor(e,t={}){super(),this.el=e,this.option=t,this.rectScale={x:1,y:1},this._ui=()=>{const s=this.el.parentElement.getBoundingClientRect(),r={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},a=this.temporalRect||r;return{position:{left:(a.left-s.left)*this.rectScale.x,top:(a.top-s.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(s=>this.option[s]=e[s]),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),C.overResizeElement===this&&delete C.overResizeElement),this}_mouseOver(e){C.overResizeElement||C.dragElement||(C.overResizeElement=this,this.el.classList.remove("ui-resizable-autohide"))}_mouseOut(e){C.overResizeElement===this&&(delete C.overResizeElement,this.el.classList.add("ui-resizable-autohide"))}_setupHandlers(){return this.handlers=this.option.handles.split(",").map(e=>e.trim()).map(e=>new qe(this.el,e,{start:t=>{this._resizeStart(t)},stop:t=>{this._resizeStop(t)},move:t=>{this._resizing(t,e)}})),this}_resizeStart(e){this.sizeToContent=f.shouldSizeToContent(this.el.gridstackNode,!0),this.originalRect=this.el.getBoundingClientRect(),this.scrollEl=f.getScrollElement(this.el),this.scrollY=this.scrollEl.scrollTop,this.scrolled=0,this.startEvent=e,this._setupHelper(),this._applyChange();const t=f.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=f.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=f.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=xe._originStyleProp.map(i=>this.el.style[i]),this.parentOriginStylePosition=this.el.parentElement.style.position;const e=this.el.parentElement,t=f.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 xe._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,s={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},r=e.clientX-i.clientX,a=this.sizeToContent?0:e.clientY-i.clientY;let o,u;t.indexOf("e")>-1?s.width+=r:t.indexOf("w")>-1&&(s.width-=r,s.left+=r,o=!0),t.indexOf("s")>-1?s.height+=a:t.indexOf("n")>-1&&(s.height-=a,s.top+=a,u=!0);const c=this._constrainSize(s.width,s.height,o,u);return Math.round(s.width)!==Math.round(c.width)&&(t.indexOf("w")>-1&&(s.left+=s.width-c.width),s.width=c.width),Math.round(s.height)!==Math.round(c.height)&&(t.indexOf("n")>-1&&(s.top+=s.height-c.height),s.height=c.height),s}_constrainSize(e,t,i,s){const r=this.option,a=(i?r.maxWidthMoveLeft:r.maxWidth)||Number.MAX_SAFE_INTEGER,o=r.minWidth/this.rectScale.x||e,u=(s?r.maxHeightMoveUp:r.maxHeight)||Number.MAX_SAFE_INTEGER,c=r.minHeight/this.rectScale.y||t,d=Math.min(a,Math.max(o,e)),h=Math.min(u,Math.max(c,t));return{width:d,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:s}=t.getBoundingClientRect();e={left:i,top:s,width:0,height:0}}return this.temporalRect?(Object.keys(this.temporalRect).forEach(t=>{const i=this.temporalRect[t],s=t==="width"||t==="left"?this.rectScale.x:t==="height"||t==="top"?this.rectScale.y:1;this.el.style[t]=(i-e[t])*s+"px"}),this):this}_removeHandlers(){return this.handlers.forEach(e=>e.destroy()),delete this.handlers,this}}xe._originStyleProp=["width","height","position","left","top","opacity","zIndex"];const _i='input,textarea,button,select,option,[contenteditable="true"],.ui-resizable-handle';class Ce extends We{constructor(e,t={}){var r;super(),this.el=e,this.option=t,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0};const i=(r=t==null?void 0:t.handle)==null?void 0:r.substring(1),s=e.gridstackNode;this.dragEls=!i||e.classList.contains(i)?[e]:s!=null&&s.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),ee&&(e.addEventListener("touchstart",Oe),e.addEventListener("pointerdown",Me))}),this.el.classList.remove("ui-draggable-disabled"))}disable(e=!1){this.disabled!==!0&&(super.disable(),this.dragEls.forEach(t=>{t.removeEventListener("mousedown",this._mouseDown),ee&&(t.removeEventListener("touchstart",Oe),t.removeEventListener("pointerdown",Me))}),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(!C.mouseHandled)return e.button!==0||!this.dragEls.find(t=>t===e.target)&&e.target.closest(_i)||this.option.cancel&&e.target.closest(this.option.cancel)||(this.mouseDownEvent=e,delete this.dragging,delete C.dragElement,delete C.dropElement,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),ee&&(e.currentTarget.addEventListener("touchmove",He),e.currentTarget.addEventListener("touchend",Ie)),e.preventDefault(),document.activeElement&&document.activeElement.blur(),C.mouseHandled=!0),!0}_callDrag(e){if(!this.dragging)return;const t=f.initEvent(e,{target:this.el,type:"drag"});this.option.drag&&this.option.drag(t,this.ui()),this.triggerEvent("drag",t)}_mouseMove(e){var i;const t=this.mouseDownEvent;if(this.lastDrag=e,this.dragging)if(this._dragFollow(e),C.pauseDrag){const s=Number.isInteger(C.pauseDrag)?C.pauseDrag:100;this.dragTimeout&&window.clearTimeout(this.dragTimeout),this.dragTimeout=window.setTimeout(()=>this._callDrag(e),s)}else this._callDrag(e);else if(Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>3){this.dragging=!0,C.dragElement=this;const s=(i=this.el.gridstackNode)==null?void 0:i.grid;s?C.dropElement=s.el.ddElement.ddDroppable:delete C.dropElement,this.helper=this._createHelper(),this._setupHelperContainmentStyle(),this.dragTransform=f.getValuesFromTransformedElement(this.helperContainment),this.dragOffset=this._getDragOffset(e,this.el,this.helperContainment),this._setupHelperStyle(e);const r=f.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){var t,i;if(document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),ee&&e.currentTarget&&(e.currentTarget.removeEventListener("touchmove",He,!0),e.currentTarget.removeEventListener("touchend",Ie,!0)),this.dragging){delete this.dragging,(t=this.el.gridstackNode)==null||delete t._origRotate,document.removeEventListener("keydown",this._keyEvent),((i=C.dropElement)==null?void 0:i.el)===this.el.parentElement&&delete C.dropElement,this.helperContainment.style.position=this.parentOriginStylePosition||null,this.helper!==this.el&&this.helper.remove(),this._removeHelperStyle();const s=f.initEvent(e,{target:this.el,type:"dragstop"});this.option.stop&&this.option.stop(s),this.triggerEvent("dragstop",s),C.dropElement&&C.dropElement.drop(e)}delete this.helper,delete this.mouseDownEvent,delete C.dragElement,delete C.dropElement,delete C.mouseHandled,e.preventDefault()}_keyEvent(e){var s,r;const t=this.el.gridstackNode,i=(t==null?void 0:t.grid)||((r=(s=C.dropElement)==null?void 0:s.el)==null?void 0:r.gridstack);if(e.key==="Escape")t&&t._origRotate&&(t._orig=t._origRotate,delete t._origRotate),i==null||i.cancelDrag(),this._mouseUp(this.mouseDownEvent);else if(t&&i&&(e.key==="r"||e.key==="R")){if(!f.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",f.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=f.cloneNode(this.el)),e.parentElement||f.appendTo(e,this.option.appendTo==="parent"?this.el.parentElement:this.option.appendTo),this.dragElementOriginStyle=Ce.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(){var t;this.helper.classList.remove("ui-draggable-dragging");const e=(t=this.helper)==null?void 0:t.gridstackNode;if(!(e!=null&&e._isAboutToRemove)&&this.dragElementOriginStyle){const i=this.helper,s=this.dragElementOriginStyle.transition||null;i.style.transition=this.dragElementOriginStyle.transition="none",Ce.originStyleProp.forEach(r=>i.style[r]=this.dragElementOriginStyle[r]||null),setTimeout(()=>i.style.transition=s,50)}return delete this.dragElementOriginStyle,this}_dragFollow(e){const t={left:0,top:0},i=this.helper.style,s=this.dragOffset;i.left=(e.clientX+s.offsetLeft-t.left)*this.dragTransform.xScale+"px",i.top=(e.clientY+s.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 s=0,r=0;i&&(s=this.dragTransform.xOffset,r=this.dragTransform.yOffset);const a=t.getBoundingClientRect();return{left:a.left,top:a.top,offsetLeft:-e.clientX+a.left-s,offsetTop:-e.clientY+a.top-r,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}}}}Ce.originStyleProp=["width","height","transform","transform-origin","transition","pointerEvents","position","left","top","minWidth","willChange"];class bi extends We{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),ee&&(this.el.addEventListener("pointerenter",bt),this.el.addEventListener("pointerleave",vt)))}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),ee&&(this.el.removeEventListener("pointerenter",bt),this.el.removeEventListener("pointerleave",vt)))}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(!C.dragElement||!this._canDrop(C.dragElement.el))return;e.preventDefault(),e.stopPropagation(),C.dropElement&&C.dropElement!==this&&C.dropElement._mouseLeave(e,!0),C.dropElement=this;const t=f.initEvent(e,{target:this.el,type:"dropover"});this.option.over&&this.option.over(t,this._ui(C.dragElement)),this.triggerEvent("dropover",t),this.el.classList.add("ui-droppable-over")}_mouseLeave(e,t=!1){var s;if(!C.dragElement||C.dropElement!==this)return;e.preventDefault(),e.stopPropagation();const i=f.initEvent(e,{target:this.el,type:"dropout"});if(this.option.out&&this.option.out(i,this._ui(C.dragElement)),this.triggerEvent("dropout",i),C.dropElement===this&&(delete C.dropElement,!t)){let r,a=this.el.parentElement;for(;!r&&a;)r=(s=a.ddElement)==null?void 0:s.ddDroppable,a=a.parentElement;r&&r._mouseEnter(e)}}drop(e){e.preventDefault();const t=f.initEvent(e,{target:this.el,type:"drop"});this.option.drop&&this.option.drop(t,this._ui(C.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 Ve{static init(e){return e.ddElement||(e.ddElement=new Ve(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 Ce(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 xe(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 bi(this.el,e),this}cleanDroppable(){return this.ddDroppable&&(this.ddDroppable.destroy(),delete this.ddDroppable),this}}class vi{resizable(e,t,i,s){return this._getDDElements(e,t).forEach(r=>{if(t==="disable"||t==="enable")r.ddResizable&&r.ddResizable[t]();else if(t==="destroy")r.ddResizable&&r.cleanResizable();else if(t==="option")r.setupResizable({[i]:s});else{const o=r.el.gridstackNode.grid;let u=r.el.getAttribute("gs-resize-handles")||o.opts.resizable.handles||"e,s,se";u==="all"&&(u="n,e,s,w,se,sw,ne,nw");const c=!o.opts.alwaysShowResizeHandle;r.setupResizable({...o.opts.resizable,handles:u,autoHide:c,start:t.start,stop:t.stop,resize:t.resize})}}),this}draggable(e,t,i,s){return this._getDDElements(e,t).forEach(r=>{if(t==="disable"||t==="enable")r.ddDraggable&&r.ddDraggable[t]();else if(t==="destroy")r.ddDraggable&&r.cleanDraggable();else if(t==="option")r.setupDraggable({[i]:s});else{const a=r.el.gridstackNode.grid;r.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,s){return typeof t.accept=="function"&&!t._accept&&(t._accept=t.accept,t.accept=r=>t._accept(r)),this._getDDElements(e,t).forEach(r=>{t==="disable"||t==="enable"?r.ddDroppable&&r.ddDroppable[t]():t==="destroy"?r.ddDroppable&&r.cleanDroppable():t==="option"?r.setupDroppable({[i]:s}):r.setupDroppable(t)}),this}isDroppable(e){var t;return!!((t=e==null?void 0:e.ddElement)!=null&&t.ddDroppable&&!e.ddElement.ddDroppable.disabled)}isDraggable(e){var t;return!!((t=e==null?void 0:e.ddElement)!=null&&t.ddDraggable&&!e.ddElement.ddDraggable.disabled)}isResizable(e){var t;return!!((t=e==null?void 0:e.ddElement)!=null&&t.ddResizable&&!e.ddElement.ddResizable.disabled)}on(e,t,i){return this._getDDElements(e).forEach(s=>s.on(t,r=>{i(r,C.dragElement?C.dragElement.el:r.target,C.dragElement?C.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",s=f.getElements(e);return s.length?s.map(a=>a.ddElement||(i?Ve.init(a):null)).filter(a=>a):[]}}/*!
|
|
1
|
+
(function(v,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue"),require("@kong-ui-public/analytics-utilities"),require("@kong-ui-public/analytics-chart"),require("@kong-ui-public/analytics-metric-provider"),require("@kong-ui-public/analytics-config-store"),require("@kong/icons"),require("swrv"),require("axios"),require("@kong-ui-public/i18n"),require("@kong-ui-public/analytics-geo-map")):typeof define=="function"&&define.amd?define(["exports","vue","@kong-ui-public/analytics-utilities","@kong-ui-public/analytics-chart","@kong-ui-public/analytics-metric-provider","@kong-ui-public/analytics-config-store","@kong/icons","swrv","axios","@kong-ui-public/i18n","@kong-ui-public/analytics-geo-map"],n):(v=typeof globalThis<"u"?globalThis:v||self,n(v["kong-ui-public-dashboard-renderer"]={},v.Vue,v["kong-ui-public-analytics-utilities"],v["kong-ui-public-analytics-chart"],v["kong-ui-public-analytics-metric-provider"],v["kong-ui-public-analytics-config-store"],v.KongIcons,v.swrv,v.axios,v["kong-ui-public-i18n"],v["kong-ui-public-analytics-geo-map"]))})(this,function(v,n,D,ee,De,le,he,Bt,Ji,Ze,Je){"use strict";var Xi=Object.defineProperty;var zt=v=>{throw TypeError(v)};var Zi=(v,n,D)=>n in v?Xi(v,n,{enumerable:!0,configurable:!0,writable:!0,value:D}):v[n]=D;var Lt=(v,n,D)=>Zi(v,typeof n!="symbol"?n+"":n,D),Qe=(v,n,D)=>n.has(v)||zt("Cannot "+D);var w=(v,n,D)=>(Qe(v,n,"read from private field"),D?D.call(v):n.get(v)),P=(v,n,D)=>n.has(v)?zt("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(v):n.set(v,D),q=(v,n,D,ee)=>(Qe(v,n,"write to private field"),ee?ee.call(v,D):n.set(v,D),D),$=(v,n,D)=>(Qe(v,n,"access private method"),D);var Te=(v,n,D,ee)=>({set _(De){q(v,n,De,D)},get _(){return w(v,n,ee)}});var K,me,ge,ce,Ce,pe,ke,j,ye,G,Re,Q,_e,ne,Se,qe,T,Ot,At,Ht,It,Mt,$e,Ye,Xe,Fe,qt,Ge;var et=(l=>(l.VALIDATING="VALIDATING",l.VALIDATING_HAS_DATA="VALIDATING_HAS_DATA",l.PENDING="PENDING",l.SUCCESS="SUCCESS",l.SUCCESS_HAS_DATA="SUCCESS_HAS_DATA",l.ERROR="ERROR",l.STALE_IF_ERROR="STALE_IF_ERROR",l))(et||{});const Pt=l=>{var e,t,i,s,r;return l?!!((e=Object.keys(l))!=null&&e.length||(t=l.data)!=null&&t.length||(s=(i=l.data)==null?void 0:i.data)!=null&&s.length||!((r=l.data)!=null&&r.data)&&typeof l.data=="object"&&Object.keys(l==null?void 0:l.data).length):!1};function $t(l=n.ref({}),e,t,i=Pt){const s=n.ref("PENDING");return n.watchEffect(()=>{const r=i(l.value);if(l.value&&r&&t.value){s.value="VALIDATING_HAS_DATA";return}if(l.value&&t.value){s.value="VALIDATING";return}if(l.value&&e.value){s.value="STALE_IF_ERROR";return}if(l.value===void 0&&!e.value){s.value="PENDING";return}if(l.value&&!e.value&&r){s.value="SUCCESS_HAS_DATA";return}if(l.value&&!e.value){s.value="SUCCESS";return}l.value===void 0&&e&&(s.value="ERROR")}),{state:s,swrvState:et}}const Ft={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"},csvExport:{defaultFilename:"Chart export",exportAsCsv:"Export as CSV"},jumpToExplore:"Explore",jumpToRequests:"View requests",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 Gt(){const l=Ze.createI18n("en-us",Ft);return{i18n:l,i18nT:Ze.i18nTComponent(l)}}const fe=170,Ne=6,re="analytics-query-provider",Ue="{entity-id}",tt="{cp-id}",it="{timeframe}",st=30*1e3,rt=3e5,nt=36e5;function Ut(){const l=n.inject(re);return{evaluateFeatureFlag:(t,i)=>l?l.evaluateFeatureFlagFn(t,i):i}}function Wt(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}var ot={exports:{}};(function(l){var e=Object.prototype.hasOwnProperty,t="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(t=!1));function s(u,h,d){this.fn=u,this.context=h,this.once=d||!1}function r(u,h,d,c,m){if(typeof d!="function")throw new TypeError("The listener must be a function");var g=new s(d,c||u,m),y=t?t+h:h;return u._events[y]?u._events[y].fn?u._events[y]=[u._events[y],g]:u._events[y].push(g):(u._events[y]=g,u._eventsCount++),u}function a(u,h){--u._eventsCount===0?u._events=new i:delete u._events[h]}function o(){this._events=new i,this._eventsCount=0}o.prototype.eventNames=function(){var h=[],d,c;if(this._eventsCount===0)return h;for(c in d=this._events)e.call(d,c)&&h.push(t?c.slice(1):c);return Object.getOwnPropertySymbols?h.concat(Object.getOwnPropertySymbols(d)):h},o.prototype.listeners=function(h){var d=t?t+h:h,c=this._events[d];if(!c)return[];if(c.fn)return[c.fn];for(var m=0,g=c.length,y=new Array(g);m<g;m++)y[m]=c[m].fn;return y},o.prototype.listenerCount=function(h){var d=t?t+h:h,c=this._events[d];return c?c.fn?1:c.length:0},o.prototype.emit=function(h,d,c,m,g,y){var _=t?t+h:h;if(!this._events[_])return!1;var p=this._events[_],k=arguments.length,N,x;if(p.fn){switch(p.once&&this.removeListener(h,p.fn,void 0,!0),k){case 1:return p.fn.call(p.context),!0;case 2:return p.fn.call(p.context,d),!0;case 3:return p.fn.call(p.context,d,c),!0;case 4:return p.fn.call(p.context,d,c,m),!0;case 5:return p.fn.call(p.context,d,c,m,g),!0;case 6:return p.fn.call(p.context,d,c,m,g,y),!0}for(x=1,N=new Array(k-1);x<k;x++)N[x-1]=arguments[x];p.fn.apply(p.context,N)}else{var I=p.length,O;for(x=0;x<I;x++)switch(p[x].once&&this.removeListener(h,p[x].fn,void 0,!0),k){case 1:p[x].fn.call(p[x].context);break;case 2:p[x].fn.call(p[x].context,d);break;case 3:p[x].fn.call(p[x].context,d,c);break;case 4:p[x].fn.call(p[x].context,d,c,m);break;default:if(!N)for(O=1,N=new Array(k-1);O<k;O++)N[O-1]=arguments[O];p[x].fn.apply(p[x].context,N)}}return!0},o.prototype.on=function(h,d,c){return r(this,h,d,c,!1)},o.prototype.once=function(h,d,c){return r(this,h,d,c,!0)},o.prototype.removeListener=function(h,d,c,m){var g=t?t+h:h;if(!this._events[g])return this;if(!d)return a(this,g),this;var y=this._events[g];if(y.fn)y.fn===d&&(!m||y.once)&&(!c||y.context===c)&&a(this,g);else{for(var _=0,p=[],k=y.length;_<k;_++)(y[_].fn!==d||m&&!y[_].once||c&&y[_].context!==c)&&p.push(y[_]);p.length?this._events[g]=p.length===1?p[0]:p:a(this,g)}return this},o.prototype.removeAllListeners=function(h){var d;return h?(d=t?t+h:h,this._events[d]&&a(this,d)):(this._events=new i,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=t,o.EventEmitter=o,l.exports=o})(ot);var Vt=ot.exports;const Kt=Wt(Vt);class at extends Error{constructor(e){super(e),this.name="TimeoutError"}}class jt extends Error{constructor(e){super(),this.name="AbortError",this.message=e}}const lt=l=>globalThis.DOMException===void 0?new jt(l):new DOMException(l),ct=l=>{const e=l.reason===void 0?lt("This operation was aborted."):l.reason;return e instanceof Error?e:lt(e)};function Qt(l,e){const{milliseconds:t,fallback:i,message:s,customTimers:r={setTimeout,clearTimeout}}=e;let a,o;const h=new Promise((d,c)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){const{signal:g}=e;g.aborted&&c(ct(g)),o=()=>{c(ct(g))},g.addEventListener("abort",o,{once:!0})}if(t===Number.POSITIVE_INFINITY){l.then(d,c);return}const m=new at;a=r.setTimeout.call(void 0,()=>{if(i){try{d(i())}catch(g){c(g)}return}typeof l.cancel=="function"&&l.cancel(),s===!1?d():s instanceof Error?c(s):(m.message=s??`Promise timed out after ${t} milliseconds`,c(m))},t),(async()=>{try{d(await l)}catch(g){c(g)}})()}).finally(()=>{h.clear(),o&&e.signal&&e.signal.removeEventListener("abort",o)});return h.clear=()=>{r.clearTimeout.call(void 0,a),a=void 0},h}function Yt(l,e,t){let i=0,s=l.length;for(;s>0;){const r=Math.trunc(s/2);let a=i+r;t(l[a],e)<=0?(i=++a,s-=r+1):s=r}return i}class Xt{constructor(){P(this,K,[])}enqueue(e,t){t={priority:0,...t};const i={priority:t.priority,id:t.id,run:e};if(this.size===0||w(this,K)[this.size-1].priority>=t.priority){w(this,K).push(i);return}const s=Yt(w(this,K),i,(r,a)=>a.priority-r.priority);w(this,K).splice(s,0,i)}setPriority(e,t){const i=w(this,K).findIndex(r=>r.id===e);if(i===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);const[s]=w(this,K).splice(i,1);this.enqueue(s.run,{priority:t,id:e})}dequeue(){const e=w(this,K).shift();return e==null?void 0:e.run}filter(e){return w(this,K).filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return w(this,K).length}}K=new WeakMap;class Zt extends Kt{constructor(t){var i,s;super();P(this,T);P(this,me);P(this,ge);P(this,ce,0);P(this,Ce);P(this,pe);P(this,ke,0);P(this,j);P(this,ye);P(this,G);P(this,Re);P(this,Q,0);P(this,_e);P(this,ne);P(this,Se);P(this,qe,1n);Lt(this,"timeout");if(t={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Xt,...t},!(typeof t.intervalCap=="number"&&t.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${((i=t.intervalCap)==null?void 0:i.toString())??""}\` (${typeof t.intervalCap})`);if(t.interval===void 0||!(Number.isFinite(t.interval)&&t.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${((s=t.interval)==null?void 0:s.toString())??""}\` (${typeof t.interval})`);q(this,me,t.carryoverConcurrencyCount),q(this,ge,t.intervalCap===Number.POSITIVE_INFINITY||t.interval===0),q(this,Ce,t.intervalCap),q(this,pe,t.interval),q(this,G,new t.queueClass),q(this,Re,t.queueClass),this.concurrency=t.concurrency,this.timeout=t.timeout,q(this,Se,t.throwOnTimeout===!0),q(this,ne,t.autoStart===!1)}get concurrency(){return w(this,_e)}set concurrency(t){if(!(typeof t=="number"&&t>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${t}\` (${typeof t})`);q(this,_e,t),$(this,T,Fe).call(this)}setPriority(t,i){w(this,G).setPriority(t,i)}async add(t,i={}){return i.id??(i.id=(Te(this,qe)._++).toString()),i={timeout:this.timeout,throwOnTimeout:w(this,Se),...i},new Promise((s,r)=>{w(this,G).enqueue(async()=>{var a;Te(this,Q)._++;try{(a=i.signal)==null||a.throwIfAborted(),Te(this,ce)._++;let o=t({signal:i.signal});i.timeout&&(o=Qt(Promise.resolve(o),{milliseconds:i.timeout})),i.signal&&(o=Promise.race([o,$(this,T,qt).call(this,i.signal)]));const u=await o;s(u),this.emit("completed",u)}catch(o){if(o instanceof at&&!i.throwOnTimeout){s();return}r(o),this.emit("error",o)}finally{$(this,T,Ht).call(this)}},i),this.emit("add"),$(this,T,$e).call(this)})}async addAll(t,i){return Promise.all(t.map(async s=>this.add(s,i)))}start(){return w(this,ne)?(q(this,ne,!1),$(this,T,Fe).call(this),this):this}pause(){q(this,ne,!0)}clear(){q(this,G,new(w(this,Re)))}async onEmpty(){w(this,G).size!==0&&await $(this,T,Ge).call(this,"empty")}async onSizeLessThan(t){w(this,G).size<t||await $(this,T,Ge).call(this,"next",()=>w(this,G).size<t)}async onIdle(){w(this,Q)===0&&w(this,G).size===0||await $(this,T,Ge).call(this,"idle")}get size(){return w(this,G).size}sizeBy(t){return w(this,G).filter(t).length}get pending(){return w(this,Q)}get isPaused(){return w(this,ne)}}me=new WeakMap,ge=new WeakMap,ce=new WeakMap,Ce=new WeakMap,pe=new WeakMap,ke=new WeakMap,j=new WeakMap,ye=new WeakMap,G=new WeakMap,Re=new WeakMap,Q=new WeakMap,_e=new WeakMap,ne=new WeakMap,Se=new WeakMap,qe=new WeakMap,T=new WeakSet,Ot=function(){return w(this,ge)||w(this,ce)<w(this,Ce)},At=function(){return w(this,Q)<w(this,_e)},Ht=function(){Te(this,Q)._--,$(this,T,$e).call(this),this.emit("next")},It=function(){$(this,T,Xe).call(this),$(this,T,Ye).call(this),q(this,ye,void 0)},Mt=function(){const t=Date.now();if(w(this,j)===void 0){const i=w(this,ke)-t;if(i<0)q(this,ce,w(this,me)?w(this,Q):0);else return w(this,ye)===void 0&&q(this,ye,setTimeout(()=>{$(this,T,It).call(this)},i)),!0}return!1},$e=function(){if(w(this,G).size===0)return w(this,j)&&clearInterval(w(this,j)),q(this,j,void 0),this.emit("empty"),w(this,Q)===0&&this.emit("idle"),!1;if(!w(this,ne)){const t=!w(this,T,Mt);if(w(this,T,Ot)&&w(this,T,At)){const i=w(this,G).dequeue();return i?(this.emit("active"),i(),t&&$(this,T,Ye).call(this),!0):!1}}return!1},Ye=function(){w(this,ge)||w(this,j)!==void 0||(q(this,j,setInterval(()=>{$(this,T,Xe).call(this)},w(this,pe))),q(this,ke,Date.now()+w(this,pe)))},Xe=function(){w(this,ce)===0&&w(this,Q)===0&&w(this,j)&&(clearInterval(w(this,j)),q(this,j,void 0)),q(this,ce,w(this,me)?w(this,Q):0),$(this,T,Fe).call(this)},Fe=function(){for(;$(this,T,$e).call(this););},qt=async function(t){return new Promise((i,s)=>{t.addEventListener("abort",()=>{s(t.reason)},{once:!0})})},Ge=async function(t,i){return new Promise(s=>{const r=()=>{i&&!i()||(this.off(t,r),s())};this.on(t,r)})};const Jt=()=>{const l=le.useAnalyticsConfigStore(),e=n.inject(re);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 Zt({carryoverConcurrencyCount:!0,concurrency:l.maxParallelRequests,interval:l.requestInterval,intervalCap:l.requestIntervalCap}),i={...e,queryFnOverride:!0,queryFn:(s,r)=>t.add(()=>e.queryFn(s,r),{throwOnTimeout:!0})};n.provide(re,i)};/*!
|
|
2
|
+
* pinia v3.0.4
|
|
3
|
+
* (c) 2025 Eduardo San Martin Morote
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/const ei=typeof window<"u";let ht;process.env.NODE_ENV;const dt=process.env.NODE_ENV!=="production"?Symbol("pinia"):Symbol();var ut;(function(l){l.direct="direct",l.patchObject="patch object",l.patchFunction="patch function"})(ut||(ut={})),process.env.NODE_ENV!=="production"?Symbol("pinia:skipHydration"):Symbol();function ft(l){const e=n.toRaw(l),t={};for(const i in e){const s=e[i];s.effect?t[i]=n.computed({get:()=>l[i],set(r){l[i]=r}}):(n.isRef(s)||n.isReactive(s))&&(t[i]=n.toRef(l,i))}return t}const ti=["basic","api_usage","llm_usage","agentic_usage","platform",void 0];function ii({queryBridge:l,context:e,definition:t,chartData:i}){const s=n.ref(""),r=n.ref(""),a=n.ref(void 0),o=n.ref(void 0),u=le.useAnalyticsConfigStore(),h=le.useDatasourceConfigStore(),{stripUnknownFilters:d,loading:c}=ft(h);n.onMounted(async()=>{var R,z;s.value=await((R=l==null?void 0:l.exploreBaseUrl)==null?void 0:R.call(l))??"",r.value=await((z=l==null?void 0:l.requestsBaseUrl)==null?void 0:z.call(l))??""});const m=n.computed(()=>u.analytics&&u.percentiles),g=n.computed(()=>{const R=t.value.chart.type;return["golden_signals","gauge"].includes(R)?!1:R==="top_n"?e.value.editable||e.value.showTileActions:!0}),y=n.computed(()=>r.value&&t.value.query&&t.value.query.datasource!=="llm_usage"&&t.value.query.datasource!=="platform"&&m.value&&!c.value),_=n.computed(()=>s.value&&t.value.query&&ti.includes(t.value.query.datasource)&&m.value&&!c.value),p=n.computed(()=>i.value?D.msToGranularity(i.value.meta.granularity_ms):void 0),k=n.computed(()=>{var ae;const R=[...e.value.filters,...t.value.query.filters??[]],z=t.value.query.metrics,Z=((ae=t.value.query)==null?void 0:ae.datasource)??"api_usage";return d.value({datasource:Z,filters:R,metrics:z})}),N=n.computed(()=>{if(!_.value||!g.value)return"";const R=k.value,z=t.value.query.time_range||e.value.timeSpec,Z=be(z,R);return ue(Z)}),x=n.computed(()=>{if(!y.value||!g.value)return"";const R=k.value,z=O(t.value.query.time_range||e.value.timeSpec,R);return I(z)}),I=R=>y.value?`${r.value}?q=${JSON.stringify(R)}`:"",O=(R,z)=>{var ve,S,A,M;const Z=(S=(ve=i.value)==null?void 0:ve.meta)!=null&&S.start?new Date(i.value.meta.start):void 0,ae=(M=(A=i.value)==null?void 0:A.meta)!=null&&M.end?new Date(i.value.meta.end):void 0;return{filter:z,timeframe:{timePeriodsKey:R.type==="relative"?R.time_range:"custom",start:R.type==="absolute"?Z:void 0,end:R.type==="absolute"?ae:void 0}}},oe=(R,z)=>({filter:z,timeframe:{timePeriodsKey:R.type==="relative"?R.time_range:"custom",start:R.type==="absolute"?R.start:void 0,end:R.type==="absolute"?R.end:void 0}}),be=(R,z)=>{const Z=t.value.query.dimensions??[];return{filters:z,metrics:t.value.query.metrics??[],dimensions:Z,time_range:R,granularity:t.value.query.granularity||p.value}},ue=R=>{if(!_.value)return"";const z=t.value.query.datasource&&t.value.query.datasource!=="basic"?t.value.query.datasource:"api_usage";return`${s.value}?q=${JSON.stringify(R)}&d=${z}&c=${t.value.chart.type}`};return n.watch([y,_],([R,z])=>{R&&(a.value={href:""}),z&&(o.value={href:""})}),{exploreLinkKebabMenu:N,requestsLinkKebabMenu:x,canShowKebabMenu:g,canGenerateRequestsLink:y,canGenerateExploreLink:_,requestsLinkZoomActions:a,exploreLinkZoomActions:o,buildExploreQuery:be,buildRequestsQueryZoomActions:oe,buildExploreLink:ue,buildRequestLink:I}}function si(){const l=n.inject(re),e=le.useDatasourceConfigStore(),t=new AbortController;return n.onUnmounted(()=>{t.abort()}),{issueQuery:async(s,r,a)=>{if(!l)throw new Error("Query bridge is not defined");await e.isReady();const{datasource:o,limit:u,...h}=s,d=o||"basic",c=[];s.filters&&c.push(...s.filters),c.push(...e.stripUnknownFilters({datasource:d,filters:r.filters}));let m=s.time_range;m?m.tz||(m={...m,tz:r.tz}):m={...r.timeSpec,tz:r.tz};const g={datasource:d,query:{...h,time_range:m,filters:c,limit:a??u}};return l.queryFn(g,t)}}}function ri({context:l,globalFilters:e=n.ref([]),isFullscreen:t=n.ref(!1)}){const i=le.useAnalyticsConfigStore(),s=n.computed(()=>l.value.timeSpec?l.value.timeSpec:{type:"relative",time_range:i.defaultQueryTimeForOrg});return{internalContext:n.computed(()=>{var m,g,y;let{tz:a,refreshInterval:o,editable:u,showTileActions:h}=l.value;const d=[...l.value.filters??[],...e.value];if(a||(a=new Intl.DateTimeFormat().resolvedOptions().timeZone),o===void 0&&(o=st),t.value){let _=!1;if(s.value.type==="relative")_=["15m","1h","6h","12h","24h"].includes(s.value.time_range);else{const N=s.value.start.getTime(),x=s.value.end.getTime();_=Math.abs(x-N)<=864e5}const p=new Date().getTime();s.value.type==="absolute"&&s.value.end.getTime()<p||s.value.type==="relative"&&["previous_week","previous_month"].includes(s.value.time_range)?o=0:_?o=rt:o=nt}u===void 0&&(u=!1),h===void 0&&(h=!0);const c=!!((y=(g=(m=n.getCurrentInstance())==null?void 0:m.vnode)==null?void 0:g.props)!=null&&y.onTileTimeRangeZoom);return{filters:d,tz:a,timeSpec:s.value,refreshInterval:o,editable:u,showTileActions:h,zoomable:c}})}}const Y={useContextLinks:ii,useDashboardInternalContext:ri,useEvaluateFeatureFlag:Ut,useI18n:Gt,useIssueQuery:si,useRequestQueue:Jt},ze=n.defineComponent({__name:"QueryDataProvider",props:{context:{},limitOverride:{},query:{},queryReady:{type:Boolean},refreshCounter:{}},emits:["chart-data","queryComplete"],setup(l,{emit:e}){const t=l,i=e,{i18n:s}=Y.useI18n(),{issueQuery:r}=Y.useIssueQuery(),a=n.inject(re),o=()=>t.queryReady&&a?JSON.stringify([t.query,t.context,t.refreshCounter]):null,{data:u,error:h,isValidating:d}=Bt(o,async()=>{try{const p=await r(t.query,t.context,t.limitOverride);return g.value=null,p}catch(p){throw g.value=ee.handleQueryError(p),p}finally{i("queryComplete")}},{refreshInterval:t.context.refreshInterval,revalidateOnFocus:!1,shouldRetryOnError:!1}),{state:c,swrvState:m}=$t(u,h,d),g=n.ref(null),y=n.computed(()=>c.value===m.ERROR||!!g.value),_=n.computed(()=>!t.queryReady||c.value===m.PENDING);return n.watch([()=>u.value,()=>c.value],([p,k])=>{p&&(k==="SUCCESS_HAS_DATA"||k==="SUCCESS")&&i("chart-data",p)}),(p,k)=>{var I;const N=n.resolveComponent("KSkeleton"),x=n.resolveComponent("KEmptyState");return _.value||!n.unref(u)&&!y.value?(n.openBlock(),n.createBlock(N,{key:0,class:"chart-skeleton",type:"table"})):y.value?(n.openBlock(),n.createBlock(x,{key:1,"action-button-visible":!1,"data-testid":"chart-empty-state"},n.createSlots({icon:n.withCtx(()=>{var O;return[((O=g.value)==null?void 0:O.type)==="forbidden"?(n.openBlock(),n.createBlock(n.unref(he.VisibilityOffIcon),{key:0})):(n.openBlock(),n.createBlock(n.unref(he.WarningOutlineIcon),{key:1}))]}),title:n.withCtx(()=>{var O;return[n.createElementVNode("p",null,n.toDisplayString(((O=g.value)==null?void 0:O.message)||n.unref(s).t("renderer.unexpectedError")),1)]}),_:2},[(I=g.value)!=null&&I.details?{name:"default",fn:n.withCtx(()=>[n.createElementVNode("p",null,n.toDisplayString(g.value.details),1)]),key:"0"}:void 0]),1024)):n.unref(u)?n.renderSlot(p.$slots,"default",{key:2,data:n.unref(u)}):n.createCommentVNode("",!0)}}}),ni=n.defineComponent({__name:"SimpleChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},setup(l){const e=l,t=n.computed(()=>e.chartOptions.type==="single_value");return(i,s)=>(n.openBlock(),n.createBlock(ze,{context:l.context,query:l.query,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter},{default:n.withCtx(({data:r})=>[n.createElementVNode("div",{class:n.normalizeClass(["analytics-chart",{"single-value":t.value}]),style:n.normalizeStyle(t.value?void 0:{height:`${l.height}px`})},[n.createVNode(n.unref(ee.SimpleChart),{"chart-data":r,"chart-options":l.chartOptions,"synthetics-data-key":t.value?void 0:l.chartOptions.synthetics_data_key},null,8,["chart-data","chart-options","synthetics-data-key"])],6)]),_:1},8,["context","query","query-ready","refresh-counter"]))}}),de=(l,e)=>{const t=l.__vccOpts||l;for(const[i,s]of e)t[i]=s;return t},mt=de(ni,[["__scopeId","data-v-d4c69df4"]]),oi={class:"analytics-chart"},We=de(n.defineComponent({__name:"BaseAnalyticsChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{},extraProps:{}},emits:["edit-tile","chart-data","zoom-time-range","view-requests","select-chart-range"],setup(l,{emit:e}){const t=l,i=e,{i18n:s}=Y.useI18n(),r=n.computed(()=>({type:t.chartOptions.type,stacked:t.chartOptions.stacked??!1,chartDatasetColors:t.chartOptions.chart_dataset_colors,threshold:t.chartOptions.threshold,hideTruncationWarning:t.query.limit!==void 0&&t.query.limit>0})),a=n.computed(()=>t.context.zoomable),o=()=>{i("edit-tile")},u=h=>{i("chart-data",h)};return(h,d)=>{const c=n.resolveComponent("KDropdownItem");return n.openBlock(),n.createBlock(ze,{context:l.context,query:l.query,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter,onChartData:u},{default:n.withCtx(({data:m})=>[n.createElementVNode("div",oi,[n.createVNode(n.unref(ee.AnalyticsChart),n.mergeProps({"chart-data":m,"chart-options":r.value,"explore-link":l.exploreLink,"legend-position":"bottom","requests-link":l.requestsLink,"synthetics-data-key":l.chartOptions.synthetics_data_key,"timeseries-zoom":a.value,"tooltip-title":""},l.extraProps,{onSelectChartRange:d[0]||(d[0]=g=>i("select-chart-range",g)),onZoomTimeRange:d[1]||(d[1]=g=>i("zoom-time-range",g))}),n.createSlots({_:2},[l.context.editable?{name:"menu-items",fn:n.withCtx(()=>[n.createVNode(c,{onClick:o},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(n.unref(s).t("renderer.edit")),1)]),_:1})]),key:"0"}:void 0]),1040,["chart-data","chart-options","explore-link","requests-link","synthetics-data-key","timeseries-zoom"])])]),_:1},8,["context","query","query-ready","refresh-counter"])}}}),[["__scopeId","data-v-52357845"]]),gt=n.defineComponent({__name:"BarChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},setup(l){return(e,t)=>(n.openBlock(),n.createBlock(We,{"chart-options":l.chartOptions,context:l.context,"extra-props":{showAnnotations:!1},height:l.height,query:l.query,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter},null,8,["chart-options","context","height","query","query-ready","refresh-counter"]))}}),pt=n.defineComponent({__name:"TimeseriesChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},emits:["zoom-time-range","select-chart-range"],setup(l,{emit:e}){const t=e;return(i,s)=>(n.openBlock(),n.createBlock(We,{"chart-options":l.chartOptions,context:l.context,"explore-link":l.exploreLink,height:l.height,query:l.query,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter,"requests-link":l.requestsLink,onSelectChartRange:s[0]||(s[0]=r=>t("select-chart-range",r)),onZoomTimeRange:s[1]||(s[1]=r=>t("zoom-time-range",r))},null,8,["chart-options","context","explore-link","height","query","query-ready","refresh-counter","requests-link"]))}}),ai=de(n.defineComponent({__name:"GoldenSignalsRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},setup(l){const e=l,t=n.computed(()=>{var s,r;const i=(s=e.query)==null?void 0:s.datasource;if(i&&i!=="api_usage"&&i!=="basic")throw new Error(`Invalid datasource value: ${i}`);return{datasource:(r=e.query)==null?void 0:r.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}});return(i,s)=>(n.openBlock(),n.createElementBlock("div",{class:n.normalizeClass(["metric-card-tile-wrapper",{titled:!!e.chartOptions.chart_title}])},[n.createVNode(n.unref(De.MetricsProvider),n.normalizeProps(n.guardReactiveProps(t.value)),{default:n.withCtx(()=>[n.createVNode(n.unref(De.MetricsConsumer))]),_:1},16)],2))}}),[["__scopeId","data-v-8a51fd28"]]),li={class:"fallback-entity-link","data-testid":"entity-link-parent"},yt=n.defineComponent({__name:"FallbackEntityLink",props:{entityLinkData:{}},setup(l){return(e,t)=>(n.openBlock(),n.createElementBlock("div",li,n.toDisplayString(l.entityLinkData.label),1))}}),ci=n.defineComponent({__name:"TopNTableRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},setup(l){const e=l,t=n.inject(re),i=n.defineAsyncComponent(async()=>{if(t!=null&&t.fetchComponent)try{return await t.fetchComponent("EntityLink")}catch{return yt}return yt}),s=r=>{var a;if((a=e.chartOptions)!=null&&a.entity_link)if(r.id.includes(":")){const[o,u]=r.id.split(":");return e.chartOptions.entity_link.replace(tt,o).replace(Ue,u)}else return e.chartOptions.entity_link.replace(Ue,r.id);return""};return(r,a)=>(n.openBlock(),n.createBlock(ze,{context:l.context,query:l.query,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter},{default:n.withCtx(({data:o})=>[n.createVNode(n.unref(ee.TopNTable),{data:o,"synthetics-data-key":l.chartOptions.synthetics_data_key},n.createSlots({_:2},[e.chartOptions.entity_link?{name:"name",fn:n.withCtx(({record:u})=>[n.createVNode(n.unref(i),{"entity-link-data":{id:u.id,label:u.name,deleted:u.deleted},"external-link":s(u)},null,8,["entity-link-data","external-link"])]),key:"0"}:void 0]),1032,["data","synthetics-data-key"])]),_:1},8,["context","query","query-ready","refresh-counter"]))}}),_t="#6c7489",hi="12px",bt="20px",vt="32px",wt="20px",di=n.defineComponent({__name:"DonutChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},setup(l){return(e,t)=>(n.openBlock(),n.createBlock(We,{"chart-options":l.chartOptions,context:l.context,height:l.height,query:l.query,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter},null,8,["chart-options","context","height","query","query-ready","refresh-counter"]))}}),ui=["data-testid"],fi={key:0,class:"tile-header"},mi={class:"badge-container"},gi={class:"badge-text"},pi={key:0},yi=["data-testid"],_i=["data-testid"],bi={class:"delete-option"},vi=["data-testid"],wi=["data-testid"],Et=de(n.defineComponent({__name:"DashboardTile",props:n.mergeModels({context:{},definition:{},height:{default:fe},isFullscreen:{type:Boolean},hideActions:{type:Boolean,default:!1},queryReady:{type:Boolean},showRefresh:{type:Boolean,default:!1},tileId:{}},{refreshCounter:{default:0},refreshCounterModifiers:{}}),emits:n.mergeModels(["chart-data","edit-tile","duplicate-tile","remove-tile","tile-time-range-zoom","tile-bounds-change"],["update:refreshCounter"]),setup(l,{expose:e,emit:t}){n.useCssVars(b=>({v57da23f2:`${b.height}px`}));const i=parseInt(wt,10),s=l,r=n.useModel(l,"refreshCounter"),a=()=>{N.value=!0,r.value++},o=t,u=n.defineAsyncComponent(()=>Promise.resolve().then(()=>qi)),h=n.inject(re),d=le.useDatasourceConfigStore(),{stripUnknownFilters:c}=ft(d),{i18n:m}=Y.useI18n(),g=n.ref(),y=n.ref({status:"loading"}),_=n.ref(!1),p=n.ref(),k=n.ref(!1),N=n.ref(!0),{exploreLinkKebabMenu:x,requestsLinkKebabMenu:I,canShowKebabMenu:O,canGenerateRequestsLink:oe,canGenerateExploreLink:be,requestsLinkZoomActions:ue,exploreLinkZoomActions:R,buildExploreQuery:z,buildExploreLink:Z,buildRequestLink:ae,buildRequestsQueryZoomActions:ve}=Y.useContextLinks({queryBridge:h,chartData:n.readonly(g),definition:n.readonly(n.toRef(s,"definition")),context:n.readonly(n.toRef(s,"context"))}),{issueQuery:S}=Y.useIssueQuery();n.watch(()=>s.definition,async(b,L)=>{await n.nextTick(),p.value&&(k.value=p.value.scrollWidth>p.value.clientWidth);try{JSON.stringify(b==null?void 0:b.query)!==JSON.stringify(L==null?void 0:L.query)&&(N.value=!0)}catch{}},{immediate:!0,deep:!0});const A=n.computed(()=>m.t("csvExport.defaultFilename")),M=n.computed(()=>O.value&&!s.hideActions&&(B.value||s.context.editable)),B=n.computed(()=>!!x.value||("allow_csv_export"in s.definition.chart?s.definition.chart.allow_csv_export:!0)||s.context.editable),J={timeseries_line:pt,timeseries_bar:pt,horizontal_bar:gt,vertical_bar:gt,gauge:mt,donut:di,golden_signals:ai,top_n:ci,slottable:void 0,single_value:mt,choropleth_map:u},Be=n.computed(()=>{var b,L,H;return{...(b=we.value)!=null&&b.rendererEvents.supportsRequests?{"select-chart-range":Yi}:{},...(L=we.value)!=null&&L.rendererEvents.supportsZoom?{"zoom-time-range":ji}:{},...(H=we.value)!=null&&H.rendererEvents.supportsBounds?{"bounds-change":Qi}:{}}}),we=n.computed(()=>{var W,se;const b=J[s.definition.chart.type],L=!!((W=b==null?void 0:b.emits)!=null&&W.includes("select-chart-range")),H=!!((se=b==null?void 0:b.emits)!=null&&se.includes("zoom-time-range")),U=s.definition.chart.type==="choropleth_map";return b&&{component:b,rendererProps:{query:s.definition.query,context:s.context,queryReady:s.queryReady,chartOptions:s.definition.chart,height:s.height-i*2,refreshCounter:r.value,requestsLink:ue.value,exploreLink:R.value},rendererEvents:{supportsRequests:L,supportsZoom:H,supportsBounds:U}}}),je=n.computed(()=>{var L;const b=(L=s.definition.query)==null?void 0:L.time_range;if((b==null?void 0:b.type)==="relative"){const H=D.TimePeriods.get(D.TIMEFRAME_LOOKUP[b.time_range]);return H?H.display:(console.warn("Did not recognize the given relative time range:",b.time_range),b.time_range)}else if((b==null?void 0:b.type)==="absolute"){const H=b.tz||"Etc/UTC";return`${D.formatTime(b.start,{short:!0,tz:H})} - ${D.formatTime(b.end,{short:!0,tz:H})}`}return null}),St=n.computed(()=>{if(s.definition.chart.type==="slottable")return!1;const b=!!s.definition.chart.chart_title,L=s.definition.chart.type==="golden_signals"&&!!s.definition.chart.description,H=s.showRefresh,U=M.value&&B.value&&!s.isFullscreen,W=!!je.value;return b||U||W||L||H}),Tt=n.computed(()=>g.value?D.msToGranularity(g.value.meta.granularity_ms):void 0),Bi=n.computed(()=>["timeseries_line","timeseries_bar"].includes(s.definition.chart.type)),Dt=n.computed(()=>{var L,H;if(!Bi.value||!s.queryReady||N.value)return!1;const b=(H=(L=s.definition)==null?void 0:L.query)==null?void 0:H.granularity;return!b||!Tt.value?!1:b!==Tt.value}),Pi=n.computed(()=>{var H,U,W;const b=D.msToGranularity(((H=g.value)==null?void 0:H.meta.granularity_ms)??0)??"unknown",L=((W=(U=s.definition)==null?void 0:U.query)==null?void 0:W.granularity)??"unknown";return m.t("query_aged_out_warning",{currentGranularity:m.t(`granularities.${b}`),savedGranularity:m.t(`granularities.${L}`)})}),$i=n.computed(()=>{var U,W;const b=[...s.context.filters,...s.definition.query.filters??[]],L=s.definition.query.metrics,H=((W=(U=s.definition)==null?void 0:U.query)==null?void 0:W.datasource)??"api_usage";return c.value({datasource:H,filters:b,metrics:L})}),Fi=()=>{o("edit-tile",s.definition)},Gi=()=>{o("duplicate-tile",s.definition)},Ui=()=>{o("remove-tile",s.definition)},Wi=b=>{g.value=b,N.value=!1,o("chart-data",b)},Vi=()=>{_.value=!1},Nt=()=>{var H,U;const b=(H=s.definition.query.datasource)==null?void 0:H.startsWith("goap");return((U=h==null?void 0:h.staticConfig)==null?void 0:U.increaseCsvExportLimit)!==!1&&!b?S(s.definition.query,s.context,D.EXPORT_RECORD_LIMIT):g.value?Promise.resolve(g.value):new Promise(W=>{const se=n.watch(g,Pe=>{Pe&&(W(Pe),se())})})},Ki=async()=>{_.value=!0,y.value={status:"loading"};try{const b=await Nt();y.value={status:"success",chartData:b}}catch(b){y.value={status:"error",error:b}}},ji=b=>{const L={tileId:s.tileId.toString(),timeRange:b};o("tile-time-range-zoom",L)},Qi=b=>{const L={tileId:s.tileId.toString(),bounds:b};o("tile-bounds-change",L)},Yi=b=>{const L=$i.value,H=z(b,L);R.value=be.value?{href:Z(H)}:void 0,ue.value=oe.value?{href:ae(ve(b,L))}:void 0};return e({getExportData:Nt}),(b,L)=>{const H=n.resolveComponent("KTooltip"),U=n.resolveComponent("KBadge"),W=n.resolveComponent("KButton"),se=n.resolveComponent("KDropdownItem"),Pe=n.resolveComponent("KDropdown");return n.openBlock(),n.createElementBlock("div",{class:n.normalizeClass(["tile-boundary",{editable:l.context.editable,headless:!St.value}]),"data-testid":`tile-${l.tileId}`},[St.value&&l.definition.chart.type!=="slottable"?(n.openBlock(),n.createElementBlock("div",fi,[n.createVNode(H,{class:"title-tooltip",disabled:!k.value,"max-width":"500",text:l.definition.chart.chart_title},{default:n.withCtx(()=>[n.createElementVNode("div",{ref_key:"titleRef",ref:p,class:"title"},n.toDisplayString(l.definition.chart.chart_title),513)]),_:1},8,["disabled","text"]),n.createElementVNode("div",mi,[je.value?(n.openBlock(),n.createBlock(U,{key:0,"data-testid":"time-range-badge",tooltip:Dt.value?Pi.value:void 0,"tooltip-attributes":{maxWidth:"320px"}},n.createSlots({default:n.withCtx(()=>[n.createElementVNode("span",gi,n.toDisplayString(je.value),1)]),_:2},[Dt.value?{name:"icon",fn:n.withCtx(()=>[n.createVNode(n.unref(he.WarningIcon),{size:n.unref(hi)},null,8,["size"])]),key:"0"}:void 0]),1032,["tooltip"])):n.createCommentVNode("",!0)]),l.showRefresh?(n.openBlock(),n.createElementBlock("div",pi,[n.createVNode(W,{appearance:"secondary",class:"refresh-button","data-testid":`tile-refresh-button-${l.tileId}`,disabled:N.value,icon:"",size:"small",onClick:a},{default:n.withCtx(()=>[N.value?(n.openBlock(),n.createBlock(n.unref(he.ProgressIcon),{key:0,role:"button",size:n.unref(vt),tabindex:"0"},null,8,["size"])):(n.openBlock(),n.createBlock(n.unref(he.RefreshIcon),{key:1,role:"button",size:n.unref(vt),tabindex:"0"},null,8,["size"]))]),_:1},8,["data-testid","disabled"])])):n.createCommentVNode("",!0),M.value?(n.openBlock(),n.createElementBlock("div",{key:1,class:"tile-actions","data-testid":`tile-actions-${l.tileId}`},[n.unref(O)&&l.context.editable&&!l.isFullscreen?(n.openBlock(),n.createBlock(n.unref(he.EditIcon),{key:0,class:"edit-icon",color:n.unref(_t),"data-testid":`edit-tile-${l.tileId}`,size:n.unref(bt),onClick:Fi},null,8,["color","data-testid","size"])):n.createCommentVNode("",!0),n.unref(O)&&B.value&&!l.isFullscreen?(n.openBlock(),n.createBlock(Pe,{key:1,class:"dropdown","data-testid":`chart-action-menu-${l.tileId}`,"kpop-attributes":{placement:"bottom-end"}},{items:n.withCtx(()=>[n.unref(x)?(n.openBlock(),n.createBlock(se,{key:0,"data-testid":`chart-jump-to-explore-${l.tileId}`,item:{label:n.unref(m).t("jumpToExplore"),to:n.unref(x)}},null,8,["data-testid","item"])):n.createCommentVNode("",!0),n.unref(I)?(n.openBlock(),n.createBlock(se,{key:1,"data-testid":`chart-jump-to-requests-${l.tileId}`,item:{label:n.unref(m).t("jumpToRequests"),to:n.unref(I)}},null,8,["data-testid","item"])):n.createCommentVNode("",!0),!("allow_csv_export"in l.definition.chart)||l.definition.chart.allow_csv_export?(n.openBlock(),n.createBlock(se,{key:2,class:"chart-export-button","data-testid":`chart-csv-export-${l.tileId}`,onClick:Ki},{default:n.withCtx(()=>[n.createElementVNode("span",{class:"chart-export-trigger","data-testid":`csv-export-button-${l.tileId}`},n.toDisplayString(n.unref(m).t("csvExport.exportAsCsv")),9,_i)]),_:1},8,["data-testid"])):n.createCommentVNode("",!0),l.context.editable?(n.openBlock(),n.createBlock(se,{key:3,"data-testid":`duplicate-tile-${l.tileId}`,onClick:Gi},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(n.unref(m).t("renderer.duplicateTile")),1)]),_:1},8,["data-testid"])):n.createCommentVNode("",!0),l.context.editable?(n.openBlock(),n.createBlock(se,{key:4,"data-testid":`remove-tile-${l.tileId}`,onClick:Ui},{default:n.withCtx(()=>[n.createElementVNode("span",bi,n.toDisplayString(n.unref(m).t("renderer.delete")),1)]),_:1},8,["data-testid"])):n.createCommentVNode("",!0)]),default:n.withCtx(()=>[n.createVNode(n.unref(he.MoreIcon),{class:"kebab-action-menu",color:n.unref(_t),"data-testid":`kebab-action-menu-${l.tileId}`,size:n.unref(bt)},null,8,["color","data-testid","size"])]),_:1},8,["data-testid"])):n.createCommentVNode("",!0)],8,yi)):"description"in l.definition.chart?(n.openBlock(),n.createElementBlock("div",{key:2,class:"header-description","data-testid":`tile-description-${l.tileId}`},n.toDisplayString(l.definition.chart.description),9,vi)):n.createCommentVNode("",!0),_.value?(n.openBlock(),n.createBlock(n.unref(ee.CsvExportModal),{key:3,"data-testid":`csv-export-modal-${l.tileId}`,"export-state":y.value,filename:A.value,onCloseModal:Vi},null,8,["data-testid","export-state","filename"])):n.createCommentVNode("",!0)])):n.createCommentVNode("",!0),n.createElementVNode("div",{class:n.normalizeClass(["tile-content",`type-${l.definition.chart.type}`]),"data-testid":`tile-content-${l.tileId}`},[we.value?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(we.value.component),n.mergeProps({key:0},we.value.rendererProps,n.toHandlers(Be.value),{onChartData:Wi}),null,16)):n.createCommentVNode("",!0)],10,wi)],10,ui)}}}),[["__scopeId","data-v-0b9bb668"]]),Ei=(l,e)=>{let t=0;const i=new Map;e.forEach(r=>{const a=r.layout.position.row,o=i.get(a),u=r.layout.size.rows===1&&!!r.layout.size.fit_to_content;t=Math.max(t,a+r.layout.size.rows),o===void 0?i.set(a,u):i.set(a,o&&u)});const s=[];for(let r=0;r<t;r++)i.get(r)?s.push("auto"):s.push(`${l}px`);return s},xt=de(n.defineComponent({__name:"GridLayout",props:{tileHeight:{type:Number,required:!1,default:()=>fe},tiles:{type:Array,required:!0}},setup(l){n.useCssVars(o=>({v2a38e79e:n.unref(Ne),v4cc71de6:r.value}));const e=l,t=n.ref(null),i=n.ref(0),s=new ResizeObserver(o=>{window.requestAnimationFrame(()=>{!Array.isArray(o)||!o.length||(i.value=o[0].contentRect.width)})});n.onMounted(()=>{t.value&&s.observe(t.value)}),n.onUnmounted(()=>{t.value&&s.unobserve(t.value)});const r=n.computed(()=>Ei(e.tileHeight,e.tiles).join(" ")),a=n.computed(()=>e.tiles.map((o,u)=>({key:`tile-${u}`,tile:o,style:{"grid-column-start":o.layout.position.col+1,"grid-column-end":o.layout.position.col+1+o.layout.size.cols,"grid-row-start":o.layout.position.row+1,"grid-row-end":o.layout.position.row+1+o.layout.size.rows}})));return(o,u)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"gridContainer",ref:t,class:"kong-ui-public-grid-layout"},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(a.value,h=>(n.openBlock(),n.createElementBlock("div",{key:h.key,class:n.normalizeClass(["grid-cell",{"empty-cell":!h.tile}]),style:n.normalizeStyle(h.style)},[n.renderSlot(o.$slots,"tile",{style:n.normalizeStyle(h.style),tile:h.tile},void 0,!0)],6))),128))],512))}}),[["__scopeId","data-v-354b7177"]]);function xi(l,e,t,i,s){const r=(...a)=>(console.warn("gridstack.js: Function `"+t+"` is deprecated in "+s+" and has been replaced with `"+i+"`. It will be **removed** in a future release"),e.apply(l,a));return r.prototype=e.prototype,r}class f{static getElements(e,t=document){if(typeof e=="string"){const i="getElementById"in t?t:void 0;if(i&&!isNaN(+e[0])){const r=i.getElementById(e);return r?[r]:[]}let s=t.querySelectorAll(e);return!s.length&&e[0]!=="."&&e[0]!=="#"&&(s=t.querySelectorAll("."+e),s.length||(s=t.querySelectorAll("#"+e))),Array.from(s)}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 s=t.querySelector(e);return i&&!s&&(s=i.getElementById(e)),s||(s=t.querySelector("."+e)),s}return e}static lazyLoad(e){var t,i;return e.lazyLoad||((i=(t=e.grid)==null?void 0:t.opts)==null?void 0:i.lazyLoad)&&e.lazyLoad!==!1}static createDiv(e,t){const i=document.createElement("div");return e.forEach(s=>{s&&i.classList.add(s)}),t==null||t.appendChild(i),i}static shouldSizeToContent(e,t=!1){return(e==null?void 0: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 f.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,s=e.x+e.w<t.x+t.w?e.x+e.w:t.x+t.w;if(s<=i)return 0;const r=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<=r?0:(s-i)*(a-r)}static area(e){return e.w*e.h}static sort(e,t=1){return e.sort((s,r)=>{const a=t*((s.y??1e4)-(r.y??1e4));return a===0?t*((s.x??1e4)-(r.x??1e4)):a})}static find(e,t){return t?e.find(i=>i.id===t):void 0}static createStylesheet(e,t,i){const s=document.createElement("style"),r=i==null?void 0:i.nonce;return r&&(s.nonce=r),s.setAttribute("type","text/css"),s.setAttribute("gs-style-id",e),s.styleSheet?s.styleSheet.cssText="":s.appendChild(document.createTextNode("")),t?t.insertBefore(s,t.firstChild):(t=document.getElementsByTagName("head")[0],t.appendChild(s)),s}static removeStylesheet(e,t){const s=(t||document).querySelector("STYLE[gs-style-id="+e+"]");s&&s.parentNode&&s.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 s=e.match(/^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%|cm|mm)?$/);if(!s)throw new Error(`Invalid height val = ${e}`);i=s[2]||"px",t=parseFloat(s[1])}else t=e;return{h:t,unit:i}}static defaults(e,...t){return t.forEach(i=>{for(const s in i){if(!i.hasOwnProperty(s))return;e[s]===null||e[s]===void 0?e[s]=i[s]:typeof i[s]=="object"&&typeof e[s]=="object"&&this.defaults(e[s],i[s])}}),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 s=e[i],r=t[i];i[0]==="_"||s===r?delete e[i]:s&&typeof s=="object"&&r!==void 0&&(f.removeInternalAndSame(s,r),Object.keys(s).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(...s)=>{i||(i=!0,setTimeout(()=>{e(...s),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 s=e.getBoundingClientRect(),r=window.innerHeight||document.documentElement.clientHeight;if(s.top<0||s.bottom>r){const a=s.bottom-r,o=s.top,u=this.getScrollElement(e);if(u!==null){const h=u.scrollTop;s.top<0&&i<0?e.offsetHeight>r?u.scrollTop+=i:u.scrollTop+=Math.abs(o)>Math.abs(i)?i:o:i>0&&(e.offsetHeight>r?u.scrollTop+=i:u.scrollTop+=a>i?i:a),t.top+=u.scrollTop-h}}}static updateScrollResize(e,t,i){const s=this.getScrollElement(t),r=s.clientHeight,a=s===this.getScrollElement()?0:s.getBoundingClientRect().top,o=e.clientY-a,u=o<i,h=o>r-i;u?s.scrollBy({behavior:"smooth",top:o-i}):h&&s.scrollBy({behavior:"smooth",top:i-(r-o)})}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=f.clone(e);for(const s in i)i.hasOwnProperty(s)&&typeof i[s]=="object"&&s.substring(0,2)!=="__"&&!t.find(r=>r===s)&&(i[s]=f.cloneDeep(e[s]));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=f.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(s=>{e.style[i]=s}):e.style[i]=t[i])}static initEvent(e,t){const i={type:t.type},s={button:0,which:0,buttons:1,bubbles:!0,cancelable:!0,target:t.target?t.target:e.target};return["altKey","ctrlKey","metaKey","shiftKey"].forEach(r=>i[r]=e[r]),["pageX","pageY","clientX","clientY","screenX","screenY"].forEach(r=>i[r]=e[r]),{...i,...s}}static simulateMouseEvent(e,t,i){const s=e,r=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:s.ctrlKey??!1,altKey:s.altKey??!1,shiftKey:s.shiftKey??!1,metaKey:s.metaKey??!1,button:0,relatedTarget:e.target});(i||e.target).dispatchEvent(r)}static getValuesFromTransformedElement(e){const t=document.createElement("div");f.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 s=e[t];e[t]=e[i],e[i]=s}static canBeRotated(e){var t;return!(!e||e.w===e.h||e.locked||e.noResize||(t=e.grid)!=null&&t.opts.disableResize||e.minW&&e.minW===e.maxW||e.minH&&e.minH===e.maxH)}}class te{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,s={}){if(this.sortNodes(-1),i=i||this.collide(e,t),!i)return!1;if(e._moving&&!s.nested&&!this.float&&this.swap(e,i))return!0;let r=t;!this._loading&&this._useEntireRowArea(e,t)&&(r={x:0,w:this.column,y:t.y,h:t.h},i=this.collide(e,r,s.skip));let a=!1;const o={nested:!0,pack:!1};let u=0;for(;i=i||this.collide(e,r,s.skip);){if(u++>this.nodes.length*2)throw new Error("Infinite collide check");let h;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 d={...t,y:i.y+i.h,...o};h=this._loading&&f.samePos(e,d)?!0:this.moveNode(e,d),(i.locked||this._loading)&&h?f.copyPos(t,e):!i.locked&&h&&s.pack&&(this._packNodes(),t.y=i.y+i.h,f.copyPos(e,t)),a=a||h}else h=this.moveNode(i,{...i,y:t.y+t.h,skip:e,...o});if(!h)return a;i=void 0}return a}collide(e,t=e,i){const s=e._id,r=i==null?void 0:i._id;return this.nodes.find(a=>a._id!==s&&a._id!==r&&f.isIntercepted(a,t))}collideAll(e,t=e,i){const s=e._id,r=i==null?void 0:i._id;return this.nodes.filter(a=>a._id!==s&&a._id!==r&&f.isIntercepted(a,t))}directionCollideCoverage(e,t,i){if(!t.rect||!e._rect)return;const s=e._rect,r={...t.rect};r.y>s.y?(r.h+=r.y-s.y,r.y=s.y):r.h+=s.y-r.y,r.x>s.x?(r.w+=r.x-s.x,r.x=s.x):r.w+=s.x-r.x;let a,o=.5;for(let u of i){if(u.locked||!u._rect)break;const h=u._rect;let d=Number.MAX_VALUE,c=Number.MAX_VALUE;s.y<h.y?d=(r.y+r.h-h.y)/h.h:s.y+s.h>h.y+h.h&&(d=(h.y+h.h-r.y)/h.h),s.x<h.x?c=(r.x+r.w-h.x)/h.w:s.x+s.w>h.x+h.w&&(c=(h.x+h.w-r.x)/h.w);const m=Math.min(c,d);m>o&&(o=m,a=u)}return t.collide=a,a}cacheRects(e,t,i,s,r,a){return this.nodes.forEach(o=>o._rect={y:o.y*t+i,x:o.x*e+a,w:o.w*e-a-s,h:o.h*t-i-r}),this}swap(e,t){if(!t||t.locked||!e||e.locked)return!1;function i(){const r=t.x,a=t.y;return t.x=e.x,t.y=e.y,e.h!=t.h?(e.x=r,e.y=t.y+t.h):e.w!=t.w?(e.x=t.x+t.w,e.y=a):(e.x=r,e.y=a),e._dirty=t._dirty=!0,!0}let s;if(e.w===t.w&&e.h===t.h&&(e.x===t.x||e.y===t.y)&&(s=f.isTouching(e,t)))return i();if(s!==!1){if(e.w===t.w&&e.x===t.x&&(s||(s=f.isTouching(e,t)))){if(t.y<e.y){const r=e;e=t,t=r}return i()}if(s!==!1){if(e.h===t.h&&e.y===t.y&&(s||(s=f.isTouching(e,t)))){if(t.x<e.x){const r=e;e=t,t=r}return i()}return!1}}}isAreaEmpty(e,t,i,s){const r={x:e||0,y:t||0,w:i||1,h:s||1};return!this.collide(r)}compact(e="compact",t=!0){if(this.nodes.length===0)return this;t&&this.sortNodes();const i=this.batchMode;i||this.batchUpdate();const s=this._inColumnResize;s||(this._inColumnResize=!0);const r=this.nodes;return this.nodes=[],r.forEach((a,o,u)=>{let h;a.locked||(a.autoPosition=!0,e==="list"&&o&&(h=u[o-1])),this.addNode(a,!1,h)}),s||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=f.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??te._idSeq++;const i=e.id;if(i){let r=1;for(;this.nodes.find(a=>a.id===e.id&&a!==e);)e.id=i+"_"+r++}(e.x===void 0||e.y===void 0||e.x===null||e.y===null)&&(e.autoPosition=!0);const s={x:0,y:0,w:1,h:1};return f.defaults(e,s),e.autoPosition||delete e.autoPosition,e.noResize||delete e.noResize,e.noMove||delete e.noMove,f.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=s.x,e.autoPosition=!0),isNaN(e.y)&&(e.y=s.y,e.autoPosition=!0),isNaN(e.w)&&(e.w=s.w),isNaN(e.h)&&(e.h=s.h),this.nodeBoundFix(e,t),e}nodeBoundFix(e,t){const i=e._orig||f.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 r={...e};r.autoPosition||r.x===void 0?(delete r.x,delete r.y):r.x=Math.min(this.defaultColumn-1,r.x),r.w=Math.min(this.defaultColumn,r.w||1),this.cacheOneLayout(r,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),f.samePos(e,i)||(e._dirty=!0),this}getDirtyNodes(e){return e?this.nodes.filter(t=>t._dirty&&!f.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=f.copyPos({},e),delete e._dirty}),this._hasLocked=this.nodes.some(e=>e.locked),this}restoreInitial(){return this.nodes.forEach(e=>{!e._orig||f.samePos(e,e._orig)||(f.copyPos(e,e._orig),e._dirty=!0)}),this._notify(),this}findEmptyPosition(e,t=this.nodes,i=this.column,s){const r=s?s.y*i+(s.x+s.w):0;let a=!1;for(let o=r;!a;++o){const u=o%i,h=Math.floor(o/i);if(u+e.w>i)continue;const d={x:u,y:h,w:e.w,h:e.h};t.find(c=>f.isIntercepted(d,c))||((e.x!==u||e.y!==h)&&(e._dirty=!0),e.x=u,e.y=h,delete e.autoPosition,a=!0)}return a}addNode(e,t=!1,i){const s=this.nodes.find(a=>a._id===e._id);if(s)return s;this._inColumnResize?this.nodeBoundFix(e):this.prepareNode(e),delete e._temporaryRemoved,delete e._removeDOM;let r;return e.autoPosition&&this.findEmptyPosition(e,this.nodes,this.column,i)&&(delete e.autoPosition,r=!0),this.nodes.push(e),t&&this.addedNodes.push(e),r||this._fixCollisions(e),this.batchMode||this._packNodes()._notify(),e}removeNode(e,t=!0,i=!1){return this.nodes.find(s=>s._id===e._id)?(i&&this.removedNodes.push(e),t&&(e._removeDOM=!0),this.nodes=this.nodes.filter(s=>s._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(s=>s._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 s=new te({column:this.column,float:this.float,nodes:this.nodes.map(a=>a._id===e._id?(i={...a},i):{...a})});if(!i)return!1;const r=s.moveNode(i,t)&&s.getRow()<=Math.max(this.getRow(),this.maxRow);if(!r&&!t.resizing&&t.collide){const a=t.collide.el.gridstackNode;if(this.swap(e,a))return this._notify(),!0}return r?(s.nodes.filter(a=>a._dirty).forEach(a=>{const o=this.nodes.find(u=>u._id===a._id);o&&(f.copyPos(o,a),o._dirty=!0)}),this._notify(),!0):!1}willItFit(e){if(delete e._willFitPos,!this.maxRow)return!0;const t=new te({column:this.column,float:this.float,nodes:this.nodes.map(s=>({...s}))}),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=f.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){var h,d;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 s=e.w!==t.w||e.h!==t.h,r=f.copyPos({},e,!0);if(f.copyPos(r,t),this.nodeBoundFix(r,s),f.copyPos(t,r),!t.forceCollide&&f.samePos(e,t))return!1;const a=f.copyPos({},e),o=this.collideAll(e,r,t.skip);let u=!0;if(o.length){const c=e._moving&&!t.nested;let m=c?this.directionCollideCoverage(e,t,o):o[0];if(c&&m&&((d=(h=e.grid)==null?void 0:h.opts)!=null&&d.subGridDynamic)&&!e.grid._isTemp){const g=f.areaIntercept(t.rect,m._rect),y=f.area(t.rect),_=f.area(m._rect);g/(y<_?y:_)>.8&&(m.grid.makeSubGrid(m.el,void 0,e),m=void 0)}m?u=!this._fixCollisions(e,r,m,t):(u=!1,i&&delete t.pack)}return u&&!f.samePos(e,r)&&(e._dirty=!0,f.copyPos(e,r)),t.pack&&this._packNodes()._notify(),!f.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){var a;const i=(a=this._layouts)==null?void 0:a.length,s=i&&this.column!==i-1?this._layouts[i-1]:null,r=[];return this.sortNodes(),this.nodes.forEach(o=>{const u=s==null?void 0:s.find(d=>d._id===o._id),h={...o,...u||{}};f.removeInternalForSave(h,!e),t&&t(o,h),r.push(h)}),r}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 s=i/this.column;e.forEach(r=>{if(!r._orig)return;const a=t.find(o=>o._id===r._id);a&&(a.y>=0&&r.y!==r._orig.y&&(a.y+=r.y-r._orig.y),r.x!==r._orig.x&&(a.x=Math.round(r.x*s)),r.w!==r._orig.w&&(a.w=Math.round(r.w*s)))})}}),this)}columnChanged(e,t,i="moveScale"){var o;if(!this.nodes.length||!t||e===t)return this;const s=i==="compact"||i==="list";s&&this.sortNodes(1),t<e&&this.cacheLayout(this.nodes,e),this.batchUpdate();let r=[],a=s?this.nodes:f.sort(this.nodes,-1);if(t>e&&this._layouts){const u=this._layouts[t]||[],h=this._layouts.length-1;!u.length&&e!==h&&((o=this._layouts[h])!=null&&o.length)&&(e=h,this._layouts[h].forEach(d=>{const c=a.find(m=>m._id===d._id);c&&(!s&&!d.autoPosition&&(c.x=d.x??c.x,c.y=d.y??c.y),c.w=d.w??c.w,(d.x==null||d.y===void 0)&&(c.autoPosition=!0))})),u.forEach(d=>{const c=a.findIndex(m=>m._id===d._id);if(c!==-1){const m=a[c];if(s){m.w=d.w;return}(d.autoPosition||isNaN(d.x)||isNaN(d.y))&&this.findEmptyPosition(d,r),d.autoPosition||(m.x=d.x??m.x,m.y=d.y??m.y,m.w=d.w??m.w,r.push(m)),a.splice(c,1)}})}if(s)this.compact(i,!1);else{if(a.length)if(typeof i=="function")i(t,e,r,a);else{const u=s||i==="none"?1:t/e,h=i==="move"||i==="moveScale",d=i==="scale"||i==="moveScale";a.forEach(c=>{c.x=t===1?0:h?Math.round(c.x*u):Math.min(c.x,t-1),c.w=t===1||e===1?1:d?Math.round(c.w*u)||1:Math.min(c.w,t),r.push(c)}),a=[]}r=f.sort(r,-1),this._inColumnResize=!0,this.nodes=[],r.forEach(u=>{this.addNode(u,!1),delete u._orig})}return this.nodes.forEach(u=>delete u._orig),this.batchUpdate(!1,!s),delete this._inColumnResize,this}cacheLayout(e,t,i=!1){const s=[];return e.forEach((r,a)=>{if(r._id===void 0){const o=r.id?this.nodes.find(u=>u.id===r.id):void 0;r._id=(o==null?void 0:o._id)??te._idSeq++}s[a]={x:r.x,y:r.y,w:r.w,_id:r._id}}),this._layouts=i?[]:this._layouts||[],this._layouts[t]=s,this}cacheOneLayout(e,t){e._id=e._id??te._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 s=this.findCacheLayout(e,t);return s===-1?this._layouts[t].push(i):this._layouts[t][s]=i,this}findCacheLayout(e,t){var i,s;return((s=(i=this._layouts)==null?void 0:i[t])==null?void 0:s.findIndex(r=>r._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}}te._idSeq=0;const V={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 C{}const X=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 ie{}function Le(l,e){l.touches.length>1||(l.cancelable&&l.preventDefault(),f.simulateMouseEvent(l.changedTouches[0],e))}function Ct(l,e){l.cancelable&&l.preventDefault(),f.simulateMouseEvent(l,e)}function Oe(l){ie.touchHandled||(ie.touchHandled=!0,Le(l,"mousedown"))}function Ae(l){ie.touchHandled&&Le(l,"mousemove")}function He(l){if(!ie.touchHandled)return;ie.pointerLeaveTimeout&&(window.clearTimeout(ie.pointerLeaveTimeout),delete ie.pointerLeaveTimeout);const e=!!C.dragElement;Le(l,"mouseup"),e||Le(l,"click"),ie.touchHandled=!1}function Ie(l){l.pointerType!=="mouse"&&l.target.releasePointerCapture(l.pointerId)}function kt(l){C.dragElement&&l.pointerType!=="mouse"&&Ct(l,"mouseenter")}function Rt(l){C.dragElement&&l.pointerType!=="mouse"&&(ie.pointerLeaveTimeout=window.setTimeout(()=>{delete ie.pointerLeaveTimeout,Ct(l,"mouseleave")},10))}class Me{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(`${Me.prefix}${this.dir}`),e.style.zIndex="100",e.style.userSelect="none",this.host.appendChild(this.el),this.el.addEventListener("mousedown",this._mouseDown),X&&(this.el.addEventListener("touchstart",Oe),this.el.addEventListener("pointerdown",Ie)),this}destroy(){return this.moving&&this._mouseUp(this.mouseDownEvent),this.el.removeEventListener("mousedown",this._mouseDown),X&&(this.el.removeEventListener("touchstart",Oe),this.el.removeEventListener("pointerdown",Ie)),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),X&&(this.el.addEventListener("touchmove",Ae),this.el.addEventListener("touchend",He)),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),X&&(this.el.removeEventListener("touchmove",Ae),this.el.removeEventListener("touchend",He)),delete this.moving,delete this.mouseDownEvent,e.stopPropagation(),e.preventDefault()}_keyEvent(e){var t,i;e.key==="Escape"&&((i=(t=this.host.gridstackNode)==null?void 0:t.grid)==null||i.engine.restoreInitial(),this._mouseUp(this.mouseDownEvent))}_triggerEvent(e,t){return this.option[e]&&this.option[e](t),this}}Me.prefix="ui-resizable-";class Ve{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 Ee extends Ve{constructor(e,t={}){super(),this.el=e,this.option=t,this.rectScale={x:1,y:1},this._ui=()=>{const s=this.el.parentElement.getBoundingClientRect(),r={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},a=this.temporalRect||r;return{position:{left:(a.left-s.left)*this.rectScale.x,top:(a.top-s.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(s=>this.option[s]=e[s]),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),C.overResizeElement===this&&delete C.overResizeElement),this}_mouseOver(e){C.overResizeElement||C.dragElement||(C.overResizeElement=this,this.el.classList.remove("ui-resizable-autohide"))}_mouseOut(e){C.overResizeElement===this&&(delete C.overResizeElement,this.el.classList.add("ui-resizable-autohide"))}_setupHandlers(){return this.handlers=this.option.handles.split(",").map(e=>e.trim()).map(e=>new Me(this.el,e,{start:t=>{this._resizeStart(t)},stop:t=>{this._resizeStop(t)},move:t=>{this._resizing(t,e)}})),this}_resizeStart(e){this.sizeToContent=f.shouldSizeToContent(this.el.gridstackNode,!0),this.originalRect=this.el.getBoundingClientRect(),this.scrollEl=f.getScrollElement(this.el),this.scrollY=this.scrollEl.scrollTop,this.scrolled=0,this.startEvent=e,this._setupHelper(),this._applyChange();const t=f.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=f.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=f.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=Ee._originStyleProp.map(i=>this.el.style[i]),this.parentOriginStylePosition=this.el.parentElement.style.position;const e=this.el.parentElement,t=f.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 Ee._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,s={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},r=e.clientX-i.clientX,a=this.sizeToContent?0:e.clientY-i.clientY;let o,u;t.indexOf("e")>-1?s.width+=r:t.indexOf("w")>-1&&(s.width-=r,s.left+=r,o=!0),t.indexOf("s")>-1?s.height+=a:t.indexOf("n")>-1&&(s.height-=a,s.top+=a,u=!0);const h=this._constrainSize(s.width,s.height,o,u);return Math.round(s.width)!==Math.round(h.width)&&(t.indexOf("w")>-1&&(s.left+=s.width-h.width),s.width=h.width),Math.round(s.height)!==Math.round(h.height)&&(t.indexOf("n")>-1&&(s.top+=s.height-h.height),s.height=h.height),s}_constrainSize(e,t,i,s){const r=this.option,a=(i?r.maxWidthMoveLeft:r.maxWidth)||Number.MAX_SAFE_INTEGER,o=r.minWidth/this.rectScale.x||e,u=(s?r.maxHeightMoveUp:r.maxHeight)||Number.MAX_SAFE_INTEGER,h=r.minHeight/this.rectScale.y||t,d=Math.min(a,Math.max(o,e)),c=Math.min(u,Math.max(h,t));return{width:d,height:c}}_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:s}=t.getBoundingClientRect();e={left:i,top:s,width:0,height:0}}return this.temporalRect?(Object.keys(this.temporalRect).forEach(t=>{const i=this.temporalRect[t],s=t==="width"||t==="left"?this.rectScale.x:t==="height"||t==="top"?this.rectScale.y:1;this.el.style[t]=(i-e[t])*s+"px"}),this):this}_removeHandlers(){return this.handlers.forEach(e=>e.destroy()),delete this.handlers,this}}Ee._originStyleProp=["width","height","position","left","top","opacity","zIndex"];const Ci='input,textarea,button,select,option,[contenteditable="true"],.ui-resizable-handle';class xe extends Ve{constructor(e,t={}){var r;super(),this.el=e,this.option=t,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0};const i=(r=t==null?void 0:t.handle)==null?void 0:r.substring(1),s=e.gridstackNode;this.dragEls=!i||e.classList.contains(i)?[e]:s!=null&&s.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),X&&(e.addEventListener("touchstart",Oe),e.addEventListener("pointerdown",Ie))}),this.el.classList.remove("ui-draggable-disabled"))}disable(e=!1){this.disabled!==!0&&(super.disable(),this.dragEls.forEach(t=>{t.removeEventListener("mousedown",this._mouseDown),X&&(t.removeEventListener("touchstart",Oe),t.removeEventListener("pointerdown",Ie))}),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(!C.mouseHandled)return e.button!==0||!this.dragEls.find(t=>t===e.target)&&e.target.closest(Ci)||this.option.cancel&&e.target.closest(this.option.cancel)||(this.mouseDownEvent=e,delete this.dragging,delete C.dragElement,delete C.dropElement,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),X&&(e.currentTarget.addEventListener("touchmove",Ae),e.currentTarget.addEventListener("touchend",He)),e.preventDefault(),document.activeElement&&document.activeElement.blur(),C.mouseHandled=!0),!0}_callDrag(e){if(!this.dragging)return;const t=f.initEvent(e,{target:this.el,type:"drag"});this.option.drag&&this.option.drag(t,this.ui()),this.triggerEvent("drag",t)}_mouseMove(e){var i;const t=this.mouseDownEvent;if(this.lastDrag=e,this.dragging)if(this._dragFollow(e),C.pauseDrag){const s=Number.isInteger(C.pauseDrag)?C.pauseDrag:100;this.dragTimeout&&window.clearTimeout(this.dragTimeout),this.dragTimeout=window.setTimeout(()=>this._callDrag(e),s)}else this._callDrag(e);else if(Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>3){this.dragging=!0,C.dragElement=this;const s=(i=this.el.gridstackNode)==null?void 0:i.grid;s?C.dropElement=s.el.ddElement.ddDroppable:delete C.dropElement,this.helper=this._createHelper(),this._setupHelperContainmentStyle(),this.dragTransform=f.getValuesFromTransformedElement(this.helperContainment),this.dragOffset=this._getDragOffset(e,this.el,this.helperContainment),this._setupHelperStyle(e);const r=f.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){var t,i;if(document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),X&&e.currentTarget&&(e.currentTarget.removeEventListener("touchmove",Ae,!0),e.currentTarget.removeEventListener("touchend",He,!0)),this.dragging){delete this.dragging,(t=this.el.gridstackNode)==null||delete t._origRotate,document.removeEventListener("keydown",this._keyEvent),((i=C.dropElement)==null?void 0:i.el)===this.el.parentElement&&delete C.dropElement,this.helperContainment.style.position=this.parentOriginStylePosition||null,this.helper!==this.el&&this.helper.remove(),this._removeHelperStyle();const s=f.initEvent(e,{target:this.el,type:"dragstop"});this.option.stop&&this.option.stop(s),this.triggerEvent("dragstop",s),C.dropElement&&C.dropElement.drop(e)}delete this.helper,delete this.mouseDownEvent,delete C.dragElement,delete C.dropElement,delete C.mouseHandled,e.preventDefault()}_keyEvent(e){var s,r;const t=this.el.gridstackNode,i=(t==null?void 0:t.grid)||((r=(s=C.dropElement)==null?void 0:s.el)==null?void 0:r.gridstack);if(e.key==="Escape")t&&t._origRotate&&(t._orig=t._origRotate,delete t._origRotate),i==null||i.cancelDrag(),this._mouseUp(this.mouseDownEvent);else if(t&&i&&(e.key==="r"||e.key==="R")){if(!f.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",f.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=f.cloneNode(this.el)),e.parentElement||f.appendTo(e,this.option.appendTo==="parent"?this.el.parentElement:this.option.appendTo),this.dragElementOriginStyle=xe.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(){var t;this.helper.classList.remove("ui-draggable-dragging");const e=(t=this.helper)==null?void 0:t.gridstackNode;if(!(e!=null&&e._isAboutToRemove)&&this.dragElementOriginStyle){const i=this.helper,s=this.dragElementOriginStyle.transition||null;i.style.transition=this.dragElementOriginStyle.transition="none",xe.originStyleProp.forEach(r=>i.style[r]=this.dragElementOriginStyle[r]||null),setTimeout(()=>i.style.transition=s,50)}return delete this.dragElementOriginStyle,this}_dragFollow(e){const t={left:0,top:0},i=this.helper.style,s=this.dragOffset;i.left=(e.clientX+s.offsetLeft-t.left)*this.dragTransform.xScale+"px",i.top=(e.clientY+s.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 s=0,r=0;i&&(s=this.dragTransform.xOffset,r=this.dragTransform.yOffset);const a=t.getBoundingClientRect();return{left:a.left,top:a.top,offsetLeft:-e.clientX+a.left-s,offsetTop:-e.clientY+a.top-r,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}}}}xe.originStyleProp=["width","height","transform","transform-origin","transition","pointerEvents","position","left","top","minWidth","willChange"];class ki extends Ve{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),X&&(this.el.addEventListener("pointerenter",kt),this.el.addEventListener("pointerleave",Rt)))}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),X&&(this.el.removeEventListener("pointerenter",kt),this.el.removeEventListener("pointerleave",Rt)))}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(!C.dragElement||!this._canDrop(C.dragElement.el))return;e.preventDefault(),e.stopPropagation(),C.dropElement&&C.dropElement!==this&&C.dropElement._mouseLeave(e,!0),C.dropElement=this;const t=f.initEvent(e,{target:this.el,type:"dropover"});this.option.over&&this.option.over(t,this._ui(C.dragElement)),this.triggerEvent("dropover",t),this.el.classList.add("ui-droppable-over")}_mouseLeave(e,t=!1){var s;if(!C.dragElement||C.dropElement!==this)return;e.preventDefault(),e.stopPropagation();const i=f.initEvent(e,{target:this.el,type:"dropout"});if(this.option.out&&this.option.out(i,this._ui(C.dragElement)),this.triggerEvent("dropout",i),C.dropElement===this&&(delete C.dropElement,!t)){let r,a=this.el.parentElement;for(;!r&&a;)r=(s=a.ddElement)==null?void 0:s.ddDroppable,a=a.parentElement;r&&r._mouseEnter(e)}}drop(e){e.preventDefault();const t=f.initEvent(e,{target:this.el,type:"drop"});this.option.drop&&this.option.drop(t,this._ui(C.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 Ke{static init(e){return e.ddElement||(e.ddElement=new Ke(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 xe(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 Ee(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 ki(this.el,e),this}cleanDroppable(){return this.ddDroppable&&(this.ddDroppable.destroy(),delete this.ddDroppable),this}}class Ri{resizable(e,t,i,s){return this._getDDElements(e,t).forEach(r=>{if(t==="disable"||t==="enable")r.ddResizable&&r.ddResizable[t]();else if(t==="destroy")r.ddResizable&&r.cleanResizable();else if(t==="option")r.setupResizable({[i]:s});else{const o=r.el.gridstackNode.grid;let u=r.el.getAttribute("gs-resize-handles")||o.opts.resizable.handles||"e,s,se";u==="all"&&(u="n,e,s,w,se,sw,ne,nw");const h=!o.opts.alwaysShowResizeHandle;r.setupResizable({...o.opts.resizable,handles:u,autoHide:h,start:t.start,stop:t.stop,resize:t.resize})}}),this}draggable(e,t,i,s){return this._getDDElements(e,t).forEach(r=>{if(t==="disable"||t==="enable")r.ddDraggable&&r.ddDraggable[t]();else if(t==="destroy")r.ddDraggable&&r.cleanDraggable();else if(t==="option")r.setupDraggable({[i]:s});else{const a=r.el.gridstackNode.grid;r.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,s){return typeof t.accept=="function"&&!t._accept&&(t._accept=t.accept,t.accept=r=>t._accept(r)),this._getDDElements(e,t).forEach(r=>{t==="disable"||t==="enable"?r.ddDroppable&&r.ddDroppable[t]():t==="destroy"?r.ddDroppable&&r.cleanDroppable():t==="option"?r.setupDroppable({[i]:s}):r.setupDroppable(t)}),this}isDroppable(e){var t;return!!((t=e==null?void 0:e.ddElement)!=null&&t.ddDroppable&&!e.ddElement.ddDroppable.disabled)}isDraggable(e){var t;return!!((t=e==null?void 0:e.ddElement)!=null&&t.ddDraggable&&!e.ddElement.ddDraggable.disabled)}isResizable(e){var t;return!!((t=e==null?void 0:e.ddElement)!=null&&t.ddResizable&&!e.ddElement.ddResizable.disabled)}on(e,t,i){return this._getDDElements(e).forEach(s=>s.on(t,r=>{i(r,C.dragElement?C.dragElement.el:r.target,C.dragElement?C.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",s=f.getElements(e);return s.length?s.map(a=>a.ddElement||(i?Ke.init(a):null)).filter(a=>a):[]}}/*!
|
|
2
6
|
* GridStack 11.5.1
|
|
3
7
|
* https://gridstackjs.com/
|
|
4
8
|
*
|
|
5
9
|
* Copyright (c) 2021-2024 Alain Dumesny
|
|
6
10
|
* see root license https://github.com/gridstack/gridstack.js/tree/master/LICENSE
|
|
7
|
-
*/const
|
|
11
|
+
*/const F=new Ri;class E{static init(e={},t=".grid-stack"){if(typeof document>"u")return null;const i=E.getGridElement(t);return i?(i.gridstack||(i.gridstack=new E(i,f.cloneDeep(e))),i.gridstack):(console.error(typeof t=="string"?'GridStack.initAll() no grid was found with selector "'+t+`" - element missing or wrong selector ?
|
|
8
12
|
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"||(E.getGridElements(t).forEach(s=>{s.gridstack||(s.gridstack=new E(s,f.cloneDeep(e))),i.push(s.gridstack)}),i.length===0&&console.error('GridStack.initAll() no grid was found with selector "'+t+`" - element missing or wrong selector ?
|
|
9
|
-
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")||E.addRemoveCB)&&(E.addRemoveCB?i=E.addRemoveCB(e,t,!0,!0):i=f.createDiv(["grid-stack",t.class],e)),E.init(t,i)}static registerEngine(e){E.engineClass=e}get placeholder(){if(!this._placeholder){this._placeholder=f.createDiv([this.opts.placeholderClass,K.itemClass,this.opts.itemClass]);const e=f.createDiv(["placeholder-content"],this._placeholder);this.opts.placeholderText&&(e.textContent=this.opts.placeholderText)}return this._placeholder}constructor(e,t={}){var h,m,p;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=f.toNumber(e.getAttribute("gs-row"));t.column==="auto"&&delete t.column,t.alwaysShowResizeHandle!==void 0&&(t._alwaysShowResizeHandle=t.alwaysShowResizeHandle);let s=(h=t.columnOpts)==null?void 0:h.breakpoints;const r=t;if(r.oneColumnModeDomSort&&(delete r.oneColumnModeDomSort,console.log("warning: Gridstack oneColumnModeDomSort no longer supported. Use GridStackOptions.columnOpts instead.")),r.oneColumnSize||r.disableOneColumnMode===!1){const y=r.oneColumnSize||768;delete r.oneColumnSize,delete r.disableOneColumnMode,t.columnOpts=t.columnOpts||{},s=t.columnOpts.breakpoints=t.columnOpts.breakpoints||[];let _=s.find(g=>g.c===1);_?_.w=y:(_={c:1,w:y},s.push(_,{c:12,w:y+1}))}const a=t.columnOpts;a&&(!a.columnWidth&&!((m=a.breakpoints)!=null&&m.length)?(delete t.columnOpts,s=void 0):a.columnMax=a.columnMax||12),(s==null?void 0:s.length)>1&&s.sort((y,_)=>(_.w||0)-(y.w||0));const o={...f.cloneDeep(K),column:f.toNumber(e.getAttribute("gs-column"))||K.column,minRow:i||f.toNumber(e.getAttribute("gs-min-row"))||K.minRow,maxRow:i||f.toNumber(e.getAttribute("gs-max-row"))||K.maxRow,staticGrid:f.toBool(e.getAttribute("gs-static"))||K.staticGrid,sizeToContent:f.toBool(e.getAttribute("gs-size-to-content"))||void 0,draggable:{handle:(t.handleClass?"."+t.handleClass:t.handle?t.handle:"")||K.draggable.handle},removableOptions:{accept:t.itemClass||K.removableOptions.accept,decline:K.removableOptions.decline}};e.getAttribute("gs-animate")&&(o.animate=f.toBool(e.getAttribute("gs-animate"))),t=f.defaults(t,o),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 u=this.el.closest("."+K.itemClass),c=u==null?void 0:u.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!==K.cellHeightUnit&&(t.cellHeight=t.cellHeight+t.cellHeightUnit,delete t.cellHeightUnit),this.cellHeight(t.cellHeight,!1)),t.alwaysShowResizeHandle==="mobile"&&(t.alwaysShowResizeHandle=ee),this._styleSheetClass="gs-id-"+se._idSeq++,this.el.classList.add(this._styleSheetClass),this._setStaticClass();const d=t.engineClass||E.engineClass||se;if(this.engine=new d({column:this.getColumn(),float:t.float,maxRow:t.maxRow,onChange:y=>{let _=0;this.engine.nodes.forEach(g=>{_=Math.max(_,g.y+g.h)}),y.forEach(g=>{const R=g.el;R&&(g._removeDOM?(R&&R.remove(),delete g._removeDOM):this._writePosAttr(R,g))}),this._updateStyles(!1,_)}}),this._updateStyles(!1,0),t.auto&&(this.batchUpdate(),this.engine._loading=!0,this.getGridItems().forEach(y=>this._prepareElement(y)),delete this.engine._loading,this.batchUpdate(!1)),t.children){const y=t.children;delete t.children,y.length&&this.load(y)}this.setAnimation(),t.subGridDynamic&&!C.pauseDrag&&(C.pauseDrag=!0),((p=t.draggable)==null?void 0:p.pause)!==void 0&&(C.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!=null&&i.el?t=i.el:E.addRemoveCB?t=E.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(r=>r._id===i._id))return t;const s=this._readAttr(t);return f.defaults(e,s),this.engine.prepareNode(e),this.el.appendChild(t),this.makeWidget(t,e),t}createWidgetDivs(e){const t=f.createDiv(["grid-stack-item",this.opts.itemClass]),i=f.createDiv(["grid-stack-item-content"],t);return f.lazyLoad(e)?e.visibleObservable||(e.visibleObservable=new IntersectionObserver(([s])=>{var r,a;s.isIntersecting&&((r=e.visibleObservable)==null||r.disconnect(),delete e.visibleObservable,E.renderCB(i,e),(a=e.grid)==null||a.prepareDragDrop(e.el))}),window.setTimeout(()=>{var s;return(s=e.visibleObservable)==null?void 0:s.observe(t)})):E.renderCB(i,e),t}makeSubGrid(e,t,i,s=!0){var p,y,_;let r=e.gridstackNode;if(r||(r=this.makeWidget(e).gridstackNode),(p=r.subGrid)!=null&&p.el)return r.subGrid;let a,o=this;for(;o&&!a;)a=(y=o.opts)==null?void 0:y.subGridOpts,o=(_=o.parentGridNode)==null?void 0:_.grid;t=f.cloneDeep({...this.opts,id:void 0,children:void 0,column:"auto",columnOpts:void 0,layout:"list",subGridOpts:void 0,...a||{},...t||r.subGridOpts||{}}),r.subGridOpts=t;let u;t.column==="auto"&&(u=!0,t.column=Math.max(r.w||1,(i==null?void 0:i.w)||1),delete t.columnOpts);let c=r.el.querySelector(".grid-stack-item-content"),d,h;if(s&&(this._removeDD(r.el),h={...r,x:0,y:0},f.removeInternalForSave(h),delete h.subGridOpts,r.content&&(h.content=r.content,delete r.content),E.addRemoveCB?d=E.addRemoveCB(this.el,h,!0,!1):(d=f.createDiv(["grid-stack-item"]),d.appendChild(c),c=f.createDiv(["grid-stack-item-content"],r.el)),this.prepareDragDrop(r.el)),i){const g=u?t.column:r.w,R=r.h+i.h,O=r.el.style;O.transition="none",this.update(r.el,{w:g,h:R}),setTimeout(()=>O.transition=null)}const m=r.subGrid=E.addGrid(c,t);return i!=null&&i._moving&&(m._isTemp=!0),u&&(m._autoColumn=!0),s&&m.makeWidget(d,h),i&&(i._moving?window.setTimeout(()=>f.simulateMouseEvent(i._event,"mouseenter",m.el),0):m.makeWidget(r.el,r)),this.resizeToContentCheck(!1,r),m}removeAsSubGrid(e){var i;const t=(i=this.parentGridNode)==null?void 0:i.grid;t&&(t.batchUpdate(),t.removeWidget(this.parentGridNode.el,!0,!0),this.engine.nodes.forEach(s=>{s.x+=this.parentGridNode.x,s.y+=this.parentGridNode.y,t.makeWidget(s.el,s)}),t.batchUpdate(!1),this.parentGridNode&&delete this.parentGridNode.subGrid,delete this.parentGridNode,e&&window.setTimeout(()=>f.simulateMouseEvent(e._event,"mouseenter",t.el),0))}save(e=!0,t=!1,i=E.saveCB){const s=this.engine.save(e,i);if(s.forEach(r=>{var a;if(e&&r.el&&!r.subGrid&&!i){const o=r.el.querySelector(".grid-stack-item-content");r.content=o==null?void 0:o.innerHTML,r.content||delete r.content}else if(!e&&!i&&delete r.content,(a=r.subGrid)!=null&&a.el){const o=r.subGrid.save(e,t,i);r.subGridOpts=t?o:{children:o},delete r.subGrid}delete r.el}),t){const r=f.cloneDeep(this.opts);r.marginBottom===r.marginTop&&r.marginRight===r.marginLeft&&r.marginTop===r.marginRight&&(r.margin=r.marginTop,delete r.marginTop,delete r.marginRight,delete r.marginBottom,delete r.marginLeft),r.rtl===(this.el.style.direction==="rtl")&&(r.rtl="auto"),this._isAutoCellHeight&&(r.cellHeight="auto"),this._autoColumn&&(r.column="auto");const a=r._alwaysShowResizeHandle;return delete r._alwaysShowResizeHandle,a!==void 0?r.alwaysShowResizeHandle=a:delete r.alwaysShowResizeHandle,f.removeInternalAndSame(r,K),r.children=s,r}return s}load(e,t=E.addRemoveCB||!0){var c;e=f.cloneDeep(e);const i=this.getColumn();e.forEach(d=>{d.w=d.w||1,d.h=d.h||1}),e=f.sort(e),this.engine.skipCacheUpdate=this._ignoreLayoutsNodeChange=!0;let s=0;e.forEach(d=>{s=Math.max(s,(d.x||0)+d.w)}),s>this.engine.defaultColumn&&(this.engine.defaultColumn=s),s>i&&this.engine.cacheLayout(e,s,!0);const r=E.addRemoveCB;typeof t=="function"&&(E.addRemoveCB=t);const a=[];this.batchUpdate();const o=!this.engine.nodes.length;o&&this.setAnimation(!1),!o&&t&&[...this.engine.nodes].forEach(h=>{if(!h.id)return;f.find(e,h.id)||(E.addRemoveCB&&E.addRemoveCB(this.el,h,!1,!1),a.push(h),this.removeWidget(h.el,!0,!1))}),this.engine._loading=!0;const u=[];return this.engine.nodes=this.engine.nodes.filter(d=>f.find(e,d.id)?(u.push(d),!1):!0),e.forEach(d=>{var m;const h=f.find(u,d.id);if(h){if(f.shouldSizeToContent(h)&&(d.h=h.h),this.engine.nodeBoundFix(d),(d.autoPosition||d.x===void 0||d.y===void 0)&&(d.w=d.w||h.w,d.h=d.h||h.h,this.engine.findEmptyPosition(d)),this.engine.nodes.push(h),f.samePos(h,d)&&this.engine.nodes.length>1&&(this.moveNode(h,{...d,forceCollide:!0}),f.copyPos(d,h)),this.update(h.el,d),(m=d.subGridOpts)!=null&&m.children){const p=h.el.querySelector(".grid-stack");p&&p.gridstack&&p.gridstack.load(d.subGridOpts.children)}}else t&&this.addWidget(d)}),delete this.engine._loading,this.engine.removedNodes=a,this.batchUpdate(!1),delete this._ignoreLayoutsNodeChange,delete this.engine.skipCacheUpdate,r?E.addRemoveCB=r:delete E.addRemoveCB,o&&((c=this.opts)!=null&&c.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 s=f.toNumber(t.getAttribute("gs-h"))||1;return Math.round(t.offsetHeight/s)}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 s=-this.opts.marginRight-this.opts.marginLeft+this.opts.marginTop+this.opts.marginBottom;e=this.cellWidth()+s}const i=f.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){var t;return e&&((t=this.opts.columnOpts)!=null&&t.breakpointForWindow)?window.innerWidth:this.el.clientWidth||this.el.parentElement.clientWidth||window.innerWidth}checkDynamicColumn(){var r,a;const e=this.opts.columnOpts;if(!e||!e.columnWidth&&!((r=e.breakpoints)!=null&&r.length))return!1;const t=this.getColumn();let i=t;const s=this._widthOrContainer(!0);if(e.columnWidth)i=Math.min(Math.round(s/e.columnWidth)||1,e.columnMax);else{i=e.columnMax;let o=0;for(;o<e.breakpoints.length&&s<=e.breakpoints[o].w;)i=e.breakpoints[o++].c||t}if(i!==t){const o=(a=e.breakpoints)==null?void 0:a.find(u=>u.c===i);return this.column(i,(o==null?void 0: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){var t,i;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(),(t=this.parentGridNode)==null||delete t.subGrid,delete this.parentGridNode,delete this.opts,(i=this._placeholder)==null||delete i.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 s;t?s={top:i.top+document.documentElement.scrollTop,left:i.left}:s={top:this.el.offsetTop,left:this.el.offsetLeft};const r=e.left-s.left,a=e.top-s.top,o=i.width/this.getColumn(),u=i.height/parseInt(this.el.getAttribute("gs-current-row"));return{x:Math.floor(r/o),y:Math.floor(a/u)}}getRow(){return Math.max(this.engine.getRow(),this.opts.minRow)}isAreaEmpty(e,t,i,s){return this.engine.isAreaEmpty(e,t,i,s)}makeWidget(e,t){const i=E.getElement(e);if(!i)return;i.parentElement||this.el.appendChild(i),this._prepareElement(i,!0,t);const s=i.gridstackNode;this._updateContainerHeight(),s.subGridOpts&&this.makeSubGrid(i,s.subGridOpts,void 0,!1);let r;return this.opts.column===1&&!this._ignoreLayoutsNodeChange&&(r=this._ignoreLayoutsNodeChange=!0),this._triggerAddEvent(),this._triggerChangeEvent(),r&&delete this._ignoreLayoutsNodeChange,i}on(e,t){return e.indexOf(" ")!==-1?(e.split(" ").forEach(s=>this.on(s,t)),this):(e==="change"||e==="added"||e==="removed"||e==="enable"||e==="disable"?(e==="enable"||e==="disable"?this._gsEventHandler[e]=s=>t(s):this._gsEventHandler[e]=s=>{s.detail&&t(s,s.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?(E.getElements(e).forEach(s=>{if(s.parentElement&&s.parentElement!==this.el)return;let r=s.gridstackNode;r||(r=this.engine.nodes.find(a=>s===a.el)),r&&(t&&E.addRemoveCB&&E.addRemoveCB(this.el,r,!1,!1),delete s.gridstackNode,this._removeDD(s),this.engine.removeNode(r,t,i),t&&s.parentElement&&s.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&&E.addRemoveCB&&E.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(s=>{this.prepareDragDrop(s.el),s.subGrid&&i&&s.subGrid.setStatic(e,t,i)}),t&&this._setStaticClass(),this)}updateOptions(e){var i;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),(i=e.children)!=null&&i.length&&(this.load(e.children),delete e.children),this.opts={...this.opts,...e},this}update(e,t){return E.getElements(e).forEach(i=>{var d;const s=i==null?void 0:i.gridstackNode;if(!s)return;const r={...f.copyPos({},s),...f.cloneDeep(t)};this.engine.nodeBoundFix(r),delete r.autoPosition;const a=["x","y","w","h"];let o;if(a.some(h=>r[h]!==void 0&&r[h]!==s[h])&&(o={},a.forEach(h=>{o[h]=r[h]!==void 0?r[h]:s[h],delete r[h]})),!o&&(r.minW||r.minH||r.maxW||r.maxH)&&(o={}),r.content!==void 0){const h=i.querySelector(".grid-stack-item-content");h&&h.textContent!==r.content&&(s.content=r.content,E.renderCB(h,r),(d=s.subGrid)!=null&&d.el&&(h.appendChild(s.subGrid.el),s.subGrid.opts.styleInHead||s.subGrid._updateStyles(!0))),delete r.content}let u=!1,c=!1;for(const h in r)h[0]!=="_"&&s[h]!==r[h]&&(s[h]=r[h],u=!0,c=c||!this.opts.staticGrid&&(h==="noResize"||h==="noMove"||h==="locked"));if(f.sanitizeMinMax(s),o){const h=o.w!==void 0&&o.w!==s.w;this.moveNode(s,o),h&&s.subGrid?s.subGrid.onResize(this.hasAnimationCSS()?s.w:void 0):this.resizeToContentCheck(h,s),delete s._orig}(o||u)&&this._writeAttr(i,s),c&&this.prepareDragDrop(s.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){var m,p;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 s=i.getCellHeight(!0);if(!s)return;let r=t.h?t.h*s:e.clientHeight,a;if(t.resizeToContentParent&&(a=e.querySelector(t.resizeToContentParent)),a||(a=e.querySelector(E.resizeToContentParent)),!a)return;const o=e.clientHeight-a.clientHeight,u=t.h?t.h*s-o:a.clientHeight;let c;if(t.subGrid){c=t.subGrid.getRow()*t.subGrid.getCellHeight(!0);const y=t.subGrid.el.getBoundingClientRect(),_=t.subGrid.el.parentElement.getBoundingClientRect();c+=y.top-_.top}else{if((p=(m=t.subGridOpts)==null?void 0:m.children)!=null&&p.length)return;{const y=a.firstElementChild;if(!y){console.error(`Error: GridStack.resizeToContent() widget id:${t.id} '${E.resizeToContentParent}'.firstElementChild is null, make sure to have a div like container. Skipping sizing.`);return}c=y.getBoundingClientRect().height||u}}if(u===c)return;r+=c-u;let d=Math.ceil(r/s);const h=Number.isInteger(t.sizeToContent)?t.sizeToContent:0;h&&d>h&&(d=h,e.classList.add("size-to-content-max")),t.minH&&d<t.minH?d=t.minH:t.maxH&&d>t.maxH&&(d=t.maxH),d!==t.h&&(i._ignoreLayoutsNodeChange=!0,i.moveNode(t,{h:d}),delete i._ignoreLayoutsNodeChange)}resizeToContentCBCheck(e){E.resizeToContentCB?E.resizeToContentCB(e):this.resizeToContent(e)}rotate(e,t){return E.getElements(e).forEach(i=>{const s=i.gridstackNode;if(!f.canBeRotated(s))return;const r={w:s.h,h:s.w,minH:s.minW,minW:s.minH,maxH:s.maxW,maxW:s.maxH};if(t){const o=t.left>0?Math.floor(t.left/this.cellWidth()):0,u=t.top>0?Math.floor(t.top/this.opts.cellHeight):0;r.x=s.x+o-(s.h-(u+1)),r.y=s.y+u-o}Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o]});const a=s._orig;this.update(i,r),s._orig=a}),this}margin(e){if(!(typeof e=="string"&&e.split(" ").length>1)){const i=f.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,s={x:t[i++],y:t[i++],w:t[i++],h:t[i++],autoPosition:t[i++]};return this.willItFit(s)}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(){var e;if(this.engine.batchMode)return this;if((e=this.engine.addedNodes)!=null&&e.length){this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(this.engine.addedNodes),this.engine.addedNodes.forEach(i=>{delete i._dirty});const t=[...this.engine.addedNodes];this.engine.addedNodes=[],this._triggerEvent("added",t)}return this}_triggerRemoveEvent(){var e;if(this.engine.batchMode)return this;if((e=this.engine.removedNodes)!=null&&e.length){const t=[...this.engine.removedNodes];this.engine.removedNodes=[],this._triggerEvent("removed",t)}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;f.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,s=this.opts.cellHeightUnit,r=`.${this._styleSheetClass} > .${this.opts.itemClass}`;if(!this._styles){const a=this.opts.styleInHead?void 0:this.el.parentNode;if(this._styles=f.createStylesheet(this._styleSheetClass,a,{nonce:this.opts.nonce}),!this._styles)return this;this._styles._max=0,f.addCSSRule(this._styles,r,`height: ${i}${s}`);const o=this.opts.marginTop+this.opts.marginUnit,u=this.opts.marginBottom+this.opts.marginUnit,c=this.opts.marginRight+this.opts.marginUnit,d=this.opts.marginLeft+this.opts.marginUnit,h=`${r} > .grid-stack-item-content`,m=`.${this._styleSheetClass} > .grid-stack-placeholder > .placeholder-content`;f.addCSSRule(this._styles,h,`top: ${o}; right: ${c}; bottom: ${u}; left: ${d};`),f.addCSSRule(this._styles,m,`top: ${o}; right: ${c}; bottom: ${u}; left: ${d};`),f.addCSSRule(this._styles,`${r} > .ui-resizable-n`,`top: ${o};`),f.addCSSRule(this._styles,`${r} > .ui-resizable-s`,`bottom: ${u}`),f.addCSSRule(this._styles,`${r} > .ui-resizable-ne`,`right: ${c}; top: ${o}`),f.addCSSRule(this._styles,`${r} > .ui-resizable-e`,`right: ${c}`),f.addCSSRule(this._styles,`${r} > .ui-resizable-se`,`right: ${c}; bottom: ${u}`),f.addCSSRule(this._styles,`${r} > .ui-resizable-nw`,`left: ${d}; top: ${o}`),f.addCSSRule(this._styles,`${r} > .ui-resizable-w`,`left: ${d}`),f.addCSSRule(this._styles,`${r} > .ui-resizable-sw`,`left: ${d}; bottom: ${u}`)}if(t=t||this._styles._max,t>this._styles._max){const a=o=>i*o+s;for(let o=this._styles._max+1;o<=t;o++)f.addCSSRule(this._styles,`${r}[gs-y="${o}"]`,`top: ${a(o)}`),f.addCSSRule(this._styles,`${r}[gs-h="${o+1}"]`,`height: ${a(o+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,s=this.opts.cellHeightUnit;if(!i)return this;if(!e){const r=f.parseHeight(getComputedStyle(this.el).minHeight);if(r.h>0&&r.unit===s){const a=Math.floor(r.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+s),e&&!e.grid.engine.batchMode&&f.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(K.itemClass,this.opts.itemClass);const s=f.shouldSizeToContent(i);return s?e.classList.add("size-to-content"):e.classList.remove("size-to-content"),s&&this.resizeToContentCheck(!1,i),f.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 s in i)t[s]?e.setAttribute(i[s],String(t[s])):e.removeAttribute(i[s]);return this}_readAttr(e,t=!0){const i={};i.x=f.toNumber(e.getAttribute("gs-x")),i.y=f.toNumber(e.getAttribute("gs-y")),i.w=f.toNumber(e.getAttribute("gs-w")),i.h=f.toNumber(e.getAttribute("gs-h")),i.autoPosition=f.toBool(e.getAttribute("gs-auto-position")),i.noResize=f.toBool(e.getAttribute("gs-no-resize")),i.noMove=f.toBool(e.getAttribute("gs-no-move")),i.locked=f.toBool(e.getAttribute("gs-locked"));const s=e.getAttribute("gs-size-to-content");s&&(s==="true"||s==="false"?i.sizeToContent=f.toBool(s):i.sizeToContent=parseInt(s,10)),i.id=e.getAttribute("gs-id"),i.maxW=f.toNumber(e.getAttribute("gs-max-w")),i.minW=f.toNumber(e.getAttribute("gs-min-w")),i.maxH=f.toNumber(e.getAttribute("gs-max-h")),i.minH=f.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 r in i){if(!i.hasOwnProperty(r))return;!i[r]&&i[r]!==0&&r!=="gs-size-to-content"&&delete i[r]}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=(t=>(t=this.el)==null?void 0:t.clientWidth)()){if(!e||this.prevWidth===e)return;this.prevWidth=e,this.batchUpdate();let i=!1;return this._autoColumn&&this.parentGridNode?this.opts.column!==this.parentGridNode.w&&(this.column(this.parentGridNode.w,this.opts.layout||"list"),i=!0):i=this.checkDynamicColumn(),this._isAutoCellHeight&&this.cellHeight(),this.engine.nodes.forEach(s=>{s.subGrid&&s.subGrid.onResize()}),this._skipInitialResize||this.resizeToContentCheck(i),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)f.shouldSizeToContent(t)&&this.resizeToContentCBCheck(t.el);else if(this.engine.nodes.some(i=>f.shouldSizeToContent(i))){const i=[...this.engine.nodes];this.batchUpdate(),i.forEach(s=>{f.shouldSizeToContent(s)&&this.resizeToContentCBCheck(s.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=f.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 f.getElement(e)}static getElements(e=".grid-stack-item"){return f.getElements(e)}static getGridElement(e){return E.getElement(e)}static getGridElements(e){return f.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=f.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=f.parseHeight(this.opts.marginTop),this.opts.marginTop=e.h,delete this.opts.margin),this.opts.marginBottom===void 0?this.opts.marginBottom=t:(e=f.parseHeight(this.opts.marginBottom),this.opts.marginBottom=e.h,delete this.opts.margin),this.opts.marginRight===void 0?this.opts.marginRight=t:(e=f.parseHeight(this.opts.marginRight),this.opts.marginRight=e.h,delete this.opts.margin),this.opts.marginLeft===void 0?this.opts.marginLeft=t:(e=f.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 U}static setupDragIn(e,t,i,s=document){(t==null?void 0:t.pause)!==void 0&&(C.pauseDrag=t.pause),t={appendTo:"body",helper:"clone",...t||{}},(typeof e=="string"?f.getElements(e,s):e).forEach((a,o)=>{U.isDraggable(a)||U.dragIn(a,t),i!=null&&i[o]&&(a.gridstackNode=i[o])})}movable(e,t){return this.opts.staticGrid?this:(E.getElements(e).forEach(i=>{const s=i.gridstackNode;s&&(t?delete s.noMove:s.noMove=!0,this.prepareDragDrop(s.el))}),this)}resizable(e,t){return this.opts.staticGrid?this:(E.getElements(e).forEach(i=>{const s=i.gridstackNode;s&&(t?delete s.noResize:s.noResize=!0,this.prepareDragDrop(s.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(){var t;const e=(t=this._placeholder)==null?void 0:t.gridstackNode;e&&(e._isExternal?(e._isAboutToRemove=!0,this.engine.removeNode(e)):e._isAboutToRemove&&E._itemRemoving(e.el,!1),this.engine.restoreInitial())}_removeDD(e){return U.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 U.droppable(this.el,"destroy"),this;let e,t;const i=(s,r,a)=>{var m;a=a||r;const o=a.gridstackNode;if(!o)return;if(!((m=o.grid)!=null&&m.el)){a.style.transform=`scale(${1/this.dragTransform.xScale},${1/this.dragTransform.yScale})`;const p=a.getBoundingClientRect();a.style.left=p.x+(this.dragTransform.xScale-1)*(s.clientX-p.x)/this.dragTransform.xScale+"px",a.style.top=p.y+(this.dragTransform.yScale-1)*(s.clientY-p.y)/this.dragTransform.yScale+"px",a.style.transformOrigin="0px 0px"}let{top:u,left:c}=a.getBoundingClientRect();const d=this.el.getBoundingClientRect();c-=d.left,u-=d.top;const h={position:{top:u*this.dragTransform.xScale,left:c*this.dragTransform.yScale}};if(o._temporaryRemoved){if(o.x=Math.max(0,Math.round(c/t)),o.y=Math.max(0,Math.round(u/e)),delete o.autoPosition,this.engine.nodeBoundFix(o),!this.engine.willItFit(o)){if(o.autoPosition=!0,!this.engine.willItFit(o)){U.off(r,"drag");return}o._willFitPos&&(f.copyPos(o,o._willFitPos),delete o._willFitPos)}this._onStartMoving(a,s,h,o,t,e)}else this._dragOrResize(a,s,h,o,t,e)};return U.droppable(this.el,{accept:s=>{const r=s.gridstackNode||this._readAttr(s,!1);if((r==null?void 0:r.grid)===this)return!0;if(!this.opts.acceptWidgets)return!1;let a=!0;if(typeof this.opts.acceptWidgets=="function")a=this.opts.acceptWidgets(s);else{const o=this.opts.acceptWidgets===!0?".grid-stack-item":this.opts.acceptWidgets;a=s.matches(o)}if(a&&r&&this.opts.maxRow){const o={w:r.w,h:r.h,minW:r.minW,minH:r.minH};a=this.engine.willItFit(o)}return a}}).on(this.el,"dropover",(s,r,a)=>{let o=(a==null?void 0:a.gridstackNode)||r.gridstackNode;if((o==null?void 0:o.grid)===this&&!o._temporaryRemoved)return!1;if(o!=null&&o._sidebarOrig&&(o.w=o._sidebarOrig.w,o.h=o._sidebarOrig.h),o!=null&&o.grid&&o.grid!==this&&!o._temporaryRemoved&&o.grid._leave(r,a),a=a||r,t=this.cellWidth(),e=this.getCellHeight(!0),!o){const d=a.getAttribute("data-gs-widget")||a.getAttribute("gridstacknode");if(d){try{o=JSON.parse(d)}catch{console.error("Gridstack dropover: Bad JSON format: ",d)}a.removeAttribute("data-gs-widget"),a.removeAttribute("gridstacknode")}o||(o=this._readAttr(a)),o._sidebarOrig={w:o.w,h:o.h}}o.grid||(o.el||(o={...o}),o._isExternal=!0,a.gridstackNode=o);const u=o.w||Math.round(a.offsetWidth/t)||1,c=o.h||Math.round(a.offsetHeight/e)||1;return o.grid&&o.grid!==this?(r._gridstackNodeOrig||(r._gridstackNodeOrig=o),r.gridstackNode=o={...o,w:u,h:c,grid:this},delete o.x,delete o.y,this.engine.cleanupNode(o).nodeBoundFix(o),o._initDD=o._isExternal=o._temporaryRemoved=!0):(o.w=u,o.h=c,o._temporaryRemoved=!0),E._itemRemoving(o.el,!1),U.on(r,"drag",i),i(s,r,a),!1}).on(this.el,"dropout",(s,r,a)=>{const o=(a==null?void 0:a.gridstackNode)||r.gridstackNode;return o&&(!o.grid||o.grid===this)&&(this._leave(r,a),this._isTemp&&this.removeAsSubGrid(o)),!1}).on(this.el,"drop",(s,r,a)=>{var p,y,_;const o=(a==null?void 0:a.gridstackNode)||r.gridstackNode;if((o==null?void 0:o.grid)===this&&!o._isExternal)return!1;const u=!!this.placeholder.parentElement,c=r!==a;this.placeholder.remove(),delete this.placeholder.gridstackNode;const d=u&&this.opts.animate;d&&this.setAnimation(!1);const h=r._gridstackNodeOrig;if(delete r._gridstackNodeOrig,u&&(h!=null&&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(!o||(u&&(this.engine.cleanupNode(o),o.grid=this),(p=o.grid)==null||delete p._isTemp,U.off(r,"drag"),a!==r?(a.remove(),r=a):r.remove(),this._removeDD(r),!u))return!1;const m=(_=(y=o.subGrid)==null?void 0:y.el)==null?void 0:_.gridstack;return f.copyPos(o,this._readAttr(this.placeholder)),f.removePositioningStyles(r),c&&(o.content||o.subGridOpts||E.addRemoveCB)?(delete o.el,r=this.addWidget(o)):(this._prepareElement(r,!0,o),this.el.appendChild(r),this.resizeToContentCheck(!1,o),m&&(m.parentGridNode=o,m.opts.styleInHead||m._updateStyles(!0)),this._updateContainerHeight()),this.engine.addedNodes.push(o),this._triggerAddEvent(),this._triggerChangeEvent(),this.engine.endUpdate(),this._gsEventHandler.dropped&&this._gsEventHandler.dropped({...s,type:"dropped"},h&&h.grid?h:void 0,o),d&&this.setAnimation(this.opts.animate,!0),!1}),this}static _itemRemoving(e,t){if(!e)return;const i=e?e.gridstackNode:void 0;!(i!=null&&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&&!U.isDroppable(e)&&U.droppable(e,this.opts.removableOptions).on(e,"dropover",(t,i)=>E._itemRemoving(i,!0)).on(e,"dropout",(t,i)=>E._itemRemoving(i,!1)),this):this}prepareDragDrop(e,t=!1){const i=e==null?void 0:e.gridstackNode;if(!i)return;const s=i.noMove||this.opts.disableDrag,r=i.noResize||this.opts.disableResize,a=this.opts.staticGrid||s&&r;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 o,u;const c=(m,p)=>{this._gsEventHandler[m.type]&&this._gsEventHandler[m.type](m,m.target),o=this.cellWidth(),u=this.getCellHeight(!0),this._onStartMoving(e,m,p,i,o,u)},d=(m,p)=>{this._dragOrResize(e,m,p,i,o,u)},h=m=>{this.placeholder.remove(),delete this.placeholder.gridstackNode,delete i._moving,delete i._event,delete i._lastTried;const p=i.w!==i._orig.w,y=m.target;if(!(!y.gridstackNode||y.gridstackNode.grid!==this)){if(i.el=y,i._isAboutToRemove){const _=e.gridstackNode.grid;_._gsEventHandler[m.type]&&_._gsEventHandler[m.type](m,y),_.engine.nodes.push(i),_.removeWidget(e,!0,!0)}else f.removePositioningStyles(y),i._temporaryRemoved?(f.copyPos(i,i._orig),this._writePosAttr(y,i),this.engine.addNode(i)):this._writePosAttr(y,i),this._gsEventHandler[m.type]&&this._gsEventHandler[m.type](m,y);this._extraDragRow=0,this._updateContainerHeight(),this._triggerChangeEvent(),this.engine.endUpdate(),m.type==="resizestop"&&(Number.isInteger(i.sizeToContent)&&(i.sizeToContent=i.h),this.resizeToContentCheck(p,i))}};U.draggable(e,{start:c,stop:h,drag:d}).resizable(e,{start:c,stop:h,resize:d}),i._initDD=!0}return U.draggable(e,s?"disable":"enable").resizable(e,r?"disable":"enable"),this}_onStartMoving(e,t,i,s,r,a){var o;if(this.engine.cleanNodes().beginUpdate(s),this._writePosAttr(this.placeholder,s),this.el.appendChild(this.placeholder),this.placeholder.gridstackNode=s,(o=s.grid)!=null&&o.el)this.dragTransform=f.getValuesFromTransformedElement(e);else if(this.placeholder&&this.placeholder.closest(".grid-stack")){const u=this.placeholder.closest(".grid-stack");this.dragTransform=f.getValuesFromTransformedElement(u)}else this.dragTransform={xScale:1,xOffset:0,yScale:1,yOffset:0};if(s.el=this.placeholder,s._lastUiPosition=i.position,s._prevYPix=i.position.top,s._moving=t.type==="dragstart",delete s._lastTried,t.type==="dropover"&&s._temporaryRemoved&&(this.engine.addNode(s),s._moving=!0),this.engine.cacheRects(r,a,this.opts.marginTop,this.opts.marginRight,this.opts.marginBottom,this.opts.marginLeft),t.type==="resizestart"){const u=this.getColumn()-s.x,c=(this.opts.maxRow||Number.MAX_SAFE_INTEGER)-s.y;U.resizable(e,"option","minWidth",r*Math.min(s.minW||1,u)).resizable(e,"option","minHeight",a*Math.min(s.minH||1,c)).resizable(e,"option","maxWidth",r*Math.min(s.maxW||Number.MAX_SAFE_INTEGER,u)).resizable(e,"option","maxWidthMoveLeft",r*Math.min(s.maxW||Number.MAX_SAFE_INTEGER,s.x+s.w)).resizable(e,"option","maxHeight",a*Math.min(s.maxH||Number.MAX_SAFE_INTEGER,c)).resizable(e,"option","maxHeightMoveUp",a*Math.min(s.maxH||Number.MAX_SAFE_INTEGER,s.y+s.h))}}_dragOrResize(e,t,i,s,r,a){const o={...s._orig};let u,c=this.opts.marginLeft,d=this.opts.marginRight,h=this.opts.marginTop,m=this.opts.marginBottom;const p=Math.round(a*.1),y=Math.round(r*.1);if(c=Math.min(c,y),d=Math.min(d,y),h=Math.min(h,p),m=Math.min(m,p),t.type==="drag"){if(s._temporaryRemoved)return;const g=i.position.top-s._prevYPix;s._prevYPix=i.position.top,this.opts.draggable.scroll!==!1&&f.updateScrollPosition(e,i.position,g);const R=i.position.left+(i.position.left>s._lastUiPosition.left?-d:c),O=i.position.top+(i.position.top>s._lastUiPosition.top?-m:h);o.x=Math.round(R/r),o.y=Math.round(O/a);const x=this._extraDragRow;if(this.engine.collide(s,o)){const H=this.getRow();let L=Math.max(0,o.y+s.h-H);this.opts.maxRow&&H+L>this.opts.maxRow&&(L=Math.max(0,this.opts.maxRow-H)),this._extraDragRow=L}else this._extraDragRow=0;if(this._extraDragRow!==x&&this._updateContainerHeight(),s.x===o.x&&s.y===o.y)return}else if(t.type==="resize"){if(o.x<0||(f.updateScrollResize(t,e,a),o.w=Math.round((i.size.width-c)/r),o.h=Math.round((i.size.height-h)/a),s.w===o.w&&s.h===o.h)||s._lastTried&&s._lastTried.w===o.w&&s._lastTried.h===o.h)return;const g=i.position.left+c,R=i.position.top+h;o.x=Math.round(g/r),o.y=Math.round(R/a),u=!0}s._event=t,s._lastTried=o;const _={x:i.position.left+c,y:i.position.top+h,w:(i.size?i.size.width:s.w*r)-c-d,h:(i.size?i.size.height:s.h*a)-h-m};if(this.engine.moveNodeCheck(s,{...o,cellWidth:r,cellHeight:a,rect:_,resizing:u})){s._lastUiPosition=i.position,this.engine.cacheRects(r,a,h,d,m,c),delete s._skipDown,u&&s.subGrid&&s.subGrid.onResize(),this._extraDragRow=0,this._updateContainerHeight();const g=t.target;s._sidebarOrig||this._writePosAttr(g,s),this._gsEventHandler[t.type]&&this._gsEventHandler[t.type](t,g)}}_leave(e,t){t=t||e;const i=t.gridstackNode;if(!i||(t.style.transform=t.style.transformOrigin=null,U.off(e,"drag"),i._temporaryRemoved))return;i._temporaryRemoved=!0,this.engine.removeNode(i),i.el=i._isExternal&&t?t:e;const s=i._sidebarOrig;i._isExternal&&this.engine.cleanupNode(i),i._sidebarOrig=s,this.opts.removable===!0&&E._itemRemoving(e,!0),e._gridstackNodeOrig?(e.gridstackNode=e._gridstackNodeOrig,delete e._gridstackNodeOrig):i._isExternal&&this.engine.restoreInitial()}commit(){return yi(this,this.batchUpdate(!1),"commit","batchUpdate","5.2"),this}}E.renderCB=(l,e)=>{l&&(e!=null&&e.content)&&(l.textContent=e.content)},E.resizeToContentParent=".grid-stack-item-content",E.Utils=f,E.Engine=se,E.GDRev="11.5.1";const wi=["data-id","data-testid","gs-h","gs-w","gs-x","gs-y"],Ei={class:"grid-stack-item-content"},xi=ce(n.defineComponent({__name:"DraggableGridLayout",props:{tiles:{},tileHeight:{default:ue}},emits:["update-tiles"],setup(l,{expose:e,emit:t}){const i=l,s=t,r=n.ref(null),a=n.ref(new Map(i.tiles.map(p=>[`${p.id}`,p])));let o=null;const u=p=>`[data-id="${p}"]`,c=p=>p.map(y=>{var g;const _=a.value.get(`${(g=y.el)==null?void 0:g.getAttribute("data-id")}`);if(_)return{..._,layout:{position:{col:Number(y.x),row:Number(y.y)},size:{cols:Number(y.w),rows:Number(y.h)}}}}).filter(y=>y!==void 0),d=(p,y)=>{o&&(c(y).forEach(g=>{a.value.set(`${g.id}`,g)}),s("update-tiles",Array.from(a.value.values())))},h=(p,y)=>{y.forEach(_=>{var g;a.value.delete(`${(g=_.el)==null?void 0:g.getAttribute("data-id")}`)}),s("update-tiles",Array.from(a.value.values()))};n.onMounted(()=>{r.value&&(o=E.init({margin:10,column:Ne,cellHeight:i.tileHeight,resizable:{handles:"se, sw"},handle:".tile-header"},r.value),o.on("change",d),o.on("added",d),o.on("removed",h))}),n.onUnmounted(()=>{o&&o.destroy(!1)});const m=p=>{if(o&&r.value){const y=r.value.querySelector(u(p));y&&o.removeWidget(y)}};return n.watch(()=>i.tiles.length,async(p,y)=>{if(p>y&&o){const _=i.tiles.slice(y);for(const g of _)a.value.set(`${g.id}`,g),await n.nextTick(),o.makeWidget(u(g.id),{autoPosition:!0,w:g.layout.size.cols,h:g.layout.size.rows})}}),n.watchEffect(()=>{i.tiles.forEach(p=>{a.value.set(`${p.id}`,p)})}),e({removeWidget:m}),(p,y)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"gridContainer",ref:r,class:"grid-stack"},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(i.tiles,_=>(n.openBlock(),n.createElementBlock("div",{key:_.id,class:"grid-stack-item","data-id":`${_.id}`,"data-testid":`grid-stack-item-${_.id}`,"gs-h":_.layout.size.rows,"gs-lazy-load":!0,"gs-w":_.layout.size.cols,"gs-x":_.layout.position.col,"gs-y":_.layout.position.row},[n.createElementVNode("div",Ei,[n.renderSlot(p.$slots,"tile",{tile:_},void 0,!0)])],8,wi))),128))],512))}}),[["__scopeId","data-v-a68d6821"]]),Ci={key:0,class:"fullscreen-header"},ki={key:0,class:"tile-container slottable-tile"},Ri=ce(n.defineComponent({__name:"DashboardRenderer",props:n.mergeModels({context:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:n.mergeModels(["edit-tile","tile-time-range-zoom"],["update:modelValue"]),setup(l,{expose:e,emit:t}){n.useCssVars(T=>({v3a012eda:h.value}));const i=l,s=t,r=n.useModel(l,"modelValue"),{i18n:a}=J.useI18n(),o=n.ref(0),u=n.ref(null),c=n.ref(),d=n.ref(),h=n.ref("scale(1)"),m=n.inject(ne);m||(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")),J.useRequestQueue();const p=Ee.useAnalyticsConfigStore(),y=n.computed(()=>i.context.timeSpec?i.context.timeSpec:{type:"relative",time_range:p.defaultQueryTimeForOrg}),_=n.computed(()=>!!i.context.timeSpec||!p.loading),g=(T,A)=>{const q=T.layout.position.row-A.layout.position.row;return q!==0?q:T.layout.position.col-A.layout.position.col},R=n.computed(()=>r.value.tiles.map(T=>{var q;let A=T.definition;if("description"in A.chart){const $=(q=A.chart.description)==null?void 0:q.replace(et,()=>{const ve=`renderer.trendRange.${y.value.type==="absolute"?"custom":y.value.time_range}`;return a.te(ve)?a.t(ve):""});A={...A,chart:{...A.chart,description:$}}}return i.context.editable&&!T.id&&console.warn("No id provided for tile. One will be generated automatically,","however tracking changes to this tile may not work as expected.",T),{layout:T.layout,meta:A,type:T.type,id:T.id??crypto.randomUUID()}})),O=T=>{s("edit-tile",T)},x=T=>T.type==="slottable",H=T=>{try{const A=x(T.meta.chart)?{...T.meta.chart}:{...T.meta.chart,chart_title:T.meta.chart.chart_title?`Copy of ${T.meta.chart.chart_title}`:""},q={id:crypto.randomUUID(),type:"chart",definition:{...T.meta,chart:A},layout:{position:{col:0,row:0},size:T.layout.size}};r.value.tiles.push(JSON.parse(JSON.stringify(q)))}catch(A){console.warn(A)}},L=T=>{u.value&&u.value.removeWidget(T.id)},k=()=>{o.value++},I=T=>{const A=T.map(q=>({id:q.id,type:q.type,layout:q.layout,definition:q.meta}));r.value.tiles=A.sort(g)},Z=async()=>{if(h.value="scale(1)",await n.nextTick(),d.value){const{availWidth:T,availHeight:A}=window.screen,{width:q,height:$}=d.value.getBoundingClientRect(),F=Math.min(A/$,T/q);h.value=`scale(${F})`}},le=()=>{c.value&&(document.fullscreenElement?document.exitFullscreen():c.value.requestFullscreen())},V=n.ref(!1),he=()=>{V.value=document.fullscreenElement!==null,V.value&&Z()},_e=n.computed(()=>r.value.preset_filters??[]),{internalContext:be}=J.useDashboardInternalContext({globalFilters:_e,context:n.toRef(i,"context"),isFullscreen:V});return e({refresh:k,toggleFullscreen:le}),(T,A)=>{const q=n.resolveComponent("KAlert");return n.openBlock(),n.createElementBlock("div",{ref_key:"dashboardContainer",ref:c,class:n.normalizeClass(["kong-ui-public-dashboard-renderer",{"is-fullscreen":V.value}]),onFullscreenchange:he},[n.createElementVNode("div",{ref_key:"layoutContainer",ref:d,class:"layout"},[n.unref(m)&&V.value?(n.openBlock(),n.createElementBlock("div",Ci,[n.renderSlot(T.$slots,"fullscreenHeader",{},void 0,!0)])):n.createCommentVNode("",!0),n.unref(m)?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(l.context.editable&&!V.value?xi:yt),{key:2,ref_key:"gridLayoutRef",ref:u,"tile-height":r.value.tile_height,tiles:R.value,onUpdateTiles:I},{tile:n.withCtx(({tile:$})=>[$.meta.chart.type==="slottable"?(n.openBlock(),n.createElementBlock("div",ki,[n.renderSlot(T.$slots,$.meta.chart.id,{},void 0,!0)])):(n.openBlock(),n.createBlock(pt,{key:V.value?`${$.id}-tile`:`${$.id}-tile-fullscreen`,"refresh-counter":o.value,"onUpdate:refreshCounter":A[0]||(A[0]=F=>o.value=F),class:"tile-container",context:n.unref(be),definition:$.meta,height:$.layout.size.rows*(r.value.tile_height||n.unref(ue))+parseInt(n.unref(gt),10),"is-fullscreen":V.value,"query-ready":_.value,"tile-id":$.id,onDuplicateTile:F=>H($),onEditTile:F=>O($),onRemoveTile:F=>L($),onTileTimeRangeZoom:A[1]||(A[1]=F=>s("tile-time-range-zoom",F))},null,8,["refresh-counter","context","definition","height","is-fullscreen","query-ready","tile-id","onDuplicateTile","onEditTile","onRemoveTile"]))]),_:3},40,["tile-height","tiles"])):(n.openBlock(),n.createBlock(q,{key:1,appearance:"danger"},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(n.unref(a).t("renderer.noQueryBridge")),1)]),_:1}))],512)],34)}}}),[["__scopeId","data-v-50c8588f"]]),Ti=n.defineComponent({__name:"DashboardTilePreview",props:{context:{},definition:{},globalFilters:{default:()=>[]}},emits:["chart-data","tile-time-range-zoom","tile-bounds-change"],setup(l,{expose:e,emit:t}){const i=n.useTemplateRef("root"),s=n.useTemplateRef("dashboard-tile"),r=crypto.randomUUID(),a=t,o=x=>{a("tile-time-range-zoom",x)},u=x=>{a("chart-data",x)},c=x=>{a("tile-bounds-change",x)},{i18n:d}=J.useI18n(),{internalContext:h}=J.useDashboardInternalContext({globalFilters:n.toRef(()=>l.globalFilters),context:n.toRef(()=>l.context)}),m=Ee.useAnalyticsConfigStore(),p=n.computed(()=>!!l.context.timeSpec||!m.loading),y=n.computed(()=>{var x,H;return!((H=(x=l.definition)==null?void 0:x.query)!=null&&H.metrics)||l.definition.query.metrics.length===0}),_=n.ref(ue);let g;n.onMounted(()=>{var H;const x=(H=i.value)==null?void 0:H.parentElement;x&&(_.value=x.getBoundingClientRect().height,g=new ResizeObserver(([L])=>{const{height:k}=L.contentRect;_.value=k}),g.observe(x))}),n.onUnmounted(()=>g==null?void 0:g.disconnect());const R=n.ref(0);return e({refresh:()=>{R.value++},getExportData:()=>{var x;return(x=s.value)==null?void 0:x.getExportData()}}),(x,H)=>{const L=n.resolveComponent("KEmptyState");return n.openBlock(),n.createElementBlock("div",{ref_key:"root",ref:i,"data-testid":"dashboard-tile-preview-root"},[y.value?(n.openBlock(),n.createBlock(L,{key:0,"action-button-visible":!1,"data-testid":"chart-not-configured-empty-state"},{title:n.withCtx(()=>[n.createElementVNode("p",null,n.toDisplayString(n.unref(d).t("renderer.not_configured.title")),1)]),default:n.withCtx(()=>[n.createElementVNode("p",null,n.toDisplayString(n.unref(d).t("renderer.not_configured.description")),1)]),_:1})):(n.openBlock(),n.createBlock(pt,{key:1,ref:"dashboard-tile","refresh-counter":R.value,"onUpdate:refreshCounter":H[0]||(H[0]=k=>R.value=k),context:{...n.unref(h),editable:!1},definition:l.definition,height:_.value,"hide-actions":"","query-ready":p.value,"show-refresh":"","tile-id":n.unref(r),onChartData:u,onTileBoundsChange:c,onTileTimeRangeZoom:o},null,8,["refresh-counter","context","definition","height","query-ready","tile-id"]))],512)}}}),Si=l=>{var t;const e=(t=l.definition)==null?void 0:t.query;if(!e)return l;if(e.datasource==="api_usage"){console.warn("[@kong-ui-public/dashboard-renderer] A tile was filtered out for the Basic Tier",l);return}return l},Di=l=>{var i;const e=(i=l.definition)==null?void 0:i.query;if(!e)return l;const t={...e,datasource:e.datasource==="basic"?"api_usage":e.datasource};return{...l,definition:{...l.definition,query:t}}},zi=l=>{var r,a,o,u,c;if(!l.length)return[];let e=0,t=0,i=0;const s=[];for(const d of l){const h=((a=(r=d.layout)==null?void 0:r.size)==null?void 0:a.cols)??1,m=((u=(o=d.layout)==null?void 0:o.size)==null?void 0:u.rows)??1;t+h>Ne&&(e+=i,t=0,i=0);const p={...d,layout:{...d.layout,position:{...((c=d.layout)==null?void 0:c.position)??{},col:t,row:e}}};s.push(p),t+=h,i=Math.max(i,m)}return s},Ni=(l,e)=>{if(e){const s=l.tiles.map(Di);return{...l,tiles:s}}const t=l.tiles.map(Si).filter(s=>s!==void 0),i=zi(t);return{...l,tiles:i}},Li=Object.freeze(Object.defineProperty({__proto__:null,default:n.defineComponent({__name:"GeoMapRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},emits:["bounds-change"],setup(l,{emit:e}){const t=l,i=n.ref(void 0),s=n.computed(()=>i.value?Xe.exploreResultToCountryMetrics(i.value):{}),r=n.computed(()=>{var m;return i.value?((m=i.value)==null?void 0:m.meta.metric_names)&&i.value.meta.metric_names[0]:""}),a=n.computed(()=>t.query.limit!==void 0&&t.query.limit>0?t.query.limit:S.COUNTRIES.length),o=n.computed(()=>{var p;if(!((p=t.query.filters)==null?void 0:p.find(({field:y,operator:_})=>y==="country_code"&&(_==="not_empty"||_==="empty"||_==="in")))){const y={field:"country_code",operator:"not_empty"};return{...t.query,filters:[...t.query.filters||[],y]}}return t.query}),u=n.computed(()=>{var y,_,g;if(!i.value)return"";const m=(y=i==null?void 0:i.value)==null?void 0:y.meta.metric_units,p=(g=(_=i==null?void 0:i.value)==null?void 0:_.meta)==null?void 0:g.metric_names;return m&&p&&m[p[0]]}),c=m=>{i.value=m},d=e,h=m=>{d("bounds-change",m)};return(m,p)=>(n.openBlock(),n.createBlock(Le,{context:l.context,"limit-override":a.value,query:o.value,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter,onChartData:c},{default:n.withCtx(()=>[n.createVNode(n.unref(Xe.AnalyticsGeoMap),{bounds:l.chartOptions.bounds,"country-metrics":s.value,"fit-to-country":l.chartOptions.fit_to_country,metric:r.value,"metric-unit":u.value,"with-legend":l.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"}));v.CP_ID_TOKEN=Je,v.DASHBOARD_COLS=Ne,v.DEFAULT_TILE_HEIGHT=ue,v.DEFAULT_TILE_REFRESH_INTERVAL_MS=tt,v.DashboardRenderer=Ri,v.DashboardTilePreview=Ti,v.ENTITY_ID_TOKEN=Ge,v.FULLSCREEN_LONG_REFRESH_INTERVAL_MS=st,v.FULLSCREEN_SHORT_REFRESH_INTERVAL_MS=it,v.GridLayout=yt,v.INJECT_QUERY_PROVIDER=ne,v.TIMEFRAME_TOKEN=et,v.configureAllowedDefinition=Ni,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"})});
|
|
13
|
+
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")||E.addRemoveCB)&&(E.addRemoveCB?i=E.addRemoveCB(e,t,!0,!0):i=f.createDiv(["grid-stack",t.class],e)),E.init(t,i)}static registerEngine(e){E.engineClass=e}get placeholder(){if(!this._placeholder){this._placeholder=f.createDiv([this.opts.placeholderClass,V.itemClass,this.opts.itemClass]);const e=f.createDiv(["placeholder-content"],this._placeholder);this.opts.placeholderText&&(e.textContent=this.opts.placeholderText)}return this._placeholder}constructor(e,t={}){var c,m,g;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=f.toNumber(e.getAttribute("gs-row"));t.column==="auto"&&delete t.column,t.alwaysShowResizeHandle!==void 0&&(t._alwaysShowResizeHandle=t.alwaysShowResizeHandle);let s=(c=t.columnOpts)==null?void 0:c.breakpoints;const r=t;if(r.oneColumnModeDomSort&&(delete r.oneColumnModeDomSort,console.log("warning: Gridstack oneColumnModeDomSort no longer supported. Use GridStackOptions.columnOpts instead.")),r.oneColumnSize||r.disableOneColumnMode===!1){const y=r.oneColumnSize||768;delete r.oneColumnSize,delete r.disableOneColumnMode,t.columnOpts=t.columnOpts||{},s=t.columnOpts.breakpoints=t.columnOpts.breakpoints||[];let _=s.find(p=>p.c===1);_?_.w=y:(_={c:1,w:y},s.push(_,{c:12,w:y+1}))}const a=t.columnOpts;a&&(!a.columnWidth&&!((m=a.breakpoints)!=null&&m.length)?(delete t.columnOpts,s=void 0):a.columnMax=a.columnMax||12),(s==null?void 0:s.length)>1&&s.sort((y,_)=>(_.w||0)-(y.w||0));const o={...f.cloneDeep(V),column:f.toNumber(e.getAttribute("gs-column"))||V.column,minRow:i||f.toNumber(e.getAttribute("gs-min-row"))||V.minRow,maxRow:i||f.toNumber(e.getAttribute("gs-max-row"))||V.maxRow,staticGrid:f.toBool(e.getAttribute("gs-static"))||V.staticGrid,sizeToContent:f.toBool(e.getAttribute("gs-size-to-content"))||void 0,draggable:{handle:(t.handleClass?"."+t.handleClass:t.handle?t.handle:"")||V.draggable.handle},removableOptions:{accept:t.itemClass||V.removableOptions.accept,decline:V.removableOptions.decline}};e.getAttribute("gs-animate")&&(o.animate=f.toBool(e.getAttribute("gs-animate"))),t=f.defaults(t,o),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 u=this.el.closest("."+V.itemClass),h=u==null?void 0:u.gridstackNode;h&&(h.subGrid=this,this.parentGridNode=h,this.el.classList.add("grid-stack-nested"),h.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!==V.cellHeightUnit&&(t.cellHeight=t.cellHeight+t.cellHeightUnit,delete t.cellHeightUnit),this.cellHeight(t.cellHeight,!1)),t.alwaysShowResizeHandle==="mobile"&&(t.alwaysShowResizeHandle=X),this._styleSheetClass="gs-id-"+te._idSeq++,this.el.classList.add(this._styleSheetClass),this._setStaticClass();const d=t.engineClass||E.engineClass||te;if(this.engine=new d({column:this.getColumn(),float:t.float,maxRow:t.maxRow,onChange:y=>{let _=0;this.engine.nodes.forEach(p=>{_=Math.max(_,p.y+p.h)}),y.forEach(p=>{const k=p.el;k&&(p._removeDOM?(k&&k.remove(),delete p._removeDOM):this._writePosAttr(k,p))}),this._updateStyles(!1,_)}}),this._updateStyles(!1,0),t.auto&&(this.batchUpdate(),this.engine._loading=!0,this.getGridItems().forEach(y=>this._prepareElement(y)),delete this.engine._loading,this.batchUpdate(!1)),t.children){const y=t.children;delete t.children,y.length&&this.load(y)}this.setAnimation(),t.subGridDynamic&&!C.pauseDrag&&(C.pauseDrag=!0),((g=t.draggable)==null?void 0:g.pause)!==void 0&&(C.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!=null&&i.el?t=i.el:E.addRemoveCB?t=E.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(r=>r._id===i._id))return t;const s=this._readAttr(t);return f.defaults(e,s),this.engine.prepareNode(e),this.el.appendChild(t),this.makeWidget(t,e),t}createWidgetDivs(e){const t=f.createDiv(["grid-stack-item",this.opts.itemClass]),i=f.createDiv(["grid-stack-item-content"],t);return f.lazyLoad(e)?e.visibleObservable||(e.visibleObservable=new IntersectionObserver(([s])=>{var r,a;s.isIntersecting&&((r=e.visibleObservable)==null||r.disconnect(),delete e.visibleObservable,E.renderCB(i,e),(a=e.grid)==null||a.prepareDragDrop(e.el))}),window.setTimeout(()=>{var s;return(s=e.visibleObservable)==null?void 0:s.observe(t)})):E.renderCB(i,e),t}makeSubGrid(e,t,i,s=!0){var g,y,_;let r=e.gridstackNode;if(r||(r=this.makeWidget(e).gridstackNode),(g=r.subGrid)!=null&&g.el)return r.subGrid;let a,o=this;for(;o&&!a;)a=(y=o.opts)==null?void 0:y.subGridOpts,o=(_=o.parentGridNode)==null?void 0:_.grid;t=f.cloneDeep({...this.opts,id:void 0,children:void 0,column:"auto",columnOpts:void 0,layout:"list",subGridOpts:void 0,...a||{},...t||r.subGridOpts||{}}),r.subGridOpts=t;let u;t.column==="auto"&&(u=!0,t.column=Math.max(r.w||1,(i==null?void 0:i.w)||1),delete t.columnOpts);let h=r.el.querySelector(".grid-stack-item-content"),d,c;if(s&&(this._removeDD(r.el),c={...r,x:0,y:0},f.removeInternalForSave(c),delete c.subGridOpts,r.content&&(c.content=r.content,delete r.content),E.addRemoveCB?d=E.addRemoveCB(this.el,c,!0,!1):(d=f.createDiv(["grid-stack-item"]),d.appendChild(h),h=f.createDiv(["grid-stack-item-content"],r.el)),this.prepareDragDrop(r.el)),i){const p=u?t.column:r.w,k=r.h+i.h,N=r.el.style;N.transition="none",this.update(r.el,{w:p,h:k}),setTimeout(()=>N.transition=null)}const m=r.subGrid=E.addGrid(h,t);return i!=null&&i._moving&&(m._isTemp=!0),u&&(m._autoColumn=!0),s&&m.makeWidget(d,c),i&&(i._moving?window.setTimeout(()=>f.simulateMouseEvent(i._event,"mouseenter",m.el),0):m.makeWidget(r.el,r)),this.resizeToContentCheck(!1,r),m}removeAsSubGrid(e){var i;const t=(i=this.parentGridNode)==null?void 0:i.grid;t&&(t.batchUpdate(),t.removeWidget(this.parentGridNode.el,!0,!0),this.engine.nodes.forEach(s=>{s.x+=this.parentGridNode.x,s.y+=this.parentGridNode.y,t.makeWidget(s.el,s)}),t.batchUpdate(!1),this.parentGridNode&&delete this.parentGridNode.subGrid,delete this.parentGridNode,e&&window.setTimeout(()=>f.simulateMouseEvent(e._event,"mouseenter",t.el),0))}save(e=!0,t=!1,i=E.saveCB){const s=this.engine.save(e,i);if(s.forEach(r=>{var a;if(e&&r.el&&!r.subGrid&&!i){const o=r.el.querySelector(".grid-stack-item-content");r.content=o==null?void 0:o.innerHTML,r.content||delete r.content}else if(!e&&!i&&delete r.content,(a=r.subGrid)!=null&&a.el){const o=r.subGrid.save(e,t,i);r.subGridOpts=t?o:{children:o},delete r.subGrid}delete r.el}),t){const r=f.cloneDeep(this.opts);r.marginBottom===r.marginTop&&r.marginRight===r.marginLeft&&r.marginTop===r.marginRight&&(r.margin=r.marginTop,delete r.marginTop,delete r.marginRight,delete r.marginBottom,delete r.marginLeft),r.rtl===(this.el.style.direction==="rtl")&&(r.rtl="auto"),this._isAutoCellHeight&&(r.cellHeight="auto"),this._autoColumn&&(r.column="auto");const a=r._alwaysShowResizeHandle;return delete r._alwaysShowResizeHandle,a!==void 0?r.alwaysShowResizeHandle=a:delete r.alwaysShowResizeHandle,f.removeInternalAndSame(r,V),r.children=s,r}return s}load(e,t=E.addRemoveCB||!0){var h;e=f.cloneDeep(e);const i=this.getColumn();e.forEach(d=>{d.w=d.w||1,d.h=d.h||1}),e=f.sort(e),this.engine.skipCacheUpdate=this._ignoreLayoutsNodeChange=!0;let s=0;e.forEach(d=>{s=Math.max(s,(d.x||0)+d.w)}),s>this.engine.defaultColumn&&(this.engine.defaultColumn=s),s>i&&this.engine.cacheLayout(e,s,!0);const r=E.addRemoveCB;typeof t=="function"&&(E.addRemoveCB=t);const a=[];this.batchUpdate();const o=!this.engine.nodes.length;o&&this.setAnimation(!1),!o&&t&&[...this.engine.nodes].forEach(c=>{if(!c.id)return;f.find(e,c.id)||(E.addRemoveCB&&E.addRemoveCB(this.el,c,!1,!1),a.push(c),this.removeWidget(c.el,!0,!1))}),this.engine._loading=!0;const u=[];return this.engine.nodes=this.engine.nodes.filter(d=>f.find(e,d.id)?(u.push(d),!1):!0),e.forEach(d=>{var m;const c=f.find(u,d.id);if(c){if(f.shouldSizeToContent(c)&&(d.h=c.h),this.engine.nodeBoundFix(d),(d.autoPosition||d.x===void 0||d.y===void 0)&&(d.w=d.w||c.w,d.h=d.h||c.h,this.engine.findEmptyPosition(d)),this.engine.nodes.push(c),f.samePos(c,d)&&this.engine.nodes.length>1&&(this.moveNode(c,{...d,forceCollide:!0}),f.copyPos(d,c)),this.update(c.el,d),(m=d.subGridOpts)!=null&&m.children){const g=c.el.querySelector(".grid-stack");g&&g.gridstack&&g.gridstack.load(d.subGridOpts.children)}}else t&&this.addWidget(d)}),delete this.engine._loading,this.engine.removedNodes=a,this.batchUpdate(!1),delete this._ignoreLayoutsNodeChange,delete this.engine.skipCacheUpdate,r?E.addRemoveCB=r:delete E.addRemoveCB,o&&((h=this.opts)!=null&&h.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 s=f.toNumber(t.getAttribute("gs-h"))||1;return Math.round(t.offsetHeight/s)}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 s=-this.opts.marginRight-this.opts.marginLeft+this.opts.marginTop+this.opts.marginBottom;e=this.cellWidth()+s}const i=f.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){var t;return e&&((t=this.opts.columnOpts)!=null&&t.breakpointForWindow)?window.innerWidth:this.el.clientWidth||this.el.parentElement.clientWidth||window.innerWidth}checkDynamicColumn(){var r,a;const e=this.opts.columnOpts;if(!e||!e.columnWidth&&!((r=e.breakpoints)!=null&&r.length))return!1;const t=this.getColumn();let i=t;const s=this._widthOrContainer(!0);if(e.columnWidth)i=Math.min(Math.round(s/e.columnWidth)||1,e.columnMax);else{i=e.columnMax;let o=0;for(;o<e.breakpoints.length&&s<=e.breakpoints[o].w;)i=e.breakpoints[o++].c||t}if(i!==t){const o=(a=e.breakpoints)==null?void 0:a.find(u=>u.c===i);return this.column(i,(o==null?void 0: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){var t,i;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(),(t=this.parentGridNode)==null||delete t.subGrid,delete this.parentGridNode,delete this.opts,(i=this._placeholder)==null||delete i.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 s;t?s={top:i.top+document.documentElement.scrollTop,left:i.left}:s={top:this.el.offsetTop,left:this.el.offsetLeft};const r=e.left-s.left,a=e.top-s.top,o=i.width/this.getColumn(),u=i.height/parseInt(this.el.getAttribute("gs-current-row"));return{x:Math.floor(r/o),y:Math.floor(a/u)}}getRow(){return Math.max(this.engine.getRow(),this.opts.minRow)}isAreaEmpty(e,t,i,s){return this.engine.isAreaEmpty(e,t,i,s)}makeWidget(e,t){const i=E.getElement(e);if(!i)return;i.parentElement||this.el.appendChild(i),this._prepareElement(i,!0,t);const s=i.gridstackNode;this._updateContainerHeight(),s.subGridOpts&&this.makeSubGrid(i,s.subGridOpts,void 0,!1);let r;return this.opts.column===1&&!this._ignoreLayoutsNodeChange&&(r=this._ignoreLayoutsNodeChange=!0),this._triggerAddEvent(),this._triggerChangeEvent(),r&&delete this._ignoreLayoutsNodeChange,i}on(e,t){return e.indexOf(" ")!==-1?(e.split(" ").forEach(s=>this.on(s,t)),this):(e==="change"||e==="added"||e==="removed"||e==="enable"||e==="disable"?(e==="enable"||e==="disable"?this._gsEventHandler[e]=s=>t(s):this._gsEventHandler[e]=s=>{s.detail&&t(s,s.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?(E.getElements(e).forEach(s=>{if(s.parentElement&&s.parentElement!==this.el)return;let r=s.gridstackNode;r||(r=this.engine.nodes.find(a=>s===a.el)),r&&(t&&E.addRemoveCB&&E.addRemoveCB(this.el,r,!1,!1),delete s.gridstackNode,this._removeDD(s),this.engine.removeNode(r,t,i),t&&s.parentElement&&s.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&&E.addRemoveCB&&E.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(s=>{this.prepareDragDrop(s.el),s.subGrid&&i&&s.subGrid.setStatic(e,t,i)}),t&&this._setStaticClass(),this)}updateOptions(e){var i;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),(i=e.children)!=null&&i.length&&(this.load(e.children),delete e.children),this.opts={...this.opts,...e},this}update(e,t){return E.getElements(e).forEach(i=>{var d;const s=i==null?void 0:i.gridstackNode;if(!s)return;const r={...f.copyPos({},s),...f.cloneDeep(t)};this.engine.nodeBoundFix(r),delete r.autoPosition;const a=["x","y","w","h"];let o;if(a.some(c=>r[c]!==void 0&&r[c]!==s[c])&&(o={},a.forEach(c=>{o[c]=r[c]!==void 0?r[c]:s[c],delete r[c]})),!o&&(r.minW||r.minH||r.maxW||r.maxH)&&(o={}),r.content!==void 0){const c=i.querySelector(".grid-stack-item-content");c&&c.textContent!==r.content&&(s.content=r.content,E.renderCB(c,r),(d=s.subGrid)!=null&&d.el&&(c.appendChild(s.subGrid.el),s.subGrid.opts.styleInHead||s.subGrid._updateStyles(!0))),delete r.content}let u=!1,h=!1;for(const c in r)c[0]!=="_"&&s[c]!==r[c]&&(s[c]=r[c],u=!0,h=h||!this.opts.staticGrid&&(c==="noResize"||c==="noMove"||c==="locked"));if(f.sanitizeMinMax(s),o){const c=o.w!==void 0&&o.w!==s.w;this.moveNode(s,o),c&&s.subGrid?s.subGrid.onResize(this.hasAnimationCSS()?s.w:void 0):this.resizeToContentCheck(c,s),delete s._orig}(o||u)&&this._writeAttr(i,s),h&&this.prepareDragDrop(s.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){var m,g;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 s=i.getCellHeight(!0);if(!s)return;let r=t.h?t.h*s:e.clientHeight,a;if(t.resizeToContentParent&&(a=e.querySelector(t.resizeToContentParent)),a||(a=e.querySelector(E.resizeToContentParent)),!a)return;const o=e.clientHeight-a.clientHeight,u=t.h?t.h*s-o:a.clientHeight;let h;if(t.subGrid){h=t.subGrid.getRow()*t.subGrid.getCellHeight(!0);const y=t.subGrid.el.getBoundingClientRect(),_=t.subGrid.el.parentElement.getBoundingClientRect();h+=y.top-_.top}else{if((g=(m=t.subGridOpts)==null?void 0:m.children)!=null&&g.length)return;{const y=a.firstElementChild;if(!y){console.error(`Error: GridStack.resizeToContent() widget id:${t.id} '${E.resizeToContentParent}'.firstElementChild is null, make sure to have a div like container. Skipping sizing.`);return}h=y.getBoundingClientRect().height||u}}if(u===h)return;r+=h-u;let d=Math.ceil(r/s);const c=Number.isInteger(t.sizeToContent)?t.sizeToContent:0;c&&d>c&&(d=c,e.classList.add("size-to-content-max")),t.minH&&d<t.minH?d=t.minH:t.maxH&&d>t.maxH&&(d=t.maxH),d!==t.h&&(i._ignoreLayoutsNodeChange=!0,i.moveNode(t,{h:d}),delete i._ignoreLayoutsNodeChange)}resizeToContentCBCheck(e){E.resizeToContentCB?E.resizeToContentCB(e):this.resizeToContent(e)}rotate(e,t){return E.getElements(e).forEach(i=>{const s=i.gridstackNode;if(!f.canBeRotated(s))return;const r={w:s.h,h:s.w,minH:s.minW,minW:s.minH,maxH:s.maxW,maxW:s.maxH};if(t){const o=t.left>0?Math.floor(t.left/this.cellWidth()):0,u=t.top>0?Math.floor(t.top/this.opts.cellHeight):0;r.x=s.x+o-(s.h-(u+1)),r.y=s.y+u-o}Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o]});const a=s._orig;this.update(i,r),s._orig=a}),this}margin(e){if(!(typeof e=="string"&&e.split(" ").length>1)){const i=f.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,s={x:t[i++],y:t[i++],w:t[i++],h:t[i++],autoPosition:t[i++]};return this.willItFit(s)}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(){var e;if(this.engine.batchMode)return this;if((e=this.engine.addedNodes)!=null&&e.length){this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(this.engine.addedNodes),this.engine.addedNodes.forEach(i=>{delete i._dirty});const t=[...this.engine.addedNodes];this.engine.addedNodes=[],this._triggerEvent("added",t)}return this}_triggerRemoveEvent(){var e;if(this.engine.batchMode)return this;if((e=this.engine.removedNodes)!=null&&e.length){const t=[...this.engine.removedNodes];this.engine.removedNodes=[],this._triggerEvent("removed",t)}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;f.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,s=this.opts.cellHeightUnit,r=`.${this._styleSheetClass} > .${this.opts.itemClass}`;if(!this._styles){const a=this.opts.styleInHead?void 0:this.el.parentNode;if(this._styles=f.createStylesheet(this._styleSheetClass,a,{nonce:this.opts.nonce}),!this._styles)return this;this._styles._max=0,f.addCSSRule(this._styles,r,`height: ${i}${s}`);const o=this.opts.marginTop+this.opts.marginUnit,u=this.opts.marginBottom+this.opts.marginUnit,h=this.opts.marginRight+this.opts.marginUnit,d=this.opts.marginLeft+this.opts.marginUnit,c=`${r} > .grid-stack-item-content`,m=`.${this._styleSheetClass} > .grid-stack-placeholder > .placeholder-content`;f.addCSSRule(this._styles,c,`top: ${o}; right: ${h}; bottom: ${u}; left: ${d};`),f.addCSSRule(this._styles,m,`top: ${o}; right: ${h}; bottom: ${u}; left: ${d};`),f.addCSSRule(this._styles,`${r} > .ui-resizable-n`,`top: ${o};`),f.addCSSRule(this._styles,`${r} > .ui-resizable-s`,`bottom: ${u}`),f.addCSSRule(this._styles,`${r} > .ui-resizable-ne`,`right: ${h}; top: ${o}`),f.addCSSRule(this._styles,`${r} > .ui-resizable-e`,`right: ${h}`),f.addCSSRule(this._styles,`${r} > .ui-resizable-se`,`right: ${h}; bottom: ${u}`),f.addCSSRule(this._styles,`${r} > .ui-resizable-nw`,`left: ${d}; top: ${o}`),f.addCSSRule(this._styles,`${r} > .ui-resizable-w`,`left: ${d}`),f.addCSSRule(this._styles,`${r} > .ui-resizable-sw`,`left: ${d}; bottom: ${u}`)}if(t=t||this._styles._max,t>this._styles._max){const a=o=>i*o+s;for(let o=this._styles._max+1;o<=t;o++)f.addCSSRule(this._styles,`${r}[gs-y="${o}"]`,`top: ${a(o)}`),f.addCSSRule(this._styles,`${r}[gs-h="${o+1}"]`,`height: ${a(o+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,s=this.opts.cellHeightUnit;if(!i)return this;if(!e){const r=f.parseHeight(getComputedStyle(this.el).minHeight);if(r.h>0&&r.unit===s){const a=Math.floor(r.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+s),e&&!e.grid.engine.batchMode&&f.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(V.itemClass,this.opts.itemClass);const s=f.shouldSizeToContent(i);return s?e.classList.add("size-to-content"):e.classList.remove("size-to-content"),s&&this.resizeToContentCheck(!1,i),f.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 s in i)t[s]?e.setAttribute(i[s],String(t[s])):e.removeAttribute(i[s]);return this}_readAttr(e,t=!0){const i={};i.x=f.toNumber(e.getAttribute("gs-x")),i.y=f.toNumber(e.getAttribute("gs-y")),i.w=f.toNumber(e.getAttribute("gs-w")),i.h=f.toNumber(e.getAttribute("gs-h")),i.autoPosition=f.toBool(e.getAttribute("gs-auto-position")),i.noResize=f.toBool(e.getAttribute("gs-no-resize")),i.noMove=f.toBool(e.getAttribute("gs-no-move")),i.locked=f.toBool(e.getAttribute("gs-locked"));const s=e.getAttribute("gs-size-to-content");s&&(s==="true"||s==="false"?i.sizeToContent=f.toBool(s):i.sizeToContent=parseInt(s,10)),i.id=e.getAttribute("gs-id"),i.maxW=f.toNumber(e.getAttribute("gs-max-w")),i.minW=f.toNumber(e.getAttribute("gs-min-w")),i.maxH=f.toNumber(e.getAttribute("gs-max-h")),i.minH=f.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 r in i){if(!i.hasOwnProperty(r))return;!i[r]&&i[r]!==0&&r!=="gs-size-to-content"&&delete i[r]}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=(t=>(t=this.el)==null?void 0:t.clientWidth)()){if(!e||this.prevWidth===e)return;this.prevWidth=e,this.batchUpdate();let i=!1;return this._autoColumn&&this.parentGridNode?this.opts.column!==this.parentGridNode.w&&(this.column(this.parentGridNode.w,this.opts.layout||"list"),i=!0):i=this.checkDynamicColumn(),this._isAutoCellHeight&&this.cellHeight(),this.engine.nodes.forEach(s=>{s.subGrid&&s.subGrid.onResize()}),this._skipInitialResize||this.resizeToContentCheck(i),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)f.shouldSizeToContent(t)&&this.resizeToContentCBCheck(t.el);else if(this.engine.nodes.some(i=>f.shouldSizeToContent(i))){const i=[...this.engine.nodes];this.batchUpdate(),i.forEach(s=>{f.shouldSizeToContent(s)&&this.resizeToContentCBCheck(s.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=f.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 f.getElement(e)}static getElements(e=".grid-stack-item"){return f.getElements(e)}static getGridElement(e){return E.getElement(e)}static getGridElements(e){return f.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=f.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=f.parseHeight(this.opts.marginTop),this.opts.marginTop=e.h,delete this.opts.margin),this.opts.marginBottom===void 0?this.opts.marginBottom=t:(e=f.parseHeight(this.opts.marginBottom),this.opts.marginBottom=e.h,delete this.opts.margin),this.opts.marginRight===void 0?this.opts.marginRight=t:(e=f.parseHeight(this.opts.marginRight),this.opts.marginRight=e.h,delete this.opts.margin),this.opts.marginLeft===void 0?this.opts.marginLeft=t:(e=f.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 F}static setupDragIn(e,t,i,s=document){(t==null?void 0:t.pause)!==void 0&&(C.pauseDrag=t.pause),t={appendTo:"body",helper:"clone",...t||{}},(typeof e=="string"?f.getElements(e,s):e).forEach((a,o)=>{F.isDraggable(a)||F.dragIn(a,t),i!=null&&i[o]&&(a.gridstackNode=i[o])})}movable(e,t){return this.opts.staticGrid?this:(E.getElements(e).forEach(i=>{const s=i.gridstackNode;s&&(t?delete s.noMove:s.noMove=!0,this.prepareDragDrop(s.el))}),this)}resizable(e,t){return this.opts.staticGrid?this:(E.getElements(e).forEach(i=>{const s=i.gridstackNode;s&&(t?delete s.noResize:s.noResize=!0,this.prepareDragDrop(s.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(){var t;const e=(t=this._placeholder)==null?void 0:t.gridstackNode;e&&(e._isExternal?(e._isAboutToRemove=!0,this.engine.removeNode(e)):e._isAboutToRemove&&E._itemRemoving(e.el,!1),this.engine.restoreInitial())}_removeDD(e){return F.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 F.droppable(this.el,"destroy"),this;let e,t;const i=(s,r,a)=>{var m;a=a||r;const o=a.gridstackNode;if(!o)return;if(!((m=o.grid)!=null&&m.el)){a.style.transform=`scale(${1/this.dragTransform.xScale},${1/this.dragTransform.yScale})`;const g=a.getBoundingClientRect();a.style.left=g.x+(this.dragTransform.xScale-1)*(s.clientX-g.x)/this.dragTransform.xScale+"px",a.style.top=g.y+(this.dragTransform.yScale-1)*(s.clientY-g.y)/this.dragTransform.yScale+"px",a.style.transformOrigin="0px 0px"}let{top:u,left:h}=a.getBoundingClientRect();const d=this.el.getBoundingClientRect();h-=d.left,u-=d.top;const c={position:{top:u*this.dragTransform.xScale,left:h*this.dragTransform.yScale}};if(o._temporaryRemoved){if(o.x=Math.max(0,Math.round(h/t)),o.y=Math.max(0,Math.round(u/e)),delete o.autoPosition,this.engine.nodeBoundFix(o),!this.engine.willItFit(o)){if(o.autoPosition=!0,!this.engine.willItFit(o)){F.off(r,"drag");return}o._willFitPos&&(f.copyPos(o,o._willFitPos),delete o._willFitPos)}this._onStartMoving(a,s,c,o,t,e)}else this._dragOrResize(a,s,c,o,t,e)};return F.droppable(this.el,{accept:s=>{const r=s.gridstackNode||this._readAttr(s,!1);if((r==null?void 0:r.grid)===this)return!0;if(!this.opts.acceptWidgets)return!1;let a=!0;if(typeof this.opts.acceptWidgets=="function")a=this.opts.acceptWidgets(s);else{const o=this.opts.acceptWidgets===!0?".grid-stack-item":this.opts.acceptWidgets;a=s.matches(o)}if(a&&r&&this.opts.maxRow){const o={w:r.w,h:r.h,minW:r.minW,minH:r.minH};a=this.engine.willItFit(o)}return a}}).on(this.el,"dropover",(s,r,a)=>{let o=(a==null?void 0:a.gridstackNode)||r.gridstackNode;if((o==null?void 0:o.grid)===this&&!o._temporaryRemoved)return!1;if(o!=null&&o._sidebarOrig&&(o.w=o._sidebarOrig.w,o.h=o._sidebarOrig.h),o!=null&&o.grid&&o.grid!==this&&!o._temporaryRemoved&&o.grid._leave(r,a),a=a||r,t=this.cellWidth(),e=this.getCellHeight(!0),!o){const d=a.getAttribute("data-gs-widget")||a.getAttribute("gridstacknode");if(d){try{o=JSON.parse(d)}catch{console.error("Gridstack dropover: Bad JSON format: ",d)}a.removeAttribute("data-gs-widget"),a.removeAttribute("gridstacknode")}o||(o=this._readAttr(a)),o._sidebarOrig={w:o.w,h:o.h}}o.grid||(o.el||(o={...o}),o._isExternal=!0,a.gridstackNode=o);const u=o.w||Math.round(a.offsetWidth/t)||1,h=o.h||Math.round(a.offsetHeight/e)||1;return o.grid&&o.grid!==this?(r._gridstackNodeOrig||(r._gridstackNodeOrig=o),r.gridstackNode=o={...o,w:u,h,grid:this},delete o.x,delete o.y,this.engine.cleanupNode(o).nodeBoundFix(o),o._initDD=o._isExternal=o._temporaryRemoved=!0):(o.w=u,o.h=h,o._temporaryRemoved=!0),E._itemRemoving(o.el,!1),F.on(r,"drag",i),i(s,r,a),!1}).on(this.el,"dropout",(s,r,a)=>{const o=(a==null?void 0:a.gridstackNode)||r.gridstackNode;return o&&(!o.grid||o.grid===this)&&(this._leave(r,a),this._isTemp&&this.removeAsSubGrid(o)),!1}).on(this.el,"drop",(s,r,a)=>{var g,y,_;const o=(a==null?void 0:a.gridstackNode)||r.gridstackNode;if((o==null?void 0:o.grid)===this&&!o._isExternal)return!1;const u=!!this.placeholder.parentElement,h=r!==a;this.placeholder.remove(),delete this.placeholder.gridstackNode;const d=u&&this.opts.animate;d&&this.setAnimation(!1);const c=r._gridstackNodeOrig;if(delete r._gridstackNodeOrig,u&&(c!=null&&c.grid)&&c.grid!==this){const p=c.grid;p.engine.removeNodeFromLayoutCache(c),p.engine.removedNodes.push(c),p._triggerRemoveEvent()._triggerChangeEvent(),p.parentGridNode&&!p.engine.nodes.length&&p.opts.subGridDynamic&&p.removeAsSubGrid()}if(!o||(u&&(this.engine.cleanupNode(o),o.grid=this),(g=o.grid)==null||delete g._isTemp,F.off(r,"drag"),a!==r?(a.remove(),r=a):r.remove(),this._removeDD(r),!u))return!1;const m=(_=(y=o.subGrid)==null?void 0:y.el)==null?void 0:_.gridstack;return f.copyPos(o,this._readAttr(this.placeholder)),f.removePositioningStyles(r),h&&(o.content||o.subGridOpts||E.addRemoveCB)?(delete o.el,r=this.addWidget(o)):(this._prepareElement(r,!0,o),this.el.appendChild(r),this.resizeToContentCheck(!1,o),m&&(m.parentGridNode=o,m.opts.styleInHead||m._updateStyles(!0)),this._updateContainerHeight()),this.engine.addedNodes.push(o),this._triggerAddEvent(),this._triggerChangeEvent(),this.engine.endUpdate(),this._gsEventHandler.dropped&&this._gsEventHandler.dropped({...s,type:"dropped"},c&&c.grid?c:void 0,o),d&&this.setAnimation(this.opts.animate,!0),!1}),this}static _itemRemoving(e,t){if(!e)return;const i=e?e.gridstackNode:void 0;!(i!=null&&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&&!F.isDroppable(e)&&F.droppable(e,this.opts.removableOptions).on(e,"dropover",(t,i)=>E._itemRemoving(i,!0)).on(e,"dropout",(t,i)=>E._itemRemoving(i,!1)),this):this}prepareDragDrop(e,t=!1){const i=e==null?void 0:e.gridstackNode;if(!i)return;const s=i.noMove||this.opts.disableDrag,r=i.noResize||this.opts.disableResize,a=this.opts.staticGrid||s&&r;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 o,u;const h=(m,g)=>{this._gsEventHandler[m.type]&&this._gsEventHandler[m.type](m,m.target),o=this.cellWidth(),u=this.getCellHeight(!0),this._onStartMoving(e,m,g,i,o,u)},d=(m,g)=>{this._dragOrResize(e,m,g,i,o,u)},c=m=>{this.placeholder.remove(),delete this.placeholder.gridstackNode,delete i._moving,delete i._event,delete i._lastTried;const g=i.w!==i._orig.w,y=m.target;if(!(!y.gridstackNode||y.gridstackNode.grid!==this)){if(i.el=y,i._isAboutToRemove){const _=e.gridstackNode.grid;_._gsEventHandler[m.type]&&_._gsEventHandler[m.type](m,y),_.engine.nodes.push(i),_.removeWidget(e,!0,!0)}else f.removePositioningStyles(y),i._temporaryRemoved?(f.copyPos(i,i._orig),this._writePosAttr(y,i),this.engine.addNode(i)):this._writePosAttr(y,i),this._gsEventHandler[m.type]&&this._gsEventHandler[m.type](m,y);this._extraDragRow=0,this._updateContainerHeight(),this._triggerChangeEvent(),this.engine.endUpdate(),m.type==="resizestop"&&(Number.isInteger(i.sizeToContent)&&(i.sizeToContent=i.h),this.resizeToContentCheck(g,i))}};F.draggable(e,{start:h,stop:c,drag:d}).resizable(e,{start:h,stop:c,resize:d}),i._initDD=!0}return F.draggable(e,s?"disable":"enable").resizable(e,r?"disable":"enable"),this}_onStartMoving(e,t,i,s,r,a){var o;if(this.engine.cleanNodes().beginUpdate(s),this._writePosAttr(this.placeholder,s),this.el.appendChild(this.placeholder),this.placeholder.gridstackNode=s,(o=s.grid)!=null&&o.el)this.dragTransform=f.getValuesFromTransformedElement(e);else if(this.placeholder&&this.placeholder.closest(".grid-stack")){const u=this.placeholder.closest(".grid-stack");this.dragTransform=f.getValuesFromTransformedElement(u)}else this.dragTransform={xScale:1,xOffset:0,yScale:1,yOffset:0};if(s.el=this.placeholder,s._lastUiPosition=i.position,s._prevYPix=i.position.top,s._moving=t.type==="dragstart",delete s._lastTried,t.type==="dropover"&&s._temporaryRemoved&&(this.engine.addNode(s),s._moving=!0),this.engine.cacheRects(r,a,this.opts.marginTop,this.opts.marginRight,this.opts.marginBottom,this.opts.marginLeft),t.type==="resizestart"){const u=this.getColumn()-s.x,h=(this.opts.maxRow||Number.MAX_SAFE_INTEGER)-s.y;F.resizable(e,"option","minWidth",r*Math.min(s.minW||1,u)).resizable(e,"option","minHeight",a*Math.min(s.minH||1,h)).resizable(e,"option","maxWidth",r*Math.min(s.maxW||Number.MAX_SAFE_INTEGER,u)).resizable(e,"option","maxWidthMoveLeft",r*Math.min(s.maxW||Number.MAX_SAFE_INTEGER,s.x+s.w)).resizable(e,"option","maxHeight",a*Math.min(s.maxH||Number.MAX_SAFE_INTEGER,h)).resizable(e,"option","maxHeightMoveUp",a*Math.min(s.maxH||Number.MAX_SAFE_INTEGER,s.y+s.h))}}_dragOrResize(e,t,i,s,r,a){const o={...s._orig};let u,h=this.opts.marginLeft,d=this.opts.marginRight,c=this.opts.marginTop,m=this.opts.marginBottom;const g=Math.round(a*.1),y=Math.round(r*.1);if(h=Math.min(h,y),d=Math.min(d,y),c=Math.min(c,g),m=Math.min(m,g),t.type==="drag"){if(s._temporaryRemoved)return;const p=i.position.top-s._prevYPix;s._prevYPix=i.position.top,this.opts.draggable.scroll!==!1&&f.updateScrollPosition(e,i.position,p);const k=i.position.left+(i.position.left>s._lastUiPosition.left?-d:h),N=i.position.top+(i.position.top>s._lastUiPosition.top?-m:c);o.x=Math.round(k/r),o.y=Math.round(N/a);const x=this._extraDragRow;if(this.engine.collide(s,o)){const I=this.getRow();let O=Math.max(0,o.y+s.h-I);this.opts.maxRow&&I+O>this.opts.maxRow&&(O=Math.max(0,this.opts.maxRow-I)),this._extraDragRow=O}else this._extraDragRow=0;if(this._extraDragRow!==x&&this._updateContainerHeight(),s.x===o.x&&s.y===o.y)return}else if(t.type==="resize"){if(o.x<0||(f.updateScrollResize(t,e,a),o.w=Math.round((i.size.width-h)/r),o.h=Math.round((i.size.height-c)/a),s.w===o.w&&s.h===o.h)||s._lastTried&&s._lastTried.w===o.w&&s._lastTried.h===o.h)return;const p=i.position.left+h,k=i.position.top+c;o.x=Math.round(p/r),o.y=Math.round(k/a),u=!0}s._event=t,s._lastTried=o;const _={x:i.position.left+h,y:i.position.top+c,w:(i.size?i.size.width:s.w*r)-h-d,h:(i.size?i.size.height:s.h*a)-c-m};if(this.engine.moveNodeCheck(s,{...o,cellWidth:r,cellHeight:a,rect:_,resizing:u})){s._lastUiPosition=i.position,this.engine.cacheRects(r,a,c,d,m,h),delete s._skipDown,u&&s.subGrid&&s.subGrid.onResize(),this._extraDragRow=0,this._updateContainerHeight();const p=t.target;s._sidebarOrig||this._writePosAttr(p,s),this._gsEventHandler[t.type]&&this._gsEventHandler[t.type](t,p)}}_leave(e,t){t=t||e;const i=t.gridstackNode;if(!i||(t.style.transform=t.style.transformOrigin=null,F.off(e,"drag"),i._temporaryRemoved))return;i._temporaryRemoved=!0,this.engine.removeNode(i),i.el=i._isExternal&&t?t:e;const s=i._sidebarOrig;i._isExternal&&this.engine.cleanupNode(i),i._sidebarOrig=s,this.opts.removable===!0&&E._itemRemoving(e,!0),e._gridstackNodeOrig?(e.gridstackNode=e._gridstackNodeOrig,delete e._gridstackNodeOrig):i._isExternal&&this.engine.restoreInitial()}commit(){return xi(this,this.batchUpdate(!1),"commit","batchUpdate","5.2"),this}}E.renderCB=(l,e)=>{l&&(e!=null&&e.content)&&(l.textContent=e.content)},E.resizeToContentParent=".grid-stack-item-content",E.Utils=f,E.Engine=te,E.GDRev="11.5.1";const Si=["data-id","data-testid","gs-h","gs-w","gs-x","gs-y"],Ti={class:"grid-stack-item-content"},Di=de(n.defineComponent({__name:"DraggableGridLayout",props:{tiles:{},tileHeight:{default:fe}},emits:["update-tiles"],setup(l,{expose:e,emit:t}){const i=l,s=t,r=n.ref(null),a=n.ref(new Map(i.tiles.map(g=>[`${g.id}`,g])));let o=null;const u=g=>`[data-id="${g}"]`,h=g=>g.map(y=>{var p;const _=a.value.get(`${(p=y.el)==null?void 0:p.getAttribute("data-id")}`);if(_)return{..._,layout:{position:{col:Number(y.x),row:Number(y.y)},size:{cols:Number(y.w),rows:Number(y.h)}}}}).filter(y=>y!==void 0),d=(g,y)=>{o&&(h(y).forEach(p=>{a.value.set(`${p.id}`,p)}),s("update-tiles",Array.from(a.value.values())))},c=(g,y)=>{y.forEach(_=>{var p;a.value.delete(`${(p=_.el)==null?void 0:p.getAttribute("data-id")}`)}),s("update-tiles",Array.from(a.value.values()))};n.onMounted(()=>{r.value&&(o=E.init({margin:10,column:Ne,cellHeight:i.tileHeight,resizable:{handles:"se, sw"},handle:".tile-header"},r.value),o.on("change",d),o.on("added",d),o.on("removed",c))}),n.onUnmounted(()=>{o&&o.destroy(!1)});const m=g=>{if(o&&r.value){const y=r.value.querySelector(u(g));y&&o.removeWidget(y)}};return n.watch(()=>i.tiles.length,async(g,y)=>{if(g>y&&o){const _=i.tiles.slice(y);for(const p of _)a.value.set(`${p.id}`,p),await n.nextTick(),o.makeWidget(u(p.id),{autoPosition:!0,w:p.layout.size.cols,h:p.layout.size.rows})}}),n.watchEffect(()=>{i.tiles.forEach(g=>{a.value.set(`${g.id}`,g)})}),e({removeWidget:m}),(g,y)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"gridContainer",ref:r,class:"grid-stack"},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(i.tiles,_=>(n.openBlock(),n.createElementBlock("div",{key:_.id,class:"grid-stack-item","data-id":`${_.id}`,"data-testid":`grid-stack-item-${_.id}`,"gs-h":_.layout.size.rows,"gs-lazy-load":!0,"gs-w":_.layout.size.cols,"gs-x":_.layout.position.col,"gs-y":_.layout.position.row},[n.createElementVNode("div",Ti,[n.renderSlot(g.$slots,"tile",{tile:_},void 0,!0)])],8,Si))),128))],512))}}),[["__scopeId","data-v-a68d6821"]]),Ni={key:0,class:"fullscreen-header"},zi={key:0,class:"tile-container slottable-tile"},Li=de(n.defineComponent({__name:"DashboardRenderer",props:n.mergeModels({context:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:n.mergeModels(["edit-tile","tile-time-range-zoom"],["update:modelValue"]),setup(l,{expose:e,emit:t}){n.useCssVars(S=>({v3a012eda:c.value}));const i=l,s=t,r=n.useModel(l,"modelValue"),{i18n:a}=Y.useI18n(),o=n.ref(0),u=n.ref(null),h=n.ref(),d=n.ref(),c=n.ref("scale(1)"),m=n.inject(re);m||(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")),Y.useRequestQueue();const g=le.useAnalyticsConfigStore(),y=n.computed(()=>i.context.timeSpec?i.context.timeSpec:{type:"relative",time_range:g.defaultQueryTimeForOrg}),_=n.computed(()=>!!i.context.timeSpec||!g.loading),p=(S,A)=>{const M=S.layout.position.row-A.layout.position.row;return M!==0?M:S.layout.position.col-A.layout.position.col},k=n.computed(()=>r.value.tiles.map(S=>{var M;let A=S.definition;if("description"in A.chart){const B=(M=A.chart.description)==null?void 0:M.replace(it,()=>{const Be=`renderer.trendRange.${y.value.type==="absolute"?"custom":y.value.time_range}`;return a.te(Be)?a.t(Be):""});A={...A,chart:{...A.chart,description:B}}}return i.context.editable&&!S.id&&console.warn("No id provided for tile. One will be generated automatically,","however tracking changes to this tile may not work as expected.",S),{layout:S.layout,meta:A,type:S.type,id:S.id??crypto.randomUUID()}})),N=S=>{s("edit-tile",S)},x=S=>S.type==="slottable",I=S=>{try{const A=x(S.meta.chart)?{...S.meta.chart}:{...S.meta.chart,chart_title:S.meta.chart.chart_title?`Copy of ${S.meta.chart.chart_title}`:""},M={id:crypto.randomUUID(),type:"chart",definition:{...S.meta,chart:A},layout:{position:{col:0,row:0},size:S.layout.size}};r.value.tiles.push(JSON.parse(JSON.stringify(M)))}catch(A){console.warn(A)}},O=S=>{u.value&&u.value.removeWidget(S.id)},oe=()=>{o.value++},be=S=>{const A=S.map(M=>({id:M.id,type:M.type,layout:M.layout,definition:M.meta}));r.value.tiles=A.sort(p)},ue=async()=>{if(c.value="scale(1)",await n.nextTick(),d.value){const{availWidth:S,availHeight:A}=window.screen,{width:M,height:B}=d.value.getBoundingClientRect(),J=Math.min(A/B,S/M);c.value=`scale(${J})`}},R=()=>{h.value&&(document.fullscreenElement?document.exitFullscreen():h.value.requestFullscreen())},z=n.ref(!1),Z=()=>{z.value=document.fullscreenElement!==null,z.value&&ue()},ae=n.computed(()=>r.value.preset_filters??[]),{internalContext:ve}=Y.useDashboardInternalContext({globalFilters:ae,context:n.toRef(i,"context"),isFullscreen:z});return e({refresh:oe,toggleFullscreen:R}),(S,A)=>{const M=n.resolveComponent("KAlert");return n.openBlock(),n.createElementBlock("div",{ref_key:"dashboardContainer",ref:h,class:n.normalizeClass(["kong-ui-public-dashboard-renderer",{"is-fullscreen":z.value}]),onFullscreenchange:Z},[n.createElementVNode("div",{ref_key:"layoutContainer",ref:d,class:"layout"},[n.unref(m)&&z.value?(n.openBlock(),n.createElementBlock("div",Ni,[n.renderSlot(S.$slots,"fullscreenHeader",{},void 0,!0)])):n.createCommentVNode("",!0),n.unref(m)?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(l.context.editable&&!z.value?Di:xt),{key:2,ref_key:"gridLayoutRef",ref:u,"tile-height":r.value.tile_height,tiles:k.value,onUpdateTiles:be},{tile:n.withCtx(({tile:B})=>[B.meta.chart.type==="slottable"?(n.openBlock(),n.createElementBlock("div",zi,[n.renderSlot(S.$slots,B.meta.chart.id,{},void 0,!0)])):(n.openBlock(),n.createBlock(Et,{key:z.value?`${B.id}-tile`:`${B.id}-tile-fullscreen`,"refresh-counter":o.value,"onUpdate:refreshCounter":A[0]||(A[0]=J=>o.value=J),class:"tile-container",context:n.unref(ve),definition:B.meta,height:B.layout.size.rows*(r.value.tile_height||n.unref(fe))+parseInt(n.unref(wt),10),"is-fullscreen":z.value,"query-ready":_.value,"tile-id":B.id,onDuplicateTile:J=>I(B),onEditTile:J=>N(B),onRemoveTile:J=>O(B),onTileTimeRangeZoom:A[1]||(A[1]=J=>s("tile-time-range-zoom",J))},null,8,["refresh-counter","context","definition","height","is-fullscreen","query-ready","tile-id","onDuplicateTile","onEditTile","onRemoveTile"]))]),_:3},40,["tile-height","tiles"])):(n.openBlock(),n.createBlock(M,{key:1,appearance:"danger"},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(n.unref(a).t("renderer.noQueryBridge")),1)]),_:1}))],512)],34)}}}),[["__scopeId","data-v-50c8588f"]]),Oi=n.defineComponent({__name:"DashboardTilePreview",props:{context:{},definition:{},globalFilters:{default:()=>[]}},emits:["chart-data","tile-time-range-zoom","tile-bounds-change"],setup(l,{expose:e,emit:t}){const i=n.useTemplateRef("root"),s=n.useTemplateRef("dashboard-tile"),r=crypto.randomUUID(),a=t,o=x=>{a("tile-time-range-zoom",x)},u=x=>{a("chart-data",x)},h=x=>{a("tile-bounds-change",x)},{i18n:d}=Y.useI18n(),{internalContext:c}=Y.useDashboardInternalContext({globalFilters:n.toRef(()=>l.globalFilters),context:n.toRef(()=>l.context)}),m=le.useAnalyticsConfigStore(),g=n.computed(()=>!!l.context.timeSpec||!m.loading),y=n.computed(()=>{var x,I;return!((I=(x=l.definition)==null?void 0:x.query)!=null&&I.metrics)||l.definition.query.metrics.length===0}),_=n.ref(fe);let p;n.onMounted(()=>{var I;const x=(I=i.value)==null?void 0:I.parentElement;x&&(_.value=x.getBoundingClientRect().height,p=new ResizeObserver(([O])=>{const{height:oe}=O.contentRect;_.value=oe}),p.observe(x))}),n.onUnmounted(()=>p==null?void 0:p.disconnect());const k=n.ref(0);return e({refresh:()=>{k.value++},getExportData:()=>{var x;return(x=s.value)==null?void 0:x.getExportData()}}),(x,I)=>{const O=n.resolveComponent("KEmptyState");return n.openBlock(),n.createElementBlock("div",{ref_key:"root",ref:i,"data-testid":"dashboard-tile-preview-root"},[y.value?(n.openBlock(),n.createBlock(O,{key:0,"action-button-visible":!1,"data-testid":"chart-not-configured-empty-state"},{title:n.withCtx(()=>[n.createElementVNode("p",null,n.toDisplayString(n.unref(d).t("renderer.not_configured.title")),1)]),default:n.withCtx(()=>[n.createElementVNode("p",null,n.toDisplayString(n.unref(d).t("renderer.not_configured.description")),1)]),_:1})):(n.openBlock(),n.createBlock(Et,{key:1,ref:"dashboard-tile","refresh-counter":k.value,"onUpdate:refreshCounter":I[0]||(I[0]=oe=>k.value=oe),context:{...n.unref(c),editable:!1},definition:l.definition,height:_.value,"hide-actions":"","query-ready":g.value,"show-refresh":"","tile-id":n.unref(r),onChartData:u,onTileBoundsChange:h,onTileTimeRangeZoom:o},null,8,["refresh-counter","context","definition","height","query-ready","tile-id"]))],512)}}}),Ai=l=>{var t;const e=(t=l.definition)==null?void 0:t.query;if(!e)return l;if(e.datasource==="api_usage"){console.warn("[@kong-ui-public/dashboard-renderer] A tile was filtered out for the Basic Tier",l);return}return l},Hi=l=>{var i;const e=(i=l.definition)==null?void 0:i.query;if(!e)return l;const t={...e,datasource:e.datasource==="basic"?"api_usage":e.datasource};return{...l,definition:{...l.definition,query:t}}},Ii=l=>{var r,a,o,u,h;if(!l.length)return[];let e=0,t=0,i=0;const s=[];for(const d of l){const c=((a=(r=d.layout)==null?void 0:r.size)==null?void 0:a.cols)??1,m=((u=(o=d.layout)==null?void 0:o.size)==null?void 0:u.rows)??1;t+c>Ne&&(e+=i,t=0,i=0);const g={...d,layout:{...d.layout,position:{...((h=d.layout)==null?void 0:h.position)??{},col:t,row:e}}};s.push(g),t+=c,i=Math.max(i,m)}return s},Mi=(l,e)=>{if(e){const s=l.tiles.map(Hi);return{...l,tiles:s}}const t=l.tiles.map(Ai).filter(s=>s!==void 0),i=Ii(t);return{...l,tiles:i}},qi=Object.freeze(Object.defineProperty({__proto__:null,default:n.defineComponent({__name:"GeoMapRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{},refreshCounter:{},requestsLink:{},exploreLink:{}},emits:["bounds-change"],setup(l,{emit:e}){const t=l,i=n.ref(void 0),s=n.computed(()=>i.value?Je.exploreResultToCountryMetrics(i.value):{}),r=n.computed(()=>{var m;return i.value?((m=i.value)==null?void 0:m.meta.metric_names)&&i.value.meta.metric_names[0]:""}),a=n.computed(()=>t.query.limit!==void 0&&t.query.limit>0?t.query.limit:D.COUNTRIES.length),o=n.computed(()=>{var g;if(!((g=t.query.filters)==null?void 0:g.find(({field:y,operator:_})=>y==="country_code"&&(_==="not_empty"||_==="empty"||_==="in")))){const y={field:"country_code",operator:"not_empty"};return{...t.query,filters:[...t.query.filters||[],y]}}return t.query}),u=n.computed(()=>{var y,_,p;if(!i.value)return"";const m=(y=i==null?void 0:i.value)==null?void 0:y.meta.metric_units,g=(p=(_=i==null?void 0:i.value)==null?void 0:_.meta)==null?void 0:p.metric_names;return m&&g&&m[g[0]]}),h=m=>{i.value=m},d=e,c=m=>{d("bounds-change",m)};return(m,g)=>(n.openBlock(),n.createBlock(ze,{context:l.context,"limit-override":a.value,query:o.value,"query-ready":l.queryReady,"refresh-counter":l.refreshCounter,onChartData:h},{default:n.withCtx(()=>[n.createVNode(n.unref(Je.AnalyticsGeoMap),{bounds:l.chartOptions.bounds,"country-metrics":s.value,"fit-to-country":l.chartOptions.fit_to_country,metric:r.value,"metric-unit":u.value,"with-legend":l.chartOptions.legend||!1,onBoundsChange:c},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"}));v.CP_ID_TOKEN=tt,v.DASHBOARD_COLS=Ne,v.DEFAULT_TILE_HEIGHT=fe,v.DEFAULT_TILE_REFRESH_INTERVAL_MS=st,v.DashboardRenderer=Li,v.DashboardTilePreview=Oi,v.ENTITY_ID_TOKEN=Ue,v.FULLSCREEN_LONG_REFRESH_INTERVAL_MS=nt,v.FULLSCREEN_SHORT_REFRESH_INTERVAL_MS=rt,v.GridLayout=xt,v.INJECT_QUERY_PROVIDER=re,v.TIMEFRAME_TOKEN=it,v.configureAllowedDefinition=Mi,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"})});
|