rails_pulse 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +72 -176
- data/Rakefile +77 -2
- data/app/assets/stylesheets/rails_pulse/application.css +0 -12
- data/app/controllers/concerns/chart_table_concern.rb +21 -4
- data/app/controllers/concerns/response_range_concern.rb +6 -3
- data/app/controllers/concerns/time_range_concern.rb +5 -10
- data/app/controllers/concerns/zoom_range_concern.rb +1 -1
- data/app/controllers/rails_pulse/application_controller.rb +8 -4
- data/app/controllers/rails_pulse/dashboard_controller.rb +12 -0
- data/app/controllers/rails_pulse/queries_controller.rb +65 -50
- data/app/controllers/rails_pulse/requests_controller.rb +24 -12
- data/app/controllers/rails_pulse/routes_controller.rb +59 -24
- data/app/helpers/rails_pulse/application_helper.rb +0 -1
- data/app/helpers/rails_pulse/chart_formatters.rb +3 -3
- data/app/helpers/rails_pulse/chart_helper.rb +6 -2
- data/app/helpers/rails_pulse/status_helper.rb +10 -4
- data/app/javascript/rails_pulse/controllers/index_controller.js +117 -33
- data/app/javascript/rails_pulse/controllers/pagination_controller.js +17 -27
- data/app/jobs/rails_pulse/backfill_summaries_job.rb +41 -0
- data/app/jobs/rails_pulse/summary_job.rb +53 -0
- data/app/models/rails_pulse/dashboard/charts/average_response_time.rb +28 -7
- data/app/models/rails_pulse/dashboard/charts/p95_response_time.rb +18 -22
- data/app/models/rails_pulse/dashboard/tables/slow_queries.rb +18 -7
- data/app/models/rails_pulse/dashboard/tables/slow_routes.rb +34 -41
- data/app/models/rails_pulse/operation.rb +1 -1
- data/app/models/rails_pulse/queries/cards/average_query_times.rb +47 -23
- data/app/models/rails_pulse/queries/cards/execution_rate.rb +33 -26
- data/app/models/rails_pulse/queries/cards/percentile_query_times.rb +34 -45
- data/app/models/rails_pulse/queries/charts/average_query_times.rb +23 -97
- data/app/models/rails_pulse/queries/tables/index.rb +74 -0
- data/app/models/rails_pulse/query.rb +1 -0
- data/app/models/rails_pulse/requests/charts/average_response_times.rb +23 -84
- data/app/models/rails_pulse/route.rb +1 -6
- data/app/models/rails_pulse/routes/cards/average_response_times.rb +45 -23
- data/app/models/rails_pulse/routes/cards/error_rate_per_route.rb +38 -45
- data/app/models/rails_pulse/routes/cards/percentile_response_times.rb +34 -47
- data/app/models/rails_pulse/routes/cards/request_count_totals.rb +30 -25
- data/app/models/rails_pulse/routes/charts/average_response_times.rb +23 -100
- data/app/models/rails_pulse/routes/tables/index.rb +57 -40
- data/app/models/rails_pulse/summary.rb +143 -0
- data/app/services/rails_pulse/summary_service.rb +199 -0
- data/app/views/layouts/rails_pulse/application.html.erb +4 -4
- data/app/views/rails_pulse/components/_empty_state.html.erb +11 -0
- data/app/views/rails_pulse/components/_metric_card.html.erb +10 -24
- data/app/views/rails_pulse/dashboard/index.html.erb +54 -36
- data/app/views/rails_pulse/queries/_show_table.html.erb +1 -1
- data/app/views/rails_pulse/queries/_table.html.erb +10 -12
- data/app/views/rails_pulse/queries/index.html.erb +41 -34
- data/app/views/rails_pulse/queries/show.html.erb +38 -31
- data/app/views/rails_pulse/requests/_operations.html.erb +32 -26
- data/app/views/rails_pulse/requests/_table.html.erb +1 -3
- data/app/views/rails_pulse/requests/index.html.erb +42 -34
- data/app/views/rails_pulse/routes/_table.html.erb +13 -13
- data/app/views/rails_pulse/routes/index.html.erb +43 -35
- data/app/views/rails_pulse/routes/show.html.erb +42 -35
- data/config/initializers/rails_pulse.rb +0 -12
- data/db/migrate/20241222000001_create_rails_pulse_summaries.rb +54 -0
- data/db/rails_pulse_schema.rb +121 -0
- data/lib/generators/rails_pulse/install_generator.rb +41 -4
- data/lib/generators/rails_pulse/templates/db/rails_pulse_schema.rb +60 -0
- data/lib/generators/rails_pulse/templates/rails_pulse.rb +0 -12
- data/lib/rails_pulse/configuration.rb +0 -11
- data/lib/rails_pulse/engine.rb +0 -1
- data/lib/rails_pulse/version.rb +1 -1
- data/lib/tasks/rails_pulse.rake +58 -0
- data/public/rails-pulse-assets/rails-pulse.css +1 -1
- data/public/rails-pulse-assets/rails-pulse.css.map +1 -1
- data/public/rails-pulse-assets/rails-pulse.js +1 -1
- data/public/rails-pulse-assets/rails-pulse.js.map +3 -3
- data/public/rails-pulse-assets/search.svg +43 -0
- metadata +27 -11
- data/app/controllers/rails_pulse/caches_controller.rb +0 -115
- data/app/helpers/rails_pulse/cached_component_helper.rb +0 -73
- data/app/models/rails_pulse/component_cache_key.rb +0 -33
- data/app/views/rails_pulse/caches/show.html.erb +0 -9
- data/db/migrate/20250227235904_create_routes.rb +0 -12
- data/db/migrate/20250227235915_create_requests.rb +0 -19
- data/db/migrate/20250228000000_create_queries.rb +0 -14
- data/db/migrate/20250228000056_create_operations.rb +0 -24
- data/lib/rails_pulse/migration.rb +0 -29
@@ -120,7 +120,7 @@ yyyy`);var o=Ei(t),l=e?"getUTC":"get",f=o[l+"FullYear"](),h=o[l+"Month"]()+1,v=o
|
|
120
120
|
|
121
121
|
%o
|
122
122
|
|
123
|
-
%o`,e,t,o),(l=window.onerror)===null||l===void 0||l.call(window,e,"",0,0,t)}logFormattedMessage(t,e,o={}){o=Object.assign({application:this},o),this.logger.groupCollapsed(`${t} #${e}`),this.logger.log("details:",Object.assign({},o)),this.logger.groupEnd()}};function S$t(){return new Promise(a=>{document.readyState=="loading"?document.addEventListener("DOMContentLoaded",()=>a()):a()})}function b$t(a){return Sb(a,"classes").reduce((e,o)=>Object.assign(e,w$t(o)),{})}function w$t(a){return{[`${a}Class`]:{get(){let{classes:t}=this;if(t.has(a))return t.get(a);{let e=t.getAttributeName(a);throw new Error(`Missing attribute "${e}"`)}}},[`${a}Classes`]:{get(){return this.classes.getAll(a)}},[`has${xb(a)}Class`]:{get(){return this.classes.has(a)}}}}function T$t(a){return Sb(a,"outlets").reduce((e,o)=>Object.assign(e,A$t(o)),{})}function hgt(a,t,e){return a.application.getControllerForElementAndIdentifier(t,e)}function pgt(a,t,e){let o=hgt(a,t,e);if(o||(a.application.router.proposeToConnectScopeForElementAndIdentifier(t,e),o=hgt(a,t,e),o))return o}function A$t(a){let t=E3(a);return{[`${t}Outlet`]:{get(){let e=this.outlets.find(a),o=this.outlets.getSelectorForOutletName(a);if(e){let l=pgt(this,e,a);if(l)return l;throw new Error(`The provided outlet element is missing an outlet controller "${a}" instance for host controller "${this.identifier}"`)}throw new Error(`Missing outlet element "${a}" for host controller "${this.identifier}". Stimulus couldn't find a matching outlet element using selector "${o}".`)}},[`${t}Outlets`]:{get(){let e=this.outlets.findAll(a);return e.length>0?e.map(o=>{let l=pgt(this,o,a);if(l)return l;console.warn(`The provided outlet element is missing an outlet controller "${a}" instance for host controller "${this.identifier}"`,o)}).filter(o=>o):[]}},[`${t}OutletElement`]:{get(){let e=this.outlets.find(a),o=this.outlets.getSelectorForOutletName(a);if(e)return e;throw new Error(`Missing outlet element "${a}" for host controller "${this.identifier}". Stimulus couldn't find a matching outlet element using selector "${o}".`)}},[`${t}OutletElements`]:{get(){return this.outlets.findAll(a)}},[`has${xb(t)}Outlet`]:{get(){return this.outlets.has(a)}}}}function C$t(a){return Sb(a,"targets").reduce((e,o)=>Object.assign(e,D$t(o)),{})}function D$t(a){return{[`${a}Target`]:{get(){let t=this.targets.find(a);if(t)return t;throw new Error(`Missing target element "${a}" for "${this.identifier}" controller`)}},[`${a}Targets`]:{get(){return this.targets.findAll(a)}},[`has${xb(a)}Target`]:{get(){return this.targets.has(a)}}}}function M$t(a){let t=u$t(a,"values"),e={valueDescriptorMap:{get(){return t.reduce((o,l)=>{let f=xgt(l,this.identifier),h=this.data.getAttributeNameForKey(f.key);return Object.assign(o,{[h]:f})},{})}}};return t.reduce((o,l)=>Object.assign(o,L$t(l)),e)}function L$t(a,t){let e=xgt(a,t),{key:o,name:l,reader:f,writer:h}=e;return{[l]:{get(){let v=this.data.get(o);return v!==null?f(v):e.defaultValue},set(v){v===void 0?this.data.delete(o):this.data.set(o,h(v))}},[`has${xb(l)}`]:{get(){return this.data.has(o)||e.hasCustomDefaultValue}}}}function xgt([a,t],e){return R$t({controller:e,token:a,typeDefinition:t})}function _I(a){switch(a){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function _b(a){switch(typeof a){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(a))return"array";if(Object.prototype.toString.call(a)==="[object Object]")return"object"}function I$t(a){let{controller:t,token:e,typeObject:o}=a,l=lgt(o.type),f=lgt(o.default),h=l&&f,v=l&&!f,g=!l&&f,y=_I(o.type),x=_b(a.typeObject.default);if(v)return y;if(g)return x;if(y!==x){let b=t?`${t}.${e}`:e;throw new Error(`The specified default value for the Stimulus Value "${b}" must match the defined type "${y}". The provided default value of "${o.default}" is of type "${x}".`)}if(h)return y}function E$t(a){let{controller:t,token:e,typeDefinition:o}=a,f=I$t({controller:t,token:e,typeObject:o}),h=_b(o),v=_I(o),g=f||h||v;if(g)return g;let y=t?`${t}.${o}`:e;throw new Error(`Unknown value type "${y}" for "${e}" value`)}function P$t(a){let t=_I(a);if(t)return vgt[t];let e=P3(a,"default"),o=P3(a,"type"),l=a;if(e)return l.default;if(o){let{type:f}=l,h=_I(f);if(h)return vgt[h]}return a}function R$t(a){let{token:t,typeDefinition:e}=a,o=`${mgt(t)}-value`,l=E$t(a);return{type:l,key:o,name:J3(o),get defaultValue(){return P$t(e)},get hasCustomDefaultValue(){return _b(e)!==void 0},reader:O$t[l],writer:dgt[l]||dgt.default}}var vgt={get array(){return[]},boolean:!1,number:0,get object(){return{}},string:""},O$t={array(a){let t=JSON.parse(a);if(!Array.isArray(t))throw new TypeError(`expected value of type "array" but instead got value "${a}" of type "${_b(t)}"`);return t},boolean(a){return!(a=="0"||String(a).toLowerCase()=="false")},number(a){return Number(a.replace(/_/g,""))},object(a){let t=JSON.parse(a);if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(`expected value of type "object" but instead got value "${a}" of type "${_b(t)}"`);return t},string(a){return a}},dgt={default:k$t,array:ggt,object:ggt};function ggt(a){return JSON.stringify(a)}function k$t(a){return`${a}`}var Ur=class{constructor(t){this.context=t}static get shouldLoad(){return!0}static afterLoad(t,e){}get application(){return this.context.application}get scope(){return this.context.scope}get element(){return this.scope.element}get identifier(){return this.scope.identifier}get targets(){return this.scope.targets}get outlets(){return this.scope.outlets}get classes(){return this.scope.classes}get data(){return this.scope.data}initialize(){}connect(){}disconnect(){}dispatch(t,{target:e=this.element,detail:o={},prefix:l=this.identifier,bubbles:f=!0,cancelable:h=!0}={}){let v=l?`${l}:${t}`:t,g=new CustomEvent(v,{detail:o,bubbles:f,cancelable:h});return e.dispatchEvent(g),g}};Ur.blessings=[b$t,C$t,M$t,T$t];Ur.targets=[];Ur.outlets=[];Ur.values={};var bb=class extends Ur{show(a){this.menuTarget.style.setProperty("--context-menu-x",`${a.clientX-5}px`),this.menuTarget.style.setProperty("--context-menu-y",`${a.clientY-5}px`),this.menuTarget.classList.add("positioned"),setTimeout(()=>this.menuTarget.showPopover(),150)}};zt(bb,"targets",["menu"]);var wb=class extends Ur{show(){this.menuTarget.show()}showModal(){this.menuTarget.showModal()}close(){this.menuTarget.close()}closeOnClickOutside({target:a}){a.nodeName==="DIALOG"&&this.close()}};zt(wb,"targets",["menu"]);var dy,SI,Sgt,gy,xI,bI,bgt,wI,wgt,TI,Tgt,vy=class extends Ur{constructor(){super(...arguments);Ce(this,SI);Ce(this,gy);Ce(this,bI);Ce(this,wI);Ce(this,TI);Ce(this,dy,void 0)}initialize(){gr(this,dy,new IntersectionObserver(Be(this,SI,Sgt).bind(this)))}connect(){Oe(this,dy).observe(this.element)}disconnect(){Oe(this,dy).disconnect()}prev(){this.indexValue>0&&(this.indexValue--,Be(this,gy,xI).call(this))}next(){this.indexValue<Oe(this,TI,Tgt)&&(this.indexValue++,Be(this,gy,xI).call(this))}};dy=new WeakMap,SI=new WeakSet,Sgt=function([t]){t.isIntersecting&&(this.indexValue=0,Be(this,gy,xI).call(this))},gy=new WeakSet,xI=function(){Be(this,bI,bgt).call(this),Be(this,wI,wgt).call(this)},bI=new WeakSet,bgt=function(){this.itemTargets.forEach((t,e)=>{t.tabIndex=e===this.indexValue?0:-1})},wI=new WeakSet,wgt=function(){this.itemTargets[this.indexValue].focus()},TI=new WeakSet,Tgt=function(){return this.itemTargets.length-1},zt(vy,"targets",["item"]),zt(vy,"values",{index:Number});var my=Math.min,ju=Math.max,Ab=Math.round,Cb=Math.floor,Hs=a=>({x:a,y:a}),N$t={left:"right",right:"left",bottom:"top",top:"bottom"},z$t={start:"end",end:"start"};function Q3(a,t,e){return ju(a,my(t,e))}function Db(a,t){return typeof a=="function"?a(t):a}function qc(a){return a.split("-")[0]}function Mb(a){return a.split("-")[1]}function tW(a){return a==="x"?"y":"x"}function eW(a){return a==="y"?"height":"width"}var V$t=new Set(["top","bottom"]);function Ju(a){return V$t.has(qc(a))?"y":"x"}function rW(a){return tW(Ju(a))}function Dgt(a,t,e){e===void 0&&(e=!1);let o=Mb(a),l=rW(a),f=eW(l),h=l==="x"?o===(e?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[f]>t.floating[f]&&(h=Tb(h)),[h,Tb(h)]}function Mgt(a){let t=Tb(a);return[AI(a),t,AI(t)]}function AI(a){return a.replace(/start|end/g,t=>z$t[t])}var Agt=["left","right"],Cgt=["right","left"],B$t=["top","bottom"],F$t=["bottom","top"];function U$t(a,t,e){switch(a){case"top":case"bottom":return e?t?Cgt:Agt:t?Agt:Cgt;case"left":case"right":return t?B$t:F$t;default:return[]}}function Lgt(a,t,e,o){let l=Mb(a),f=U$t(qc(a),e==="start",o);return l&&(f=f.map(h=>h+"-"+l),t&&(f=f.concat(f.map(AI)))),f}function Tb(a){return a.replace(/left|right|bottom|top/g,t=>N$t[t])}function G$t(a){return{top:0,right:0,bottom:0,left:0,...a}}function Igt(a){return typeof a!="number"?G$t(a):{top:a,right:a,bottom:a,left:a}}function Vv(a){let{x:t,y:e,width:o,height:l}=a;return{width:o,height:l,top:e,left:t,right:t+o,bottom:e+l,x:t,y:e}}function Egt(a,t,e){let{reference:o,floating:l}=a,f=Ju(t),h=rW(t),v=eW(h),g=qc(t),y=f==="y",x=o.x+o.width/2-l.width/2,b=o.y+o.height/2-l.height/2,T=o[v]/2-l[v]/2,C;switch(g){case"top":C={x,y:o.y-l.height};break;case"bottom":C={x,y:o.y+o.height};break;case"right":C={x:o.x+o.width,y:b};break;case"left":C={x:o.x-l.width,y:b};break;default:C={x:o.x,y:o.y}}switch(Mb(t)){case"start":C[h]-=T*(e&&y?-1:1);break;case"end":C[h]+=T*(e&&y?-1:1);break}return C}var Pgt=async(a,t,e)=>{let{placement:o="bottom",strategy:l="absolute",middleware:f=[],platform:h}=e,v=f.filter(Boolean),g=await(h.isRTL==null?void 0:h.isRTL(t)),y=await h.getElementRects({reference:a,floating:t,strategy:l}),{x,y:b}=Egt(y,o,g),T=o,C={},M=0;for(let I=0;I<v.length;I++){let{name:P,fn:O}=v[I],{x:N,y:V,data:F,reset:U}=await O({x,y:b,initialPlacement:o,placement:T,strategy:l,middlewareData:C,rects:y,platform:h,elements:{reference:a,floating:t}});x=N??x,b=V??b,C={...C,[P]:{...C[P],...F}},U&&M<=50&&(M++,typeof U=="object"&&(U.placement&&(T=U.placement),U.rects&&(y=U.rects===!0?await h.getElementRects({reference:a,floating:t,strategy:l}):U.rects),{x,y:b}=Egt(y,T,g)),I=-1)}return{x,y:b,placement:T,strategy:l,middlewareData:C}};async function iW(a,t){var e;t===void 0&&(t={});let{x:o,y:l,platform:f,rects:h,elements:v,strategy:g}=a,{boundary:y="clippingAncestors",rootBoundary:x="viewport",elementContext:b="floating",altBoundary:T=!1,padding:C=0}=Db(t,a),M=Igt(C),P=v[T?b==="floating"?"reference":"floating":b],O=Vv(await f.getClippingRect({element:(e=await(f.isElement==null?void 0:f.isElement(P)))==null||e?P:P.contextElement||await(f.getDocumentElement==null?void 0:f.getDocumentElement(v.floating)),boundary:y,rootBoundary:x,strategy:g})),N=b==="floating"?{x:o,y:l,width:h.floating.width,height:h.floating.height}:h.reference,V=await(f.getOffsetParent==null?void 0:f.getOffsetParent(v.floating)),F=await(f.isElement==null?void 0:f.isElement(V))?await(f.getScale==null?void 0:f.getScale(V))||{x:1,y:1}:{x:1,y:1},U=Vv(f.convertOffsetParentRelativeRectToViewportRelativeRect?await f.convertOffsetParentRelativeRectToViewportRelativeRect({elements:v,rect:N,offsetParent:V,strategy:g}):N);return{top:(O.top-U.top+M.top)/F.y,bottom:(U.bottom-O.bottom+M.bottom)/F.y,left:(O.left-U.left+M.left)/F.x,right:(U.right-O.right+M.right)/F.x}}var Rgt=function(a){return a===void 0&&(a={}),{name:"flip",options:a,async fn(t){var e,o;let{placement:l,middlewareData:f,rects:h,initialPlacement:v,platform:g,elements:y}=t,{mainAxis:x=!0,crossAxis:b=!0,fallbackPlacements:T,fallbackStrategy:C="bestFit",fallbackAxisSideDirection:M="none",flipAlignment:I=!0,...P}=Db(a,t);if((e=f.arrow)!=null&&e.alignmentOffset)return{};let O=qc(l),N=Ju(v),V=qc(v)===v,F=await(g.isRTL==null?void 0:g.isRTL(y.floating)),U=T||(V||!I?[Tb(v)]:Mgt(v)),H=M!=="none";!T&&H&&U.push(...Lgt(v,I,M,F));let Z=[v,...U],$=await iW(t,P),K=[],Q=((o=f.flip)==null?void 0:o.overflows)||[];if(x&&K.push($[O]),b){let ft=Dgt(l,h,F);K.push($[ft[0]],$[ft[1]])}if(Q=[...Q,{placement:l,overflows:K}],!K.every(ft=>ft<=0)){var rt,nt;let ft=(((rt=f.flip)==null?void 0:rt.index)||0)+1,lt=Z[ft];if(lt&&(!(b==="alignment"?N!==Ju(lt):!1)||Q.every(st=>st.overflows[0]>0&&Ju(st.placement)===N)))return{data:{index:ft,overflows:Q},reset:{placement:lt}};let pt=(nt=Q.filter(xt=>xt.overflows[0]<=0).sort((xt,st)=>xt.overflows[1]-st.overflows[1])[0])==null?void 0:nt.placement;if(!pt)switch(C){case"bestFit":{var ot;let xt=(ot=Q.filter(st=>{if(H){let dt=Ju(st.placement);return dt===N||dt==="y"}return!0}).map(st=>[st.placement,st.overflows.filter(dt=>dt>0).reduce((dt,Et)=>dt+Et,0)]).sort((st,dt)=>st[1]-dt[1])[0])==null?void 0:ot[0];xt&&(pt=xt);break}case"initialPlacement":pt=v;break}if(l!==pt)return{reset:{placement:pt}}}return{}}}};var H$t=new Set(["left","top"]);async function W$t(a,t){let{placement:e,platform:o,elements:l}=a,f=await(o.isRTL==null?void 0:o.isRTL(l.floating)),h=qc(e),v=Mb(e),g=Ju(e)==="y",y=H$t.has(h)?-1:1,x=f&&g?-1:1,b=Db(t,a),{mainAxis:T,crossAxis:C,alignmentAxis:M}=typeof b=="number"?{mainAxis:b,crossAxis:0,alignmentAxis:null}:{mainAxis:b.mainAxis||0,crossAxis:b.crossAxis||0,alignmentAxis:b.alignmentAxis};return v&&typeof M=="number"&&(C=v==="end"?M*-1:M),g?{x:C*x,y:T*y}:{x:T*y,y:C*x}}var Ogt=function(a){return a===void 0&&(a=0),{name:"offset",options:a,async fn(t){var e,o;let{x:l,y:f,placement:h,middlewareData:v}=t,g=await W$t(t,a);return h===((e=v.offset)==null?void 0:e.placement)&&(o=v.arrow)!=null&&o.alignmentOffset?{}:{x:l+g.x,y:f+g.y,data:{...g,placement:h}}}}},kgt=function(a){return a===void 0&&(a={}),{name:"shift",options:a,async fn(t){let{x:e,y:o,placement:l}=t,{mainAxis:f=!0,crossAxis:h=!1,limiter:v={fn:P=>{let{x:O,y:N}=P;return{x:O,y:N}}},...g}=Db(a,t),y={x:e,y:o},x=await iW(t,g),b=Ju(qc(l)),T=tW(b),C=y[T],M=y[b];if(f){let P=T==="y"?"top":"left",O=T==="y"?"bottom":"right",N=C+x[P],V=C-x[O];C=Q3(N,C,V)}if(h){let P=b==="y"?"top":"left",O=b==="y"?"bottom":"right",N=M+x[P],V=M-x[O];M=Q3(N,M,V)}let I=v.fn({...t,[T]:C,[b]:M});return{...I,data:{x:I.x-e,y:I.y-o,enabled:{[T]:f,[b]:h}}}}}};function CI(){return typeof window<"u"}function Bv(a){return zgt(a)?(a.nodeName||"").toLowerCase():"#document"}function In(a){var t;return(a==null||(t=a.ownerDocument)==null?void 0:t.defaultView)||window}function Ws(a){var t;return(t=(zgt(a)?a.ownerDocument:a.document)||window.document)==null?void 0:t.documentElement}function zgt(a){return CI()?a instanceof Node||a instanceof In(a).Node:!1}function as(a){return CI()?a instanceof Element||a instanceof In(a).Element:!1}function Ys(a){return CI()?a instanceof HTMLElement||a instanceof In(a).HTMLElement:!1}function Ngt(a){return!CI()||typeof ShadowRoot>"u"?!1:a instanceof ShadowRoot||a instanceof In(a).ShadowRoot}var Y$t=new Set(["inline","contents"]);function _y(a){let{overflow:t,overflowX:e,overflowY:o,display:l}=ns(a);return/auto|scroll|overlay|hidden|clip/.test(t+o+e)&&!Y$t.has(l)}var Z$t=new Set(["table","td","th"]);function Vgt(a){return Z$t.has(Bv(a))}var X$t=[":popover-open",":modal"];function Lb(a){return X$t.some(t=>{try{return a.matches(t)}catch{return!1}})}var q$t=["transform","translate","scale","rotate","perspective"],$$t=["transform","translate","scale","rotate","perspective","filter"],K$t=["paint","layout","strict","content"];function DI(a){let t=MI(),e=as(a)?ns(a):a;return q$t.some(o=>e[o]?e[o]!=="none":!1)||(e.containerType?e.containerType!=="normal":!1)||!t&&(e.backdropFilter?e.backdropFilter!=="none":!1)||!t&&(e.filter?e.filter!=="none":!1)||$$t.some(o=>(e.willChange||"").includes(o))||K$t.some(o=>(e.contain||"").includes(o))}function Bgt(a){let t=Qu(a);for(;Ys(t)&&!Fv(t);){if(DI(t))return t;if(Lb(t))return null;t=Qu(t)}return null}function MI(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}var j$t=new Set(["html","body","#document"]);function Fv(a){return j$t.has(Bv(a))}function ns(a){return In(a).getComputedStyle(a)}function Ib(a){return as(a)?{scrollLeft:a.scrollLeft,scrollTop:a.scrollTop}:{scrollLeft:a.scrollX,scrollTop:a.scrollY}}function Qu(a){if(Bv(a)==="html")return a;let t=a.assignedSlot||a.parentNode||Ngt(a)&&a.host||Ws(a);return Ngt(t)?t.host:t}function Fgt(a){let t=Qu(a);return Fv(t)?a.ownerDocument?a.ownerDocument.body:a.body:Ys(t)&&_y(t)?t:Fgt(t)}function yy(a,t,e){var o;t===void 0&&(t=[]),e===void 0&&(e=!0);let l=Fgt(a),f=l===((o=a.ownerDocument)==null?void 0:o.body),h=In(l);if(f){let v=LI(h);return t.concat(h,h.visualViewport||[],_y(l)?l:[],v&&e?yy(v):[])}return t.concat(l,yy(l,[],e))}function LI(a){return a.parent&&Object.getPrototypeOf(a.parent)?a.frameElement:null}function Hgt(a){let t=ns(a),e=parseFloat(t.width)||0,o=parseFloat(t.height)||0,l=Ys(a),f=l?a.offsetWidth:e,h=l?a.offsetHeight:o,v=Ab(e)!==f||Ab(o)!==h;return v&&(e=f,o=h),{width:e,height:o,$:v}}function nW(a){return as(a)?a:a.contextElement}function xy(a){let t=nW(a);if(!Ys(t))return Hs(1);let e=t.getBoundingClientRect(),{width:o,height:l,$:f}=Hgt(t),h=(f?Ab(e.width):e.width)/o,v=(f?Ab(e.height):e.height)/l;return(!h||!Number.isFinite(h))&&(h=1),(!v||!Number.isFinite(v))&&(v=1),{x:h,y:v}}var J$t=Hs(0);function Wgt(a){let t=In(a);return!MI()||!t.visualViewport?J$t:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Q$t(a,t,e){return t===void 0&&(t=!1),!e||t&&e!==In(a)?!1:t}function Uv(a,t,e,o){t===void 0&&(t=!1),e===void 0&&(e=!1);let l=a.getBoundingClientRect(),f=nW(a),h=Hs(1);t&&(o?as(o)&&(h=xy(o)):h=xy(a));let v=Q$t(f,e,o)?Wgt(f):Hs(0),g=(l.left+v.x)/h.x,y=(l.top+v.y)/h.y,x=l.width/h.x,b=l.height/h.y;if(f){let T=In(f),C=o&&as(o)?In(o):o,M=T,I=LI(M);for(;I&&o&&C!==M;){let P=xy(I),O=I.getBoundingClientRect(),N=ns(I),V=O.left+(I.clientLeft+parseFloat(N.paddingLeft))*P.x,F=O.top+(I.clientTop+parseFloat(N.paddingTop))*P.y;g*=P.x,y*=P.y,x*=P.x,b*=P.y,g+=V,y+=F,M=In(I),I=LI(M)}}return Vv({width:x,height:b,x:g,y})}function oW(a,t){let e=Ib(a).scrollLeft;return t?t.left+e:Uv(Ws(a)).left+e}function Ygt(a,t,e){e===void 0&&(e=!1);let o=a.getBoundingClientRect(),l=o.left+t.scrollLeft-(e?0:oW(a,o)),f=o.top+t.scrollTop;return{x:l,y:f}}function tKt(a){let{elements:t,rect:e,offsetParent:o,strategy:l}=a,f=l==="fixed",h=Ws(o),v=t?Lb(t.floating):!1;if(o===h||v&&f)return e;let g={scrollLeft:0,scrollTop:0},y=Hs(1),x=Hs(0),b=Ys(o);if((b||!b&&!f)&&((Bv(o)!=="body"||_y(h))&&(g=Ib(o)),Ys(o))){let C=Uv(o);y=xy(o),x.x=C.x+o.clientLeft,x.y=C.y+o.clientTop}let T=h&&!b&&!f?Ygt(h,g,!0):Hs(0);return{width:e.width*y.x,height:e.height*y.y,x:e.x*y.x-g.scrollLeft*y.x+x.x+T.x,y:e.y*y.y-g.scrollTop*y.y+x.y+T.y}}function eKt(a){return Array.from(a.getClientRects())}function rKt(a){let t=Ws(a),e=Ib(a),o=a.ownerDocument.body,l=ju(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),f=ju(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight),h=-e.scrollLeft+oW(a),v=-e.scrollTop;return ns(o).direction==="rtl"&&(h+=ju(t.clientWidth,o.clientWidth)-l),{width:l,height:f,x:h,y:v}}function iKt(a,t){let e=In(a),o=Ws(a),l=e.visualViewport,f=o.clientWidth,h=o.clientHeight,v=0,g=0;if(l){f=l.width,h=l.height;let y=MI();(!y||y&&t==="fixed")&&(v=l.offsetLeft,g=l.offsetTop)}return{width:f,height:h,x:v,y:g}}var aKt=new Set(["absolute","fixed"]);function nKt(a,t){let e=Uv(a,!0,t==="fixed"),o=e.top+a.clientTop,l=e.left+a.clientLeft,f=Ys(a)?xy(a):Hs(1),h=a.clientWidth*f.x,v=a.clientHeight*f.y,g=l*f.x,y=o*f.y;return{width:h,height:v,x:g,y}}function Ugt(a,t,e){let o;if(t==="viewport")o=iKt(a,e);else if(t==="document")o=rKt(Ws(a));else if(as(t))o=nKt(t,e);else{let l=Wgt(a);o={x:t.x-l.x,y:t.y-l.y,width:t.width,height:t.height}}return Vv(o)}function Zgt(a,t){let e=Qu(a);return e===t||!as(e)||Fv(e)?!1:ns(e).position==="fixed"||Zgt(e,t)}function oKt(a,t){let e=t.get(a);if(e)return e;let o=yy(a,[],!1).filter(v=>as(v)&&Bv(v)!=="body"),l=null,f=ns(a).position==="fixed",h=f?Qu(a):a;for(;as(h)&&!Fv(h);){let v=ns(h),g=DI(h);!g&&v.position==="fixed"&&(l=null),(f?!g&&!l:!g&&v.position==="static"&&!!l&&aKt.has(l.position)||_y(h)&&!g&&Zgt(a,h))?o=o.filter(x=>x!==h):l=v,h=Qu(h)}return t.set(a,o),o}function sKt(a){let{element:t,boundary:e,rootBoundary:o,strategy:l}=a,h=[...e==="clippingAncestors"?Lb(t)?[]:oKt(t,this._c):[].concat(e),o],v=h[0],g=h.reduce((y,x)=>{let b=Ugt(t,x,l);return y.top=ju(b.top,y.top),y.right=my(b.right,y.right),y.bottom=my(b.bottom,y.bottom),y.left=ju(b.left,y.left),y},Ugt(t,v,l));return{width:g.right-g.left,height:g.bottom-g.top,x:g.left,y:g.top}}function lKt(a){let{width:t,height:e}=Hgt(a);return{width:t,height:e}}function uKt(a,t,e){let o=Ys(t),l=Ws(t),f=e==="fixed",h=Uv(a,!0,f,t),v={scrollLeft:0,scrollTop:0},g=Hs(0);function y(){g.x=oW(l)}if(o||!o&&!f)if((Bv(t)!=="body"||_y(l))&&(v=Ib(t)),o){let C=Uv(t,!0,f,t);g.x=C.x+t.clientLeft,g.y=C.y+t.clientTop}else l&&y();f&&!o&&l&&y();let x=l&&!o&&!f?Ygt(l,v):Hs(0),b=h.left+v.scrollLeft-g.x-x.x,T=h.top+v.scrollTop-g.y-x.y;return{x:b,y:T,width:h.width,height:h.height}}function aW(a){return ns(a).position==="static"}function Ggt(a,t){if(!Ys(a)||ns(a).position==="fixed")return null;if(t)return t(a);let e=a.offsetParent;return Ws(a)===e&&(e=e.ownerDocument.body),e}function Xgt(a,t){let e=In(a);if(Lb(a))return e;if(!Ys(a)){let l=Qu(a);for(;l&&!Fv(l);){if(as(l)&&!aW(l))return l;l=Qu(l)}return e}let o=Ggt(a,t);for(;o&&Vgt(o)&&aW(o);)o=Ggt(o,t);return o&&Fv(o)&&aW(o)&&!DI(o)?e:o||Bgt(a)||e}var fKt=async function(a){let t=this.getOffsetParent||Xgt,e=this.getDimensions,o=await e(a.floating);return{reference:uKt(a.reference,await t(a.floating),a.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function cKt(a){return ns(a).direction==="rtl"}var hKt={convertOffsetParentRelativeRectToViewportRelativeRect:tKt,getDocumentElement:Ws,getClippingRect:sKt,getOffsetParent:Xgt,getElementRects:fKt,getClientRects:eKt,getDimensions:lKt,getScale:xy,isElement:as,isRTL:cKt};function qgt(a,t){return a.x===t.x&&a.y===t.y&&a.width===t.width&&a.height===t.height}function pKt(a,t){let e=null,o,l=Ws(a);function f(){var v;clearTimeout(o),(v=e)==null||v.disconnect(),e=null}function h(v,g){v===void 0&&(v=!1),g===void 0&&(g=1),f();let y=a.getBoundingClientRect(),{left:x,top:b,width:T,height:C}=y;if(v||t(),!T||!C)return;let M=Cb(b),I=Cb(l.clientWidth-(x+T)),P=Cb(l.clientHeight-(b+C)),O=Cb(x),V={rootMargin:-M+"px "+-I+"px "+-P+"px "+-O+"px",threshold:ju(0,my(1,g))||1},F=!0;function U(H){let Z=H[0].intersectionRatio;if(Z!==g){if(!F)return h();Z?h(!1,Z):o=setTimeout(()=>{h(!1,1e-7)},1e3)}Z===1&&!qgt(y,a.getBoundingClientRect())&&h(),F=!1}try{e=new IntersectionObserver(U,{...V,root:l.ownerDocument})}catch{e=new IntersectionObserver(U,V)}e.observe(a)}return h(!0),f}function $gt(a,t,e,o){o===void 0&&(o={});let{ancestorScroll:l=!0,ancestorResize:f=!0,elementResize:h=typeof ResizeObserver=="function",layoutShift:v=typeof IntersectionObserver=="function",animationFrame:g=!1}=o,y=nW(a),x=l||f?[...y?yy(y):[],...yy(t)]:[];x.forEach(O=>{l&&O.addEventListener("scroll",e,{passive:!0}),f&&O.addEventListener("resize",e)});let b=y&&v?pKt(y,e):null,T=-1,C=null;h&&(C=new ResizeObserver(O=>{let[N]=O;N&&N.target===y&&C&&(C.unobserve(t),cancelAnimationFrame(T),T=requestAnimationFrame(()=>{var V;(V=C)==null||V.observe(t)})),e()}),y&&!g&&C.observe(y),C.observe(t));let M,I=g?Uv(a):null;g&&P();function P(){let O=Uv(a);I&&!qgt(I,O)&&e(),I=O,M=requestAnimationFrame(P)}return e(),()=>{var O;x.forEach(N=>{l&&N.removeEventListener("scroll",e),f&&N.removeEventListener("resize",e)}),b?.(),(O=C)==null||O.disconnect(),C=null,g&&cancelAnimationFrame(M)}}var Kgt=Ogt;var jgt=kgt,Jgt=Rgt;var Qgt=(a,t,e)=>{let o=new Map,l={platform:hKt,...e},f={...l.platform,_c:o};return Pgt(a,t,{...l,platform:f})};var Eb,Pb,II,tmt,Sy=class extends Ur{constructor(){super(...arguments);Ce(this,II);Ce(this,Eb,null);Ce(this,Pb,null)}initialize(){this.orient=this.orient.bind(this)}connect(){this.cleanup=$gt(this.buttonTarget,this.menuTarget,this.orient)}disconnect(){this.cleanup()}show(t){t&&t.preventDefault(),this.menuTarget.showPopover({source:this.buttonTarget}),this.orient(),this.loadOperationDetailsIfNeeded()}hide(){this.menuTarget.hidePopover()}toggle(t){t.preventDefault(),this.menuTarget.togglePopover({source:this.buttonTarget}),this.orient(),this.loadOperationDetailsIfNeeded()}debouncedShow(){clearTimeout(Oe(this,Pb)),gr(this,Eb,setTimeout(()=>this.show(),700))}debouncedHide(){clearTimeout(Oe(this,Eb)),gr(this,Pb,setTimeout(()=>this.hide(),300))}orient(){Qgt(this.buttonTarget,this.menuTarget,Oe(this,II,tmt)).then(({x:t,y:e})=>{this.menuTarget.style.setProperty("--popover-x",`${t}px`),this.menuTarget.style.setProperty("--popover-y",`${e}px`),this.menuTarget.classList.add("positioned")})}loadOperationDetailsIfNeeded(){let t=this.menuTarget.dataset.operationUrl;if(!t)return;let e=this.menuTarget.querySelector("turbo-frame");!e||!this.hasLoadingContent(e)||(e.src=t)}hasLoadingContent(t){return(t.textContent||"").includes("Loading operation details")}};Eb=new WeakMap,Pb=new WeakMap,II=new WeakSet,tmt=function(){return{placement:this.placementValue,middleware:[Kgt(4),Jgt(),jgt({padding:4})]}},zt(Sy,"targets",["button","menu"]),zt(Sy,"values",{placement:{type:String,default:"bottom"}});var Rb=class extends Ur{initialize(){this.search=this.debounce(this.search.bind(this),500)}debounce(a,t){let e;return function(...l){let f=()=>{clearTimeout(e),a(...l)};clearTimeout(e),e=setTimeout(f,t)}}submit(){this.element.requestSubmit()}search(){this.element.requestSubmit()}cancel(){this.cancelTarget?.click()}preventAttachment(a){a.preventDefault()}};zt(Rb,"targets",["cancel"]);var by=class extends Ur{constructor(){super(...arguments);zt(this,"lastTurboFrameRequestAt",0)}connect(){this.handleChartInitialized=this.onChartInitialized.bind(this),document.addEventListener("chart:initialized",this.handleChartInitialized),window.RailsCharts?.charts?.[this.chartIdValue]&&this.setup()}disconnect(){document.removeEventListener("chart:initialized",this.handleChartInitialized),this.chartTarget&&(this.chartTarget.removeEventListener("mousedown",this.handleChartMouseDown),this.chartTarget.removeEventListener("mouseup",this.handleChartMouseUp)),document.removeEventListener("mouseup",this.handleDocumentMouseUp)}onChartInitialized(t){t.detail.chartId===this.chartIdValue&&this.setup()}setup(){this.setupDone||(this.chart=window.RailsCharts.charts[this.chartIdValue],this.chart&&(this.visibleData=this.getVisibleData(),this.setupChartEventListeners(),this.setupDone=!0))}setupChartEventListeners(){this.handleChartMouseDown=()=>{this.visibleData=this.getVisibleData()},this.chartTarget.addEventListener("mousedown",this.handleChartMouseDown),this.handleChartMouseUp=()=>{this.handleZoomChange()},this.chartTarget.addEventListener("mouseup",this.handleChartMouseUp),this.chart.on("datazoom",()=>{this.handleZoomChange()}),this.handleDocumentMouseUp=()=>{this.handleZoomChange()},document.addEventListener("mouseup",this.handleDocumentMouseUp)}getVisibleData(){let t=this.chart.getOption(),e=t.dataZoom[1],o=t.xAxis[0].data,l=t.series[0].data,f=e.startValue,h=e.endValue;return{xAxis:o.slice(f,h+1),series:l.slice(f,h+1)}}handleZoomChange(){let t=this.getVisibleData();t.xAxis.join()!==this.visibleData.xAxis.join()&&(this.visibleData=t,this.updateUrlWithZoomParams(t),this.sendTurboFrameRequest(t))}updateUrlWithZoomParams(t){let e=new URL(window.location.href),o=new URLSearchParams(e.search),l=t.xAxis[0],f=t.xAxis[t.xAxis.length-1];o.set("zoom_start_time",l),o.set("zoom_end_time",f),e.search=o.toString(),window.history.replaceState({},"",e)}updatePaginationLimit(){let t=new URL(window.location.href),e=new URLSearchParams(t.search),o=this.paginationLimitTarget.value;e.set("limit",o),t.search=e.toString(),window.history.replaceState({},"",t)}sendTurboFrameRequest(t){let e=Date.now();if(e-this.lastTurboFrameRequestAt<1e3)return;this.lastTurboFrameRequestAt=e;let o=new URL(window.location.href),l=new URLSearchParams(o.search),f=t.xAxis[0],h=t.xAxis[t.xAxis.length-1];l.set("zoom_start_time",f),l.set("zoom_end_time",h),o.searchParams.set("limit",this.paginationLimitTarget.value),o.search=l.toString(),fetch(o,{method:"GET",headers:{Accept:"text/html; turbo-frame","Turbo-Frame":this.chartIdValue}}).then(v=>v.text()).then(v=>{let g=this.indexTableTarget;if(g){let b=new DOMParser().parseFromString(v,"text/html").querySelector(`turbo-frame#${g.id}`);b?this.replaceFrameContent(g,b):this.replaceFrameContentFromHTML(g,v)}}).catch(v=>console.error("Error:",v))}replaceFrameContent(t,e){try{for(;t.firstChild;)t.removeChild(t.firstChild);Array.from(e.childNodes).forEach(l=>{let f=l.cloneNode(!0);t.appendChild(f)})}catch(o){console.error("Error replacing frame content:",o),t.innerHTML=e.innerHTML}}replaceFrameContentFromHTML(t,e){try{let l=new DOMParser().parseFromString(e,"text/html");for(;t.firstChild;)t.removeChild(t.firstChild);Array.from(l.body.childNodes).forEach(h=>{let v=h.cloneNode(!0);t.appendChild(v)})}catch(o){console.error("Error parsing HTML content:",o),t.innerHTML=e}}};zt(by,"targets",["chart","paginationLimit","indexTable"]),zt(by,"values",{chartId:String});var EI=class extends Ur{connect(){this.storageKey="color-scheme",this.html=document.documentElement;let a=localStorage.getItem(this.storageKey);a&&this.html.setAttribute("data-color-scheme",a)}toggle(a){a.preventDefault();let t=this.html.getAttribute("data-color-scheme")==="dark"?"light":"dark";console.log("Toggling color scheme to",t),this.html.setAttribute("data-color-scheme",t),localStorage.setItem(this.storageKey,t)}};var wy=class extends Ur{connect(){this.restorePaginationLimit()}async updateLimit(){let a=this.limitTarget.value;sessionStorage.setItem(this.storageKeyValue,a);try{let t=await fetch(this.urlValue,{method:"PATCH",headers:{"Content-Type":"application/json","X-CSRF-Token":this.getCSRFToken()},body:JSON.stringify({limit:a})});if(t.ok)window.location.reload();else throw new Error(`HTTP error! status: ${t.status}`)}catch(t){console.error("Error updating pagination limit:",t)}}getCSRFToken(){let a=document.querySelector('meta[name="csrf-token"]');return a?a.getAttribute("content"):""}savePaginationLimit(){let a=this.limitTarget.value;sessionStorage.setItem(this.storageKeyValue,a)}restorePaginationLimit(){let a=sessionStorage.getItem(this.storageKeyValue);a&&this.limitTarget&&this.limitTarget.value!==a&&(this.limitTarget.value=a,this.limitTarget.dispatchEvent(new Event("change",{bubbles:!0})))}};zt(wy,"targets",["limit"]),zt(wy,"values",{storageKey:{type:String,default:"rails_pulse_pagination_limit"},url:String});var Ob=class extends Ur{connect(){this.updateTimestamp(),this.setupObserver(),this.setupTurboFrameListener()}disconnect(){this.observer&&this.observer.disconnect(),this.frameObserver&&this.frameObserver.disconnect(),this.documentObserver&&this.documentObserver.disconnect(),this.turboFrameListener&&document.removeEventListener("turbo:frame-load",this.turboFrameListener)}setupObserver(){if(this.targetFrameValue){this.updateTimestamp();let a=new MutationObserver(()=>{let t=document.getElementById(this.targetFrameValue);t&&(this.updateTimestamp(),this.frameObserver&&this.frameObserver.disconnect(),this.frameObserver=new MutationObserver(()=>{this.updateTimestamp()}),this.frameObserver.observe(t,{attributes:!0,attributeFilter:["data-cached-at"],childList:!0,subtree:!0}))});a.observe(document.body,{childList:!0,subtree:!0}),this.documentObserver=a}}cachedAtValueChanged(){this.updateTimestamp()}setupTurboFrameListener(){this.targetFrameValue&&(this.turboFrameListener=a=>{a.target&&a.target.id===this.targetFrameValue&&this.updateTimestamp()},document.addEventListener("turbo:frame-load",this.turboFrameListener))}updateTimestamp(){let a=this.cachedAtValue;if(!a&&this.targetFrameValue){let t=document.getElementById(this.targetFrameValue);t&&(a=t.dataset.cachedAt)}if(a)try{let e=new Date(a).toLocaleString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0});this.element.title=`Last updated: ${e}`}catch{this.element.title="Cache time unavailable"}else this.element.title="Cache time unavailable"}};zt(Ob,"values",{cachedAt:String,targetFrame:String});var Ty=class extends Ur{connect(){this.renderIcon()}nameValueChanged(){this.renderIcon()}renderIcon(){this.clearIcon(),this.element.classList.add(...this.loadingClasses),this.element.classList.remove(...this.errorClasses,...this.loadedClasses);let a=this.nameValue;if(!a){this.handleError("Icon name is required");return}if(!window.RailsPulseIcons){this.handleError("RailsPulseIcons not loaded");return}let t=window.RailsPulseIcons.get(a);if(!t){this.handleError(`Icon '${a}' not found`);return}try{let e=this.createSVGElement(t);this.element.appendChild(e),this.element.classList.remove(...this.loadingClasses,...this.errorClasses),this.element.classList.add(...this.loadedClasses),this.element.setAttribute("aria-label",`${a} icon`)}catch(e){this.handleError(`Failed to render icon '${a}': ${e.message}`)}}createSVGElement(a){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");if(t.setAttribute("width",this.widthValue||"24"),t.setAttribute("height",this.heightValue||"24"),t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width",this.strokeWidthValue||"2"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),window.RailsPulseIcons.render){let f=document.createElement("div");if(window.RailsPulseIcons.render(this.nameValue,f,{width:this.widthValue||"24",height:this.heightValue||"24"})&&f.firstChild)return f.firstChild}let l=new DOMParser().parseFromString(`<svg xmlns="http://www.w3.org/2000/svg" width="${this.widthValue||"24"}" height="${this.heightValue||"24"}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="${this.strokeWidthValue||"2"}" stroke-linecap="round" stroke-linejoin="round">${a}</svg>`,"image/svg+xml").documentElement;if(l.nodeName==="parsererror")throw new Error("Invalid SVG content");return document.importNode(l,!0)}clearIcon(){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild)}handleError(a){console.warn(`[Rails Pulse Icon Controller] ${a}`),this.clearIcon(),this.element.classList.remove(...this.loadingClasses,...this.loadedClasses),this.element.classList.add(...this.errorClasses),this.createErrorPlaceholder(),this.element.setAttribute("aria-label","Icon not available")}createErrorPlaceholder(){let a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("width",this.widthValue||"24"),a.setAttribute("height",this.heightValue||"24"),a.setAttribute("viewBox","0 0 24 24"),a.setAttribute("fill","currentColor"),a.setAttribute("opacity","0.3");let t=document.createElementNS("http://www.w3.org/2000/svg","rect");t.setAttribute("width","20"),t.setAttribute("height","20"),t.setAttribute("x","2"),t.setAttribute("y","2"),t.setAttribute("rx","2"),a.appendChild(t),this.element.appendChild(a)}listAvailableIcons(){window.RailsPulseIcons?.list?console.log("Available icons:",window.RailsPulseIcons.list()):console.warn("RailsPulseIcons not loaded or list method not available")}};zt(Ty,"values",{name:String,width:String,height:String,strokeWidth:String}),zt(Ty,"classes",["loading","error","loaded"]);var kb=class extends Ur{connect(){this.detailsTarget.classList.add("hidden"),this.loaded=!1}toggle(a){a.preventDefault(),a.stopPropagation();let t=!this.detailsTarget.classList.contains("hidden");console.log("Toggle clicked, currently expanded:",t),console.log("isExpanded",t),t?(console.log("Collapsing..."),this.collapse()):(console.log("Expanding..."),this.expand())}expand(){this.detailsTarget.classList.remove("hidden"),this.chevronTarget.style.transform="rotate(90deg)",this.triggerTarget.classList.add("expanded"),this.loaded||(this.loadOperationDetails(),this.loaded=!0)}loadOperationDetails(){let a=this.detailsTarget.querySelector("turbo-frame");if(a){let t=a.dataset.operationUrl;t&&(a.src=t)}}collapse(){this.detailsTarget.classList.add("hidden"),this.chevronTarget.style.transform="rotate(0deg)",this.triggerTarget.classList.remove("expanded")}};zt(kb,"targets",["trigger","details","chevron"]);var En=yI.start();En.debug=!1;window.Stimulus=En;window.echarts=BH;window.Turbo=D3;En.register("rails-pulse--context-menu",bb);En.register("rails-pulse--dialog",wb);En.register("rails-pulse--menu",vy);En.register("rails-pulse--popover",Sy);En.register("rails-pulse--form",Rb);En.register("rails-pulse--index",by);En.register("rails-pulse--color-scheme",EI);En.register("rails-pulse--pagination",wy);En.register("rails-pulse--timezone",Ob);En.register("rails-pulse--icon",Ty);En.register("rails-pulse--expandable-row",kb);document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("turbo-frame[src]:not([complete])").forEach(t=>{let e=t.getAttribute("src");e&&(t.removeAttribute("src"),setTimeout(()=>t.setAttribute("src",e),10))})});var vKt=new MutationObserver(a=>{a.forEach(t=>{t.type==="childList"&&t.addedNodes.forEach(e=>{if(e.nodeType===1&&e.tagName==="TURBO-FRAME"&&e.hasAttribute("src")&&!e.hasAttribute("complete")){let o=e.getAttribute("src");o&&(e.removeAttribute("src"),setTimeout(()=>e.setAttribute("src",o),10))}})})});vKt.observe(document.body,{childList:!0,subtree:!0});Xx("railspulse",{color:["#ffc91f","#ffde66","#fbedbf"],backgroundColor:"rgba(255,255,255,0)",textStyle:{},title:{textStyle:{color:"#666666"}},line:{lineStyle:{width:"3"},symbolSize:"8"},bar:{itemStyle:{barBorderWidth:0}}});window.addEventListener("resize",function(){window.RailsCharts&&window.RailsCharts.charts&&Object.keys(window.RailsCharts.charts).forEach(function(a){window.RailsCharts.charts[a].resize()})});window.initializeChartsInContainer=function(a){requestAnimationFrame(()=>{(a?document.getElementById(a):document).querySelectorAll("script").forEach(o=>{let f=o.textContent.match(/function\s+(init_rails_charts_[a-f0-9]+)/);f&&window[f[1]]&&window[f[1]]()})})};window.RailsPulse={application:En,version:"1.0.0"};})();
|
123
|
+
%o`,e,t,o),(l=window.onerror)===null||l===void 0||l.call(window,e,"",0,0,t)}logFormattedMessage(t,e,o={}){o=Object.assign({application:this},o),this.logger.groupCollapsed(`${t} #${e}`),this.logger.log("details:",Object.assign({},o)),this.logger.groupEnd()}};function S$t(){return new Promise(a=>{document.readyState=="loading"?document.addEventListener("DOMContentLoaded",()=>a()):a()})}function b$t(a){return Sb(a,"classes").reduce((e,o)=>Object.assign(e,w$t(o)),{})}function w$t(a){return{[`${a}Class`]:{get(){let{classes:t}=this;if(t.has(a))return t.get(a);{let e=t.getAttributeName(a);throw new Error(`Missing attribute "${e}"`)}}},[`${a}Classes`]:{get(){return this.classes.getAll(a)}},[`has${xb(a)}Class`]:{get(){return this.classes.has(a)}}}}function T$t(a){return Sb(a,"outlets").reduce((e,o)=>Object.assign(e,A$t(o)),{})}function hgt(a,t,e){return a.application.getControllerForElementAndIdentifier(t,e)}function pgt(a,t,e){let o=hgt(a,t,e);if(o||(a.application.router.proposeToConnectScopeForElementAndIdentifier(t,e),o=hgt(a,t,e),o))return o}function A$t(a){let t=E3(a);return{[`${t}Outlet`]:{get(){let e=this.outlets.find(a),o=this.outlets.getSelectorForOutletName(a);if(e){let l=pgt(this,e,a);if(l)return l;throw new Error(`The provided outlet element is missing an outlet controller "${a}" instance for host controller "${this.identifier}"`)}throw new Error(`Missing outlet element "${a}" for host controller "${this.identifier}". Stimulus couldn't find a matching outlet element using selector "${o}".`)}},[`${t}Outlets`]:{get(){let e=this.outlets.findAll(a);return e.length>0?e.map(o=>{let l=pgt(this,o,a);if(l)return l;console.warn(`The provided outlet element is missing an outlet controller "${a}" instance for host controller "${this.identifier}"`,o)}).filter(o=>o):[]}},[`${t}OutletElement`]:{get(){let e=this.outlets.find(a),o=this.outlets.getSelectorForOutletName(a);if(e)return e;throw new Error(`Missing outlet element "${a}" for host controller "${this.identifier}". Stimulus couldn't find a matching outlet element using selector "${o}".`)}},[`${t}OutletElements`]:{get(){return this.outlets.findAll(a)}},[`has${xb(t)}Outlet`]:{get(){return this.outlets.has(a)}}}}function C$t(a){return Sb(a,"targets").reduce((e,o)=>Object.assign(e,D$t(o)),{})}function D$t(a){return{[`${a}Target`]:{get(){let t=this.targets.find(a);if(t)return t;throw new Error(`Missing target element "${a}" for "${this.identifier}" controller`)}},[`${a}Targets`]:{get(){return this.targets.findAll(a)}},[`has${xb(a)}Target`]:{get(){return this.targets.has(a)}}}}function M$t(a){let t=u$t(a,"values"),e={valueDescriptorMap:{get(){return t.reduce((o,l)=>{let f=xgt(l,this.identifier),h=this.data.getAttributeNameForKey(f.key);return Object.assign(o,{[h]:f})},{})}}};return t.reduce((o,l)=>Object.assign(o,L$t(l)),e)}function L$t(a,t){let e=xgt(a,t),{key:o,name:l,reader:f,writer:h}=e;return{[l]:{get(){let v=this.data.get(o);return v!==null?f(v):e.defaultValue},set(v){v===void 0?this.data.delete(o):this.data.set(o,h(v))}},[`has${xb(l)}`]:{get(){return this.data.has(o)||e.hasCustomDefaultValue}}}}function xgt([a,t],e){return R$t({controller:e,token:a,typeDefinition:t})}function _I(a){switch(a){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function _b(a){switch(typeof a){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(a))return"array";if(Object.prototype.toString.call(a)==="[object Object]")return"object"}function I$t(a){let{controller:t,token:e,typeObject:o}=a,l=lgt(o.type),f=lgt(o.default),h=l&&f,v=l&&!f,g=!l&&f,y=_I(o.type),x=_b(a.typeObject.default);if(v)return y;if(g)return x;if(y!==x){let b=t?`${t}.${e}`:e;throw new Error(`The specified default value for the Stimulus Value "${b}" must match the defined type "${y}". The provided default value of "${o.default}" is of type "${x}".`)}if(h)return y}function E$t(a){let{controller:t,token:e,typeDefinition:o}=a,f=I$t({controller:t,token:e,typeObject:o}),h=_b(o),v=_I(o),g=f||h||v;if(g)return g;let y=t?`${t}.${o}`:e;throw new Error(`Unknown value type "${y}" for "${e}" value`)}function P$t(a){let t=_I(a);if(t)return vgt[t];let e=P3(a,"default"),o=P3(a,"type"),l=a;if(e)return l.default;if(o){let{type:f}=l,h=_I(f);if(h)return vgt[h]}return a}function R$t(a){let{token:t,typeDefinition:e}=a,o=`${mgt(t)}-value`,l=E$t(a);return{type:l,key:o,name:J3(o),get defaultValue(){return P$t(e)},get hasCustomDefaultValue(){return _b(e)!==void 0},reader:O$t[l],writer:dgt[l]||dgt.default}}var vgt={get array(){return[]},boolean:!1,number:0,get object(){return{}},string:""},O$t={array(a){let t=JSON.parse(a);if(!Array.isArray(t))throw new TypeError(`expected value of type "array" but instead got value "${a}" of type "${_b(t)}"`);return t},boolean(a){return!(a=="0"||String(a).toLowerCase()=="false")},number(a){return Number(a.replace(/_/g,""))},object(a){let t=JSON.parse(a);if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(`expected value of type "object" but instead got value "${a}" of type "${_b(t)}"`);return t},string(a){return a}},dgt={default:k$t,array:ggt,object:ggt};function ggt(a){return JSON.stringify(a)}function k$t(a){return`${a}`}var Ur=class{constructor(t){this.context=t}static get shouldLoad(){return!0}static afterLoad(t,e){}get application(){return this.context.application}get scope(){return this.context.scope}get element(){return this.scope.element}get identifier(){return this.scope.identifier}get targets(){return this.scope.targets}get outlets(){return this.scope.outlets}get classes(){return this.scope.classes}get data(){return this.scope.data}initialize(){}connect(){}disconnect(){}dispatch(t,{target:e=this.element,detail:o={},prefix:l=this.identifier,bubbles:f=!0,cancelable:h=!0}={}){let v=l?`${l}:${t}`:t,g=new CustomEvent(v,{detail:o,bubbles:f,cancelable:h});return e.dispatchEvent(g),g}};Ur.blessings=[b$t,C$t,M$t,T$t];Ur.targets=[];Ur.outlets=[];Ur.values={};var bb=class extends Ur{show(a){this.menuTarget.style.setProperty("--context-menu-x",`${a.clientX-5}px`),this.menuTarget.style.setProperty("--context-menu-y",`${a.clientY-5}px`),this.menuTarget.classList.add("positioned"),setTimeout(()=>this.menuTarget.showPopover(),150)}};zt(bb,"targets",["menu"]);var wb=class extends Ur{show(){this.menuTarget.show()}showModal(){this.menuTarget.showModal()}close(){this.menuTarget.close()}closeOnClickOutside({target:a}){a.nodeName==="DIALOG"&&this.close()}};zt(wb,"targets",["menu"]);var dy,SI,Sgt,gy,xI,bI,bgt,wI,wgt,TI,Tgt,vy=class extends Ur{constructor(){super(...arguments);Ce(this,SI);Ce(this,gy);Ce(this,bI);Ce(this,wI);Ce(this,TI);Ce(this,dy,void 0)}initialize(){gr(this,dy,new IntersectionObserver(Be(this,SI,Sgt).bind(this)))}connect(){Oe(this,dy).observe(this.element)}disconnect(){Oe(this,dy).disconnect()}prev(){this.indexValue>0&&(this.indexValue--,Be(this,gy,xI).call(this))}next(){this.indexValue<Oe(this,TI,Tgt)&&(this.indexValue++,Be(this,gy,xI).call(this))}};dy=new WeakMap,SI=new WeakSet,Sgt=function([t]){t.isIntersecting&&(this.indexValue=0,Be(this,gy,xI).call(this))},gy=new WeakSet,xI=function(){Be(this,bI,bgt).call(this),Be(this,wI,wgt).call(this)},bI=new WeakSet,bgt=function(){this.itemTargets.forEach((t,e)=>{t.tabIndex=e===this.indexValue?0:-1})},wI=new WeakSet,wgt=function(){this.itemTargets[this.indexValue].focus()},TI=new WeakSet,Tgt=function(){return this.itemTargets.length-1},zt(vy,"targets",["item"]),zt(vy,"values",{index:Number});var my=Math.min,ju=Math.max,Ab=Math.round,Cb=Math.floor,Hs=a=>({x:a,y:a}),N$t={left:"right",right:"left",bottom:"top",top:"bottom"},z$t={start:"end",end:"start"};function Q3(a,t,e){return ju(a,my(t,e))}function Db(a,t){return typeof a=="function"?a(t):a}function qc(a){return a.split("-")[0]}function Mb(a){return a.split("-")[1]}function tW(a){return a==="x"?"y":"x"}function eW(a){return a==="y"?"height":"width"}var V$t=new Set(["top","bottom"]);function Ju(a){return V$t.has(qc(a))?"y":"x"}function rW(a){return tW(Ju(a))}function Dgt(a,t,e){e===void 0&&(e=!1);let o=Mb(a),l=rW(a),f=eW(l),h=l==="x"?o===(e?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[f]>t.floating[f]&&(h=Tb(h)),[h,Tb(h)]}function Mgt(a){let t=Tb(a);return[AI(a),t,AI(t)]}function AI(a){return a.replace(/start|end/g,t=>z$t[t])}var Agt=["left","right"],Cgt=["right","left"],B$t=["top","bottom"],F$t=["bottom","top"];function U$t(a,t,e){switch(a){case"top":case"bottom":return e?t?Cgt:Agt:t?Agt:Cgt;case"left":case"right":return t?B$t:F$t;default:return[]}}function Lgt(a,t,e,o){let l=Mb(a),f=U$t(qc(a),e==="start",o);return l&&(f=f.map(h=>h+"-"+l),t&&(f=f.concat(f.map(AI)))),f}function Tb(a){return a.replace(/left|right|bottom|top/g,t=>N$t[t])}function G$t(a){return{top:0,right:0,bottom:0,left:0,...a}}function Igt(a){return typeof a!="number"?G$t(a):{top:a,right:a,bottom:a,left:a}}function Vv(a){let{x:t,y:e,width:o,height:l}=a;return{width:o,height:l,top:e,left:t,right:t+o,bottom:e+l,x:t,y:e}}function Egt(a,t,e){let{reference:o,floating:l}=a,f=Ju(t),h=rW(t),v=eW(h),g=qc(t),y=f==="y",x=o.x+o.width/2-l.width/2,b=o.y+o.height/2-l.height/2,T=o[v]/2-l[v]/2,C;switch(g){case"top":C={x,y:o.y-l.height};break;case"bottom":C={x,y:o.y+o.height};break;case"right":C={x:o.x+o.width,y:b};break;case"left":C={x:o.x-l.width,y:b};break;default:C={x:o.x,y:o.y}}switch(Mb(t)){case"start":C[h]-=T*(e&&y?-1:1);break;case"end":C[h]+=T*(e&&y?-1:1);break}return C}var Pgt=async(a,t,e)=>{let{placement:o="bottom",strategy:l="absolute",middleware:f=[],platform:h}=e,v=f.filter(Boolean),g=await(h.isRTL==null?void 0:h.isRTL(t)),y=await h.getElementRects({reference:a,floating:t,strategy:l}),{x,y:b}=Egt(y,o,g),T=o,C={},M=0;for(let I=0;I<v.length;I++){let{name:P,fn:O}=v[I],{x:N,y:V,data:F,reset:U}=await O({x,y:b,initialPlacement:o,placement:T,strategy:l,middlewareData:C,rects:y,platform:h,elements:{reference:a,floating:t}});x=N??x,b=V??b,C={...C,[P]:{...C[P],...F}},U&&M<=50&&(M++,typeof U=="object"&&(U.placement&&(T=U.placement),U.rects&&(y=U.rects===!0?await h.getElementRects({reference:a,floating:t,strategy:l}):U.rects),{x,y:b}=Egt(y,T,g)),I=-1)}return{x,y:b,placement:T,strategy:l,middlewareData:C}};async function iW(a,t){var e;t===void 0&&(t={});let{x:o,y:l,platform:f,rects:h,elements:v,strategy:g}=a,{boundary:y="clippingAncestors",rootBoundary:x="viewport",elementContext:b="floating",altBoundary:T=!1,padding:C=0}=Db(t,a),M=Igt(C),P=v[T?b==="floating"?"reference":"floating":b],O=Vv(await f.getClippingRect({element:(e=await(f.isElement==null?void 0:f.isElement(P)))==null||e?P:P.contextElement||await(f.getDocumentElement==null?void 0:f.getDocumentElement(v.floating)),boundary:y,rootBoundary:x,strategy:g})),N=b==="floating"?{x:o,y:l,width:h.floating.width,height:h.floating.height}:h.reference,V=await(f.getOffsetParent==null?void 0:f.getOffsetParent(v.floating)),F=await(f.isElement==null?void 0:f.isElement(V))?await(f.getScale==null?void 0:f.getScale(V))||{x:1,y:1}:{x:1,y:1},U=Vv(f.convertOffsetParentRelativeRectToViewportRelativeRect?await f.convertOffsetParentRelativeRectToViewportRelativeRect({elements:v,rect:N,offsetParent:V,strategy:g}):N);return{top:(O.top-U.top+M.top)/F.y,bottom:(U.bottom-O.bottom+M.bottom)/F.y,left:(O.left-U.left+M.left)/F.x,right:(U.right-O.right+M.right)/F.x}}var Rgt=function(a){return a===void 0&&(a={}),{name:"flip",options:a,async fn(t){var e,o;let{placement:l,middlewareData:f,rects:h,initialPlacement:v,platform:g,elements:y}=t,{mainAxis:x=!0,crossAxis:b=!0,fallbackPlacements:T,fallbackStrategy:C="bestFit",fallbackAxisSideDirection:M="none",flipAlignment:I=!0,...P}=Db(a,t);if((e=f.arrow)!=null&&e.alignmentOffset)return{};let O=qc(l),N=Ju(v),V=qc(v)===v,F=await(g.isRTL==null?void 0:g.isRTL(y.floating)),U=T||(V||!I?[Tb(v)]:Mgt(v)),H=M!=="none";!T&&H&&U.push(...Lgt(v,I,M,F));let Z=[v,...U],$=await iW(t,P),K=[],Q=((o=f.flip)==null?void 0:o.overflows)||[];if(x&&K.push($[O]),b){let ft=Dgt(l,h,F);K.push($[ft[0]],$[ft[1]])}if(Q=[...Q,{placement:l,overflows:K}],!K.every(ft=>ft<=0)){var rt,nt;let ft=(((rt=f.flip)==null?void 0:rt.index)||0)+1,lt=Z[ft];if(lt&&(!(b==="alignment"?N!==Ju(lt):!1)||Q.every(st=>st.overflows[0]>0&&Ju(st.placement)===N)))return{data:{index:ft,overflows:Q},reset:{placement:lt}};let pt=(nt=Q.filter(xt=>xt.overflows[0]<=0).sort((xt,st)=>xt.overflows[1]-st.overflows[1])[0])==null?void 0:nt.placement;if(!pt)switch(C){case"bestFit":{var ot;let xt=(ot=Q.filter(st=>{if(H){let dt=Ju(st.placement);return dt===N||dt==="y"}return!0}).map(st=>[st.placement,st.overflows.filter(dt=>dt>0).reduce((dt,Et)=>dt+Et,0)]).sort((st,dt)=>st[1]-dt[1])[0])==null?void 0:ot[0];xt&&(pt=xt);break}case"initialPlacement":pt=v;break}if(l!==pt)return{reset:{placement:pt}}}return{}}}};var H$t=new Set(["left","top"]);async function W$t(a,t){let{placement:e,platform:o,elements:l}=a,f=await(o.isRTL==null?void 0:o.isRTL(l.floating)),h=qc(e),v=Mb(e),g=Ju(e)==="y",y=H$t.has(h)?-1:1,x=f&&g?-1:1,b=Db(t,a),{mainAxis:T,crossAxis:C,alignmentAxis:M}=typeof b=="number"?{mainAxis:b,crossAxis:0,alignmentAxis:null}:{mainAxis:b.mainAxis||0,crossAxis:b.crossAxis||0,alignmentAxis:b.alignmentAxis};return v&&typeof M=="number"&&(C=v==="end"?M*-1:M),g?{x:C*x,y:T*y}:{x:T*y,y:C*x}}var Ogt=function(a){return a===void 0&&(a=0),{name:"offset",options:a,async fn(t){var e,o;let{x:l,y:f,placement:h,middlewareData:v}=t,g=await W$t(t,a);return h===((e=v.offset)==null?void 0:e.placement)&&(o=v.arrow)!=null&&o.alignmentOffset?{}:{x:l+g.x,y:f+g.y,data:{...g,placement:h}}}}},kgt=function(a){return a===void 0&&(a={}),{name:"shift",options:a,async fn(t){let{x:e,y:o,placement:l}=t,{mainAxis:f=!0,crossAxis:h=!1,limiter:v={fn:P=>{let{x:O,y:N}=P;return{x:O,y:N}}},...g}=Db(a,t),y={x:e,y:o},x=await iW(t,g),b=Ju(qc(l)),T=tW(b),C=y[T],M=y[b];if(f){let P=T==="y"?"top":"left",O=T==="y"?"bottom":"right",N=C+x[P],V=C-x[O];C=Q3(N,C,V)}if(h){let P=b==="y"?"top":"left",O=b==="y"?"bottom":"right",N=M+x[P],V=M-x[O];M=Q3(N,M,V)}let I=v.fn({...t,[T]:C,[b]:M});return{...I,data:{x:I.x-e,y:I.y-o,enabled:{[T]:f,[b]:h}}}}}};function CI(){return typeof window<"u"}function Bv(a){return zgt(a)?(a.nodeName||"").toLowerCase():"#document"}function In(a){var t;return(a==null||(t=a.ownerDocument)==null?void 0:t.defaultView)||window}function Ws(a){var t;return(t=(zgt(a)?a.ownerDocument:a.document)||window.document)==null?void 0:t.documentElement}function zgt(a){return CI()?a instanceof Node||a instanceof In(a).Node:!1}function as(a){return CI()?a instanceof Element||a instanceof In(a).Element:!1}function Ys(a){return CI()?a instanceof HTMLElement||a instanceof In(a).HTMLElement:!1}function Ngt(a){return!CI()||typeof ShadowRoot>"u"?!1:a instanceof ShadowRoot||a instanceof In(a).ShadowRoot}var Y$t=new Set(["inline","contents"]);function _y(a){let{overflow:t,overflowX:e,overflowY:o,display:l}=ns(a);return/auto|scroll|overlay|hidden|clip/.test(t+o+e)&&!Y$t.has(l)}var Z$t=new Set(["table","td","th"]);function Vgt(a){return Z$t.has(Bv(a))}var X$t=[":popover-open",":modal"];function Lb(a){return X$t.some(t=>{try{return a.matches(t)}catch{return!1}})}var q$t=["transform","translate","scale","rotate","perspective"],$$t=["transform","translate","scale","rotate","perspective","filter"],K$t=["paint","layout","strict","content"];function DI(a){let t=MI(),e=as(a)?ns(a):a;return q$t.some(o=>e[o]?e[o]!=="none":!1)||(e.containerType?e.containerType!=="normal":!1)||!t&&(e.backdropFilter?e.backdropFilter!=="none":!1)||!t&&(e.filter?e.filter!=="none":!1)||$$t.some(o=>(e.willChange||"").includes(o))||K$t.some(o=>(e.contain||"").includes(o))}function Bgt(a){let t=Qu(a);for(;Ys(t)&&!Fv(t);){if(DI(t))return t;if(Lb(t))return null;t=Qu(t)}return null}function MI(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}var j$t=new Set(["html","body","#document"]);function Fv(a){return j$t.has(Bv(a))}function ns(a){return In(a).getComputedStyle(a)}function Ib(a){return as(a)?{scrollLeft:a.scrollLeft,scrollTop:a.scrollTop}:{scrollLeft:a.scrollX,scrollTop:a.scrollY}}function Qu(a){if(Bv(a)==="html")return a;let t=a.assignedSlot||a.parentNode||Ngt(a)&&a.host||Ws(a);return Ngt(t)?t.host:t}function Fgt(a){let t=Qu(a);return Fv(t)?a.ownerDocument?a.ownerDocument.body:a.body:Ys(t)&&_y(t)?t:Fgt(t)}function yy(a,t,e){var o;t===void 0&&(t=[]),e===void 0&&(e=!0);let l=Fgt(a),f=l===((o=a.ownerDocument)==null?void 0:o.body),h=In(l);if(f){let v=LI(h);return t.concat(h,h.visualViewport||[],_y(l)?l:[],v&&e?yy(v):[])}return t.concat(l,yy(l,[],e))}function LI(a){return a.parent&&Object.getPrototypeOf(a.parent)?a.frameElement:null}function Hgt(a){let t=ns(a),e=parseFloat(t.width)||0,o=parseFloat(t.height)||0,l=Ys(a),f=l?a.offsetWidth:e,h=l?a.offsetHeight:o,v=Ab(e)!==f||Ab(o)!==h;return v&&(e=f,o=h),{width:e,height:o,$:v}}function nW(a){return as(a)?a:a.contextElement}function xy(a){let t=nW(a);if(!Ys(t))return Hs(1);let e=t.getBoundingClientRect(),{width:o,height:l,$:f}=Hgt(t),h=(f?Ab(e.width):e.width)/o,v=(f?Ab(e.height):e.height)/l;return(!h||!Number.isFinite(h))&&(h=1),(!v||!Number.isFinite(v))&&(v=1),{x:h,y:v}}var J$t=Hs(0);function Wgt(a){let t=In(a);return!MI()||!t.visualViewport?J$t:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Q$t(a,t,e){return t===void 0&&(t=!1),!e||t&&e!==In(a)?!1:t}function Uv(a,t,e,o){t===void 0&&(t=!1),e===void 0&&(e=!1);let l=a.getBoundingClientRect(),f=nW(a),h=Hs(1);t&&(o?as(o)&&(h=xy(o)):h=xy(a));let v=Q$t(f,e,o)?Wgt(f):Hs(0),g=(l.left+v.x)/h.x,y=(l.top+v.y)/h.y,x=l.width/h.x,b=l.height/h.y;if(f){let T=In(f),C=o&&as(o)?In(o):o,M=T,I=LI(M);for(;I&&o&&C!==M;){let P=xy(I),O=I.getBoundingClientRect(),N=ns(I),V=O.left+(I.clientLeft+parseFloat(N.paddingLeft))*P.x,F=O.top+(I.clientTop+parseFloat(N.paddingTop))*P.y;g*=P.x,y*=P.y,x*=P.x,b*=P.y,g+=V,y+=F,M=In(I),I=LI(M)}}return Vv({width:x,height:b,x:g,y})}function oW(a,t){let e=Ib(a).scrollLeft;return t?t.left+e:Uv(Ws(a)).left+e}function Ygt(a,t,e){e===void 0&&(e=!1);let o=a.getBoundingClientRect(),l=o.left+t.scrollLeft-(e?0:oW(a,o)),f=o.top+t.scrollTop;return{x:l,y:f}}function tKt(a){let{elements:t,rect:e,offsetParent:o,strategy:l}=a,f=l==="fixed",h=Ws(o),v=t?Lb(t.floating):!1;if(o===h||v&&f)return e;let g={scrollLeft:0,scrollTop:0},y=Hs(1),x=Hs(0),b=Ys(o);if((b||!b&&!f)&&((Bv(o)!=="body"||_y(h))&&(g=Ib(o)),Ys(o))){let C=Uv(o);y=xy(o),x.x=C.x+o.clientLeft,x.y=C.y+o.clientTop}let T=h&&!b&&!f?Ygt(h,g,!0):Hs(0);return{width:e.width*y.x,height:e.height*y.y,x:e.x*y.x-g.scrollLeft*y.x+x.x+T.x,y:e.y*y.y-g.scrollTop*y.y+x.y+T.y}}function eKt(a){return Array.from(a.getClientRects())}function rKt(a){let t=Ws(a),e=Ib(a),o=a.ownerDocument.body,l=ju(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),f=ju(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight),h=-e.scrollLeft+oW(a),v=-e.scrollTop;return ns(o).direction==="rtl"&&(h+=ju(t.clientWidth,o.clientWidth)-l),{width:l,height:f,x:h,y:v}}function iKt(a,t){let e=In(a),o=Ws(a),l=e.visualViewport,f=o.clientWidth,h=o.clientHeight,v=0,g=0;if(l){f=l.width,h=l.height;let y=MI();(!y||y&&t==="fixed")&&(v=l.offsetLeft,g=l.offsetTop)}return{width:f,height:h,x:v,y:g}}var aKt=new Set(["absolute","fixed"]);function nKt(a,t){let e=Uv(a,!0,t==="fixed"),o=e.top+a.clientTop,l=e.left+a.clientLeft,f=Ys(a)?xy(a):Hs(1),h=a.clientWidth*f.x,v=a.clientHeight*f.y,g=l*f.x,y=o*f.y;return{width:h,height:v,x:g,y}}function Ugt(a,t,e){let o;if(t==="viewport")o=iKt(a,e);else if(t==="document")o=rKt(Ws(a));else if(as(t))o=nKt(t,e);else{let l=Wgt(a);o={x:t.x-l.x,y:t.y-l.y,width:t.width,height:t.height}}return Vv(o)}function Zgt(a,t){let e=Qu(a);return e===t||!as(e)||Fv(e)?!1:ns(e).position==="fixed"||Zgt(e,t)}function oKt(a,t){let e=t.get(a);if(e)return e;let o=yy(a,[],!1).filter(v=>as(v)&&Bv(v)!=="body"),l=null,f=ns(a).position==="fixed",h=f?Qu(a):a;for(;as(h)&&!Fv(h);){let v=ns(h),g=DI(h);!g&&v.position==="fixed"&&(l=null),(f?!g&&!l:!g&&v.position==="static"&&!!l&&aKt.has(l.position)||_y(h)&&!g&&Zgt(a,h))?o=o.filter(x=>x!==h):l=v,h=Qu(h)}return t.set(a,o),o}function sKt(a){let{element:t,boundary:e,rootBoundary:o,strategy:l}=a,h=[...e==="clippingAncestors"?Lb(t)?[]:oKt(t,this._c):[].concat(e),o],v=h[0],g=h.reduce((y,x)=>{let b=Ugt(t,x,l);return y.top=ju(b.top,y.top),y.right=my(b.right,y.right),y.bottom=my(b.bottom,y.bottom),y.left=ju(b.left,y.left),y},Ugt(t,v,l));return{width:g.right-g.left,height:g.bottom-g.top,x:g.left,y:g.top}}function lKt(a){let{width:t,height:e}=Hgt(a);return{width:t,height:e}}function uKt(a,t,e){let o=Ys(t),l=Ws(t),f=e==="fixed",h=Uv(a,!0,f,t),v={scrollLeft:0,scrollTop:0},g=Hs(0);function y(){g.x=oW(l)}if(o||!o&&!f)if((Bv(t)!=="body"||_y(l))&&(v=Ib(t)),o){let C=Uv(t,!0,f,t);g.x=C.x+t.clientLeft,g.y=C.y+t.clientTop}else l&&y();f&&!o&&l&&y();let x=l&&!o&&!f?Ygt(l,v):Hs(0),b=h.left+v.scrollLeft-g.x-x.x,T=h.top+v.scrollTop-g.y-x.y;return{x:b,y:T,width:h.width,height:h.height}}function aW(a){return ns(a).position==="static"}function Ggt(a,t){if(!Ys(a)||ns(a).position==="fixed")return null;if(t)return t(a);let e=a.offsetParent;return Ws(a)===e&&(e=e.ownerDocument.body),e}function Xgt(a,t){let e=In(a);if(Lb(a))return e;if(!Ys(a)){let l=Qu(a);for(;l&&!Fv(l);){if(as(l)&&!aW(l))return l;l=Qu(l)}return e}let o=Ggt(a,t);for(;o&&Vgt(o)&&aW(o);)o=Ggt(o,t);return o&&Fv(o)&&aW(o)&&!DI(o)?e:o||Bgt(a)||e}var fKt=async function(a){let t=this.getOffsetParent||Xgt,e=this.getDimensions,o=await e(a.floating);return{reference:uKt(a.reference,await t(a.floating),a.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function cKt(a){return ns(a).direction==="rtl"}var hKt={convertOffsetParentRelativeRectToViewportRelativeRect:tKt,getDocumentElement:Ws,getClippingRect:sKt,getOffsetParent:Xgt,getElementRects:fKt,getClientRects:eKt,getDimensions:lKt,getScale:xy,isElement:as,isRTL:cKt};function qgt(a,t){return a.x===t.x&&a.y===t.y&&a.width===t.width&&a.height===t.height}function pKt(a,t){let e=null,o,l=Ws(a);function f(){var v;clearTimeout(o),(v=e)==null||v.disconnect(),e=null}function h(v,g){v===void 0&&(v=!1),g===void 0&&(g=1),f();let y=a.getBoundingClientRect(),{left:x,top:b,width:T,height:C}=y;if(v||t(),!T||!C)return;let M=Cb(b),I=Cb(l.clientWidth-(x+T)),P=Cb(l.clientHeight-(b+C)),O=Cb(x),V={rootMargin:-M+"px "+-I+"px "+-P+"px "+-O+"px",threshold:ju(0,my(1,g))||1},F=!0;function U(H){let Z=H[0].intersectionRatio;if(Z!==g){if(!F)return h();Z?h(!1,Z):o=setTimeout(()=>{h(!1,1e-7)},1e3)}Z===1&&!qgt(y,a.getBoundingClientRect())&&h(),F=!1}try{e=new IntersectionObserver(U,{...V,root:l.ownerDocument})}catch{e=new IntersectionObserver(U,V)}e.observe(a)}return h(!0),f}function $gt(a,t,e,o){o===void 0&&(o={});let{ancestorScroll:l=!0,ancestorResize:f=!0,elementResize:h=typeof ResizeObserver=="function",layoutShift:v=typeof IntersectionObserver=="function",animationFrame:g=!1}=o,y=nW(a),x=l||f?[...y?yy(y):[],...yy(t)]:[];x.forEach(O=>{l&&O.addEventListener("scroll",e,{passive:!0}),f&&O.addEventListener("resize",e)});let b=y&&v?pKt(y,e):null,T=-1,C=null;h&&(C=new ResizeObserver(O=>{let[N]=O;N&&N.target===y&&C&&(C.unobserve(t),cancelAnimationFrame(T),T=requestAnimationFrame(()=>{var V;(V=C)==null||V.observe(t)})),e()}),y&&!g&&C.observe(y),C.observe(t));let M,I=g?Uv(a):null;g&&P();function P(){let O=Uv(a);I&&!qgt(I,O)&&e(),I=O,M=requestAnimationFrame(P)}return e(),()=>{var O;x.forEach(N=>{l&&N.removeEventListener("scroll",e),f&&N.removeEventListener("resize",e)}),b?.(),(O=C)==null||O.disconnect(),C=null,g&&cancelAnimationFrame(M)}}var Kgt=Ogt;var jgt=kgt,Jgt=Rgt;var Qgt=(a,t,e)=>{let o=new Map,l={platform:hKt,...e},f={...l.platform,_c:o};return Pgt(a,t,{...l,platform:f})};var Eb,Pb,II,tmt,Sy=class extends Ur{constructor(){super(...arguments);Ce(this,II);Ce(this,Eb,null);Ce(this,Pb,null)}initialize(){this.orient=this.orient.bind(this)}connect(){this.cleanup=$gt(this.buttonTarget,this.menuTarget,this.orient)}disconnect(){this.cleanup()}show(t){t&&t.preventDefault(),this.menuTarget.showPopover({source:this.buttonTarget}),this.orient(),this.loadOperationDetailsIfNeeded()}hide(){this.menuTarget.hidePopover()}toggle(t){t.preventDefault(),this.menuTarget.togglePopover({source:this.buttonTarget}),this.orient(),this.loadOperationDetailsIfNeeded()}debouncedShow(){clearTimeout(Oe(this,Pb)),gr(this,Eb,setTimeout(()=>this.show(),700))}debouncedHide(){clearTimeout(Oe(this,Eb)),gr(this,Pb,setTimeout(()=>this.hide(),300))}orient(){Qgt(this.buttonTarget,this.menuTarget,Oe(this,II,tmt)).then(({x:t,y:e})=>{this.menuTarget.style.setProperty("--popover-x",`${t}px`),this.menuTarget.style.setProperty("--popover-y",`${e}px`),this.menuTarget.classList.add("positioned")})}loadOperationDetailsIfNeeded(){let t=this.menuTarget.dataset.operationUrl;if(!t)return;let e=this.menuTarget.querySelector("turbo-frame");!e||!this.hasLoadingContent(e)||(e.src=t)}hasLoadingContent(t){return(t.textContent||"").includes("Loading operation details")}};Eb=new WeakMap,Pb=new WeakMap,II=new WeakSet,tmt=function(){return{placement:this.placementValue,middleware:[Kgt(4),Jgt(),jgt({padding:4})]}},zt(Sy,"targets",["button","menu"]),zt(Sy,"values",{placement:{type:String,default:"bottom"}});var Rb=class extends Ur{initialize(){this.search=this.debounce(this.search.bind(this),500)}debounce(a,t){let e;return function(...l){let f=()=>{clearTimeout(e),a(...l)};clearTimeout(e),e=setTimeout(f,t)}}submit(){this.element.requestSubmit()}search(){this.element.requestSubmit()}cancel(){this.cancelTarget?.click()}preventAttachment(a){a.preventDefault()}};zt(Rb,"targets",["cancel"]);var by=class extends Ur{constructor(){super(...arguments);zt(this,"lastTurboFrameRequestAt",0);zt(this,"pendingRequestTimeout",null);zt(this,"pendingRequestData",null)}connect(){this.handleChartInitialized=this.onChartInitialized.bind(this),document.addEventListener("chart:rendered",this.handleChartInitialized),window.RailsCharts?.charts?.[this.chartIdValue]&&this.setup()}disconnect(){document.removeEventListener("chart:rendered",this.handleChartInitialized),this.hasChartTarget&&this.chartTarget&&(this.chartTarget.removeEventListener("mousedown",this.handleChartMouseDown),this.chartTarget.removeEventListener("mouseup",this.handleChartMouseUp)),document.removeEventListener("mouseup",this.handleDocumentMouseUp),this.pendingRequestTimeout&&clearTimeout(this.pendingRequestTimeout)}onChartInitialized(t){t.detail.containerId===this.chartIdValue&&this.setup()}setup(){if(this.setupDone)return;let t=!1;try{t=!!this.chartTarget}catch{t=!1}this.chart=window.RailsCharts.charts[this.chartIdValue],!(!t||!this.chart)&&(this.visibleData=this.getVisibleData(),this.setupChartEventListeners(),this.setupDone=!0,t&&document.getElementById(this.chartIdValue)?.setAttribute("data-chart-rendered","true"))}setupChartEventListeners(){this.handleChartMouseDown=()=>{this.visibleData=this.getVisibleData()},this.chartTarget.addEventListener("mousedown",this.handleChartMouseDown),this.handleChartMouseUp=()=>{this.handleZoomChange()},this.chartTarget.addEventListener("mouseup",this.handleChartMouseUp),this.chart.on("datazoom",()=>{this.handleZoomChange()}),this.handleDocumentMouseUp=()=>{this.handleZoomChange()},document.addEventListener("mouseup",this.handleDocumentMouseUp)}getVisibleData(){try{let t=this.chart.getOption();if(!t.dataZoom||t.dataZoom.length===0)return{xAxis:[],series:[]};let e=t.dataZoom[1]||t.dataZoom[0];if(!t.xAxis||!t.xAxis[0]||!t.xAxis[0].data)return{xAxis:[],series:[]};if(!t.series||!t.series[0]||!t.series[0].data)return{xAxis:[],series:[]};let o=t.xAxis[0].data,l=t.series[0].data,f=e.startValue||0,h=e.endValue||o.length-1;return{xAxis:o.slice(f,h+1),series:l.slice(f,h+1)}}catch{return{xAxis:[],series:[]}}}handleZoomChange(){let t=this.getVisibleData(),e=t.xAxis.join(),o=this.visibleData.xAxis.join();e!==o&&(this.visibleData=t,this.updateUrlWithZoomParams(t),this.sendTurboFrameRequest(t))}updateUrlWithZoomParams(t){let e=new URL(window.location.href),o=new URLSearchParams(e.search),l=t.xAxis[0],f=t.xAxis[t.xAxis.length-1];o.set("zoom_start_time",l),o.set("zoom_end_time",f),e.search=o.toString(),window.history.replaceState({},"",e)}updatePaginationLimit(){let t=new URL(window.location.href),e=new URLSearchParams(t.search),o=this.paginationLimitTarget.value;e.set("limit",o),t.search=e.toString(),window.history.replaceState({},"",t)}sendTurboFrameRequest(t){let o=Date.now()-this.lastTurboFrameRequestAt;if(this.pendingRequestData=t,this.pendingRequestTimeout&&clearTimeout(this.pendingRequestTimeout),o>=1e3)this.executeTurboFrameRequest(t);else{let l=1e3-o;this.pendingRequestTimeout=setTimeout(()=>{this.executeTurboFrameRequest(this.pendingRequestData),this.pendingRequestTimeout=null},l)}}executeTurboFrameRequest(t){this.lastTurboFrameRequestAt=Date.now();let e=new URL(window.location.href),o=new URLSearchParams(e.search),l=t.xAxis[0],f=t.xAxis[t.xAxis.length-1];o.set("zoom_start_time",l),o.set("zoom_end_time",f),e.searchParams.set("limit",this.paginationLimitTarget.value),e.search=o.toString(),fetch(e,{method:"GET",headers:{Accept:"text/html; turbo-frame","Turbo-Frame":this.chartIdValue}}).then(h=>h.text()).then(h=>{let v=this.indexTableTarget;if(v){let x=new DOMParser().parseFromString(h,"text/html").querySelector(`turbo-frame#${v.id}`);x?this.replaceFrameContent(v,x):this.replaceFrameContentFromHTML(v,h)}}).catch(h=>console.error("[IndexController] Fetch error:",h))}replaceFrameContent(t,e){try{for(;t.firstChild;)t.removeChild(t.firstChild);Array.from(e.childNodes).forEach(l=>{let f=l.cloneNode(!0);t.appendChild(f)})}catch(o){console.error("Error replacing frame content:",o),t.innerHTML=e.innerHTML}}replaceFrameContentFromHTML(t,e){try{let l=new DOMParser().parseFromString(e,"text/html");for(;t.firstChild;)t.removeChild(t.firstChild);Array.from(l.body.childNodes).forEach(h=>{let v=h.cloneNode(!0);t.appendChild(v)})}catch(o){console.error("Error parsing HTML content:",o),t.innerHTML=e}}};zt(by,"targets",["chart","paginationLimit","indexTable"]),zt(by,"values",{chartId:String});var EI=class extends Ur{connect(){this.storageKey="color-scheme",this.html=document.documentElement;let a=localStorage.getItem(this.storageKey);a&&this.html.setAttribute("data-color-scheme",a)}toggle(a){a.preventDefault();let t=this.html.getAttribute("data-color-scheme")==="dark"?"light":"dark";console.log("Toggling color scheme to",t),this.html.setAttribute("data-color-scheme",t),localStorage.setItem(this.storageKey,t)}};var wy=class extends Ur{connect(){this.restorePaginationLimit()}updateLimit(){let a=this.limitTarget.value;sessionStorage.setItem(this.storageKeyValue,a);let t=this.element.closest("turbo-frame");if(t){let e=new URL(window.location);e.searchParams.set("limit",a),t.src=e.pathname+e.search}else{let e=new URL(window.location);e.searchParams.set("limit",a),window.location.href=e.pathname+e.search}}getCSRFToken(){let a=document.querySelector('meta[name="csrf-token"]');return a?a.getAttribute("content"):""}savePaginationLimit(){let a=this.limitTarget.value;sessionStorage.setItem(this.storageKeyValue,a)}restorePaginationLimit(){let a=sessionStorage.getItem(this.storageKeyValue);a&&this.limitTarget&&this.limitTarget.value!==a&&(this.limitTarget.value=a)}};zt(wy,"targets",["limit"]),zt(wy,"values",{storageKey:{type:String,default:"rails_pulse_pagination_limit"},url:String});var Ob=class extends Ur{connect(){this.updateTimestamp(),this.setupObserver(),this.setupTurboFrameListener()}disconnect(){this.observer&&this.observer.disconnect(),this.frameObserver&&this.frameObserver.disconnect(),this.documentObserver&&this.documentObserver.disconnect(),this.turboFrameListener&&document.removeEventListener("turbo:frame-load",this.turboFrameListener)}setupObserver(){if(this.targetFrameValue){this.updateTimestamp();let a=new MutationObserver(()=>{let t=document.getElementById(this.targetFrameValue);t&&(this.updateTimestamp(),this.frameObserver&&this.frameObserver.disconnect(),this.frameObserver=new MutationObserver(()=>{this.updateTimestamp()}),this.frameObserver.observe(t,{attributes:!0,attributeFilter:["data-cached-at"],childList:!0,subtree:!0}))});a.observe(document.body,{childList:!0,subtree:!0}),this.documentObserver=a}}cachedAtValueChanged(){this.updateTimestamp()}setupTurboFrameListener(){this.targetFrameValue&&(this.turboFrameListener=a=>{a.target&&a.target.id===this.targetFrameValue&&this.updateTimestamp()},document.addEventListener("turbo:frame-load",this.turboFrameListener))}updateTimestamp(){let a=this.cachedAtValue;if(!a&&this.targetFrameValue){let t=document.getElementById(this.targetFrameValue);t&&(a=t.dataset.cachedAt)}if(a)try{let e=new Date(a).toLocaleString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0});this.element.title=`Last updated: ${e}`}catch{this.element.title="Cache time unavailable"}else this.element.title="Cache time unavailable"}};zt(Ob,"values",{cachedAt:String,targetFrame:String});var Ty=class extends Ur{connect(){this.renderIcon()}nameValueChanged(){this.renderIcon()}renderIcon(){this.clearIcon(),this.element.classList.add(...this.loadingClasses),this.element.classList.remove(...this.errorClasses,...this.loadedClasses);let a=this.nameValue;if(!a){this.handleError("Icon name is required");return}if(!window.RailsPulseIcons){this.handleError("RailsPulseIcons not loaded");return}let t=window.RailsPulseIcons.get(a);if(!t){this.handleError(`Icon '${a}' not found`);return}try{let e=this.createSVGElement(t);this.element.appendChild(e),this.element.classList.remove(...this.loadingClasses,...this.errorClasses),this.element.classList.add(...this.loadedClasses),this.element.setAttribute("aria-label",`${a} icon`)}catch(e){this.handleError(`Failed to render icon '${a}': ${e.message}`)}}createSVGElement(a){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");if(t.setAttribute("width",this.widthValue||"24"),t.setAttribute("height",this.heightValue||"24"),t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width",this.strokeWidthValue||"2"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),window.RailsPulseIcons.render){let f=document.createElement("div");if(window.RailsPulseIcons.render(this.nameValue,f,{width:this.widthValue||"24",height:this.heightValue||"24"})&&f.firstChild)return f.firstChild}let l=new DOMParser().parseFromString(`<svg xmlns="http://www.w3.org/2000/svg" width="${this.widthValue||"24"}" height="${this.heightValue||"24"}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="${this.strokeWidthValue||"2"}" stroke-linecap="round" stroke-linejoin="round">${a}</svg>`,"image/svg+xml").documentElement;if(l.nodeName==="parsererror")throw new Error("Invalid SVG content");return document.importNode(l,!0)}clearIcon(){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild)}handleError(a){console.warn(`[Rails Pulse Icon Controller] ${a}`),this.clearIcon(),this.element.classList.remove(...this.loadingClasses,...this.loadedClasses),this.element.classList.add(...this.errorClasses),this.createErrorPlaceholder(),this.element.setAttribute("aria-label","Icon not available")}createErrorPlaceholder(){let a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("width",this.widthValue||"24"),a.setAttribute("height",this.heightValue||"24"),a.setAttribute("viewBox","0 0 24 24"),a.setAttribute("fill","currentColor"),a.setAttribute("opacity","0.3");let t=document.createElementNS("http://www.w3.org/2000/svg","rect");t.setAttribute("width","20"),t.setAttribute("height","20"),t.setAttribute("x","2"),t.setAttribute("y","2"),t.setAttribute("rx","2"),a.appendChild(t),this.element.appendChild(a)}listAvailableIcons(){window.RailsPulseIcons?.list?console.log("Available icons:",window.RailsPulseIcons.list()):console.warn("RailsPulseIcons not loaded or list method not available")}};zt(Ty,"values",{name:String,width:String,height:String,strokeWidth:String}),zt(Ty,"classes",["loading","error","loaded"]);var kb=class extends Ur{connect(){this.detailsTarget.classList.add("hidden"),this.loaded=!1}toggle(a){a.preventDefault(),a.stopPropagation();let t=!this.detailsTarget.classList.contains("hidden");console.log("Toggle clicked, currently expanded:",t),console.log("isExpanded",t),t?(console.log("Collapsing..."),this.collapse()):(console.log("Expanding..."),this.expand())}expand(){this.detailsTarget.classList.remove("hidden"),this.chevronTarget.style.transform="rotate(90deg)",this.triggerTarget.classList.add("expanded"),this.loaded||(this.loadOperationDetails(),this.loaded=!0)}loadOperationDetails(){let a=this.detailsTarget.querySelector("turbo-frame");if(a){let t=a.dataset.operationUrl;t&&(a.src=t)}}collapse(){this.detailsTarget.classList.add("hidden"),this.chevronTarget.style.transform="rotate(0deg)",this.triggerTarget.classList.remove("expanded")}};zt(kb,"targets",["trigger","details","chevron"]);var En=yI.start();En.debug=!1;window.Stimulus=En;window.echarts=BH;window.Turbo=D3;En.register("rails-pulse--context-menu",bb);En.register("rails-pulse--dialog",wb);En.register("rails-pulse--menu",vy);En.register("rails-pulse--popover",Sy);En.register("rails-pulse--form",Rb);En.register("rails-pulse--index",by);En.register("rails-pulse--color-scheme",EI);En.register("rails-pulse--pagination",wy);En.register("rails-pulse--timezone",Ob);En.register("rails-pulse--icon",Ty);En.register("rails-pulse--expandable-row",kb);document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("turbo-frame[src]:not([complete])").forEach(t=>{let e=t.getAttribute("src");e&&(t.removeAttribute("src"),setTimeout(()=>t.setAttribute("src",e),10))})});var vKt=new MutationObserver(a=>{a.forEach(t=>{t.type==="childList"&&t.addedNodes.forEach(e=>{if(e.nodeType===1&&e.tagName==="TURBO-FRAME"&&e.hasAttribute("src")&&!e.hasAttribute("complete")){let o=e.getAttribute("src");o&&(e.removeAttribute("src"),setTimeout(()=>e.setAttribute("src",o),10))}})})});vKt.observe(document.body,{childList:!0,subtree:!0});Xx("railspulse",{color:["#ffc91f","#ffde66","#fbedbf"],backgroundColor:"rgba(255,255,255,0)",textStyle:{},title:{textStyle:{color:"#666666"}},line:{lineStyle:{width:"3"},symbolSize:"8"},bar:{itemStyle:{barBorderWidth:0}}});window.addEventListener("resize",function(){window.RailsCharts&&window.RailsCharts.charts&&Object.keys(window.RailsCharts.charts).forEach(function(a){window.RailsCharts.charts[a].resize()})});window.initializeChartsInContainer=function(a){requestAnimationFrame(()=>{(a?document.getElementById(a):document).querySelectorAll("script").forEach(o=>{let f=o.textContent.match(/function\s+(init_rails_charts_[a-f0-9]+)/);f&&window[f[1]]&&window[f[1]]()})})};window.RailsPulse={application:En,version:"1.0.0"};})();
|
124
124
|
/*! Bundled license information:
|
125
125
|
|
126
126
|
echarts/dist/echarts.js:
|