@zydon/common 2.8.58 → 2.8.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
1
  var s=(i=>(i.SENT="SENT",i.DELIVERED="DELIVERED",i.READ="READ",i))(s||{});
2
2
 
3
3
  export { s as a };
4
- //# sourceMappingURL=chunk-E5ULJSWF.js.map
4
+ //# sourceMappingURL=chunk-WMHH24KM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/pushNotifications.ts"],"names":["MessageStatus"],"mappings":"AA+BO,IAAKA,OACVA,EAAA,KAAO,OACPA,EAAA,UAAY,YACZA,EAAA,KAAO,OAHGA,OAAA","sourcesContent":["import { ReactNode } from 'react';\n\nexport interface PushMessage<TPayload = unknown> {\n message: string;\n topic: string;\n updatedAt: string;\n createdAt: string;\n payload: TPayload;\n id: string;\n}\n\nexport interface SubscriptionItem {\n topic: string;\n}\n\nexport interface SubscriptionsData {\n subscriptions: SubscriptionItem[];\n}\n\nexport interface ClientRegistrationPayload {\n origin_type: string;\n origin_id: string;\n endpoint?: string;\n auth?: string;\n p256dh?: string;\n}\n\nexport interface ClientRegistrationResult {\n id: string;\n}\n\nexport enum MessageStatus {\n SENT = 'SENT',\n DELIVERED = 'DELIVERED',\n READ = 'READ',\n}\n\nexport interface MessageStatusPayload {\n status: MessageStatus;\n}\n\nexport interface PushNotificationApiAdapters<TMessage = unknown> {\n // Registra um cliente no serviço de push\n registerClient: (\n payload: ClientRegistrationPayload,\n ) => Promise<ClientRegistrationResult>;\n\n // Inscreve o cliente em um tópico\n subscribeTopic: (clientId: string, topic: string) => Promise<void>;\n\n // Remove inscrição de um tópico\n unsubscribeTopic: (clientId: string, topic: string) => Promise<void>;\n\n // Inscreve o cliente em múltiplos tópicos\n subscribeTopicsBatch: (clientId: string, topics: string[]) => Promise<void>;\n\n // Remove inscrição de múltiplos tópicos\n unsubscribeTopicsBatch: (clientId: string, topics: string[]) => Promise<void>;\n\n // Lista as inscrições do cliente\n listSubscriptions: (clientId: string) => Promise<SubscriptionsData>;\n\n // Busca mensagens pendentes (usado para polling fallback)\n fetchMessages?: (\n clientId: string,\n ) => Promise<{ messages: PushMessage<TMessage>[] }>;\n\n // Atualiza o status de uma mensagem\n updateMessageStatus: (\n messageId: string,\n status: MessageStatusPayload,\n ) => Promise<void>;\n}\n\nexport interface PushNotificationProviderProps<TMessage = unknown> {\n children: ReactNode;\n\n // Token de autenticação para validar o usuário\n bearerToken: string;\n\n // ID único da origem (ex: userId, sessionId)\n originId: string;\n\n // Tipo da origem (ex: 'ADMIN', 'CLIENT', 'MOBILE')\n originType: string;\n\n // Chave pública VAPID para Push API\n vapidKey: string;\n\n // Caminho base do service worker (padrão: '/')\n serviceWorkerPath?: string;\n\n // Nome do arquivo do service worker (padrão: 'service-worker.js')\n serviceWorkerFile?: string;\n\n // Intervalo de polling em ms para clientes ativos (padrão: 1000)\n pollingInterval?: number;\n\n // Adapters para chamadas de API (implementados pelo MFE)\n apiAdapters: PushNotificationApiAdapters<TMessage>;\n\n // Callback chamado quando uma mensagem é recebida\n onMessageReceived?: (message: TMessage, topic?: string) => void;\n\n // Callback chamado quando ocorre um erro\n onError?: (error: Error) => void;\n}\n\nexport interface TopicSubscriptionOptions {\n stopPollingOnFirstMessage?: boolean;\n}\n\nexport interface PushNotificationContextData {\n clientId: string | null;\n subscribedTopics: SubscriptionsData;\n isLoading: boolean;\n newMessageCount: number;\n isRegisterError: boolean;\n subscribeToTopic: (\n topic: string,\n options?: TopicSubscriptionOptions,\n ) => Promise<void>;\n unsubscribeFromTopic: (topic: string) => Promise<void>;\n subscribeTopicsBatch: (topics: string[]) => Promise<void>;\n unsubscribeTopicsBatch: (topics: string[]) => Promise<void>;\n resetMessageCount: () => void;\n}\n"]}
1
+ {"version":3,"sources":["../src/types/pushNotifications.ts"],"names":["MessageStatus"],"mappings":"AA+BO,IAAKA,OACVA,EAAA,KAAO,OACPA,EAAA,UAAY,YACZA,EAAA,KAAO,OAHGA,OAAA","sourcesContent":["import { ReactNode } from 'react';\n\nexport interface PushMessage<TPayload = unknown> {\n message: string;\n topic: string;\n updatedAt: string;\n createdAt: string;\n payload: TPayload;\n id: string;\n}\n\nexport interface SubscriptionItem {\n topic: string;\n}\n\nexport interface SubscriptionsData {\n subscriptions: SubscriptionItem[];\n}\n\nexport interface ClientRegistrationPayload {\n origin_type: string;\n origin_id: string;\n endpoint?: string;\n auth?: string;\n p256dh?: string;\n}\n\nexport interface ClientRegistrationResult {\n id: string;\n}\n\nexport enum MessageStatus {\n SENT = 'SENT',\n DELIVERED = 'DELIVERED',\n READ = 'READ',\n}\n\nexport interface MessageStatusPayload {\n status: MessageStatus;\n}\n\nexport interface PushNotificationApiAdapters<TMessage = unknown> {\n // Registra um cliente no serviço de push\n registerClient: (\n payload: ClientRegistrationPayload,\n ) => Promise<ClientRegistrationResult>;\n\n // Inscreve o cliente em um tópico\n subscribeTopic: (clientId: string, topic: string) => Promise<void>;\n\n // Remove inscrição de um tópico\n unsubscribeTopic: (clientId: string, topic: string) => Promise<void>;\n\n // Inscreve o cliente em múltiplos tópicos\n subscribeTopicsBatch: (clientId: string, topics: string[]) => Promise<void>;\n\n // Remove inscrição de múltiplos tópicos\n unsubscribeTopicsBatch: (clientId: string, topics: string[]) => Promise<void>;\n\n // Lista as inscrições do cliente\n listSubscriptions: (clientId: string) => Promise<SubscriptionsData>;\n\n // Busca mensagens pendentes (usado para polling fallback)\n fetchMessages?: (\n clientId: string,\n ) => Promise<{ messages: PushMessage<TMessage>[] }>;\n\n // Atualiza o status de uma mensagem\n updateMessageStatus: (\n messageId: string,\n status: MessageStatusPayload,\n ) => Promise<void>;\n}\n\nexport interface PushNotificationProviderProps<TMessage = unknown> {\n children: ReactNode;\n\n // Token de autenticação para validar o usuário\n bearerToken: string;\n\n // ID único da origem (ex: userId, sessionId)\n originId: string;\n\n // Tipo da origem (ex: 'ADMIN', 'CLIENT', 'MOBILE')\n originType: string;\n\n // Chave pública VAPID para Push API\n vapidKey: string;\n\n // Caminho base do service worker (padrão: '/')\n serviceWorkerPath?: string;\n\n // Nome do arquivo do service worker (padrão: 'service-worker.js')\n serviceWorkerFile?: string;\n\n // Intervalo de polling em ms para clientes ativos (padrão: 1000)\n pollingInterval?: number;\n\n // Adapters para chamadas de API (implementados pelo MFE)\n apiAdapters: PushNotificationApiAdapters<TMessage>;\n\n // Callback chamado quando uma mensagem é recebida\n onMessageReceived?: (message: TMessage, topic?: string) => void;\n\n // Callback chamado quando ocorre um erro\n onError?: (error: Error) => void;\n}\n\nexport interface TopicSubscriptionOptions {\n stopPollingOnFirstMessage?: boolean;\n}\n\nexport interface PushNotificationContextData {\n clientId: string | null;\n subscribedTopics: SubscriptionsData;\n isLoading: boolean;\n newMessageCount: number;\n isRegisterError: boolean;\n subscribeToTopic: (\n topic: string,\n options?: TopicSubscriptionOptions,\n ) => Promise<void>;\n unsubscribeFromTopic: (topic: string) => Promise<void>;\n subscribeTopicsBatch: (topics: string[]) => Promise<void>;\n unsubscribeTopicsBatch: (topics: string[]) => Promise<void>;\n resetMessageCount: () => void;\n registerClient: () => Promise<string | null>;\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  import { a as a$1 } from '../../chunk-RP7PNTLJ.js';
2
2
  import { a } from '../../chunk-GPFANUMT.js';
3
- import '../../chunk-E5ULJSWF.js';
3
+ import '../../chunk-WMHH24KM.js';
4
4
  import '../../chunk-TVKBRJHF.js';
5
5
  import { createContext, useState, useRef, useMemo, useEffect, useCallback, useContext } from 'react';
6
6
  import { jsx } from 'react/jsx-runtime';
7
7
 
8
- var ee=createContext(void 0),fe=({children:v,originId:V,originType:G,bearerToken:te,vapidKey:H,serviceWorkerPath:k="/",serviceWorkerFile:x="service-worker.js",pollingInterval:A=1e3,apiAdapters:r,onMessageReceived:y,onError:o})=>{let[s,h]=useState(null),[W,m]=useState(!1),[B,L]=useState(!1),[N,se]=useState(!1),[z,w]=useState(0),[D]=useState(new Set),[p,ie]=useState({subscriptions:[]}),[F,_]=useState(!1),[b,I]=useState(!1),[P,f]=useState(!1),E=useRef(new Map),$=useMemo(()=>!s||F||W,[s,F,W]);useEffect(()=>{if(!b||!P||!s||!r.fetchMessages||p.subscriptions.length===0)return;let e=setInterval(async()=>{try{let a$1=((await r.fetchMessages(s))?.messages??[]).filter(i=>!(!i?.payload||D.has(i.id)));if(a$1.length===0)return;a$1.forEach(i=>{D.add(i.id),y?.(i.payload,i.topic);}),w(i=>i+a$1.length);try{(await Promise.allSettled(a$1.map(u=>r.updateMessageStatus(u.id,{status:"DELIVERED"})))).forEach(u=>{u.status==="rejected"&&a({type:"ERROR",environment:["development","homologation"],message:"Erro ao marcar mensagem como entregue:",data:u.reason});});}finally{new Set(a$1.map(g=>g.topic).filter(Boolean)).forEach(g=>{E.current.get(g)?.stopPollingOnFirstMessage&&E.current.delete(g);}),p.subscriptions.length>0||(I(!1),f(!1));}}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao buscar mensagens:",data:t});}},A);return ()=>clearInterval(e)},[r,s,y,b,A,D,P,p.subscriptions.length]);let T=useCallback(async(e,t)=>{m(!0);try{let c=e?.toJSON().keys,a={origin_type:G,origin_id:V,...t&&e?{endpoint:e.endpoint,auth:c?.auth,p256dh:c?.p256dh}:{}},i=await r.registerClient(a);return h(i.id),L(!1),se(t),t||f(!0),i.id}catch(c){return a({type:"ERROR",environment:["development","homologation"],message:"Erro ao registrar cliente:",data:c}),L(!0),o?.(c),null}finally{m(!1);}},[r,o,V,G]);useEffect(()=>{let e=!0,t=null;async function c(){if(m(!0),!("serviceWorker"in navigator)||!("PushManager"in window)){a({type:"WARN",environment:["development","homologation"],message:"Push notifications n\xE3o suportadas, criando cliente ativo com polling"});try{let a=await T(null,!1);e&&a&&(h(a),f(!0));}catch(a$1){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao registrar cliente ativo:",data:a$1}),o?.(a$1);}finally{m(!1);}return}try{let a$2=await Notification.requestPermission(),i=null,u=!1;if(a$2==="granted")try{let M=await navigator.serviceWorker.register(`${k}${x}`);if(!e||(await navigator.serviceWorker.ready,!e))return;i=await M.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:a$1(H)}),t=async S=>{let Q=S.data?.payload,X=S.data?.id;if(Q&&(w(R=>R+1),y?.(Q,S.data?.topic)),X)try{await r.updateMessageStatus(X,{status:"DELIVERED"});}catch(R){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao atualizar status da mensagem:",data:R}),L(!0),o?.(R);}},navigator.serviceWorker.addEventListener("message",t),u=!0,a({type:"LOG",environment:["development","homologation"],message:"Permiss\xE3o concedida, criando cliente passivo (aguarda webpush)"});}catch(M){a({type:"WARN",environment:["development","homologation"],message:"Falha ao configurar push subscription, criando cliente ativo:",data:M}),u=!1;}else a({type:"WARN",environment:["development","homologation"],message:"Permiss\xE3o de notifica\xE7\xE3o negada, criando cliente ativo com polling"}),u=!1;let g=await T(i,u);e&&g&&(h(g),u||f(!0));}catch(a$1){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao inicializar notifica\xE7\xF5es:",data:a$1}),o?.(a$1);try{let i=await T(null,!1);e&&i&&(h(i),f(!0));}catch(i){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao criar cliente ativo como fallback:",data:i});}}finally{m(!1);}}return te&&a({type:"WARN",environment:["development","homologation"],message:"O par\xE2metro bearerToken est\xE1 deprecated e n\xE3o \xE9 mais necess\xE1rio. Ele ser\xE1 removido em vers\xF5es futuras."}),c(),()=>{e=!1,t&&"serviceWorker"in navigator&&navigator.serviceWorker.removeEventListener("message",t);}},[r,o,y,T,x,k,H]);let O=useCallback(async()=>{if(s){_(!0);try{let e=await r.listSubscriptions(s);ie(e);}catch(e){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao listar inscri\xE7\xF5es:",data:e}),o?.(e);}finally{_(!1);}}},[r,s,o]);useEffect(()=>{s&&O();},[s]);let j=useCallback(async(e,t)=>{if(!s){a({type:"WARN",environment:["development","homologation"],message:"Cliente n\xE3o registrado"});return}try{t&&E.current.set(e,t),await r.subscribeTopic(s,e),await O(),!N&&(!b||!P)&&(I(!0),f(!0));}catch(c){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao inscrever no t\xF3pico:",data:c}),o?.(c);}},[r,s,N,o,b,O,P]),q=useCallback(async e=>{if(!s){a({type:"WARN",environment:["development","homologation"],message:"Cliente n\xE3o registrado"});return}try{E.current.delete(e),await r.unsubscribeTopic(s,e),await O();}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao desinscrever do t\xF3pico:",data:t}),o?.(t);}},[r,s,o,O]),J=useCallback(async e=>{if(!(!s||e.length===0))try{e.forEach(t=>{E.current.has(t)||E.current.set(t,{});}),await r.subscribeTopicsBatch(s,e),await O(),N||(I(!0),f(!0));}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao inscrever em t\xF3picos:",data:t}),o?.(t);}},[r,s,N,o,O]),U=useCallback(async e=>{if(!(!s||e.length===0))try{e.forEach(t=>E.current.delete(t)),await r.unsubscribeTopicsBatch(s,e),await O();}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao desinscrever de t\xF3picos:",data:t}),o?.(t);}},[r,s,o,O]),K=useCallback(()=>{w(0);},[]),ne=useMemo(()=>({clientId:s,subscribedTopics:p,isLoading:$,newMessageCount:z,isRegisterError:B,subscribeToTopic:j,unsubscribeFromTopic:q,subscribeTopicsBatch:J,unsubscribeTopicsBatch:U,resetMessageCount:K}),[s,$,B,z,K,p,j,J,q,U]);return jsx(ee.Provider,{value:ne,children:v})};function Ee(){let v=useContext(ee);if(!v)throw new Error("usePushNotifications precisa estar dentro de PushNotificationProvider");return v}
8
+ var te=createContext(void 0),ge=({children:v,originId:A,originType:x,bearerToken:se,vapidKey:h,serviceWorkerPath:b="/",serviceWorkerFile:N="service-worker.js",pollingInterval:W=1e3,apiAdapters:n,onMessageReceived:P,onError:o})=>{let[s,M]=useState(null),[B,g]=useState(!1),[$,I]=useState(!1),[T,ie]=useState(!1),[q,S]=useState(0),[C]=useState(new Set),[y,re]=useState({subscriptions:[]}),[z,_]=useState(!1),[R,V]=useState(!1),[L,E]=useState(!1),d=useRef(new Map),j=useMemo(()=>!s||z||B,[s,z,B]);useEffect(()=>{if(!R||!L||!s||!n.fetchMessages||y.subscriptions.length===0)return;let e=setInterval(async()=>{try{let a$1=((await n.fetchMessages(s))?.messages??[]).filter(i=>!(!i?.payload||C.has(i.id)));if(a$1.length===0)return;a$1.forEach(i=>{C.add(i.id),P?.(i.payload,i.topic);}),S(i=>i+a$1.length);try{(await Promise.allSettled(a$1.map(u=>n.updateMessageStatus(u.id,{status:"DELIVERED"})))).forEach(u=>{u.status==="rejected"&&a({type:"ERROR",environment:["development","homologation"],message:"Erro ao marcar mensagem como entregue:",data:u.reason});});}finally{new Set(a$1.map(m=>m.topic).filter(Boolean)).forEach(m=>{d.current.get(m)?.stopPollingOnFirstMessage&&d.current.delete(m);}),y.subscriptions.length>0||(V(!1),E(!1));}}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao buscar mensagens:",data:t});}},W);return ()=>clearInterval(e)},[n,s,P,R,W,C,L,y.subscriptions.length]);let p=useCallback(async(e,t)=>{g(!0);try{let c=e?.toJSON().keys,a={origin_type:x,origin_id:A,...t&&e?{endpoint:e.endpoint,auth:c?.auth,p256dh:c?.p256dh}:{}},i=await n.registerClient(a);return M(i.id),I(!1),ie(t),t||E(!0),i.id}catch(c){return a({type:"ERROR",environment:["development","homologation"],message:"Erro ao registrar cliente:",data:c}),I(!0),o?.(c),null}finally{g(!1);}},[n,o,A,x]);useEffect(()=>{let e=!0,t=null;async function c(){if(g(!0),!("serviceWorker"in navigator)||!("PushManager"in window)){a({type:"WARN",environment:["development","homologation"],message:"Push notifications n\xE3o suportadas, criando cliente ativo com polling"});try{let a=await p(null,!1);e&&a&&(M(a),E(!0));}catch(a$1){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao registrar cliente ativo:",data:a$1}),o?.(a$1);}finally{g(!1);}return}try{let a$2=await Notification.requestPermission(),i=null,u=!1;if(a$2==="granted")try{let w=await navigator.serviceWorker.register(`${b}${N}`);if(!e||(await navigator.serviceWorker.ready,!e))return;i=await w.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:a$1(h)}),t=async G=>{let Z=G.data?.payload,K=G.data?.id;if(Z&&(S(D=>D+1),P?.(Z,G.data?.topic)),K)try{await n.updateMessageStatus(K,{status:"DELIVERED"});}catch(D){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao atualizar status da mensagem:",data:D}),I(!0),o?.(D);}},navigator.serviceWorker.addEventListener("message",t),u=!0,a({type:"LOG",environment:["development","homologation"],message:"Permiss\xE3o concedida, criando cliente passivo (aguarda webpush)"});}catch(w){a({type:"WARN",environment:["development","homologation"],message:"Falha ao configurar push subscription, criando cliente ativo:",data:w}),u=!1;}else a({type:"WARN",environment:["development","homologation"],message:"Permiss\xE3o de notifica\xE7\xE3o negada, criando cliente ativo com polling"}),u=!1;let m=await p(i,u);e&&m&&(M(m),u||E(!0));}catch(a$1){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao inicializar notifica\xE7\xF5es:",data:a$1}),o?.(a$1);try{let i=await p(null,!1);e&&i&&(M(i),E(!0));}catch(i){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao criar cliente ativo como fallback:",data:i});}}finally{g(!1);}}return se&&a({type:"WARN",environment:["development","homologation"],message:"O par\xE2metro bearerToken est\xE1 deprecated e n\xE3o \xE9 mais necess\xE1rio. Ele ser\xE1 removido em vers\xF5es futuras."}),c(),()=>{e=!1,t&&"serviceWorker"in navigator&&navigator.serviceWorker.removeEventListener("message",t);}},[n,o,P,p,N,b,h]);let O=useCallback(async()=>{if(s){_(!0);try{let e=await n.listSubscriptions(s);re(e);}catch(e){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao listar inscri\xE7\xF5es:",data:e}),o?.(e);}finally{_(!1);}}},[n,s,o]);useEffect(()=>{s&&O();},[s]);let J=useCallback(async(e,t)=>{if(!s){a({type:"WARN",environment:["development","homologation"],message:"Cliente n\xE3o registrado"});return}try{t&&d.current.set(e,t),await n.subscribeTopic(s,e),await O(),!T&&(!R||!L)&&(V(!0),E(!0));}catch(c){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao inscrever no t\xF3pico:",data:c}),o?.(c);}},[n,s,T,o,R,O,L]),U=useCallback(async e=>{if(!s){a({type:"WARN",environment:["development","homologation"],message:"Cliente n\xE3o registrado"});return}try{d.current.delete(e),await n.unsubscribeTopic(s,e),await O();}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao desinscrever do t\xF3pico:",data:t}),o?.(t);}},[n,s,o,O]),F=useCallback(async e=>{if(!(!s||e.length===0))try{e.forEach(t=>{d.current.has(t)||d.current.set(t,{});}),await n.subscribeTopicsBatch(s,e),await O(),T||(V(!0),E(!0));}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao inscrever em t\xF3picos:",data:t}),o?.(t);}},[n,s,T,o,O]),Q=useCallback(async e=>{if(!(!s||e.length===0))try{e.forEach(t=>d.current.delete(t)),await n.unsubscribeTopicsBatch(s,e),await O();}catch(t){a({type:"ERROR",environment:["development","homologation"],message:"Erro ao desinscrever de t\xF3picos:",data:t}),o?.(t);}},[n,s,o,O]),X=useCallback(async()=>{g(!0);try{let e=null,t=!1;if("serviceWorker"in navigator&&"PushManager"in window&&await Notification.requestPermission()==="granted")try{let a=await navigator.serviceWorker.register(`${b}${N}`);await navigator.serviceWorker.ready,e=await a.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:a$1(h)}),t=!0;}catch{t=!1;}return await p(e,t)}catch(e){return a({type:"ERROR",environment:["development","homologation"],message:"Erro ao registrar cliente:",data:e}),o?.(e),null}finally{g(!1);}},[o,p,N,b,h]),Y=useCallback(()=>{S(0);},[]),ae=useMemo(()=>({clientId:s,subscribedTopics:y,isLoading:j,newMessageCount:q,isRegisterError:$,subscribeToTopic:J,unsubscribeFromTopic:U,subscribeTopicsBatch:F,unsubscribeTopicsBatch:Q,resetMessageCount:Y,registerClient:X}),[s,j,$,q,X,Y,y,J,F,U,Q]);return jsx(te.Provider,{value:ae,children:v})};function Ee(){let v=useContext(te);if(!v)throw new Error("usePushNotifications precisa estar dentro de PushNotificationProvider");return v}
9
9
 
10
- export { fe as PushNotificationProvider, Ee as usePushNotifications };
10
+ export { ge as PushNotificationProvider, Ee as usePushNotifications };
11
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/contexts/PushNotifications/index.tsx"],"names":["createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","jsx","PushNotificationContext","PushNotificationProvider","children","originId","originType","bearerToken","vapidKey","serviceWorkerPath","serviceWorkerFile","pollingInterval","apiAdapters","onMessageReceived","onError","clientId","setClientId","isRegistering","setIsRegistering","isRegisterError","setIsRegisterError","isPassiveClient","setIsPassiveClient","newMessageCount","setNewMessageCount","processedMessageIds","subscribedTopics","setSubscribedTopics","isLoadingSubscriptions","setIsLoadingSubscriptions","pollingEnabled","setPollingEnabled","shouldPoll","setShouldPoll","topicOptionsRef","isLoading","interval","deliverables","m","prev","consoleLog","topic","error","performClientRegistration","subscription","isPassive","keys","payload","response","mounted","messageHandler","initSwAndRegister","id","err","permission","registration","urlBase64ToUint8Array","e","message","deliveredId","fallbackErr","refetchSubscriptions","data","subscribeToTopic","options","unsubscribeFromTopic","subscribeTopicsBatch","topics","unsubscribeTopicsBatch","resetMessageCount","value","usePushNotifications","context"],"mappings":"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","sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { ConsoleType, Environment } from 'types/consoleLog';\nimport {\n type ClientRegistrationPayload,\n MessageStatus,\n type PushNotificationContextData,\n type PushNotificationProviderProps,\n type SubscriptionsData,\n type TopicSubscriptionOptions,\n} from 'types/pushNotifications';\nimport { consoleLog } from 'utils/consoleLog';\nimport { urlBase64ToUint8Array } from 'utils/urlBase64ToUint8Array';\n\nconst PushNotificationContext = createContext<\n PushNotificationContextData | undefined\n>(undefined);\n\nexport const PushNotificationProvider = <TMessage = unknown,>({\n children,\n originId,\n originType,\n bearerToken,\n vapidKey,\n serviceWorkerPath = '/',\n serviceWorkerFile = 'service-worker.js',\n pollingInterval = 1000,\n apiAdapters,\n onMessageReceived,\n onError,\n}: PushNotificationProviderProps<TMessage>) => {\n const [clientId, setClientId] = useState<string | null>(null);\n const [isRegistering, setIsRegistering] = useState<boolean>(false);\n const [isRegisterError, setIsRegisterError] = useState<boolean>(false);\n const [isPassiveClient, setIsPassiveClient] = useState<boolean>(false);\n const [newMessageCount, setNewMessageCount] = useState<number>(0);\n const [processedMessageIds] = useState<Set<string>>(new Set());\n\n const [subscribedTopics, setSubscribedTopics] = useState<SubscriptionsData>({\n subscriptions: [],\n });\n const [isLoadingSubscriptions, setIsLoadingSubscriptions] =\n useState<boolean>(false);\n\n const [pollingEnabled, setPollingEnabled] = useState<boolean>(false);\n const [shouldPoll, setShouldPoll] = useState<boolean>(false);\n\n const topicOptionsRef = useRef<Map<string, TopicSubscriptionOptions>>(\n new Map(),\n );\n\n const isLoading = useMemo(\n () => !clientId || isLoadingSubscriptions || isRegistering,\n [clientId, isLoadingSubscriptions, isRegistering],\n );\n\n useEffect(() => {\n if (\n !pollingEnabled ||\n !shouldPoll ||\n !clientId ||\n !apiAdapters.fetchMessages ||\n subscribedTopics.subscriptions.length === 0\n )\n return;\n\n const interval = setInterval(async () => {\n try {\n const result = await apiAdapters.fetchMessages!(clientId);\n const messages = result?.messages ?? [];\n\n const deliverables = messages.filter(m => {\n if (!m?.payload) return false;\n if (processedMessageIds.has(m.id)) return false;\n\n return true;\n });\n\n if (deliverables.length === 0) return;\n\n deliverables.forEach(m => {\n processedMessageIds.add(m.id);\n onMessageReceived?.(m.payload, m.topic);\n });\n\n setNewMessageCount(prev => prev + deliverables.length);\n\n try {\n const updates = await Promise.allSettled(\n deliverables.map(m =>\n apiAdapters.updateMessageStatus(m.id, {\n status: MessageStatus.DELIVERED,\n }),\n ),\n );\n\n updates.forEach(u => {\n if (u.status === 'rejected') {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [\n Environment.DEVELOPMENT,\n Environment.HOMOLOGATION,\n ],\n message: 'Erro ao marcar mensagem como entregue:',\n data: u.reason,\n });\n }\n });\n } finally {\n const topicsProcessed = new Set(\n deliverables.map(m => m.topic).filter(Boolean) as string[],\n );\n\n topicsProcessed.forEach(topic => {\n const topicOptions = topicOptionsRef.current.get(topic);\n\n if (topicOptions?.stopPollingOnFirstMessage) {\n topicOptionsRef.current.delete(topic);\n }\n });\n\n const hasSubscriptions = subscribedTopics.subscriptions.length > 0;\n\n if (!hasSubscriptions) {\n setPollingEnabled(false);\n setShouldPoll(false);\n }\n }\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao buscar mensagens:',\n data: error,\n });\n }\n }, pollingInterval);\n\n return () => clearInterval(interval);\n }, [\n apiAdapters,\n clientId,\n onMessageReceived,\n pollingEnabled,\n pollingInterval,\n processedMessageIds,\n shouldPoll,\n subscribedTopics.subscriptions.length,\n ]);\n\n const performClientRegistration = useCallback(\n async (subscription: PushSubscription | null, isPassive: boolean) => {\n setIsRegistering(true);\n\n try {\n const keys = subscription?.toJSON().keys;\n const payload: ClientRegistrationPayload = {\n origin_type: originType,\n origin_id: originId,\n ...(isPassive && subscription\n ? {\n endpoint: subscription.endpoint,\n auth: keys?.auth,\n p256dh: keys?.p256dh,\n }\n : {}),\n };\n\n const response = await apiAdapters.registerClient(payload);\n\n setClientId(response.id);\n setIsRegisterError(false);\n setIsPassiveClient(isPassive);\n\n if (!isPassive) {\n setShouldPoll(true);\n }\n\n return response.id;\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente:',\n data: error,\n });\n\n setIsRegisterError(true);\n onError?.(error as Error);\n\n return null;\n } finally {\n setIsRegistering(false);\n }\n },\n [apiAdapters, onError, originId, originType],\n );\n\n useEffect(() => {\n let mounted = true;\n let messageHandler: ((e: MessageEvent) => void) | null = null;\n\n async function initSwAndRegister() {\n setIsRegistering(true);\n\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Push notifications não suportadas, criando cliente ativo com polling',\n });\n\n try {\n const id = await performClientRegistration(null, false);\n if (mounted && id) {\n setClientId(id);\n setShouldPoll(true);\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente ativo:',\n data: err,\n });\n onError?.(err as Error);\n } finally {\n setIsRegistering(false);\n }\n return;\n }\n\n try {\n const permission = await Notification.requestPermission();\n\n let subscription: PushSubscription | null = null;\n let isPassiveClient = false;\n\n if (permission === 'granted') {\n try {\n const registration = await navigator.serviceWorker.register(\n `${serviceWorkerPath}${serviceWorkerFile}`,\n );\n\n if (!mounted) return;\n\n await navigator.serviceWorker.ready;\n\n if (!mounted) return;\n\n subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(\n vapidKey,\n ) as BufferSource,\n });\n\n messageHandler = async (e: MessageEvent) => {\n const message = e.data?.payload;\n const deliveredId = e.data?.id;\n\n if (message) {\n setNewMessageCount(prev => prev + 1);\n onMessageReceived?.(message, e.data?.topic);\n }\n\n if (deliveredId) {\n try {\n await apiAdapters.updateMessageStatus(deliveredId, {\n status: MessageStatus.DELIVERED,\n });\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [\n Environment.DEVELOPMENT,\n Environment.HOMOLOGATION,\n ],\n message: 'Erro ao atualizar status da mensagem:',\n data: err,\n });\n setIsRegisterError(true);\n onError?.(err as Error);\n }\n }\n };\n\n navigator.serviceWorker.addEventListener('message', messageHandler);\n\n isPassiveClient = true;\n consoleLog({\n type: ConsoleType.LOG,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Permissão concedida, criando cliente passivo (aguarda webpush)',\n });\n } catch (err) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Falha ao configurar push subscription, criando cliente ativo:',\n data: err,\n });\n isPassiveClient = false;\n }\n } else {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Permissão de notificação negada, criando cliente ativo com polling',\n });\n isPassiveClient = false;\n }\n\n const id = await performClientRegistration(\n subscription,\n isPassiveClient,\n );\n if (mounted && id) {\n setClientId(id);\n\n if (!isPassiveClient) {\n setShouldPoll(true);\n }\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inicializar notificações:',\n data: err,\n });\n onError?.(err as Error);\n\n try {\n const id = await performClientRegistration(null, false);\n if (mounted && id) {\n setClientId(id);\n setShouldPoll(true);\n }\n } catch (fallbackErr) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao criar cliente ativo como fallback:',\n data: fallbackErr,\n });\n }\n } finally {\n setIsRegistering(false);\n }\n }\n\n if (bearerToken) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'O parâmetro bearerToken está deprecated e não é mais necessário. Ele será removido em versões futuras.',\n });\n }\n\n void initSwAndRegister();\n\n return () => {\n mounted = false;\n if (messageHandler && 'serviceWorker' in navigator) {\n navigator.serviceWorker.removeEventListener('message', messageHandler);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiAdapters,\n onError,\n onMessageReceived,\n performClientRegistration,\n serviceWorkerFile,\n serviceWorkerPath,\n vapidKey,\n ]);\n\n const refetchSubscriptions = useCallback(async () => {\n if (!clientId) return;\n\n setIsLoadingSubscriptions(true);\n\n try {\n const data = await apiAdapters.listSubscriptions(clientId);\n\n setSubscribedTopics(data);\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao listar inscrições:',\n data: error,\n });\n\n onError?.(error as Error);\n } finally {\n setIsLoadingSubscriptions(false);\n }\n }, [apiAdapters, clientId, onError]);\n\n useEffect(() => {\n if (clientId) {\n void refetchSubscriptions();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clientId]);\n\n const subscribeToTopic = useCallback(\n async (topic: string, options?: TopicSubscriptionOptions) => {\n if (!clientId) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Cliente não registrado',\n });\n\n return;\n }\n\n try {\n if (options) {\n topicOptionsRef.current.set(topic, options);\n }\n\n await apiAdapters.subscribeTopic(clientId, topic);\n await refetchSubscriptions();\n\n if (!isPassiveClient && (!pollingEnabled || !shouldPoll)) {\n setPollingEnabled(true);\n setShouldPoll(true);\n }\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inscrever no tópico:',\n data: error,\n });\n\n onError?.(error as Error);\n }\n },\n [\n apiAdapters,\n clientId,\n isPassiveClient,\n onError,\n pollingEnabled,\n refetchSubscriptions,\n shouldPoll,\n ],\n );\n\n const unsubscribeFromTopic = useCallback(\n async (topic: string) => {\n if (!clientId) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Cliente não registrado',\n });\n\n return;\n }\n\n try {\n topicOptionsRef.current.delete(topic);\n\n await apiAdapters.unsubscribeTopic(clientId, topic);\n await refetchSubscriptions();\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao desinscrever do tópico:',\n data: error,\n });\n\n onError?.(error as Error);\n }\n },\n [apiAdapters, clientId, onError, refetchSubscriptions],\n );\n\n const subscribeTopicsBatch = useCallback(\n async (topics: string[]): Promise<void> => {\n if (!clientId || topics.length === 0) return;\n\n try {\n topics.forEach(topic => {\n if (!topicOptionsRef.current.has(topic)) {\n topicOptionsRef.current.set(topic, {});\n }\n });\n\n await apiAdapters.subscribeTopicsBatch(clientId, topics);\n await refetchSubscriptions();\n\n if (!isPassiveClient) {\n setPollingEnabled(true);\n setShouldPoll(true);\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inscrever em tópicos:',\n data: err,\n });\n\n onError?.(err as Error);\n }\n },\n [apiAdapters, clientId, isPassiveClient, onError, refetchSubscriptions],\n );\n\n const unsubscribeTopicsBatch = useCallback(\n async (topics: string[]): Promise<void> => {\n if (!clientId || topics.length === 0) return;\n\n try {\n topics.forEach(topic => topicOptionsRef.current.delete(topic));\n\n await apiAdapters.unsubscribeTopicsBatch(clientId, topics);\n await refetchSubscriptions();\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao desinscrever de tópicos:',\n data: err,\n });\n\n onError?.(err as Error);\n }\n },\n [apiAdapters, clientId, onError, refetchSubscriptions],\n );\n\n const resetMessageCount = useCallback(() => {\n setNewMessageCount(0);\n }, []);\n\n const value: PushNotificationContextData = useMemo(\n () => ({\n clientId,\n subscribedTopics,\n isLoading,\n newMessageCount,\n isRegisterError,\n subscribeToTopic,\n unsubscribeFromTopic,\n subscribeTopicsBatch,\n unsubscribeTopicsBatch,\n resetMessageCount,\n }),\n [\n clientId,\n isLoading,\n isRegisterError,\n newMessageCount,\n resetMessageCount,\n subscribedTopics,\n subscribeToTopic,\n subscribeTopicsBatch,\n unsubscribeFromTopic,\n unsubscribeTopicsBatch,\n ],\n );\n\n return (\n <PushNotificationContext.Provider value={value}>\n {children}\n </PushNotificationContext.Provider>\n );\n};\n\nexport function usePushNotifications(): PushNotificationContextData {\n const context = useContext(PushNotificationContext);\n\n if (!context) {\n throw new Error(\n 'usePushNotifications precisa estar dentro de PushNotificationProvider',\n );\n }\n\n return context;\n}\n"]}
1
+ {"version":3,"sources":["../../../src/contexts/PushNotifications/index.tsx"],"names":["createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","jsx","PushNotificationContext","PushNotificationProvider","children","originId","originType","bearerToken","vapidKey","serviceWorkerPath","serviceWorkerFile","pollingInterval","apiAdapters","onMessageReceived","onError","clientId","setClientId","isRegistering","setIsRegistering","isRegisterError","setIsRegisterError","isPassiveClient","setIsPassiveClient","newMessageCount","setNewMessageCount","processedMessageIds","subscribedTopics","setSubscribedTopics","isLoadingSubscriptions","setIsLoadingSubscriptions","pollingEnabled","setPollingEnabled","shouldPoll","setShouldPoll","topicOptionsRef","isLoading","interval","deliverables","m","prev","consoleLog","topic","error","performClientRegistration","subscription","isPassive","keys","payload","response","mounted","messageHandler","initSwAndRegister","id","err","permission","registration","urlBase64ToUint8Array","e","message","deliveredId","fallbackErr","refetchSubscriptions","data","subscribeToTopic","options","unsubscribeFromTopic","subscribeTopicsBatch","topics","unsubscribeTopicsBatch","registerClient","resetMessageCount","value","usePushNotifications","context"],"mappings":"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","sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { ConsoleType, Environment } from 'types/consoleLog';\nimport {\n type ClientRegistrationPayload,\n MessageStatus,\n type PushNotificationContextData,\n type PushNotificationProviderProps,\n type SubscriptionsData,\n type TopicSubscriptionOptions,\n} from 'types/pushNotifications';\nimport { consoleLog } from 'utils/consoleLog';\nimport { urlBase64ToUint8Array } from 'utils/urlBase64ToUint8Array';\n\nconst PushNotificationContext = createContext<\n PushNotificationContextData | undefined\n>(undefined);\n\nexport const PushNotificationProvider = <TMessage = unknown,>({\n children,\n originId,\n originType,\n bearerToken,\n vapidKey,\n serviceWorkerPath = '/',\n serviceWorkerFile = 'service-worker.js',\n pollingInterval = 1000,\n apiAdapters,\n onMessageReceived,\n onError,\n}: PushNotificationProviderProps<TMessage>) => {\n const [clientId, setClientId] = useState<string | null>(null);\n const [isRegistering, setIsRegistering] = useState<boolean>(false);\n const [isRegisterError, setIsRegisterError] = useState<boolean>(false);\n const [isPassiveClient, setIsPassiveClient] = useState<boolean>(false);\n const [newMessageCount, setNewMessageCount] = useState<number>(0);\n const [processedMessageIds] = useState<Set<string>>(new Set());\n\n const [subscribedTopics, setSubscribedTopics] = useState<SubscriptionsData>({\n subscriptions: [],\n });\n const [isLoadingSubscriptions, setIsLoadingSubscriptions] =\n useState<boolean>(false);\n\n const [pollingEnabled, setPollingEnabled] = useState<boolean>(false);\n const [shouldPoll, setShouldPoll] = useState<boolean>(false);\n\n const topicOptionsRef = useRef<Map<string, TopicSubscriptionOptions>>(\n new Map(),\n );\n\n const isLoading = useMemo(\n () => !clientId || isLoadingSubscriptions || isRegistering,\n [clientId, isLoadingSubscriptions, isRegistering],\n );\n\n useEffect(() => {\n if (\n !pollingEnabled ||\n !shouldPoll ||\n !clientId ||\n !apiAdapters.fetchMessages ||\n subscribedTopics.subscriptions.length === 0\n )\n return;\n\n const interval = setInterval(async () => {\n try {\n const result = await apiAdapters.fetchMessages!(clientId);\n const messages = result?.messages ?? [];\n\n const deliverables = messages.filter(m => {\n if (!m?.payload) return false;\n if (processedMessageIds.has(m.id)) return false;\n\n return true;\n });\n\n if (deliverables.length === 0) return;\n\n deliverables.forEach(m => {\n processedMessageIds.add(m.id);\n onMessageReceived?.(m.payload, m.topic);\n });\n\n setNewMessageCount(prev => prev + deliverables.length);\n\n try {\n const updates = await Promise.allSettled(\n deliverables.map(m =>\n apiAdapters.updateMessageStatus(m.id, {\n status: MessageStatus.DELIVERED,\n }),\n ),\n );\n\n updates.forEach(u => {\n if (u.status === 'rejected') {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [\n Environment.DEVELOPMENT,\n Environment.HOMOLOGATION,\n ],\n message: 'Erro ao marcar mensagem como entregue:',\n data: u.reason,\n });\n }\n });\n } finally {\n const topicsProcessed = new Set(\n deliverables.map(m => m.topic).filter(Boolean) as string[],\n );\n\n topicsProcessed.forEach(topic => {\n const topicOptions = topicOptionsRef.current.get(topic);\n\n if (topicOptions?.stopPollingOnFirstMessage) {\n topicOptionsRef.current.delete(topic);\n }\n });\n\n const hasSubscriptions = subscribedTopics.subscriptions.length > 0;\n\n if (!hasSubscriptions) {\n setPollingEnabled(false);\n setShouldPoll(false);\n }\n }\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao buscar mensagens:',\n data: error,\n });\n }\n }, pollingInterval);\n\n return () => clearInterval(interval);\n }, [\n apiAdapters,\n clientId,\n onMessageReceived,\n pollingEnabled,\n pollingInterval,\n processedMessageIds,\n shouldPoll,\n subscribedTopics.subscriptions.length,\n ]);\n\n const performClientRegistration = useCallback(\n async (subscription: PushSubscription | null, isPassive: boolean) => {\n setIsRegistering(true);\n\n try {\n const keys = subscription?.toJSON().keys;\n const payload: ClientRegistrationPayload = {\n origin_type: originType,\n origin_id: originId,\n ...(isPassive && subscription\n ? {\n endpoint: subscription.endpoint,\n auth: keys?.auth,\n p256dh: keys?.p256dh,\n }\n : {}),\n };\n\n const response = await apiAdapters.registerClient(payload);\n\n setClientId(response.id);\n setIsRegisterError(false);\n setIsPassiveClient(isPassive);\n\n if (!isPassive) {\n setShouldPoll(true);\n }\n\n return response.id;\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente:',\n data: error,\n });\n\n setIsRegisterError(true);\n onError?.(error as Error);\n\n return null;\n } finally {\n setIsRegistering(false);\n }\n },\n [apiAdapters, onError, originId, originType],\n );\n\n useEffect(() => {\n let mounted = true;\n let messageHandler: ((e: MessageEvent) => void) | null = null;\n\n async function initSwAndRegister() {\n setIsRegistering(true);\n\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Push notifications não suportadas, criando cliente ativo com polling',\n });\n\n try {\n const id = await performClientRegistration(null, false);\n if (mounted && id) {\n setClientId(id);\n setShouldPoll(true);\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente ativo:',\n data: err,\n });\n onError?.(err as Error);\n } finally {\n setIsRegistering(false);\n }\n return;\n }\n\n try {\n const permission = await Notification.requestPermission();\n\n let subscription: PushSubscription | null = null;\n let isPassiveClient = false;\n\n if (permission === 'granted') {\n try {\n const registration = await navigator.serviceWorker.register(\n `${serviceWorkerPath}${serviceWorkerFile}`,\n );\n\n if (!mounted) return;\n\n await navigator.serviceWorker.ready;\n\n if (!mounted) return;\n\n subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(\n vapidKey,\n ) as BufferSource,\n });\n\n messageHandler = async (e: MessageEvent) => {\n const message = e.data?.payload;\n const deliveredId = e.data?.id;\n\n if (message) {\n setNewMessageCount(prev => prev + 1);\n onMessageReceived?.(message, e.data?.topic);\n }\n\n if (deliveredId) {\n try {\n await apiAdapters.updateMessageStatus(deliveredId, {\n status: MessageStatus.DELIVERED,\n });\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [\n Environment.DEVELOPMENT,\n Environment.HOMOLOGATION,\n ],\n message: 'Erro ao atualizar status da mensagem:',\n data: err,\n });\n setIsRegisterError(true);\n onError?.(err as Error);\n }\n }\n };\n\n navigator.serviceWorker.addEventListener('message', messageHandler);\n\n isPassiveClient = true;\n consoleLog({\n type: ConsoleType.LOG,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Permissão concedida, criando cliente passivo (aguarda webpush)',\n });\n } catch (err) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Falha ao configurar push subscription, criando cliente ativo:',\n data: err,\n });\n isPassiveClient = false;\n }\n } else {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'Permissão de notificação negada, criando cliente ativo com polling',\n });\n isPassiveClient = false;\n }\n\n const id = await performClientRegistration(\n subscription,\n isPassiveClient,\n );\n if (mounted && id) {\n setClientId(id);\n\n if (!isPassiveClient) {\n setShouldPoll(true);\n }\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inicializar notificações:',\n data: err,\n });\n onError?.(err as Error);\n\n try {\n const id = await performClientRegistration(null, false);\n if (mounted && id) {\n setClientId(id);\n setShouldPoll(true);\n }\n } catch (fallbackErr) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao criar cliente ativo como fallback:',\n data: fallbackErr,\n });\n }\n } finally {\n setIsRegistering(false);\n }\n }\n\n if (bearerToken) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message:\n 'O parâmetro bearerToken está deprecated e não é mais necessário. Ele será removido em versões futuras.',\n });\n }\n\n void initSwAndRegister();\n\n return () => {\n mounted = false;\n if (messageHandler && 'serviceWorker' in navigator) {\n navigator.serviceWorker.removeEventListener('message', messageHandler);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiAdapters,\n onError,\n onMessageReceived,\n performClientRegistration,\n serviceWorkerFile,\n serviceWorkerPath,\n vapidKey,\n ]);\n\n const refetchSubscriptions = useCallback(async () => {\n if (!clientId) return;\n\n setIsLoadingSubscriptions(true);\n\n try {\n const data = await apiAdapters.listSubscriptions(clientId);\n\n setSubscribedTopics(data);\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao listar inscrições:',\n data: error,\n });\n\n onError?.(error as Error);\n } finally {\n setIsLoadingSubscriptions(false);\n }\n }, [apiAdapters, clientId, onError]);\n\n useEffect(() => {\n if (clientId) {\n void refetchSubscriptions();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clientId]);\n\n const subscribeToTopic = useCallback(\n async (topic: string, options?: TopicSubscriptionOptions) => {\n if (!clientId) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Cliente não registrado',\n });\n\n return;\n }\n\n try {\n if (options) {\n topicOptionsRef.current.set(topic, options);\n }\n\n await apiAdapters.subscribeTopic(clientId, topic);\n await refetchSubscriptions();\n\n if (!isPassiveClient && (!pollingEnabled || !shouldPoll)) {\n setPollingEnabled(true);\n setShouldPoll(true);\n }\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inscrever no tópico:',\n data: error,\n });\n\n onError?.(error as Error);\n }\n },\n [\n apiAdapters,\n clientId,\n isPassiveClient,\n onError,\n pollingEnabled,\n refetchSubscriptions,\n shouldPoll,\n ],\n );\n\n const unsubscribeFromTopic = useCallback(\n async (topic: string) => {\n if (!clientId) {\n consoleLog({\n type: ConsoleType.WARN,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Cliente não registrado',\n });\n\n return;\n }\n\n try {\n topicOptionsRef.current.delete(topic);\n\n await apiAdapters.unsubscribeTopic(clientId, topic);\n await refetchSubscriptions();\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao desinscrever do tópico:',\n data: error,\n });\n\n onError?.(error as Error);\n }\n },\n [apiAdapters, clientId, onError, refetchSubscriptions],\n );\n\n const subscribeTopicsBatch = useCallback(\n async (topics: string[]): Promise<void> => {\n if (!clientId || topics.length === 0) return;\n\n try {\n topics.forEach(topic => {\n if (!topicOptionsRef.current.has(topic)) {\n topicOptionsRef.current.set(topic, {});\n }\n });\n\n await apiAdapters.subscribeTopicsBatch(clientId, topics);\n await refetchSubscriptions();\n\n if (!isPassiveClient) {\n setPollingEnabled(true);\n setShouldPoll(true);\n }\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao inscrever em tópicos:',\n data: err,\n });\n\n onError?.(err as Error);\n }\n },\n [apiAdapters, clientId, isPassiveClient, onError, refetchSubscriptions],\n );\n\n const unsubscribeTopicsBatch = useCallback(\n async (topics: string[]): Promise<void> => {\n if (!clientId || topics.length === 0) return;\n\n try {\n topics.forEach(topic => topicOptionsRef.current.delete(topic));\n\n await apiAdapters.unsubscribeTopicsBatch(clientId, topics);\n await refetchSubscriptions();\n } catch (err) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao desinscrever de tópicos:',\n data: err,\n });\n\n onError?.(err as Error);\n }\n },\n [apiAdapters, clientId, onError, refetchSubscriptions],\n );\n\n const registerClient = useCallback(async () => {\n setIsRegistering(true);\n\n try {\n let subscription: PushSubscription | null = null;\n let isPassive = false;\n\n if ('serviceWorker' in navigator && 'PushManager' in window) {\n const permission = await Notification.requestPermission();\n\n if (permission === 'granted') {\n try {\n const registration = await navigator.serviceWorker.register(\n `${serviceWorkerPath}${serviceWorkerFile}`,\n );\n\n await navigator.serviceWorker.ready;\n\n subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(\n vapidKey,\n ) as BufferSource,\n });\n\n isPassive = true;\n } catch {\n isPassive = false;\n }\n }\n }\n\n return await performClientRegistration(subscription, isPassive);\n } catch (error) {\n consoleLog({\n type: ConsoleType.ERROR,\n environment: [Environment.DEVELOPMENT, Environment.HOMOLOGATION],\n message: 'Erro ao registrar cliente:',\n data: error,\n });\n\n onError?.(error as Error);\n\n return null;\n } finally {\n setIsRegistering(false);\n }\n }, [onError, performClientRegistration, serviceWorkerFile, serviceWorkerPath, vapidKey]);\n\n const resetMessageCount = useCallback(() => {\n setNewMessageCount(0);\n }, []);\n\n const value: PushNotificationContextData = useMemo(\n () => ({\n clientId,\n subscribedTopics,\n isLoading,\n newMessageCount,\n isRegisterError,\n subscribeToTopic,\n unsubscribeFromTopic,\n subscribeTopicsBatch,\n unsubscribeTopicsBatch,\n resetMessageCount,\n registerClient,\n }),\n [\n clientId,\n isLoading,\n isRegisterError,\n newMessageCount,\n registerClient,\n resetMessageCount,\n subscribedTopics,\n subscribeToTopic,\n subscribeTopicsBatch,\n unsubscribeFromTopic,\n unsubscribeTopicsBatch,\n ],\n );\n\n return (\n <PushNotificationContext.Provider value={value}>\n {children}\n </PushNotificationContext.Provider>\n );\n};\n\nexport function usePushNotifications(): PushNotificationContextData {\n const context = useContext(PushNotificationContext);\n\n if (!context) {\n throw new Error(\n 'usePushNotifications precisa estar dentro de PushNotificationProvider',\n );\n }\n\n return context;\n}\n"]}
@@ -20,9 +20,15 @@ type AdminProps = {
20
20
  bottomArea?: ReactNode;
21
21
  };
