Files
fuel-alert/public/js/filament/filament/app.js
Ovidiu U d5fb7f85bd
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
feat: add Filament admin panel with migrations and design spec
- Add AdminPanelProvider mounting panel at `/admin` with `is_admin` auth guard
- Add `is_admin` boolean column to users table
- Add brent_prices and price_predictions tables with appropriate indexes
- Add comprehensive admin design spec covering resources, dashboard, navigation, and build order
- Configure default panel with amber primary color and standard middleware stack
- Add compiled Filament assets (actions.js, app.css)
2026-04-04 13:40:56 +01:00

2 lines
12 KiB
JavaScript

(()=>{var re=Object.create,K=Object.defineProperty,ne=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty,oe=Object.getOwnPropertyNames,ae=Object.getOwnPropertyDescriptor,se=t=>K(t,"__esModule",{value:!0}),le=(t,n)=>()=>(n||(n={exports:{}},t(n.exports,n)),n.exports),fe=(t,n,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of oe(n))!ie.call(t,a)&&a!=="default"&&K(t,a,{get:()=>n[a],enumerable:!(i=ae(n,a))||i.enumerable});return t},ce=t=>fe(se(K(t!=null?re(ne(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t),ue=le((t,n)=>{(function(i,a,w){if(!i)return;for(var c={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},y={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},v={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},S={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},A,m=1;m<20;++m)c[111+m]="f"+m;for(m=0;m<=9;++m)c[m+96]=m.toString();function P(e,r,s){if(e.addEventListener){e.addEventListener(r,s,!1);return}e.attachEvent("on"+r,s)}function U(e){if(e.type=="keypress"){var r=String.fromCharCode(e.which);return e.shiftKey||(r=r.toLowerCase()),r}return c[e.which]?c[e.which]:y[e.which]?y[e.which]:String.fromCharCode(e.which).toLowerCase()}function F(e,r){return e.sort().join(",")===r.sort().join(",")}function V(e){var r=[];return e.shiftKey&&r.push("shift"),e.altKey&&r.push("alt"),e.ctrlKey&&r.push("ctrl"),e.metaKey&&r.push("meta"),r}function H(e){if(e.preventDefault){e.preventDefault();return}e.returnValue=!1}function B(e){if(e.stopPropagation){e.stopPropagation();return}e.cancelBubble=!0}function E(e){return e=="shift"||e=="ctrl"||e=="alt"||e=="meta"}function X(){if(!A){A={};for(var e in c)e>95&&e<112||c.hasOwnProperty(e)&&(A[c[e]]=e)}return A}function Y(e,r,s){return s||(s=X()[e]?"keydown":"keypress"),s=="keypress"&&r.length&&(s="keydown"),s}function Q(e){return e==="+"?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.split("+"))}function G(e,r){var s,h,k,M=[];for(s=Q(e),k=0;k<s.length;++k)h=s[k],S[h]&&(h=S[h]),r&&r!="keypress"&&v[h]&&(h=v[h],M.push("shift")),E(h)&&M.push(h);return r=Y(h,M,r),{key:h,modifiers:M,action:r}}function R(e,r){return e===null||e===a?!1:e===r?!0:R(e.parentNode,r)}function g(e){var r=this;if(e=e||a,!(r instanceof g))return new g(e);r.target=e,r._callbacks={},r._directMap={};var s={},h,k=!1,M=!1,D=!1;function L(o){o=o||{};var f=!1,p;for(p in s){if(o[p]){f=!0;continue}s[p]=0}f||(D=!1)}function I(o,f,p,l,d,b){var u,_,C=[],O=p.type;if(!r._callbacks[o])return[];for(O=="keyup"&&E(o)&&(f=[o]),u=0;u<r._callbacks[o].length;++u)if(_=r._callbacks[o][u],!(!l&&_.seq&&s[_.seq]!=_.level)&&O==_.action&&(O=="keypress"&&!p.metaKey&&!p.ctrlKey||F(f,_.modifiers))){var ee=!l&&_.combo==d,te=l&&_.seq==l&&_.level==b;(ee||te)&&r._callbacks[o].splice(u,1),C.push(_)}return C}function N(o,f,p,l){r.stopCallback(f,f.target||f.srcElement,p,l)||o(f,p)===!1&&(H(f),B(f))}r._handleKey=function(o,f,p){var l=I(o,f,p),d,b={},u=0,_=!1;for(d=0;d<l.length;++d)l[d].seq&&(u=Math.max(u,l[d].level));for(d=0;d<l.length;++d){if(l[d].seq){if(l[d].level!=u)continue;_=!0,b[l[d].seq]=1,N(l[d].callback,p,l[d].combo,l[d].seq);continue}_||N(l[d].callback,p,l[d].combo)}var C=p.type=="keypress"&&M;p.type==D&&!E(o)&&!C&&L(b),M=_&&p.type=="keydown"};function q(o){typeof o.which!="number"&&(o.which=o.keyCode);var f=U(o);if(f){if(o.type=="keyup"&&k===f){k=!1;return}r.handleKey(f,V(o),o)}}function Z(){clearTimeout(h),h=setTimeout(L,1e3)}function $(o,f,p,l){s[o]=0;function d(O){return function(){D=O,++s[o],Z()}}function b(O){N(p,O,o),l!=="keyup"&&(k=U(O)),setTimeout(L,10)}for(var u=0;u<f.length;++u){var _=u+1===f.length,C=_?b:d(l||G(f[u+1]).action);z(f[u],C,l,o,u)}}function z(o,f,p,l,d){r._directMap[o+":"+p]=f,o=o.replace(/\s+/g," ");var b=o.split(" "),u;if(b.length>1){$(o,b,f,p);return}u=G(o,p),r._callbacks[u.key]=r._callbacks[u.key]||[],I(u.key,u.modifiers,{type:u.action},l,o,d),r._callbacks[u.key][l?"unshift":"push"]({callback:f,modifiers:u.modifiers,action:u.action,seq:l,level:d,combo:o})}r._bindMultiple=function(o,f,p){for(var l=0;l<o.length;++l)z(o[l],f,p)},P(e,"keypress",q),P(e,"keydown",q),P(e,"keyup",q)}g.prototype.bind=function(e,r,s){var h=this;return e=e instanceof Array?e:[e],h._bindMultiple.call(h,e,r,s),h},g.prototype.unbind=function(e,r){var s=this;return s.bind.call(s,e,function(){},r)},g.prototype.trigger=function(e,r){var s=this;return s._directMap[e+":"+r]&&s._directMap[e+":"+r]({},e),s},g.prototype.reset=function(){var e=this;return e._callbacks={},e._directMap={},e},g.prototype.stopCallback=function(e,r){var s=this;if((" "+r.className+" ").indexOf(" mousetrap ")>-1||R(r,s.target))return!1;if("composedPath"in e&&typeof e.composedPath=="function"){var h=e.composedPath()[0];h!==e.target&&(r=h)}return r.tagName=="INPUT"||r.tagName=="SELECT"||r.tagName=="TEXTAREA"||r.isContentEditable},g.prototype.handleKey=function(){var e=this;return e._handleKey.apply(e,arguments)},g.addKeycodes=function(e){for(var r in e)e.hasOwnProperty(r)&&(c[r]=e[r]);A=null},g.init=function(){var e=g(a);for(var r in e)r.charAt(0)!=="_"&&(g[r]=(function(s){return function(){return e[s].apply(e,arguments)}})(r))},g.init(),i.Mousetrap=g,typeof n<"u"&&n.exports&&(n.exports=g),typeof define=="function"&&define.amd&&define(function(){return g})})(typeof window<"u"?window:null,typeof window<"u"?document:null)}),T=ce(ue());(function(t){if(t){var n={},i=t.prototype.stopCallback;t.prototype.stopCallback=function(a,w,c,y){var v=this;return v.paused?!0:n[c]||n[y]?!1:i.call(v,a,w,c)},t.prototype.bindGlobal=function(a,w,c){var y=this;if(y.bind(a,w,c),a instanceof Array){for(var v=0;v<a.length;v++)n[a[v]]=!0;return}n[a]=!0},t.init()}})(typeof Mousetrap<"u"?Mousetrap:void 0);var J=()=>Array.from(document.querySelectorAll('[aria-modal="true"]')).find(t=>window.getComputedStyle(t).display!=="none"),pe=t=>{t.directive("mousetrap",(n,{modifiers:i,expression:a},{evaluate:w})=>{let c=()=>a?w(a):n.click();i=i.map(y=>y.replace(/--/g," ").replace(/-/g,"+").replace(/\bslash\b/g,"/")),i.includes("global")&&(i=i.filter(y=>y!=="global"),T.default.bindGlobal(i,y=>{let v=J();v&&!v.contains(n)||(y.preventDefault(),c())})),T.default.bind(i,y=>{let v=J();v&&!v.contains(n)||(y.preventDefault(),c())}),document.addEventListener("livewire:navigating",()=>{T.default.unbind(i)},{once:!0})})},W=pe;var j=()=>({isOpen:window.Alpine.$persist(!0).as("isOpen"),isOpenDesktop:window.Alpine.$persist(!0).as("isOpenDesktop"),collapsedGroups:window.Alpine.$persist(null).as("collapsedGroups"),scrollTop:0,init(){this.resizeObserver=null,this.setUpResizeObserver(),document.addEventListener("livewire:navigate",()=>{let t=document.querySelector(".fi-main-sidebar .fi-sidebar-nav");t&&(this.scrollTop=t.scrollTop)}),document.addEventListener("livewire:navigated",()=>{this.setUpResizeObserver(),requestAnimationFrame(()=>{let t=document.querySelector(".fi-main-sidebar .fi-sidebar-nav");t&&this.scrollTop&&(t.scrollTop=this.scrollTop)})})},setUpResizeObserver(){this.resizeObserver&&this.resizeObserver.disconnect();let t=window.innerWidth;this.resizeObserver=new ResizeObserver(()=>{let n=window.innerWidth,i=t>=1024,a=n<1024,w=n>=1024;i&&a?(this.isOpenDesktop=this.isOpen,this.isOpen&&this.close()):!i&&w&&(this.isOpen=this.isOpenDesktop),t=n}),this.resizeObserver.observe(document.body),window.innerWidth<1024?this.isOpen&&(this.isOpenDesktop=!0,this.close()):this.isOpen=this.isOpenDesktop},groupIsCollapsed(t){return this.collapsedGroups.includes(t)},collapseGroup(t){this.collapsedGroups.includes(t)||(this.collapsedGroups=this.collapsedGroups.concat(t))},toggleCollapsedGroup(t){this.collapsedGroups=this.collapsedGroups.includes(t)?this.collapsedGroups.filter(n=>n!==t):this.collapsedGroups.concat(t)},close(){this.isOpen=!1,window.innerWidth>=1024&&(this.isOpenDesktop=!1)},open(){this.isOpen=!0,window.innerWidth>=1024&&(this.isOpenDesktop=!0)}});document.addEventListener("alpine:init",()=>{let t=localStorage.getItem("theme")??getComputedStyle(document.documentElement).getPropertyValue("--default-theme-mode");window.Alpine.store("theme",t==="dark"||t==="system"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),window.addEventListener("theme-changed",n=>{let i=n.detail;localStorage.setItem("theme",i),i==="system"&&(i=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),window.Alpine.store("theme",i)}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",n=>{localStorage.getItem("theme")==="system"&&window.Alpine.store("theme",n.matches?"dark":"light")}),window.Alpine.effect(()=>{window.Alpine.store("theme")==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")})});document.addEventListener("livewire:init",()=>{Livewire.interceptRequest(({request:t,onError:n,onFailure:i})=>{n(({response:a,preventDefault:w})=>{let c=window.filamentErrorNotifications;if(!c)return;try{let S=t?.payload;if(S&&JSON.parse(S).components.length===1){for(let A of JSON.parse(S).components)if(JSON.parse(A.snapshot).data.isFilamentNotificationsComponent)return}}catch{}let y=a?.status??"",v=c[y]??c[""];v.isDisabled!==!0&&(w(),v.isHidden!==!0&&new FilamentNotification().title(v.title).body(v.body).danger().send())}),i(()=>{let a=window.filamentErrorNotifications;if(!a)return;let w=a[""];new FilamentNotification().title(w.title).body(w.body).danger().send()})})});var x=window.history.replaceState,de=window.history.pushState;window.history.replaceState=function(t,n,i){t?.url instanceof URL&&(t.url=t.url.toString());let a=i||t?.url||window.location.href,w=window.location.href;if(a!==w){x.call(window.history,t,n,i);return}try{let c=window.history.state;JSON.stringify(t)!==JSON.stringify(c)&&x.call(window.history,t,n,i)}catch{x.call(window.history,t,n,i)}};window.history.pushState=function(t,n,i){t?.url instanceof URL&&(t.url=t.url.toString()),de.call(window.history,t,n,i)};document.addEventListener("DOMContentLoaded",()=>{setTimeout(()=>{let t=document.querySelector(".fi-main-sidebar .fi-sidebar-item.fi-active");if((!t||t.offsetParent===null)&&(t=document.querySelector(".fi-main-sidebar .fi-sidebar-group.fi-active")),!t||t.offsetParent===null)return;let n=document.querySelector(".fi-main-sidebar .fi-sidebar-nav");n&&n.scrollTo(0,t.offsetTop-window.innerHeight/2)},10)});window.setUpUnsavedDataChangesAlert=({body:t,livewireComponent:n,$wire:i})=>{window.addEventListener("beforeunload",a=>{window.jsMd5(JSON.stringify(i.data).replace(/\\/g,""))===i.savedDataHash||i?.__instance?.effects?.redirect||(a.preventDefault(),a.returnValue=!0)})};window.setUpSpaModeUnsavedDataChangesAlert=({body:t,resolveLivewireComponentUsing:n,$wire:i})=>{let a=()=>i?.__instance?.effects?.redirect?!1:window.jsMd5(JSON.stringify(i.data).replace(/\\/g,""))!==i.savedDataHash,w=()=>confirm(t);document.addEventListener("livewire:navigate",c=>{if(typeof n()<"u"){if(!a()||w())return;c.preventDefault()}}),window.addEventListener("beforeunload",c=>{a()&&(c.preventDefault(),c.returnValue=!0)})};window.setUpUnsavedActionChangesAlert=({resolveLivewireComponentUsing:t,$wire:n})=>{window.addEventListener("beforeunload",i=>{if(!(typeof t()>"u")&&(n.mountedActions?.length??0)&&!n?.__instance?.effects?.redirect){i.preventDefault(),i.returnValue=!0;return}})};document.addEventListener("alpine:init",()=>{window.Alpine.plugin(W),window.Alpine.store("sidebar",j())});})();