22
22
  };
23
+ sidebarProps?: {
24
+ slots?: {
25
+ topArea?: ReactNode;
26
+ bottomArea?: ReactNode;
27
+ };
28
+ };
23
29
  mainProps?: BoxProps;
24
30
  };
25
31
 
26
- declare const Admin: ({ children, footerContent, headerProps, sidebarContent, isNavMini, onToggleNavMini, mainProps, }: PropsWithChildren<AdminProps>) => react_jsx_runtime.JSX.Element;
32
+ declare const Admin: ({ children, footerContent, headerProps, sidebarContent, sidebarProps, isNavMini, onToggleNavMini, mainProps, }: PropsWithChildren<AdminProps>) => react_jsx_runtime.JSX.Element;
27
33
 
28
34
  export { Admin as default };
@@ -1,17 +1,16 @@
1
1
  import { a } from '../../chunk-F65ZXAGV.js';
2
2
  import { styled, useTheme } from '@mui/material/styles';
3
- import Z from '@mui/material/Stack';
3
+ import z from '@mui/material/Stack';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
- import Q from '@mui/material/Box';
6
- import q from '@mui/material/Container';
7
- import K from '@mui/material/Toolbar';
8
- import X from '@mui/material/AppBar';
9
- import n1 from '@mui/material/Divider';
10
- import a1 from '@mui/material/SvgIcon';
11
- import t1 from '@mui/material/IconButton';
12
- import d1 from '@mui/material/GlobalStyles';
5
+ import L from '@mui/material/Box';
6
+ import V from '@mui/material/Container';
7
+ import O from '@mui/material/Toolbar';
8
+ import E from '@mui/material/AppBar';
9
+ import Y from '@mui/material/SvgIcon';
10
+ import K from '@mui/material/IconButton';
11
+ import rt from '@mui/material/GlobalStyles';
13
12
 
14
- var E=({children:o,isNavHorizontal:t,sx:r,...i})=>jsx(Z,{component:"main",flex:"1 1 auto",bgcolor:"grey.100",sx:{...t&&{"--layout-dashboard-content-pt":"40px"},...r},...i,children:o}),v=E;var u={root:"layout__root",main:"layout__main",header:"layout__header",content:"layout__main__content",hasSidebar:"layout__has__sidebar"};var H=styled("span")(({theme:o})=>({width:1,height:10,flexShrink:0,display:"none",position:"relative",alignItems:"center",flexDirection:"column",marginLeft:o.spacing(2.5),marginRight:o.spacing(2.5),backgroundColor:"currentColor","&::before, &::after":{top:-5,width:3,height:3,content:'""',flexShrink:0,borderRadius:"50%",position:"absolute",backgroundColor:"currentColor"},"&::after":{bottom:-5,top:"auto"}})),k=styled(X)(({theme:o})=>({zIndex:"var(--layout-header-zIndex)",backgroundColor:o.palette.background.paper,"&::before":{content:'""',position:"absolute",bottom:0,left:0,width:"100%",height:"1px",backgroundColor:o.palette.divider,zIndex:1}}));var U=({sx:o,slots:t,slotProps:r,layoutQuery:i="md",...n})=>{let e=useTheme(),d={default:{minHeight:"auto",height:"var(--layout-header-mobile-height)",backgroundColor:e.palette.background.paper,transition:e.transitions.create(["height","background-color"],{easing:e.transitions.easing.easeInOut,duration:e.transitions.duration.shorter}),[e.breakpoints.up("sm")]:{minHeight:"auto"},[e.breakpoints.up(i)]:{height:"var(--layout-header-desktop-height)"}}};return jsxs(k,{position:"sticky",sx:o,...n,children:[t?.topArea,jsx(K,{disableGutters:!0,...r?.toolbar,sx:{...d.default,...r?.toolbar?.sx,maxHeight:64},children:jsxs(q,{...r?.container,sx:{height:1,display:"flex",alignItems:"center",...r?.container?.sx},children:[t?.leftArea,jsx(Q,{sx:{display:"flex",flex:"1 1 auto",justifyContent:"center"},children:t?.centerArea}),t?.rightArea]})}),t?.bottomArea]})},w=U;var Y=({sx:o,slots:t,slotProps:r,layoutQuery:i,...n})=>jsx(w,{sx:o,layoutQuery:i,slots:{...t,leftAreaStart:t?.leftAreaStart,leftArea:jsxs(Fragment,{children:[t?.leftAreaStart,jsx(H,{"data-slot":"divider"}),t?.leftAreaEnd]}),rightArea:jsxs(Fragment,{children:[t?.rightAreaStart,t?.rightAreaEnd]}),centerArea:t?.centerArea},slotProps:r,...n}),P=Y;var o1=({variant:o="full",...t})=>jsx(Z,{...t,children:o==="full"?jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"224",height:"56",viewBox:"0 0 224 56",fill:"none",children:[jsx("path",{d:"M33.8104 0.0012207L27.0515 13.7512H0.000488281V0.0012207H33.8104Z",fill:"currentColor"}),jsx("path",{d:"M54.1018 13.7518V27.5018H20.2842L27.0508 13.7518H54.1018Z",fill:"currentColor"}),jsx("path",{d:"M20.2849 27.5001L13.526 41.2501H0.000488281V27.5001H20.2849Z",fill:"currentColor"}),jsx("path",{d:"M54.102 41.2515V55.0015H6.7666L13.5255 41.2515H54.102Z",fill:"currentColor"}),jsx("path",{d:"M102.287 18.077V13.9543H79.585V19.0429H94.6476L79.585 37.2453V41.368H102.287V36.2873H87.2244L102.287 18.077Z",fill:"currentColor"}),jsx("path",{d:"M120.44 39.4362L111.866 13.9543H105.81L115.202 41.368H119.791L118.833 44.2028C118.424 45.3807 118.022 46.1424 117.613 46.48C117.203 46.8177 116.462 46.9905 115.372 46.9905H111.371L111.587 52.079H117.697C118.995 52.079 120.023 51.8591 120.78 51.4115C121.537 50.9639 122.154 50.3043 122.641 49.4326C123.128 48.561 123.653 47.2967 124.217 45.6555L135.077 13.9543H129.022L120.447 39.4362H120.44Z",fill:"currentColor"}),jsx("path",{d:"M157.3 17.7537C156.388 16.4659 155.191 15.4608 153.716 14.7305C152.24 14.0002 150.518 13.6311 148.556 13.6311C146.13 13.6311 143.952 14.2122 142.021 15.3744C140.09 16.5366 138.568 18.1778 137.463 20.298C136.359 22.4261 135.803 24.8761 135.803 27.6638C135.803 30.4515 136.351 33.0114 137.433 35.1317C138.522 37.2597 140.028 38.8774 141.959 40.0082C143.89 41.1311 146.084 41.6965 148.54 41.6965C152.264 41.6965 155.199 40.2123 157.338 37.2519L158.026 41.3745H162.977V3.8938H157.292V17.7616L157.3 17.7537ZM155.191 34.2993C153.754 35.9797 151.854 36.8121 149.498 36.8121C147.142 36.8121 145.25 35.964 143.813 34.2679C142.376 32.5717 141.65 30.3651 141.65 27.6559C141.65 24.9468 142.369 22.7951 143.813 21.099C145.25 19.4028 147.15 18.5547 149.498 18.5547C151.846 18.5547 153.747 19.4028 155.191 21.099C156.628 22.7951 157.354 25.0174 157.354 27.7659C157.354 30.5143 156.636 32.6188 155.191 34.2993Z",fill:"currentColor"}),jsx("path",{d:"M188.152 15.3971C186.059 14.2192 183.664 13.6302 180.96 13.6302C178.257 13.6302 175.862 14.2192 173.769 15.3971C171.676 16.575 170.061 18.2241 168.926 20.3521C167.783 22.4723 167.211 24.9145 167.211 27.663C167.211 30.4114 167.783 32.9007 168.926 35.0287C170.069 37.1489 171.683 38.798 173.769 39.9524C175.862 41.1145 178.257 41.6956 180.96 41.6956C183.664 41.6956 186.059 41.1145 188.152 39.9524C190.245 38.7902 191.86 37.1489 192.995 35.0287C194.138 32.9007 194.71 30.4506 194.71 27.663C194.71 24.8753 194.138 22.4802 192.995 20.3521C191.852 18.2241 190.238 16.575 188.152 15.3971ZM186.731 34.2199C185.271 35.9161 183.347 36.7642 180.96 36.7642C178.574 36.7642 176.658 35.9161 175.221 34.2199C173.784 32.5237 173.058 30.3407 173.058 27.663C173.058 24.9852 173.777 22.8022 175.221 21.106C176.658 19.4098 178.574 18.5617 180.96 18.5617C183.347 18.5617 185.271 19.4098 186.731 21.106C188.191 22.8022 188.917 24.9852 188.917 27.663C188.917 30.3407 188.191 32.5237 186.731 34.2199Z",fill:"currentColor"}),jsx("path",{d:"M220.981 16.63C218.965 14.6275 216.354 13.6302 213.156 13.6302C209.433 13.6302 206.552 14.9338 204.52 17.5409L203.887 13.9522H198.936V41.3658H204.621V27.553C204.621 24.7653 205.262 22.5823 206.544 20.996C207.826 19.4098 209.588 18.6167 211.835 18.6167C213.944 18.6167 215.543 19.292 216.632 20.6505C217.721 22.009 218.262 23.9879 218.262 26.595V41.3737H224.001V26.273C224.001 21.8441 222.989 18.6324 220.973 16.6378L220.981 16.63Z",fill:"currentColor"})]}):jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 36 36",fill:"none",children:[jsx("path",{d:"M22.486 0L17.9456 8.9728H0V0H22.486Z",fill:"currentColor"}),jsx("path",{d:"M35.8916 8.97327V17.9461H13.5137L17.946 8.97327H35.8916Z",fill:"currentColor"}),jsx("path",{d:"M13.5133 17.9457L8.97279 26.9185H0V17.9457H13.5133Z",fill:"currentColor"}),jsx("path",{d:"M35.8908 26.9193V36.0002H4.54004L8.97243 26.9193H35.8908Z",fill:"currentColor"})]})}),h=o1;var I=styled(t1,{shouldForwardProp:o=>o!=="isNavMini"})(({theme:o,isNavMini:t})=>({padding:8,top:15,position:"fixed",color:o.palette.action.active,backgroundColor:o.palette.background.paper,transform:"translateX(-50%)",zIndex:"var(--layout-nav-zIndex)",left:t?"var(--layout-nav-mini-width)":"var(--layout-nav-vertical-width)",border:`1px solid ${o.palette.divider}`,transition:o.transitions.create(["left"],{easing:"var(--layout-transition-easing)",duration:"var(--layout-transition-duration)"}),"&:hover":{color:o.palette.text.primary,backgroundColor:o.palette.background.neutral}}));var e1=({isNavMini:o,...t})=>jsx(I,{size:"small",isNavMini:o,...t,children:jsx(a1,{sx:{width:16,height:16,...o&&{transform:"scaleX(-1)"}},children:jsx("path",{fill:"currentColor",d:"M13.83 19a1 1 0 0 1-.78-.37l-4.83-6a1 1 0 0 1 0-1.27l5-6a1 1 0 0 1 1.54 1.28L10.29 12l4.32 5.36a1 1 0 0 1-.78 1.64"})})}),_=e1;var N=styled(Z)({padding:"12px 16px 24px",svg:{width:125}}),z=styled(Z)({padding:"12px 24px 24px",alignItems:"center",justifyContent:"center",svg:{width:32,height:32}}),T=styled(Q,{shouldForwardProp:o=>o!=="isNavMini"&&o!=="layoutQuery"})(({theme:o,isNavMini:t,layoutQuery:r})=>({top:0,left:0,height:"100%",display:"none",position:"fixed",flexDirection:"column",backgroundColor:o.palette.background.paper,zIndex:"var(--layout-nav-zIndex)",width:t?"var(--layout-nav-mini-width)":"var(--layout-nav-vertical-width)",borderRight:`1px solid ${o.palette.divider}`,transition:o.transitions.create(["width"],{easing:"var(--layout-transition-easing)",duration:"var(--layout-transition-duration)"}),[o.breakpoints.up(r)]:{display:"flex"}}));var p1=({slots:o,isNavMini:t,layoutQuery:r,onToggleNav:i,children:n})=>{let e=useTheme(),d=jsxs(Fragment,{children:[o?.topArea??jsx(N,{children:jsx(h,{variant:"full"})}),jsx(a,{fillContent:!0,sx:{px:2,pb:2},children:n})]}),p=jsxs(Fragment,{children:[o?.topArea??jsx(z,{children:jsx(h,{variant:"mini"})}),jsx(n1,{sx:{mx:3,mb:3}}),jsx(a,{fillContent:!0,sx:{px:2,pb:2},children:n}),o?.bottomArea]});return jsxs(T,{isNavMini:t,layoutQuery:r,children:[jsx(_,{isNavMini:t,onClick:i,sx:{display:"none",[e.breakpoints.up(r)]:{display:"inline-flex"}}}),t?p:d]})},D=p1;var s1=({sx:o,cssVars:t,children:r,footerSection:i,headerSection:n,sidebarSection:e})=>jsxs(Fragment,{children:[jsx(d1,{styles:{body:{"--layout-nav-zIndex":1101,"--layout-nav-mobile-width":"320px","--layout-header-blur":"8px","--layout-header-zIndex":1100,"--layout-header-mobile-height":"64px","--layout-header-desktop-height":"72px",...t}}}),jsx(Q,{id:"root__layout",sx:o,children:e?jsxs(Fragment,{children:[e,jsxs(Q,{display:"flex",flex:"1 1 auto",flexDirection:"column",className:u.hasSidebar,children:[n,r,i]})]}):jsxs(Fragment,{children:[n,r,i]})})]}),R=s1;var m1=({children:o,footerContent:t,headerProps:r,sidebarContent:i,isNavMini:n,onToggleNavMini:e,mainProps:d})=>{let p=useTheme(),s="lg";return jsx(R,{headerSection:jsx(P,{layoutQuery:s,slotProps:{toolbar:{sx:{['& [data-area="right"]']:{gap:{xs:0,sm:.75}}}},container:{maxWidth:!1,sx:{px:{[s]:5}}}},slots:r?.slots}),sidebarSection:jsx(D,{isNavMini:n,layoutQuery:s,onToggleNav:e,children:i}),footerSection:t,cssVars:{"--layout-transition-easing":"linear","--layout-transition-duration":"120ms","--layout-nav-mini-width":"88px","--layout-nav-vertical-width":"300px","--layout-nav-horizontal-height":"64px","--layout-dashboard-content-pt":p.spacing(1),"--layout-dashboard-content-pb":p.spacing(8),"--layout-dashboard-content-px":p.spacing(5)},sx:{[`& .${u.hasSidebar}`]:{[p.breakpoints.up(s)]:{transition:p.transitions.create(["padding-left"],{easing:"var(--layout-transition-easing)",duration:"var(--layout-transition-duration)"}),pl:n?"var(--layout-nav-mini-width)":"var(--layout-nav-vertical-width)"}}},children:jsx(v,{isNavHorizontal:!1,...d,children:o})})},mo=m1;
13
+ var R=({children:t,isNavHorizontal:o,sx:r,...e})=>jsx(z,{component:"main",flex:"1 1 auto",bgcolor:"grey.100",sx:{...o&&{"--layout-dashboard-content-pt":"40px"},...r},...e,children:t}),b=R;var s={root:"layout__root",main:"layout__main",header:"layout__header",content:"layout__main__content",hasSidebar:"layout__has__sidebar"};var k=styled("span")(({theme:t})=>({width:1,height:10,flexShrink:0,display:"none",position:"relative",alignItems:"center",flexDirection:"column",marginLeft:t.spacing(2.5),marginRight:t.spacing(2.5),backgroundColor:"currentColor","&::before, &::after":{top:-5,width:3,height:3,content:'""',flexShrink:0,borderRadius:"50%",position:"absolute",backgroundColor:"currentColor"},"&::after":{bottom:-5,top:"auto"}})),S=styled(E)(({theme:t})=>({zIndex:"var(--layout-header-zIndex)",backgroundColor:t.palette.background.paper,"&::before":{content:'""',position:"absolute",bottom:0,left:0,width:"100%",height:"1px",backgroundColor:t.palette.divider,zIndex:1}}));var q=({sx:t,slots:o,slotProps:r,layoutQuery:e="md",...i})=>{let a=useTheme(),n={default:{minHeight:"auto",height:"var(--layout-header-mobile-height)",backgroundColor:a.palette.background.paper,transition:a.transitions.create(["height","background-color"],{easing:a.transitions.easing.easeInOut,duration:a.transitions.duration.shorter}),[a.breakpoints.up("sm")]:{minHeight:"auto"},[a.breakpoints.up(e)]:{height:"var(--layout-header-desktop-height)"}}};return jsxs(S,{position:"sticky",sx:t,...i,children:[o?.topArea,jsx(O,{disableGutters:!0,...r?.toolbar,sx:{...n.default,...r?.toolbar?.sx,maxHeight:64},children:jsxs(V,{...r?.container,sx:{height:1,display:"flex",alignItems:"center",...r?.container?.sx},children:[o?.leftArea,jsx(L,{sx:{display:"flex",flex:"1 1 auto",justifyContent:"center"},children:o?.centerArea}),o?.rightArea]})}),o?.bottomArea]})},B=q;var J=({sx:t,slots:o,slotProps:r,layoutQuery:e,...i})=>jsx(B,{sx:t,layoutQuery:e,slots:{...o,leftAreaStart:o?.leftAreaStart,leftArea:jsxs(Fragment,{children:[o?.leftAreaStart,jsx(k,{"data-slot":"divider"}),o?.leftAreaEnd]}),rightArea:jsxs(Fragment,{children:[o?.rightAreaStart,o?.rightAreaEnd]}),centerArea:o?.centerArea},slotProps:r,...i}),_=J;var M=styled(K,{shouldForwardProp:t=>t!=="isNavMini"})(({theme:t,isNavMini:o})=>({padding:8,top:15,position:"fixed",color:t.palette.action.active,backgroundColor:t.palette.background.paper,transform:"translateX(-50%)",zIndex:"var(--layout-nav-zIndex)",left:o?"var(--layout-nav-mini-width)":"var(--layout-nav-vertical-width)",border:`1px solid ${t.palette.divider}`,transition:t.transitions.create(["left"],{easing:"var(--layout-transition-easing)",duration:"var(--layout-transition-duration)"}),"&:hover":{color:t.palette.text.primary,backgroundColor:t.palette.background.neutral}}));var Z=({isNavMini:t,...o})=>jsx(M,{size:"small",isNavMini:t,...o,children:jsx(Y,{sx:{width:16,height:16,...t&&{transform:"scaleX(-1)"}},children:jsx("path",{fill:"currentColor",d:"M13.83 19a1 1 0 0 1-.78-.37l-4.83-6a1 1 0 0 1 0-1.27l5-6a1 1 0 0 1 1.54 1.28L10.29 12l4.32 5.36a1 1 0 0 1-.78 1.64"})})}),N=Z;styled(z)({padding:"12px 16px 24px",svg:{width:125}});styled(z)({padding:"12px 24px 24px",alignItems:"center",justifyContent:"center",svg:{width:32,height:32}});var H=styled(L,{shouldForwardProp:t=>t!=="isNavMini"&&t!=="layoutQuery"})(({theme:t,isNavMini:o,layoutQuery:r})=>({top:0,left:0,height:"100%",display:"none",position:"fixed",flexDirection:"column",backgroundColor:t.palette.background.paper,zIndex:"var(--layout-nav-zIndex)",width:o?"var(--layout-nav-mini-width)":"var(--layout-nav-vertical-width)",borderRight:`1px solid ${t.palette.divider}`,transition:t.transitions.create(["width"],{easing:"var(--layout-transition-easing)",duration:"var(--layout-transition-duration)"}),[t.breakpoints.up(r)]:{display:"flex"}}));var ot=({slots:t,isNavMini:o,layoutQuery:r,onToggleNav:e,children:i})=>{let a$1=useTheme(),n=jsxs(Fragment,{children:[t?.topArea,jsx(a,{fillContent:!0,sx:{p:2},children:i}),t?.bottomArea]}),m=jsxs(Fragment,{children:[t?.topArea,jsx(a,{fillContent:!0,sx:{p:2},children:i}),t?.bottomArea]});return jsxs(H,{isNavMini:o,layoutQuery:r,children:[jsx(N,{isNavMini:o,onClick:e,sx:{display:"none",[a$1.breakpoints.up(r)]:{display:"inline-flex"}}}),o?m:n]})},W=ot;var at=({sx:t,cssVars:o,children:r,footerSection:e,headerSection:i,sidebarSection:a})=>jsxs(Fragment,{children:[jsx(rt,{styles:{body:{"--layout-nav-zIndex":1101,"--layout-nav-mobile-width":"320px","--layout-header-blur":"8px","--layout-header-zIndex":1100,"--layout-header-mobile-height":"64px","--layout-header-desktop-height":"72px",...o}}}),jsx(L,{id:"root__layout",sx:t,children:a?jsxs(Fragment,{children:[a,jsxs(L,{display:"flex",flex:"1 1 auto",flexDirection:"column",className:s.hasSidebar,children:[i,r,e]})]}):jsxs(Fragment,{children:[i,r,e]})})]}),D=at;var it=({children:t,footerContent:o,headerProps:r,sidebarContent:e,sidebarProps:i,isNavMini:a,onToggleNavMini:n,mainProps:m})=>{let l=useTheme(),p="lg";return jsx(D,{headerSection:jsx(_,{layoutQuery:p,slotProps:{toolbar:{sx:{['& [data-area="right"]']:{gap:{xs:0,sm:.75}}}},container:{maxWidth:!1,sx:{px:{[p]:5}}}},slots:r?.slots}),sidebarSection:jsx(W,{isNavMini:a,layoutQuery:p,onToggleNav:n,slots:i?.slots,children:e}),footerSection:o,cssVars:{"--layout-transition-easing":"linear","--layout-transition-duration":"120ms","--layout-nav-mini-width":"88px","--layout-nav-vertical-width":"300px","--layout-nav-horizontal-height":"64px","--layout-dashboard-content-pt":l.spacing(1),"--layout-dashboard-content-pb":l.spacing(8),"--layout-dashboard-content-px":l.spacing(5)},sx:{[`& .${s.hasSidebar}`]:{[l.breakpoints.up(p)]:{transition:l.transitions.create(["padding-left"],{easing:"var(--layout-transition-easing)",duration:"var(--layout-transition-duration)"}),pl:a?"var(--layout-nav-mini-width)":"var(--layout-nav-vertical-width)"}}},children:jsx(b,{isNavHorizontal:!1,...m,children:t})})},oo=it;
15
14
 
16
- export { mo as default };
15
+ export { oo as default };
17
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layouts/Admin/index.tsx","../../../src/layouts/Admin/Wrapper/Main.tsx","../../../src/layouts/Admin/classes.ts","../../../src/layouts/Admin/Header/HeaderSection.tsx","../../../src/layouts/Admin/Header/styles.ts","../../../src/layouts/Admin/Header/index.tsx","../../../src/layouts/Admin/Sidebar/index.tsx","../../../src/components/Logo/index.tsx","../../../src/layouts/Admin/NavToggleButton/index.tsx","../../../src/layouts/Admin/NavToggleButton/styles.ts","../../../src/layouts/Admin/Sidebar/styles.ts","../../../src/layouts/Admin/Wrapper/index.tsx"],"names":["useTheme","Stack","jsx","Main","children","isNavHorizontal","sx","other","Main_default","layoutClasses","Box","Container","Toolbar","MuiAppBar","styled","StyledDivider","theme","AppBar","jsxs","HeaderSection","slots","slotProps","layoutQuery","toolbarStyles","HeaderSection_default","Fragment","Header","Header_default","Divider","Logo","variant","Logo_default","SvgIcon","IconButton","Button","prop","isNavMini","NavToggleButton","NavToggleButton_default","LogoFull","LogoMini","Sidebar","onToggleNav","renderNavVertical","Scrollbar_default","renderNavMini","Sidebar_default","GlobalStyles","Wrapper","cssVars","footerSection","headerSection","sidebarSection","Wrapper_default","Admin","footerContent","headerProps","sidebarContent","onToggleNavMini","mainProps","Admin_default"],"mappings":"4CAEA,OAAS,YAAAA,OAAgB,uBCFzB,OAAOC,MAAW,sBAMd,cAAAC,MAAA,oBAFJ,IAAMC,EAAO,CAAC,CAAE,SAAAC,EAAU,gBAAAC,EAAiB,GAAAC,EAAI,GAAGC,CAAM,IAEpDL,EAACD,EAAA,CACC,UAAU,OACV,KAAK,WACL,QAAQ,WACR,GAAI,CACF,GAAII,GAAmB,CACrB,gCAAiC,MACnC,EACA,GAAGC,CACL,EACC,GAAGC,EAEH,SAAAH,EACH,EAIGI,EAAQL,ECvBR,IAAMM,EAAgB,CAC3B,KAAM,eACN,KAAM,eACN,OAAQ,iBACR,QAAS,wBACT,WAAY,sBACd,ECNA,OAAOC,MAAS,oBAChB,OAAOC,MAAe,0BACtB,OAAS,YAAAX,MAAgB,uBACzB,OAAOY,MAAa,wBCHpB,OAAOC,MAAe,uBACtB,OAAS,UAAAC,MAAc,uBAEhB,IAAMC,EAAgBD,EAAO,MAAM,EAAE,CAAC,CAAE,MAAAE,CAAM,KAAO,CAC1D,MAAO,EACP,OAAQ,GACR,WAAY,EACZ,QAAS,OACT,SAAU,WACV,WAAY,SACZ,cAAe,SACf,WAAYA,EAAM,QAAQ,GAAG,EAC7B,YAAaA,EAAM,QAAQ,GAAG,EAC9B,gBAAiB,eAEjB,sBAAuB,CACrB,IAAK,GACL,MAAO,EACP,OAAQ,EACR,QAAS,KACT,WAAY,EACZ,aAAc,MACd,SAAU,WACV,gBAAiB,cACnB,EACA,WAAY,CAAE,OAAQ,GAAI,IAAK,MAAO,CACxC,EAAE,EAEWC,EAASH,EAAOD,CAAS,EAAE,CAAC,CAAE,MAAAG,CAAM,KAAO,CACtD,OAAQ,8BACR,gBAAiBA,EAAM,QAAQ,WAAW,MAE1C,YAAa,CACX,QAAS,KACT,SAAU,WACV,OAAQ,EACR,KAAM,EACN,MAAO,OACP,OAAQ,MACR,gBAAiBA,EAAM,QAAQ,QAC/B,OAAQ,CACV,CACF,EAAE,EDMM,OAWE,OAAAd,EAXF,QAAAgB,MAAA,oBAxCR,IAAMC,EAAgB,CAAC,CACrB,GAAAb,EACA,MAAAc,EACA,UAAAC,EACA,YAAAC,EAAc,KACd,GAAGf,CACL,IAA0B,CACxB,IAAMS,EAAQhB,EAAS,EAEjBuB,EAAgB,CACpB,QAAS,CACP,UAAW,OACX,OAAQ,qCACR,gBAAiBP,EAAM,QAAQ,WAAW,MAC1C,WAAYA,EAAM,YAAY,OAAO,CAAC,SAAU,kBAAkB,EAAG,CACnE,OAAQA,EAAM,YAAY,OAAO,UACjC,SAAUA,EAAM,YAAY,SAAS,OACvC,CAAC,EACD,CAACA,EAAM,YAAY,GAAG,IAAI,CAAC,EAAG,CAC5B,UAAW,MACb,EACA,CAACA,EAAM,YAAY,GAAGM,CAAW,CAAC,EAAG,CACnC,OAAQ,qCACV,CACF,CACF,EAEA,OACEJ,EAACD,EAAA,CAAO,SAAS,SAAS,GAAIX,EAAK,GAAGC,EACnC,UAAAa,GAAO,QAERlB,EAACU,EAAA,CACC,eAAc,GACb,GAAGS,GAAW,QACf,GAAI,CACF,GAAGE,EAAc,QACjB,GAAGF,GAAW,SAAS,GACvB,UAAW,EACb,EAEA,SAAAH,EAACP,EAAA,CACE,GAAGU,GAAW,UACf,GAAI,CACF,OAAQ,EACR,QAAS,OACT,WAAY,SACZ,GAAGA,GAAW,WAAW,EAC3B,EAEC,UAAAD,GAAO,SAERlB,EAACQ,EAAA,CACC,GAAI,CAAE,QAAS,OAAQ,KAAM,WAAY,eAAgB,QAAS,EAEjE,SAAAU,GAAO,WACV,EAECA,GAAO,WACV,EACF,EAECA,GAAO,YACV,CAEJ,EAEOI,EAAQL,EEvDL,mBAAAM,EAGE,OAAAvB,EAHF,QAAAgB,MAAA,oBAfV,IAAMQ,EAAS,CAAC,CACd,GAAApB,EACA,MAAAc,EACA,UAAAC,EACA,YAAAC,EACA,GAAGf,CACL,IAEIL,EAACsB,EAAA,CACC,GAAIlB,EACJ,YAAagB,EACb,MAAO,CACL,GAAGF,EACH,cAAeA,GAAO,cACtB,SACEF,EAAAO,EAAA,CACG,UAAAL,GAAO,cAERlB,EAACa,EAAA,CAAc,YAAU,UAAU,EAElCK,GAAO,aACV,EAEF,UACEF,EAAAO,EAAA,CACG,UAAAL,GAAO,eAEPA,GAAO,cACV,EAEF,WAAYA,GAAO,UACrB,EACA,UAAWC,EACV,GAAGd,EACN,EAIGoB,EAAQD,ECzCf,OAAOE,OAAa,wBACpB,OAAS,YAAA5B,OAAgB,uBCFzB,OAAOC,MAAW,sBAQV,OAOE,OAAAC,EAPF,QAAAgB,MAAA,oBAJR,IAAMW,GAAO,CAAC,CAAE,QAAAC,EAAU,OAAQ,GAAGvB,CAAM,IAEvCL,EAACD,EAAA,CAAO,GAAGM,EACR,SAAAuB,IAAY,OACXZ,EAAC,OACC,MAAM,6BACN,MAAM,MACN,OAAO,KACP,QAAQ,aACR,KAAK,OAEL,UAAAhB,EAAC,QACC,EAAE,oEACF,KAAK,eACP,EACAA,EAAC,QACC,EAAE,4DACF,KAAK,eACP,EACAA,EAAC,QACC,EAAE,+DACF,KAAK,eACP,EACAA,EAAC,QACC,EAAE,yDACF,KAAK,eACP,EACAA,EAAC,QACC,EAAE,+GACF,KAAK,eACP,EACAA,EAAC,QACC,EAAE,0YACF,KAAK,eACP,EACAA,EAAC,QACC,EAAE,i4BACF,KAAK,eACP,EACAA,EAAC,QACC,EAAE,o9BACF,KAAK,eACP,EACAA,EAAC,QACC,EAAE,ibACF,KAAK,eACP,GACF,EAEAgB,EAAC,OACC,MAAM,6BACN,MAAM,MACN,OAAO,MACP,QAAQ,YACR,KAAK,OAEL,UAAAhB,EAAC,QAAK,EAAE,uCAAuC,KAAK,eAAe,EACnEA,EAAC,QACC,EAAE,2DACF,KAAK,eACP,EACAA,EAAC,QACC,EAAE,sDACF,KAAK,eACP,EACAA,EAAC,QACC,EAAE,4DACF,KAAK,eACP,GACF,EAEJ,EAIG6B,EAAQF,GC/Ef,OAAOG,OAAa,wBCApB,OAAOC,OAAgB,2BACvB,OAAS,UAAAnB,OAAc,uBAEhB,IAAMoB,EAASpB,GAAOmB,GAAY,CACvC,kBAAmBE,GAAQA,IAAS,WACtC,CAAC,EAA0B,CAAC,CAAE,MAAAnB,EAAO,UAAAoB,CAAU,KAAO,CACpD,QAAS,EACT,IAAK,GACL,SAAU,QACV,MAAOpB,EAAM,QAAQ,OAAO,OAC5B,gBAAiBA,EAAM,QAAQ,WAAW,MAC1C,UAAW,mBACX,OAAQ,2BACR,KAAMoB,EACF,+BACA,mCACJ,OAAQ,aAAapB,EAAM,QAAQ,UACnC,WAAYA,EAAM,YAAY,OAAO,CAAC,MAAM,EAAG,CAC7C,OAAQ,kCACR,SAAU,mCACZ,CAAC,EAED,UAAW,CACT,MAAOA,EAAM,QAAQ,KAAK,QAC1B,gBAAiBA,EAAM,QAAQ,WAAW,OAC5C,CACF,EAAE,EDTM,cAAAd,MAAA,oBAZR,IAAMmC,GAAkB,CAAC,CAAE,UAAAD,EAAW,GAAG7B,CAAM,IAE3CL,EAACgC,EAAA,CAAO,KAAK,QAAQ,UAAWE,EAAY,GAAG7B,EAC7C,SAAAL,EAAC8B,GAAA,CACC,GAAI,CACF,MAAO,GACP,OAAQ,GACR,GAAII,GAAa,CACf,UAAW,YACb,CACF,EAEA,SAAAlC,EAAC,QACC,KAAK,eACL,EAAE,qHACJ,EACF,EACF,EAIGoC,EAAQD,GE1Bf,OAAO3B,OAAS,oBAChB,OAAOT,MAAW,sBAClB,OAAqB,UAAAa,MAAc,uBAE5B,IAAMyB,EAAWzB,EAAOb,CAAK,EAAE,CACpC,QAAS,iBAET,IAAK,CACH,MAAO,GACT,CACF,CAAC,EAEYuC,EAAW1B,EAAOb,CAAK,EAAE,CACpC,QAAS,iBACT,WAAY,SACZ,eAAgB,SAEhB,IAAK,CACH,MAAO,GACP,OAAQ,EACV,CACF,CAAC,EAEYU,EAAYG,EAAOJ,GAAK,CACnC,kBAAmByB,GAAQA,IAAS,aAAeA,IAAS,aAC9D,CAAC,EAGE,CAAC,CAAE,MAAAnB,EAAO,UAAAoB,EAAW,YAAAd,CAAY,KAAO,CACzC,IAAK,EACL,KAAM,EACN,OAAQ,OACR,QAAS,OACT,SAAU,QACV,cAAe,SACf,gBAAiBN,EAAM,QAAQ,WAAW,MAC1C,OAAQ,2BACR,MAAOoB,EACH,+BACA,mCACJ,YAAa,aAAapB,EAAM,QAAQ,UAExC,WAAYA,EAAM,YAAY,OAAO,CAAC,OAAO,EAAG,CAC9C,OAAQ,kCACR,SAAU,mCACZ,CAAC,EAED,CAACA,EAAM,YAAY,GAAGM,CAAW,CAAC,EAAG,CACnC,QAAS,MACX,CACF,EAAE,EJ5BE,mBAAAG,EAGM,OAAAvB,EAHN,QAAAgB,MAAA,oBAVJ,IAAMuB,GAAU,CAAC,CACf,MAAArB,EACA,UAAAgB,EACA,YAAAd,EACA,YAAAoB,EACA,SAAAtC,CACF,IAAuC,CACrC,IAAMY,EAAQhB,GAAS,EAEjB2C,EACJzB,EAAAO,EAAA,CACG,UAAAL,GAAO,SACNlB,EAACqC,EAAA,CACC,SAAArC,EAAC6B,EAAA,CAAK,QAAQ,OAAO,EACvB,EAGF7B,EAAC0C,EAAA,CAAU,YAAW,GAAC,GAAI,CAAE,GAAI,EAAG,GAAI,CAAE,EACvC,SAAAxC,EACH,GACF,EAGIyC,EACJ3B,EAAAO,EAAA,CACG,UAAAL,GAAO,SACNlB,EAACsC,EAAA,CACC,SAAAtC,EAAC6B,EAAA,CAAK,QAAQ,OAAO,EACvB,EAGF7B,EAAC0B,GAAA,CAAQ,GAAI,CAAE,GAAI,EAAG,GAAI,CAAE,EAAG,EAE/B1B,EAAC0C,EAAA,CAAU,YAAW,GAAC,GAAI,CAAE,GAAI,EAAG,GAAI,CAAE,EACvC,SAAAxC,EACH,EAECgB,GAAO,YACV,EAGF,OACEF,EAACP,EAAA,CAAU,UAAWyB,EAAW,YAAad,EAC5C,UAAApB,EAACoC,EAAA,CACC,UAAWF,EACX,QAASM,EACT,GAAI,CACF,QAAS,OACT,CAAC1B,EAAM,YAAY,GAAGM,CAAW,CAAC,EAAG,CACnC,QAAS,aACX,CACF,EACF,EACCc,EAAYS,EAAgBF,GAC/B,CAEJ,EAEOG,EAAQL,GKtEf,OAAO/B,MAAS,oBAChB,OAAOqC,OAAkB,6BAgBnB,OAgBI,YAAAtB,EAhBJ,OAAAvB,EAkBM,QAAAgB,MAlBN,oBAVN,IAAM8B,GAAU,CAAC,CACf,GAAA1C,EACA,QAAA2C,EACA,SAAA7C,EACA,cAAA8C,EACA,cAAAC,EACA,eAAAC,CACF,IAEIlC,EAAAO,EAAA,CACE,UAAAvB,EAAC6C,GAAA,CACC,OAAQ,CACN,KAAM,CACJ,sBAAuB,KACvB,4BAA6B,QAC7B,uBAAwB,MACxB,yBAA0B,KAC1B,gCAAiC,OACjC,iCAAkC,OAClC,GAAGE,CACL,CACF,EACF,EAEA/C,EAACQ,EAAA,CAAI,GAAG,eAAe,GAAIJ,EACxB,SAAA8C,EACClC,EAAAO,EAAA,CACG,UAAA2B,EACDlC,EAACR,EAAA,CACC,QAAQ,OACR,KAAK,WACL,cAAc,SACd,UAAWD,EAAc,WAExB,UAAA0C,EACA/C,EACA8C,GACH,GACF,EAEAhC,EAAAO,EAAA,CACG,UAAA0B,EACA/C,EACA8C,GACH,EAEJ,GACF,EAIGG,EAAQL,GX/BP,cAAA9C,MAAA,oBAhBR,IAAMoD,GAAQ,CAAC,CACb,SAAAlD,EACA,cAAAmD,EACA,YAAAC,EACA,eAAAC,EACA,UAAArB,EACA,gBAAAsB,EACA,UAAAC,CACF,IAAqC,CACnC,IAAM3C,EAAQhB,GAAS,EAEjBsB,EAA0B,KAEhC,OACEpB,EAACmD,EAAA,CACC,cACEnD,EAACyB,EAAA,CACC,YAAaL,EACb,UAAW,CACT,QAAS,CACP,GAAI,CACF,CAAC,uBAAuB,EAAG,CACzB,IAAK,CAAE,GAAI,EAAG,GAAI,GAAK,CACzB,CACF,CACF,EACA,UAAW,CACT,SAAU,GACV,GAAI,CACF,GAAI,CAAE,CAACA,CAAW,EAAG,CAAE,CACzB,CACF,CACF,EACA,MAAOkC,GAAa,MACtB,EAEF,eACEtD,EAAC4C,EAAA,CACC,UAAWV,EACX,YAAad,EACb,YAAaoC,EAEZ,SAAAD,EACH,EAEF,cAAeF,EACf,QAAS,CACP,6BAA8B,SAC9B,+BAAgC,QAChC,0BAA2B,OAC3B,8BAA+B,QAC/B,iCAAkC,OAClC,gCAAiCvC,EAAM,QAAQ,CAAC,EAChD,gCAAiCA,EAAM,QAAQ,CAAC,EAChD,gCAAiCA,EAAM,QAAQ,CAAC,CAClD,EACA,GAAI,CACF,CAAC,MAAMP,EAAc,YAAY,EAAG,CAClC,CAACO,EAAM,YAAY,GAAGM,CAAW,CAAC,EAAG,CACnC,WAAYN,EAAM,YAAY,OAAO,CAAC,cAAc,EAAG,CACrD,OAAQ,kCACR,SAAU,mCACZ,CAAC,EACD,GAAIoB,EACA,+BACA,kCACN,CACF,CACF,EAEA,SAAAlC,EAACM,EAAA,CAAK,gBAAiB,GAAQ,GAAGmD,EAC/B,SAAAvD,EACH,EACF,CAEJ,EAEOwD,GAAQN","sourcesContent":["import { PropsWithChildren } from 'react';\nimport type { Breakpoint } from '@mui/material/styles';\nimport { useTheme } from '@mui/material/styles';\n\nimport Main from './Wrapper/Main';\nimport { layoutClasses } from './classes';\nimport Header from './Header';\nimport { AdminProps } from './props';\nimport Sidebar from './Sidebar';\nimport Wrapper from './Wrapper';\n\nconst Admin = ({\n children,\n footerContent,\n headerProps,\n sidebarContent,\n isNavMini,\n onToggleNavMini,\n mainProps,\n}: PropsWithChildren<AdminProps>) => {\n const theme = useTheme();\n\n const layoutQuery: Breakpoint = 'lg';\n\n return (\n <Wrapper\n headerSection={\n <Header\n layoutQuery={layoutQuery}\n slotProps={{\n toolbar: {\n sx: {\n ['& [data-area=\"right\"]']: {\n gap: { xs: 0, sm: 0.75 },\n },\n },\n },\n container: {\n maxWidth: false,\n sx: {\n px: { [layoutQuery]: 5 },\n },\n },\n }}\n slots={headerProps?.slots}\n />\n }\n sidebarSection={\n <Sidebar\n isNavMini={isNavMini}\n layoutQuery={layoutQuery}\n onToggleNav={onToggleNavMini}\n >\n {sidebarContent}\n </Sidebar>\n }\n footerSection={footerContent}\n cssVars={{\n '--layout-transition-easing': 'linear',\n '--layout-transition-duration': '120ms',\n '--layout-nav-mini-width': '88px',\n '--layout-nav-vertical-width': '300px',\n '--layout-nav-horizontal-height': '64px',\n '--layout-dashboard-content-pt': theme.spacing(1),\n '--layout-dashboard-content-pb': theme.spacing(8),\n '--layout-dashboard-content-px': theme.spacing(5),\n }}\n sx={{\n [`& .${layoutClasses.hasSidebar}`]: {\n [theme.breakpoints.up(layoutQuery)]: {\n transition: theme.transitions.create(['padding-left'], {\n easing: 'var(--layout-transition-easing)',\n duration: 'var(--layout-transition-duration)',\n }),\n pl: isNavMini\n ? 'var(--layout-nav-mini-width)'\n : 'var(--layout-nav-vertical-width)',\n },\n },\n }}\n >\n <Main isNavHorizontal={false} {...mainProps}>\n {children}\n </Main>\n </Wrapper>\n );\n};\n\nexport default Admin;\n","import Stack from '@mui/material/Stack';\n\nimport { MainProps } from './props';\n\nconst Main = ({ children, isNavHorizontal, sx, ...other }: MainProps) => {\n return (\n <Stack\n component=\"main\"\n flex=\"1 1 auto\"\n bgcolor=\"grey.100\"\n sx={{\n ...(isNavHorizontal && {\n '--layout-dashboard-content-pt': '40px',\n }),\n ...sx,\n }}\n {...other}\n >\n {children}\n </Stack>\n );\n};\n\nexport default Main;\n","export const layoutClasses = {\n root: 'layout__root',\n main: 'layout__main',\n header: 'layout__header',\n content: 'layout__main__content',\n hasSidebar: 'layout__has__sidebar',\n};\n","import Box from '@mui/material/Box';\nimport Container from '@mui/material/Container';\nimport { useTheme } from '@mui/material/styles';\nimport Toolbar from '@mui/material/Toolbar';\n\nimport { HeaderSectionProps } from './props';\nimport { AppBar } from './styles';\n\nconst HeaderSection = ({\n sx,\n slots,\n slotProps,\n layoutQuery = 'md',\n ...other\n}: HeaderSectionProps) => {\n const theme = useTheme();\n\n const toolbarStyles = {\n default: {\n minHeight: 'auto',\n height: 'var(--layout-header-mobile-height)',\n backgroundColor: theme.palette.background.paper,\n transition: theme.transitions.create(['height', 'background-color'], {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.shorter,\n }),\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto',\n },\n [theme.breakpoints.up(layoutQuery)]: {\n height: 'var(--layout-header-desktop-height)',\n },\n },\n };\n\n return (\n <AppBar position=\"sticky\" sx={sx} {...other}>\n {slots?.topArea}\n\n <Toolbar\n disableGutters\n {...slotProps?.toolbar}\n sx={{\n ...toolbarStyles.default,\n ...slotProps?.toolbar?.sx,\n maxHeight: 64,\n }}\n >\n <Container\n {...slotProps?.container}\n sx={{\n height: 1,\n display: 'flex',\n alignItems: 'center',\n ...slotProps?.container?.sx,\n }}\n >\n {slots?.leftArea}\n\n <Box\n sx={{ display: 'flex', flex: '1 1 auto', justifyContent: 'center' }}\n >\n {slots?.centerArea}\n </Box>\n\n {slots?.rightArea}\n </Container>\n </Toolbar>\n\n {slots?.bottomArea}\n </AppBar>\n );\n};\n\nexport default HeaderSection;\n","import MuiAppBar from '@mui/material/AppBar';\nimport { styled } from '@mui/material/styles';\n\nexport const StyledDivider = styled('span')(({ theme }) => ({\n width: 1,\n height: 10,\n flexShrink: 0,\n display: 'none',\n position: 'relative',\n alignItems: 'center',\n flexDirection: 'column',\n marginLeft: theme.spacing(2.5),\n marginRight: theme.spacing(2.5),\n backgroundColor: 'currentColor',\n\n '&::before, &::after': {\n top: -5,\n width: 3,\n height: 3,\n content: '\"\"',\n flexShrink: 0,\n borderRadius: '50%',\n position: 'absolute',\n backgroundColor: 'currentColor',\n },\n '&::after': { bottom: -5, top: 'auto' },\n}));\n\nexport const AppBar = styled(MuiAppBar)(({ theme }) => ({\n zIndex: 'var(--layout-header-zIndex)',\n backgroundColor: theme.palette.background.paper,\n\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%',\n height: '1px',\n backgroundColor: theme.palette.divider,\n zIndex: 1,\n },\n}));\n","import HeaderSection from './HeaderSection';\nimport { HeaderProps } from './props';\nimport { StyledDivider } from './styles';\n\nconst Header = ({\n sx,\n slots,\n slotProps,\n layoutQuery,\n ...other\n}: HeaderProps) => {\n return (\n <HeaderSection\n sx={sx}\n layoutQuery={layoutQuery}\n slots={{\n ...slots,\n leftAreaStart: slots?.leftAreaStart,\n leftArea: (\n <>\n {slots?.leftAreaStart}\n\n <StyledDivider data-slot=\"divider\" />\n\n {slots?.leftAreaEnd}\n </>\n ),\n rightArea: (\n <>\n {slots?.rightAreaStart}\n\n {slots?.rightAreaEnd}\n </>\n ),\n centerArea: slots?.centerArea,\n }}\n slotProps={slotProps}\n {...other}\n />\n );\n};\n\nexport default Header;\n","import { PropsWithChildren } from 'react';\nimport Divider from '@mui/material/Divider';\nimport { useTheme } from '@mui/material/styles';\n\nimport Logo from 'components/Logo';\nimport Scrollbar from 'components/Scrollbar';\n\nimport NavToggleButton from '../NavToggleButton';\n\nimport { SidebarProps } from './props';\nimport { Container, LogoFull, LogoMini } from './styles';\n\nconst Sidebar = ({\n slots,\n isNavMini,\n layoutQuery,\n onToggleNav,\n children,\n}: PropsWithChildren<SidebarProps>) => {\n const theme = useTheme();\n\n const renderNavVertical = (\n <>\n {slots?.topArea ?? (\n <LogoFull>\n <Logo variant=\"full\" />\n </LogoFull>\n )}\n\n <Scrollbar fillContent sx={{ px: 2, pb: 2 }}>\n {children}\n </Scrollbar>\n </>\n );\n\n const renderNavMini = (\n <>\n {slots?.topArea ?? (\n <LogoMini>\n <Logo variant=\"mini\" />\n </LogoMini>\n )}\n\n <Divider sx={{ mx: 3, mb: 3 }} />\n\n <Scrollbar fillContent sx={{ px: 2, pb: 2 }}>\n {children}\n </Scrollbar>\n\n {slots?.bottomArea}\n </>\n );\n\n return (\n <Container isNavMini={isNavMini} layoutQuery={layoutQuery}>\n <NavToggleButton\n isNavMini={isNavMini}\n onClick={onToggleNav}\n sx={{\n display: 'none',\n [theme.breakpoints.up(layoutQuery)]: {\n display: 'inline-flex',\n },\n }}\n />\n {isNavMini ? renderNavMini : renderNavVertical}\n </Container>\n );\n};\n\nexport default Sidebar;\n","import Stack from '@mui/material/Stack';\n\nimport { LogoProps } from './props';\n\nconst Logo = ({ variant = 'full', ...other }: LogoProps) => {\n return (\n <Stack {...other}>\n {variant === 'full' ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"224\"\n height=\"56\"\n viewBox=\"0 0 224 56\"\n fill=\"none\"\n >\n <path\n d=\"M33.8104 0.0012207L27.0515 13.7512H0.000488281V0.0012207H33.8104Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M54.1018 13.7518V27.5018H20.2842L27.0508 13.7518H54.1018Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M20.2849 27.5001L13.526 41.2501H0.000488281V27.5001H20.2849Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M54.102 41.2515V55.0015H6.7666L13.5255 41.2515H54.102Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M102.287 18.077V13.9543H79.585V19.0429H94.6476L79.585 37.2453V41.368H102.287V36.2873H87.2244L102.287 18.077Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M120.44 39.4362L111.866 13.9543H105.81L115.202 41.368H119.791L118.833 44.2028C118.424 45.3807 118.022 46.1424 117.613 46.48C117.203 46.8177 116.462 46.9905 115.372 46.9905H111.371L111.587 52.079H117.697C118.995 52.079 120.023 51.8591 120.78 51.4115C121.537 50.9639 122.154 50.3043 122.641 49.4326C123.128 48.561 123.653 47.2967 124.217 45.6555L135.077 13.9543H129.022L120.447 39.4362H120.44Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M157.3 17.7537C156.388 16.4659 155.191 15.4608 153.716 14.7305C152.24 14.0002 150.518 13.6311 148.556 13.6311C146.13 13.6311 143.952 14.2122 142.021 15.3744C140.09 16.5366 138.568 18.1778 137.463 20.298C136.359 22.4261 135.803 24.8761 135.803 27.6638C135.803 30.4515 136.351 33.0114 137.433 35.1317C138.522 37.2597 140.028 38.8774 141.959 40.0082C143.89 41.1311 146.084 41.6965 148.54 41.6965C152.264 41.6965 155.199 40.2123 157.338 37.2519L158.026 41.3745H162.977V3.8938H157.292V17.7616L157.3 17.7537ZM155.191 34.2993C153.754 35.9797 151.854 36.8121 149.498 36.8121C147.142 36.8121 145.25 35.964 143.813 34.2679C142.376 32.5717 141.65 30.3651 141.65 27.6559C141.65 24.9468 142.369 22.7951 143.813 21.099C145.25 19.4028 147.15 18.5547 149.498 18.5547C151.846 18.5547 153.747 19.4028 155.191 21.099C156.628 22.7951 157.354 25.0174 157.354 27.7659C157.354 30.5143 156.636 32.6188 155.191 34.2993Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M188.152 15.3971C186.059 14.2192 183.664 13.6302 180.96 13.6302C178.257 13.6302 175.862 14.2192 173.769 15.3971C171.676 16.575 170.061 18.2241 168.926 20.3521C167.783 22.4723 167.211 24.9145 167.211 27.663C167.211 30.4114 167.783 32.9007 168.926 35.0287C170.069 37.1489 171.683 38.798 173.769 39.9524C175.862 41.1145 178.257 41.6956 180.96 41.6956C183.664 41.6956 186.059 41.1145 188.152 39.9524C190.245 38.7902 191.86 37.1489 192.995 35.0287C194.138 32.9007 194.71 30.4506 194.71 27.663C194.71 24.8753 194.138 22.4802 192.995 20.3521C191.852 18.2241 190.238 16.575 188.152 15.3971ZM186.731 34.2199C185.271 35.9161 183.347 36.7642 180.96 36.7642C178.574 36.7642 176.658 35.9161 175.221 34.2199C173.784 32.5237 173.058 30.3407 173.058 27.663C173.058 24.9852 173.777 22.8022 175.221 21.106C176.658 19.4098 178.574 18.5617 180.96 18.5617C183.347 18.5617 185.271 19.4098 186.731 21.106C188.191 22.8022 188.917 24.9852 188.917 27.663C188.917 30.3407 188.191 32.5237 186.731 34.2199Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M220.981 16.63C218.965 14.6275 216.354 13.6302 213.156 13.6302C209.433 13.6302 206.552 14.9338 204.52 17.5409L203.887 13.9522H198.936V41.3658H204.621V27.553C204.621 24.7653 205.262 22.5823 206.544 20.996C207.826 19.4098 209.588 18.6167 211.835 18.6167C213.944 18.6167 215.543 19.292 216.632 20.6505C217.721 22.009 218.262 23.9879 218.262 26.595V41.3737H224.001V26.273C224.001 21.8441 222.989 18.6324 220.973 16.6378L220.981 16.63Z\"\n fill=\"currentColor\"\n />\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n >\n <path d=\"M22.486 0L17.9456 8.9728H0V0H22.486Z\" fill=\"currentColor\" />\n <path\n d=\"M35.8916 8.97327V17.9461H13.5137L17.946 8.97327H35.8916Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M13.5133 17.9457L8.97279 26.9185H0V17.9457H13.5133Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M35.8908 26.9193V36.0002H4.54004L8.97243 26.9193H35.8908Z\"\n fill=\"currentColor\"\n />\n </svg>\n )}\n </Stack>\n );\n};\n\nexport default Logo;\n","import SvgIcon from '@mui/material/SvgIcon';\n\nimport { NavToggleButtonProps } from './props';\nimport { Button } from './styles';\n\nconst NavToggleButton = ({ isNavMini, ...other }: NavToggleButtonProps) => {\n return (\n <Button size=\"small\" isNavMini={isNavMini} {...other}>\n <SvgIcon\n sx={{\n width: 16,\n height: 16,\n ...(isNavMini && {\n transform: 'scaleX(-1)',\n }),\n }}\n >\n <path\n fill=\"currentColor\"\n d=\"M13.83 19a1 1 0 0 1-.78-.37l-4.83-6a1 1 0 0 1 0-1.27l5-6a1 1 0 0 1 1.54 1.28L10.29 12l4.32 5.36a1 1 0 0 1-.78 1.64\"\n />\n </SvgIcon>\n </Button>\n );\n};\n\nexport default NavToggleButton;\n","import IconButton from '@mui/material/IconButton';\nimport { styled } from '@mui/material/styles';\n\nexport const Button = styled(IconButton, {\n shouldForwardProp: prop => prop !== 'isNavMini',\n})<{ isNavMini: boolean }>(({ theme, isNavMini }) => ({\n padding: 8,\n top: 15,\n position: 'fixed',\n color: theme.palette.action.active,\n backgroundColor: theme.palette.background.paper,\n transform: 'translateX(-50%)',\n zIndex: 'var(--layout-nav-zIndex)',\n left: isNavMini\n ? 'var(--layout-nav-mini-width)'\n : 'var(--layout-nav-vertical-width)',\n border: `1px solid ${theme.palette.divider}`,\n transition: theme.transitions.create(['left'], {\n easing: 'var(--layout-transition-easing)',\n duration: 'var(--layout-transition-duration)',\n }),\n\n '&:hover': {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.neutral,\n },\n}));\n","import Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport { Breakpoint, styled } from '@mui/material/styles';\n\nexport const LogoFull = styled(Stack)({\n padding: '12px 16px 24px',\n\n svg: {\n width: 125,\n },\n});\n\nexport const LogoMini = styled(Stack)({\n padding: '12px 24px 24px',\n alignItems: 'center',\n justifyContent: 'center',\n\n svg: {\n width: 32,\n height: 32,\n },\n});\n\nexport const Container = styled(Box, {\n shouldForwardProp: prop => prop !== 'isNavMini' && prop !== 'layoutQuery',\n})<{\n isNavMini: boolean;\n layoutQuery: Breakpoint;\n}>(({ theme, isNavMini, layoutQuery }) => ({\n top: 0,\n left: 0,\n height: '100%',\n display: 'none',\n position: 'fixed',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.paper,\n zIndex: 'var(--layout-nav-zIndex)',\n width: isNavMini\n ? 'var(--layout-nav-mini-width)'\n : 'var(--layout-nav-vertical-width)',\n borderRight: `1px solid ${theme.palette.divider}`,\n\n transition: theme.transitions.create(['width'], {\n easing: 'var(--layout-transition-easing)',\n duration: 'var(--layout-transition-duration)',\n }),\n\n [theme.breakpoints.up(layoutQuery)]: {\n display: 'flex',\n },\n}));\n","import Box from '@mui/material/Box';\nimport GlobalStyles from '@mui/material/GlobalStyles';\n\nimport { layoutClasses } from '../classes';\n\nimport { LayoutSectionProps } from './props';\n\nconst Wrapper = ({\n sx,\n cssVars,\n children,\n footerSection,\n headerSection,\n sidebarSection,\n}: LayoutSectionProps) => {\n return (\n <>\n <GlobalStyles\n styles={{\n body: {\n '--layout-nav-zIndex': 1101,\n '--layout-nav-mobile-width': '320px',\n '--layout-header-blur': '8px',\n '--layout-header-zIndex': 1100,\n '--layout-header-mobile-height': '64px',\n '--layout-header-desktop-height': '72px',\n ...cssVars,\n },\n }}\n />\n\n <Box id=\"root__layout\" sx={sx}>\n {sidebarSection ? (\n <>\n {sidebarSection}\n <Box\n display=\"flex\"\n flex=\"1 1 auto\"\n flexDirection=\"column\"\n className={layoutClasses.hasSidebar}\n >\n {headerSection}\n {children}\n {footerSection}\n </Box>\n </>\n ) : (\n <>\n {headerSection}\n {children}\n {footerSection}\n </>\n )}\n </Box>\n </>\n );\n};\n\nexport default Wrapper;\n"]}
1
+ {"version":3,"sources":["../../../src/layouts/Admin/index.tsx","../../../src/layouts/Admin/Wrapper/Main.tsx","../../../src/layouts/Admin/classes.ts","../../../src/layouts/Admin/Header/HeaderSection.tsx","../../../src/layouts/Admin/Header/styles.ts","../../../src/layouts/Admin/Header/index.tsx","../../../src/layouts/Admin/Sidebar/index.tsx","../../../src/layouts/Admin/NavToggleButton/index.tsx","../../../src/layouts/Admin/NavToggleButton/styles.ts","../../../src/layouts/Admin/Sidebar/styles.ts","../../../src/layouts/Admin/Wrapper/index.tsx"],"names":["useTheme","Stack","jsx","Main","children","isNavHorizontal","sx","other","Main_default","layoutClasses","Box","Container","Toolbar","MuiAppBar","styled","StyledDivider","theme","AppBar","jsxs","HeaderSection","slots","slotProps","layoutQuery","toolbarStyles","HeaderSection_default","Fragment","Header","Header_default","SvgIcon","IconButton","Button","prop","isNavMini","NavToggleButton","NavToggleButton_default","LogoFull","LogoMini","Sidebar","onToggleNav","renderNavVertical","Scrollbar_default","renderNavMini","Sidebar_default","GlobalStyles","Wrapper","cssVars","footerSection","headerSection","sidebarSection","Wrapper_default","Admin","footerContent","headerProps","sidebarContent","sidebarProps","onToggleNavMini","mainProps","Admin_default"],"mappings":"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","sourcesContent":["import { PropsWithChildren } from 'react';\nimport type { Breakpoint } from '@mui/material/styles';\nimport { useTheme } from '@mui/material/styles';\n\nimport Main from './Wrapper/Main';\nimport { layoutClasses } from './classes';\nimport Header from './Header';\nimport { AdminProps } from './props';\nimport Sidebar from './Sidebar';\nimport Wrapper from './Wrapper';\n\nconst Admin = ({\n children,\n footerContent,\n headerProps,\n sidebarContent,\n sidebarProps,\n isNavMini,\n onToggleNavMini,\n mainProps,\n}: PropsWithChildren<AdminProps>) => {\n const theme = useTheme();\n\n const layoutQuery: Breakpoint = 'lg';\n\n return (\n <Wrapper\n headerSection={\n <Header\n layoutQuery={layoutQuery}\n slotProps={{\n toolbar: {\n sx: {\n ['& [data-area=\"right\"]']: {\n gap: { xs: 0, sm: 0.75 },\n },\n },\n },\n container: {\n maxWidth: false,\n sx: {\n px: { [layoutQuery]: 5 },\n },\n },\n }}\n slots={headerProps?.slots}\n />\n }\n sidebarSection={\n <Sidebar\n isNavMini={isNavMini}\n layoutQuery={layoutQuery}\n onToggleNav={onToggleNavMini}\n slots={sidebarProps?.slots}\n >\n {sidebarContent}\n </Sidebar>\n }\n footerSection={footerContent}\n cssVars={{\n '--layout-transition-easing': 'linear',\n '--layout-transition-duration': '120ms',\n '--layout-nav-mini-width': '88px',\n '--layout-nav-vertical-width': '300px',\n '--layout-nav-horizontal-height': '64px',\n '--layout-dashboard-content-pt': theme.spacing(1),\n '--layout-dashboard-content-pb': theme.spacing(8),\n '--layout-dashboard-content-px': theme.spacing(5),\n }}\n sx={{\n [`& .${layoutClasses.hasSidebar}`]: {\n [theme.breakpoints.up(layoutQuery)]: {\n transition: theme.transitions.create(['padding-left'], {\n easing: 'var(--layout-transition-easing)',\n duration: 'var(--layout-transition-duration)',\n }),\n pl: isNavMini\n ? 'var(--layout-nav-mini-width)'\n : 'var(--layout-nav-vertical-width)',\n },\n },\n }}\n >\n <Main isNavHorizontal={false} {...mainProps}>\n {children}\n </Main>\n </Wrapper>\n );\n};\n\nexport default Admin;\n","import Stack from '@mui/material/Stack';\n\nimport { MainProps } from './props';\n\nconst Main = ({ children, isNavHorizontal, sx, ...other }: MainProps) => {\n return (\n <Stack\n component=\"main\"\n flex=\"1 1 auto\"\n bgcolor=\"grey.100\"\n sx={{\n ...(isNavHorizontal && {\n '--layout-dashboard-content-pt': '40px',\n }),\n ...sx,\n }}\n {...other}\n >\n {children}\n </Stack>\n );\n};\n\nexport default Main;\n","export const layoutClasses = {\n root: 'layout__root',\n main: 'layout__main',\n header: 'layout__header',\n content: 'layout__main__content',\n hasSidebar: 'layout__has__sidebar',\n};\n","import Box from '@mui/material/Box';\nimport Container from '@mui/material/Container';\nimport { useTheme } from '@mui/material/styles';\nimport Toolbar from '@mui/material/Toolbar';\n\nimport { HeaderSectionProps } from './props';\nimport { AppBar } from './styles';\n\nconst HeaderSection = ({\n sx,\n slots,\n slotProps,\n layoutQuery = 'md',\n ...other\n}: HeaderSectionProps) => {\n const theme = useTheme();\n\n const toolbarStyles = {\n default: {\n minHeight: 'auto',\n height: 'var(--layout-header-mobile-height)',\n backgroundColor: theme.palette.background.paper,\n transition: theme.transitions.create(['height', 'background-color'], {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.shorter,\n }),\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto',\n },\n [theme.breakpoints.up(layoutQuery)]: {\n height: 'var(--layout-header-desktop-height)',\n },\n },\n };\n\n return (\n <AppBar position=\"sticky\" sx={sx} {...other}>\n {slots?.topArea}\n\n <Toolbar\n disableGutters\n {...slotProps?.toolbar}\n sx={{\n ...toolbarStyles.default,\n ...slotProps?.toolbar?.sx,\n maxHeight: 64,\n }}\n >\n <Container\n {...slotProps?.container}\n sx={{\n height: 1,\n display: 'flex',\n alignItems: 'center',\n ...slotProps?.container?.sx,\n }}\n >\n {slots?.leftArea}\n\n <Box\n sx={{ display: 'flex', flex: '1 1 auto', justifyContent: 'center' }}\n >\n {slots?.centerArea}\n </Box>\n\n {slots?.rightArea}\n </Container>\n </Toolbar>\n\n {slots?.bottomArea}\n </AppBar>\n );\n};\n\nexport default HeaderSection;\n","import MuiAppBar from '@mui/material/AppBar';\nimport { styled } from '@mui/material/styles';\n\nexport const StyledDivider = styled('span')(({ theme }) => ({\n width: 1,\n height: 10,\n flexShrink: 0,\n display: 'none',\n position: 'relative',\n alignItems: 'center',\n flexDirection: 'column',\n marginLeft: theme.spacing(2.5),\n marginRight: theme.spacing(2.5),\n backgroundColor: 'currentColor',\n\n '&::before, &::after': {\n top: -5,\n width: 3,\n height: 3,\n content: '\"\"',\n flexShrink: 0,\n borderRadius: '50%',\n position: 'absolute',\n backgroundColor: 'currentColor',\n },\n '&::after': { bottom: -5, top: 'auto' },\n}));\n\nexport const AppBar = styled(MuiAppBar)(({ theme }) => ({\n zIndex: 'var(--layout-header-zIndex)',\n backgroundColor: theme.palette.background.paper,\n\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%',\n height: '1px',\n backgroundColor: theme.palette.divider,\n zIndex: 1,\n },\n}));\n","import HeaderSection from './HeaderSection';\nimport { HeaderProps } from './props';\nimport { StyledDivider } from './styles';\n\nconst Header = ({\n sx,\n slots,\n slotProps,\n layoutQuery,\n ...other\n}: HeaderProps) => {\n return (\n <HeaderSection\n sx={sx}\n layoutQuery={layoutQuery}\n slots={{\n ...slots,\n leftAreaStart: slots?.leftAreaStart,\n leftArea: (\n <>\n {slots?.leftAreaStart}\n\n <StyledDivider data-slot=\"divider\" />\n\n {slots?.leftAreaEnd}\n </>\n ),\n rightArea: (\n <>\n {slots?.rightAreaStart}\n\n {slots?.rightAreaEnd}\n </>\n ),\n centerArea: slots?.centerArea,\n }}\n slotProps={slotProps}\n {...other}\n />\n );\n};\n\nexport default Header;\n","import { PropsWithChildren } from 'react';\nimport { useTheme } from '@mui/material/styles';\n\nimport Scrollbar from 'components/Scrollbar';\n\nimport NavToggleButton from '../NavToggleButton';\n\nimport { SidebarProps } from './props';\nimport { Container } from './styles';\n\nconst Sidebar = ({\n slots,\n isNavMini,\n layoutQuery,\n onToggleNav,\n children,\n}: PropsWithChildren<SidebarProps>) => {\n const theme = useTheme();\n\n const renderNavVertical = (\n <>\n {slots?.topArea}\n\n <Scrollbar fillContent sx={{ p: 2 }}>\n {children}\n </Scrollbar>\n\n {slots?.bottomArea}\n </>\n );\n\n const renderNavMini = (\n <>\n {slots?.topArea}\n\n <Scrollbar fillContent sx={{ p: 2 }}>\n {children}\n </Scrollbar>\n\n {slots?.bottomArea}\n </>\n );\n\n return (\n <Container isNavMini={isNavMini} layoutQuery={layoutQuery}>\n <NavToggleButton\n isNavMini={isNavMini}\n onClick={onToggleNav}\n sx={{\n display: 'none',\n [theme.breakpoints.up(layoutQuery)]: {\n display: 'inline-flex',\n },\n }}\n />\n {isNavMini ? renderNavMini : renderNavVertical}\n </Container>\n );\n};\n\nexport default Sidebar;\n","import SvgIcon from '@mui/material/SvgIcon';\n\nimport { NavToggleButtonProps } from './props';\nimport { Button } from './styles';\n\nconst NavToggleButton = ({ isNavMini, ...other }: NavToggleButtonProps) => {\n return (\n <Button size=\"small\" isNavMini={isNavMini} {...other}>\n <SvgIcon\n sx={{\n width: 16,\n height: 16,\n ...(isNavMini && {\n transform: 'scaleX(-1)',\n }),\n }}\n >\n <path\n fill=\"currentColor\"\n d=\"M13.83 19a1 1 0 0 1-.78-.37l-4.83-6a1 1 0 0 1 0-1.27l5-6a1 1 0 0 1 1.54 1.28L10.29 12l4.32 5.36a1 1 0 0 1-.78 1.64\"\n />\n </SvgIcon>\n </Button>\n );\n};\n\nexport default NavToggleButton;\n","import IconButton from '@mui/material/IconButton';\nimport { styled } from '@mui/material/styles';\n\nexport const Button = styled(IconButton, {\n shouldForwardProp: prop => prop !== 'isNavMini',\n})<{ isNavMini: boolean }>(({ theme, isNavMini }) => ({\n padding: 8,\n top: 15,\n position: 'fixed',\n color: theme.palette.action.active,\n backgroundColor: theme.palette.background.paper,\n transform: 'translateX(-50%)',\n zIndex: 'var(--layout-nav-zIndex)',\n left: isNavMini\n ? 'var(--layout-nav-mini-width)'\n : 'var(--layout-nav-vertical-width)',\n border: `1px solid ${theme.palette.divider}`,\n transition: theme.transitions.create(['left'], {\n easing: 'var(--layout-transition-easing)',\n duration: 'var(--layout-transition-duration)',\n }),\n\n '&:hover': {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.neutral,\n },\n}));\n","import Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport { Breakpoint, styled } from '@mui/material/styles';\n\nexport const LogoFull = styled(Stack)({\n padding: '12px 16px 24px',\n\n svg: {\n width: 125,\n },\n});\n\nexport const LogoMini = styled(Stack)({\n padding: '12px 24px 24px',\n alignItems: 'center',\n justifyContent: 'center',\n\n svg: {\n width: 32,\n height: 32,\n },\n});\n\nexport const Container = styled(Box, {\n shouldForwardProp: prop => prop !== 'isNavMini' && prop !== 'layoutQuery',\n})<{\n isNavMini: boolean;\n layoutQuery: Breakpoint;\n}>(({ theme, isNavMini, layoutQuery }) => ({\n top: 0,\n left: 0,\n height: '100%',\n display: 'none',\n position: 'fixed',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.paper,\n zIndex: 'var(--layout-nav-zIndex)',\n width: isNavMini\n ? 'var(--layout-nav-mini-width)'\n : 'var(--layout-nav-vertical-width)',\n borderRight: `1px solid ${theme.palette.divider}`,\n\n transition: theme.transitions.create(['width'], {\n easing: 'var(--layout-transition-easing)',\n duration: 'var(--layout-transition-duration)',\n }),\n\n [theme.breakpoints.up(layoutQuery)]: {\n display: 'flex',\n },\n}));\n","import Box from '@mui/material/Box';\nimport GlobalStyles from '@mui/material/GlobalStyles';\n\nimport { layoutClasses } from '../classes';\n\nimport { LayoutSectionProps } from './props';\n\nconst Wrapper = ({\n sx,\n cssVars,\n children,\n footerSection,\n headerSection,\n sidebarSection,\n}: LayoutSectionProps) => {\n return (\n <>\n <GlobalStyles\n styles={{\n body: {\n '--layout-nav-zIndex': 1101,\n '--layout-nav-mobile-width': '320px',\n '--layout-header-blur': '8px',\n '--layout-header-zIndex': 1100,\n '--layout-header-mobile-height': '64px',\n '--layout-header-desktop-height': '72px',\n ...cssVars,\n },\n }}\n />\n\n <Box id=\"root__layout\" sx={sx}>\n {sidebarSection ? (\n <>\n {sidebarSection}\n <Box\n display=\"flex\"\n flex=\"1 1 auto\"\n flexDirection=\"column\"\n className={layoutClasses.hasSidebar}\n >\n {headerSection}\n {children}\n {footerSection}\n </Box>\n </>\n ) : (\n <>\n {headerSection}\n {children}\n {footerSection}\n </>\n )}\n </Box>\n </>\n );\n};\n\nexport default Wrapper;\n"]}
@@ -71,6 +71,7 @@ interface PushNotificationContextData {
71
71
  subscribeTopicsBatch: (topics: string[]) => Promise<void>;
72
72
  unsubscribeTopicsBatch: (topics: string[]) => Promise<void>;
73
73
  resetMessageCount: () => void;
74
+ registerClient: () => Promise<string | null>;
74
75
  }
75
76
 
76
77
  export { ClientRegistrationPayload, ClientRegistrationResult, MessageStatus, MessageStatusPayload, PushMessage, PushNotificationApiAdapters, PushNotificationContextData, PushNotificationProviderProps, SubscriptionItem, SubscriptionsData, TopicSubscriptionOptions };
@@ -1,2 +1,2 @@
1
- export { a as MessageStatus } from '../chunk-E5ULJSWF.js';
1
+ export { a as MessageStatus } from '../chunk-WMHH24KM.js';
2
2
  //# sourceMappingURL=pushNotifications.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zydon/common",
3
- "version": "2.8.58",
3
+ "version": "2.8.60",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "./dist/index.js",