@zydon/common 2.9.29 → 2.9.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -87,7 +87,7 @@ enqueueSnackbar('Mensagem', { variant: 'error' });
87
87
  ### Utils
88
88
  - **file:** utils para lidar com arquivos `(downloadFile)`
89
89
  - **formatNumber:** utils para formatar números `(fNumber, fCurrency, fPercent, fShortenNumber, fData result, fWithDecimalPlacesOrNot)`
90
- - **formatTime:** utils para lidar com datas `(fDate, fDateTime format, fTimestamp, fToNow)` (*Construido utilizando* [date-fns](https://www.npmjs.com/package/date-fns))
90
+ - **formatTime:** utils para lidar com datas `(today, fDate, fDateTime, fTime, fTimestamp, fToNow, fTimeAgo, fExpiration, fIsBetween, fIsAfter, fIsSame, fDateRangeShortLabel, fAdd, fSub, getDifferenceInDays, formatStr)` (*Construido utilizando* [dayjs](https://www.npmjs.com/package/dayjs))
91
91
  - **cssStyles:** utils para lidar com estilos CSS `(bgBlur, bgGradient, textGradient, filterStyles, hideScrollbarY, hideScrollbarX)`
92
92
  - **routes:** utils para lidar com rotas `(getRoot)`
93
93
  - **sort:** utils para lidar com ordenação de arrys de objetos `(sort, updatePosition)`
@@ -0,0 +1,8 @@
1
+ import i from 'dayjs';
2
+ import x from 'dayjs/plugin/duration';
3
+ import D from 'dayjs/plugin/relativeTime';
4
+
5
+ i.extend(x);i.extend(D);var c={dateTime:"DD/MM/YYYY HH:mm",date:"DD/MM/YYYY",time:"HH:mm",split:{dateTime:"DD/MM/YYYY HH:mm",date:"DD/MM/YYYY"},paramCase:{dateTime:"DD/MM/YYYY HH:mm",date:"DD/MM/YYYY"}};function P(r){return i(new Date).startOf("day").format(r)}function b(r,t){return r?i(r).isValid()?i(r).format(t??c.dateTime):"Invalid time value":null}function s(r,t){return r?i(r).isValid()?i(r).format(t??c.date):"Invalid time value":null}function k(r,t){return r?i(r).isValid()?i(r).format(t??c.time):"Invalid time value":null}function m(r){return r?i(r).isValid()?i(r).valueOf():"Invalid time value":null}function F(r){return r?i(r).isValid()?i(r).toNow(!0):"Invalid time value":null}function y(r,t){if(!r)return null;let e=i(r);if(!e.isValid())return "Invalid time value";let n=d(new Date,e)?e:i();if(t==="instant")return `H\xE1 ${n.toNow(!0)}`;let a=i().startOf("day").diff(n.startOf("day"),"day");return a===0?"Hoje":a===1?"Ontem":`H\xE1 ${a} dias`}function M(r,t){if(!r||!i(r).isValid())return null;let e=t==="day"?i(r).endOf("day"):i(r);if(d(new Date,e))return {expired:!0,label:"Expirado",value:y(r,"day"),text:"Expirado"};let n=e.toNow(!0);return {expired:!1,label:"Expira em",value:n,text:`Expira em ${n}`}}function T(r,t,e){if(!r||!t||!e)return !1;let n=m(r),a=m(t),o=m(e);return n&&a&&o?n>=a&&n<=o:!1}function d(r,t){return i(r).isAfter(t)}function f(r,t,e){return !r||!t?!1:i(r).isValid()&&i(t).isValid()?i(r).isSame(t,e??"year"):"Invalid time value"}function g(r,t,e){let n=i(r).isValid()&&i(t).isValid(),a=d(r,t);if(!n||a)return "Invalid time value";let o=`${s(r)} - ${s(t)}`;if(e)return o;let u=f(r,t,"year"),l=f(r,t,"month"),p=f(r,t,"day");return u&&!l?o=`${s(r,"DD MMM")} - ${s(t)}`:u&&l&&!p?o=`${s(r,"DD")} - ${s(t)}`:u&&l&&p&&(o=`${s(t)}`),o}function I({years:r=0,months:t=0,days:e=0,hours:n=0,minutes:a=0,seconds:o=0,milliseconds:u=0}){return i().add(i.duration({years:r,months:t,days:e,hours:n,minutes:a,seconds:o,milliseconds:u})).format()}function H({years:r=0,months:t=0,days:e=0,hours:n=0,minutes:a=0,seconds:o=0,milliseconds:u=0}){return i().subtract(i.duration({years:r,months:t,days:e,hours:n,minutes:a,seconds:o,milliseconds:u})).format()}var $=(r,t)=>!r||!t?null:i(t).diff(i(r),"day");
6
+
7
+ export { c as a, P as b, b as c, s as d, k as e, m as f, F as g, y as h, M as i, T as j, d as k, f as l, g as m, I as n, H as o, $ as p };
8
+ //# sourceMappingURL=chunk-2W5FGLTC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/formatTime.ts"],"names":["dayjs","duration","relativeTime","formatStr","today","format","fDateTime","date","fDate","fTime","fTimestamp","fToNow","fTimeAgo","unit","target","elapsed","fIsAfter","daysElapsed","fExpiration","limit","value","fIsBetween","inputDate","startDate","endDate","formattedInputDate","formattedStartDate","formattedEndDate","fIsSame","units","fDateRangeShortLabel","initial","isValid","isAfter","label","isSameYear","isSameMonth","isSameDay","fAdd","years","months","days","hours","minutes","seconds","milliseconds","fSub","getDifferenceInDays"],"mappings":"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","sourcesContent":["import type { Dayjs, OpUnitType } from 'dayjs';\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\nimport relativeTime from 'dayjs/plugin/relativeTime';\n\n// ----------------------------------------------------------------------\n\ndayjs.extend(duration);\ndayjs.extend(relativeTime);\n\n// ----------------------------------------------------------------------\n\nexport type DatePickerFormat =\n | Dayjs\n | Date\n | string\n | number\n | null\n | undefined;\n\nexport const formatStr = {\n dateTime: 'DD/MM/YYYY HH:mm',\n date: 'DD/MM/YYYY',\n time: 'HH:mm',\n split: {\n dateTime: 'DD/MM/YYYY HH:mm',\n date: 'DD/MM/YYYY',\n },\n paramCase: {\n dateTime: 'DD/MM/YYYY HH:mm',\n date: 'DD/MM/YYYY',\n },\n};\n\nexport function today(format?: string) {\n return dayjs(new Date()).startOf('day').format(format);\n}\n\nexport function fDateTime(date: DatePickerFormat, format?: string) {\n if (!date) {\n return null;\n }\n\n const isValid = dayjs(date).isValid();\n\n return isValid\n ? dayjs(date).format(format ?? formatStr.dateTime)\n : 'Invalid time value';\n}\n\nexport function fDate(date: DatePickerFormat, format?: string) {\n if (!date) {\n return null;\n }\n\n const isValid = dayjs(date).isValid();\n\n return isValid\n ? dayjs(date).format(format ?? formatStr.date)\n : 'Invalid time value';\n}\n\nexport function fTime(date: DatePickerFormat, format?: string) {\n if (!date) {\n return null;\n }\n\n const isValid = dayjs(date).isValid();\n\n return isValid\n ? dayjs(date).format(format ?? formatStr.time)\n : 'Invalid time value';\n}\n\nexport function fTimestamp(date: DatePickerFormat) {\n if (!date) {\n return null;\n }\n\n const isValid = dayjs(date).isValid();\n\n return isValid ? dayjs(date).valueOf() : 'Invalid time value';\n}\n\nexport function fToNow(date: DatePickerFormat) {\n if (!date) {\n return null;\n }\n\n const isValid = dayjs(date).isValid();\n\n return isValid ? dayjs(date).toNow(true) : 'Invalid time value';\n}\n\nexport type TimeUnit = 'instant' | 'day';\n\nexport interface Expiration {\n expired: boolean;\n label: string;\n value: string;\n text: string;\n}\n\nexport function fTimeAgo(date: DatePickerFormat, unit: TimeUnit) {\n if (!date) {\n return null;\n }\n\n const target = dayjs(date);\n\n if (!target.isValid()) {\n return 'Invalid time value';\n }\n\n const elapsed = fIsAfter(new Date(), target) ? target : dayjs();\n\n if (unit === 'instant') {\n return `Há ${elapsed.toNow(true)}`;\n }\n\n const daysElapsed = dayjs()\n .startOf('day')\n .diff(elapsed.startOf('day'), 'day');\n\n if (daysElapsed === 0) {\n return 'Hoje';\n }\n\n if (daysElapsed === 1) {\n return 'Ontem';\n }\n\n return `Há ${daysElapsed} dias`;\n}\n\nexport function fExpiration(\n date: DatePickerFormat,\n unit: TimeUnit,\n): Expiration | null {\n if (!date || !dayjs(date).isValid()) {\n return null;\n }\n\n const limit = unit === 'day' ? dayjs(date).endOf('day') : dayjs(date);\n\n if (fIsAfter(new Date(), limit)) {\n return {\n expired: true,\n label: 'Expirado',\n value: fTimeAgo(date, 'day') as string,\n text: 'Expirado',\n };\n }\n\n const value = limit.toNow(true);\n\n return {\n expired: false,\n label: 'Expira em',\n value,\n text: `Expira em ${value}`,\n };\n}\n\nexport function fIsBetween(\n inputDate: DatePickerFormat,\n startDate: DatePickerFormat,\n endDate: DatePickerFormat,\n) {\n if (!inputDate || !startDate || !endDate) {\n return false;\n }\n\n const formattedInputDate = fTimestamp(inputDate);\n const formattedStartDate = fTimestamp(startDate);\n const formattedEndDate = fTimestamp(endDate);\n\n if (formattedInputDate && formattedStartDate && formattedEndDate) {\n return (\n formattedInputDate >= formattedStartDate &&\n formattedInputDate <= formattedEndDate\n );\n }\n\n return false;\n}\n\nexport function fIsAfter(\n startDate: DatePickerFormat,\n endDate: DatePickerFormat,\n) {\n return dayjs(startDate).isAfter(endDate);\n}\n\nexport function fIsSame(\n startDate: DatePickerFormat,\n endDate: DatePickerFormat,\n units?: OpUnitType,\n) {\n if (!startDate || !endDate) {\n return false;\n }\n\n const isValid = dayjs(startDate).isValid() && dayjs(endDate).isValid();\n\n if (!isValid) {\n return 'Invalid time value';\n }\n\n return dayjs(startDate).isSame(endDate, units ?? 'year');\n}\n\nexport function fDateRangeShortLabel(\n startDate: DatePickerFormat,\n endDate: DatePickerFormat,\n initial?: boolean,\n) {\n const isValid = dayjs(startDate).isValid() && dayjs(endDate).isValid();\n\n const isAfter = fIsAfter(startDate, endDate);\n\n if (!isValid || isAfter) {\n return 'Invalid time value';\n }\n\n let label = `${fDate(startDate)} - ${fDate(endDate)}`;\n\n if (initial) {\n return label;\n }\n\n const isSameYear = fIsSame(startDate, endDate, 'year');\n const isSameMonth = fIsSame(startDate, endDate, 'month');\n const isSameDay = fIsSame(startDate, endDate, 'day');\n\n if (isSameYear && !isSameMonth) {\n label = `${fDate(startDate, 'DD MMM')} - ${fDate(endDate)}`;\n } else if (isSameYear && isSameMonth && !isSameDay) {\n label = `${fDate(startDate, 'DD')} - ${fDate(endDate)}`;\n } else if (isSameYear && isSameMonth && isSameDay) {\n label = `${fDate(endDate)}`;\n }\n\n return label;\n}\n\nexport type DurationProps = {\n years?: number;\n months?: number;\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n};\n\nexport function fAdd({\n years = 0,\n months = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n milliseconds = 0,\n}: DurationProps) {\n const result = dayjs()\n .add(\n dayjs.duration({\n years,\n months,\n days,\n hours,\n minutes,\n seconds,\n milliseconds,\n }),\n )\n .format();\n\n return result;\n}\n\nexport function fSub({\n years = 0,\n months = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n milliseconds = 0,\n}: DurationProps) {\n const result = dayjs()\n .subtract(\n dayjs.duration({\n years,\n months,\n days,\n hours,\n minutes,\n seconds,\n milliseconds,\n }),\n )\n .format();\n\n return result;\n}\n\nexport const getDifferenceInDays = (startDate?: Date, endDate?: Date) => {\n if (!startDate || !endDate) return null;\n\n return dayjs(endDate).diff(dayjs(startDate), 'day');\n};\n"]}
@@ -4,7 +4,7 @@ import { a, m, c as c$1, n } from '../../../chunk-QSIIIIKG.js';
4
4
  import { a as a$7 } from '../../../chunk-DRGARBKB.js';
5
5
  import { a as a$6 } from '../../../chunk-YX5SZL5S.js';
6
6
  import { a as a$4 } from '../../../chunk-PLYIMNOS.js';
7
- import { d as d$2 } from '../../../chunk-A7QSCOUE.js';
7
+ import { d as d$2 } from '../../../chunk-2W5FGLTC.js';
8
8
  import { h, d as d$1, c as c$2 } from '../../../chunk-OF6623HG.js';
9
9
  import { a as a$3 } from '../../../chunk-ADNBF5AS.js';
10
10
  import { d } from '../../../chunk-WRS6EB73.js';
@@ -3,7 +3,7 @@ import { b as b$2, a as a$5 } from '../../../chunk-XL6SZZGI.js';
3
3
  import { a, b as b$1, m, n, c } from '../../../chunk-QSIIIIKG.js';
4
4
  import { a as a$8 } from '../../../chunk-DRGARBKB.js';
5
5
  import { a as a$4 } from '../../../chunk-PLYIMNOS.js';
6
- import { d as d$2 } from '../../../chunk-A7QSCOUE.js';
6
+ import { d as d$2 } from '../../../chunk-2W5FGLTC.js';
7
7
  import { h, d, a as a$6, c as c$1 } from '../../../chunk-OF6623HG.js';
8
8
  import { a as a$3 } from '../../../chunk-ADNBF5AS.js';
9
9
  import { d as d$1 } from '../../../chunk-WRS6EB73.js';
@@ -1,7 +1,7 @@
1
1
  export { a as FilterOperator, b as SortType } from '../../chunk-P64QBDAO.js';
2
2
  import '../../chunk-4P2L7UJA.js';
3
3
  import { a as a$4 } from '../../chunk-E5SBGF5G.js';
4
- import { d, c } from '../../chunk-A7QSCOUE.js';
4
+ import { d, c } from '../../chunk-2W5FGLTC.js';
5
5
  import { h, a as a$6 } from '../../chunk-OF6623HG.js';
6
6
  import { d as d$1 } from '../../chunk-WRS6EB73.js';
7
7
  import '../../chunk-IR7WWQME.js';
@@ -1,4 +1,4 @@
1
- import { d } from '../../chunk-A7QSCOUE.js';
1
+ import { d } from '../../chunk-2W5FGLTC.js';
2
2
  import s from '@mui/material/Typography';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
@@ -7,15 +7,15 @@ import '../../../chunk-Z6YXPKWP.js';
7
7
  import { useCallback, useMemo } from 'react';
8
8
  import { useFormContext, useFieldArray } from 'react-hook-form';
9
9
  import w from '@mui/material/Divider';
10
- import x from '@mui/material/IconButton';
10
+ import B from '@mui/material/IconButton';
11
11
  import F from '@mui/material/InputAdornment';
12
12
  import n from '@mui/material/Stack';
13
13
  import M from '@mui/material/Typography';
14
- import W from '@mui/material/Alert';
14
+ import x from '@mui/material/Alert';
15
15
  import { styled, alpha } from '@mui/material/styles';
16
16
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
17
17
 
18
- var u=[{label:"XML",value:"XML"},{label:"JSON",value:"JSON"},{label:"BYTEA",value:"BYTEA"}],T=[{label:"GET",value:"GET"},{label:"POST",value:"POST"},{label:"DELETE",value:"DELETE"},{label:"PUT",value:"PUT"}];var y=styled(x)(({theme:o})=>({svg:{color:`${o.palette.primary.main} !important`}})),h=styled(M)(()=>({textDecoration:"underline",fontWeight:"600",cursor:"pointer"})),f=styled(W)(({theme:o})=>({backgroundColor:`${alpha(o.palette.primary.main,.03)}`,border:`1px solid ${alpha(o.palette.primary.main,.4)}`,flexDirection:"row",alignItems:"center",padding:"2px 12px",gap:8,borderRadius:8,marginBottom:16,"& svg":{color:o.palette.primary.main}}));var N=()=>{let o=()=>{let a="https://ajuda.zydon.com.br/pt-BR/articles/9180603-sobre-webhooks";window.open(a,"_blank");};return jsx(f,{severity:"info",children:jsxs(M,{color:"grey",variant:"caption",children:["Webhooks permitem que servi\xE7os externos sejam notificados quando determinados eventos acontecem. Saiba mais"," ",jsx(h,{variant:"caption",color:"primary",onClick:()=>o(),children:"acessando a documenta\xE7\xE3o do Webhook"})]})})},v=N;var G={required:{value:!0,message:"Campo Tipo de conte\xFAdo \xE9 obrigat\xF3rio"}},J={required:{value:!0,message:"Campo M\xE9todo HTTP \xE9 obrigat\xF3rio"}},X={required:{value:!0,message:"Url \xE9 obrigat\xF3rio"}},z={required:{value:!0,message:""}},K=({webhookData:o,isEditing:a$4=!1,haveTip:k=!1,hasFilter:C=!0,hasType:A=!0})=>{let{control:P}=useFormContext(),{fields:I,append:d,remove:O}=useFieldArray({name:"headers",control:P}),_=useCallback(()=>{d({value:"",name:""});},[d]),m=useCallback(()=>{o?.resource_id&&navigator.clipboard.writeText(o.resource_id).catch(()=>{});},[o?.resource_id]),L=useMemo(()=>({endAdornment:jsx(F,{position:"end",children:jsx(y,{"aria-label":"Copiar ID origem",onClick:m,children:jsx(a,{className:"copyIcon",icon:"COPY_CONTENT"})})})}),[m]);return jsxs(Fragment,{children:[k&&jsx(v,{}),a$4&&jsx(a$1,{name:"name",label:"Nome do webhook"}),jsxs(n,{direction:"row",gap:2,children:[jsx(a$1,{name:"url",label:"URL de endpoint",rules:X}),C&&jsx(a$1,{name:"filter",label:"Filtro"})]}),a$4&&o&&jsxs(Fragment,{children:[jsx(a$1,{variant:"filled",name:"solution",label:"Solu\xE7\xE3o",disabled:!0}),jsxs(n,{direction:"row",gap:2,children:[jsx(a$1,{variant:"filled",name:"resource",label:"Origem",disabled:!0}),jsx(a$1,{variant:"filled",name:"resource_id",label:"ID origem",disabled:!0,InputProps:L}),jsx(a$1,{variant:"filled",name:"event",label:"Evento",disabled:!0})]})]}),jsxs(n,{direction:"row",gap:2,alignItems:"center",children:[A&&jsx(a$2,{fullWidth:!0,options:u,name:"content_type",label:"Tipo de conte\xFAdo",required:!0,rules:G}),jsx(a$2,{fullWidth:!0,options:T,name:"http_method",label:"M\xE9todo HTTP",required:!0,rules:J})]}),jsx(M,{variant:"overline",color:"grey",children:"Cabe\xE7alho"}),I?.map((B,l)=>jsxs(n,{direction:"row",gap:2,alignItems:"center",children:[jsx(a$1,{name:`headers.${l}.name`,label:"Chave",required:!0,rules:z}),jsx(a$1,{name:`headers.${l}.value`,label:"Valor"}),jsx(x,{"aria-label":"Remover cabe\xE7alho",color:"error",onClick:()=>O(l),children:jsx(a,{icon:"DELETE_MARK_BUTTON_02"})})]},B.id)),jsx(a$3,{actionType:"NEW",size:"large",variant:"outlined",color:"inherit",fullWidth:!0,onClick:_,children:"Adicionar novo cabe\xE7alho"}),jsx(w,{})]})},Ee=K;
18
+ var u=[{label:"XML",value:"XML"},{label:"JSON",value:"JSON"},{label:"BYTEA",value:"BYTEA"}],T=[{label:"GET",value:"GET"},{label:"POST",value:"POST"},{label:"DELETE",value:"DELETE"},{label:"PUT",value:"PUT"}];var y=styled(B)(({theme:o})=>({svg:{color:`${o.palette.primary.main} !important`}})),h=styled(M)(()=>({textDecoration:"underline",fontWeight:"600",cursor:"pointer"})),f=styled(x)(({theme:o})=>({backgroundColor:`${alpha(o.palette.primary.main,.03)}`,border:`1px solid ${alpha(o.palette.primary.main,.4)}`,flexDirection:"row",alignItems:"center",padding:"2px 12px",gap:8,borderRadius:8,marginBottom:16,"& svg":{color:o.palette.primary.main}}));var N=()=>{let o=()=>{let a="https://ajuda.zydon.com.br/sobre-webhooks";window.open(a,"_blank");};return jsx(f,{severity:"info",children:jsxs(M,{color:"grey",variant:"caption",children:["Webhooks permitem que servi\xE7os externos sejam notificados quando determinados eventos acontecem. Saiba mais"," ",jsx(h,{variant:"caption",color:"primary",onClick:()=>o(),children:"acessando a documenta\xE7\xE3o do Webhook"})]})})},v=N;var G={required:{value:!0,message:"Campo Tipo de conte\xFAdo \xE9 obrigat\xF3rio"}},J={required:{value:!0,message:"Campo M\xE9todo HTTP \xE9 obrigat\xF3rio"}},X={required:{value:!0,message:"Url \xE9 obrigat\xF3rio"}},z={required:{value:!0,message:""}},K=({webhookData:o,isEditing:a$4=!1,haveTip:k=!1,hasFilter:C=!0,hasType:A=!0})=>{let{control:P}=useFormContext(),{fields:I,append:d,remove:O}=useFieldArray({name:"headers",control:P}),_=useCallback(()=>{d({value:"",name:""});},[d]),m=useCallback(()=>{o?.resource_id&&navigator.clipboard.writeText(o.resource_id).catch(()=>{});},[o?.resource_id]),L=useMemo(()=>({endAdornment:jsx(F,{position:"end",children:jsx(y,{"aria-label":"Copiar ID origem",onClick:m,children:jsx(a,{className:"copyIcon",icon:"COPY_CONTENT"})})})}),[m]);return jsxs(Fragment,{children:[k&&jsx(v,{}),a$4&&jsx(a$1,{name:"name",label:"Nome do webhook"}),jsxs(n,{direction:"row",gap:2,children:[jsx(a$1,{name:"url",label:"URL de endpoint",rules:X}),C&&jsx(a$1,{name:"filter",label:"Filtro"})]}),a$4&&o&&jsxs(Fragment,{children:[jsx(a$1,{variant:"filled",name:"solution",label:"Solu\xE7\xE3o",disabled:!0}),jsxs(n,{direction:"row",gap:2,children:[jsx(a$1,{variant:"filled",name:"resource",label:"Origem",disabled:!0}),jsx(a$1,{variant:"filled",name:"resource_id",label:"ID origem",disabled:!0,InputProps:L}),jsx(a$1,{variant:"filled",name:"event",label:"Evento",disabled:!0})]})]}),jsxs(n,{direction:"row",gap:2,alignItems:"center",children:[A&&jsx(a$2,{fullWidth:!0,options:u,name:"content_type",label:"Tipo de conte\xFAdo",required:!0,rules:G}),jsx(a$2,{fullWidth:!0,options:T,name:"http_method",label:"M\xE9todo HTTP",required:!0,rules:J})]}),jsx(M,{variant:"overline",color:"grey",children:"Cabe\xE7alho"}),I?.map((W,l)=>jsxs(n,{direction:"row",gap:2,alignItems:"center",children:[jsx(a$1,{name:`headers.${l}.name`,label:"Chave",required:!0,rules:z}),jsx(a$1,{name:`headers.${l}.value`,label:"Valor"}),jsx(B,{"aria-label":"Remover cabe\xE7alho",color:"error",onClick:()=>O(l),children:jsx(a,{icon:"DELETE_MARK_BUTTON_02"})})]},W.id)),jsx(a$3,{actionType:"NEW",size:"large",variant:"outlined",color:"inherit",fullWidth:!0,onClick:_,children:"Adicionar novo cabe\xE7alho"}),jsx(w,{})]})},Ee=K;
19
19
 
20
20
  export { Ee as default };
21
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/form/Webhook/index.tsx","../../../../src/components/form/Webhook/props.ts","../../../../src/components/form/Webhook/styles.ts","../../../../src/components/form/Webhook/WebhookAlert.tsx"],"names":["useCallback","useMemo","useFieldArray","useFormContext","Divider","IconButton","InputAdornment","Stack","Typography","ContentTypeOptions","HttpMethodOptions","Alert","alpha","styled","SyledIconButton","theme","StyledTypography","StyledAlert","jsx","jsxs","WebhookAlert","handleLinkClick","url","WebhookAlert_default","Fragment","CONTENT_TYPE_RULES","HTTP_METHOD_RULES","URL_RULES","HEADER_KEY_RULES","Webhook","webhookData","isEditing","haveTip","hasFilter","hasType","control","headers","append","remove","handleCreateField","handleCopyResourceId","resourceIdInputProps","Icon_default","Field_default","Autocomplete_default","item","index","ActionButton_default","Webhook_default"],"mappings":"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","sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { useFieldArray, useFormContext } from 'react-hook-form';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport ActionButton from 'components/ActionButton';\nimport Icon from 'components/Icon';\n\nimport Autocomplete from '../Autocomplete';\nimport Field from '../Field';\n\nimport { ContentTypeOptions, HttpMethodOptions, WebhookProps } from './props';\nimport { SyledIconButton } from './styles';\nimport WebhookAlert from './WebhookAlert';\n\nconst CONTENT_TYPE_RULES = {\n required: { value: true, message: 'Campo Tipo de conteúdo é obrigatório' },\n} as const;\n\nconst HTTP_METHOD_RULES = {\n required: { value: true, message: 'Campo Método HTTP é obrigatório' },\n} as const;\n\nconst URL_RULES = {\n required: { value: true, message: 'Url é obrigatório' },\n} as const;\n\nconst HEADER_KEY_RULES = {\n required: { value: true, message: '' },\n} as const;\n\nconst Webhook = ({\n webhookData,\n isEditing = false,\n haveTip = false,\n hasFilter = true,\n hasType = true,\n}: WebhookProps) => {\n const { control } = useFormContext();\n\n const {\n fields: headers,\n append,\n remove,\n } = useFieldArray({\n name: 'headers',\n control,\n });\n\n const handleCreateField = useCallback(() => {\n append({ value: '', name: '' });\n }, [append]);\n\n const handleCopyResourceId = useCallback(() => {\n if (!webhookData?.resource_id) return;\n navigator.clipboard\n .writeText(webhookData.resource_id)\n .catch(() => undefined);\n }, [webhookData?.resource_id]);\n\n const resourceIdInputProps = useMemo(\n () => ({\n endAdornment: (\n <InputAdornment position=\"end\">\n <SyledIconButton\n aria-label=\"Copiar ID origem\"\n onClick={handleCopyResourceId}\n >\n <Icon className=\"copyIcon\" icon=\"COPY_CONTENT\" />\n </SyledIconButton>\n </InputAdornment>\n ),\n }),\n [handleCopyResourceId],\n );\n\n return (\n <>\n {haveTip && <WebhookAlert />}\n {isEditing && <Field name=\"name\" label=\"Nome do webhook\" />}\n <Stack direction=\"row\" gap={2}>\n <Field name=\"url\" label=\"URL de endpoint\" rules={URL_RULES} />\n {hasFilter && <Field name=\"filter\" label=\"Filtro\" />}\n </Stack>\n {isEditing && webhookData && (\n <>\n <Field variant=\"filled\" name=\"solution\" label=\"Solução\" disabled />\n <Stack direction=\"row\" gap={2}>\n <Field variant=\"filled\" name=\"resource\" label=\"Origem\" disabled />\n <Field\n variant=\"filled\"\n name=\"resource_id\"\n label=\"ID origem\"\n disabled\n InputProps={resourceIdInputProps}\n />\n <Field variant=\"filled\" name=\"event\" label=\"Evento\" disabled />\n </Stack>\n </>\n )}\n <Stack direction=\"row\" gap={2} alignItems=\"center\">\n {hasType && (\n <Autocomplete\n fullWidth\n options={ContentTypeOptions}\n name=\"content_type\"\n label=\"Tipo de conteúdo\"\n required\n rules={CONTENT_TYPE_RULES}\n />\n )}\n <Autocomplete\n fullWidth\n options={HttpMethodOptions}\n name=\"http_method\"\n label=\"Método HTTP\"\n required\n rules={HTTP_METHOD_RULES}\n />\n </Stack>\n <Typography variant=\"overline\" color=\"grey\">\n Cabeçalho\n </Typography>\n {headers?.map((item, index) => (\n <Stack key={item.id} direction=\"row\" gap={2} alignItems=\"center\">\n <Field\n name={`headers.${index}.name`}\n label=\"Chave\"\n required\n rules={HEADER_KEY_RULES}\n />\n <Field name={`headers.${index}.value`} label=\"Valor\" />\n <IconButton\n aria-label=\"Remover cabeçalho\"\n color=\"error\"\n onClick={() => remove(index)}\n >\n <Icon icon=\"DELETE_MARK_BUTTON_02\" />\n </IconButton>\n </Stack>\n ))}\n <ActionButton\n actionType=\"NEW\"\n size=\"large\"\n variant=\"outlined\"\n color=\"inherit\"\n fullWidth\n onClick={handleCreateField}\n >\n Adicionar novo cabeçalho\n </ActionButton>\n <Divider />\n </>\n );\n};\n\nexport default Webhook;\n","import { WebhookType } from 'types/webhook';\n\nexport interface WebhookProps {\n webhookData?: WebhookType;\n isEditing?: boolean;\n haveTip?: boolean;\n hasFilter?: boolean;\n hasType?: boolean;\n}\nexport enum ContentTypeStatus {\n XML = 'XML',\n JSON = 'JSON',\n BYTEA = 'BYTEA',\n}\n\nexport enum HttpMethodStatus {\n GET = 'GET',\n POST = 'POST',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n PUT = 'PUT',\n}\n\nexport const ContentTypeOptions = [\n {\n label: ContentTypeStatus.XML,\n value: ContentTypeStatus.XML,\n },\n {\n label: ContentTypeStatus.JSON,\n value: ContentTypeStatus.JSON,\n },\n {\n label: ContentTypeStatus.BYTEA,\n value: ContentTypeStatus.BYTEA,\n },\n];\n\nexport const HttpMethodOptions = [\n {\n label: HttpMethodStatus.GET,\n value: HttpMethodStatus.GET,\n },\n {\n label: HttpMethodStatus.POST,\n value: HttpMethodStatus.POST,\n },\n {\n label: HttpMethodStatus.DELETE,\n value: HttpMethodStatus.DELETE,\n },\n {\n label: HttpMethodStatus.PUT,\n value: HttpMethodStatus.PUT,\n },\n];\n","import Alert from '@mui/material/Alert';\nimport IconButton from '@mui/material/IconButton';\nimport { alpha, styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\n\nexport const SyledIconButton = styled(IconButton)(({ theme }) => ({\n svg: {\n color: `${theme.palette.primary.main} !important`,\n },\n}));\n\nexport const StyledTypography = styled(Typography)(() => ({\n textDecoration: 'underline',\n fontWeight: '600',\n cursor: 'pointer',\n}));\n\nexport const StyledAlert = styled(Alert)(({ theme }) => ({\n backgroundColor: `${alpha(theme.palette.primary.main, 0.03)}`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.4)}`,\n flexDirection: 'row',\n alignItems: 'center',\n padding: '2px 12px',\n gap: 8,\n borderRadius: 8,\n marginBottom: 16,\n\n '& svg': {\n color: theme.palette.primary.main,\n },\n}));\n","import Typography from '@mui/material/Typography';\n\nimport { StyledAlert, StyledTypography } from './styles';\n\nconst WebhookAlert = () => {\n const handleLinkClick = () => {\n const url =\n 'https://ajuda.zydon.com.br/pt-BR/articles/9180603-sobre-webhooks';\n window.open(url, '_blank');\n };\n\n return (\n <StyledAlert severity=\"info\">\n <Typography color=\"grey\" variant=\"caption\">\n Webhooks permitem que serviços externos sejam notificados quando\n determinados eventos acontecem. Saiba mais{' '}\n <StyledTypography\n variant=\"caption\"\n color=\"primary\"\n onClick={() => handleLinkClick()}\n >\n acessando a documentação do Webhook\n </StyledTypography>\n </Typography>\n </StyledAlert>\n );\n};\n\nexport default WebhookAlert;\n"]}
1
+ {"version":3,"sources":["../../../../src/components/form/Webhook/index.tsx","../../../../src/components/form/Webhook/props.ts","../../../../src/components/form/Webhook/styles.ts","../../../../src/components/form/Webhook/WebhookAlert.tsx"],"names":["useCallback","useMemo","useFieldArray","useFormContext","Divider","IconButton","InputAdornment","Stack","Typography","ContentTypeOptions","HttpMethodOptions","Alert","alpha","styled","SyledIconButton","theme","StyledTypography","StyledAlert","jsx","jsxs","WebhookAlert","handleLinkClick","url","WebhookAlert_default","Fragment","CONTENT_TYPE_RULES","HTTP_METHOD_RULES","URL_RULES","HEADER_KEY_RULES","Webhook","webhookData","isEditing","haveTip","hasFilter","hasType","control","headers","append","remove","handleCreateField","handleCopyResourceId","resourceIdInputProps","Icon_default","Field_default","Autocomplete_default","item","index","ActionButton_default","Webhook_default"],"mappings":"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","sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { useFieldArray, useFormContext } from 'react-hook-form';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport ActionButton from 'components/ActionButton';\nimport Icon from 'components/Icon';\n\nimport Autocomplete from '../Autocomplete';\nimport Field from '../Field';\n\nimport { ContentTypeOptions, HttpMethodOptions, WebhookProps } from './props';\nimport { SyledIconButton } from './styles';\nimport WebhookAlert from './WebhookAlert';\n\nconst CONTENT_TYPE_RULES = {\n required: { value: true, message: 'Campo Tipo de conteúdo é obrigatório' },\n} as const;\n\nconst HTTP_METHOD_RULES = {\n required: { value: true, message: 'Campo Método HTTP é obrigatório' },\n} as const;\n\nconst URL_RULES = {\n required: { value: true, message: 'Url é obrigatório' },\n} as const;\n\nconst HEADER_KEY_RULES = {\n required: { value: true, message: '' },\n} as const;\n\nconst Webhook = ({\n webhookData,\n isEditing = false,\n haveTip = false,\n hasFilter = true,\n hasType = true,\n}: WebhookProps) => {\n const { control } = useFormContext();\n\n const {\n fields: headers,\n append,\n remove,\n } = useFieldArray({\n name: 'headers',\n control,\n });\n\n const handleCreateField = useCallback(() => {\n append({ value: '', name: '' });\n }, [append]);\n\n const handleCopyResourceId = useCallback(() => {\n if (!webhookData?.resource_id) return;\n navigator.clipboard\n .writeText(webhookData.resource_id)\n .catch(() => undefined);\n }, [webhookData?.resource_id]);\n\n const resourceIdInputProps = useMemo(\n () => ({\n endAdornment: (\n <InputAdornment position=\"end\">\n <SyledIconButton\n aria-label=\"Copiar ID origem\"\n onClick={handleCopyResourceId}\n >\n <Icon className=\"copyIcon\" icon=\"COPY_CONTENT\" />\n </SyledIconButton>\n </InputAdornment>\n ),\n }),\n [handleCopyResourceId],\n );\n\n return (\n <>\n {haveTip && <WebhookAlert />}\n {isEditing && <Field name=\"name\" label=\"Nome do webhook\" />}\n <Stack direction=\"row\" gap={2}>\n <Field name=\"url\" label=\"URL de endpoint\" rules={URL_RULES} />\n {hasFilter && <Field name=\"filter\" label=\"Filtro\" />}\n </Stack>\n {isEditing && webhookData && (\n <>\n <Field variant=\"filled\" name=\"solution\" label=\"Solução\" disabled />\n <Stack direction=\"row\" gap={2}>\n <Field variant=\"filled\" name=\"resource\" label=\"Origem\" disabled />\n <Field\n variant=\"filled\"\n name=\"resource_id\"\n label=\"ID origem\"\n disabled\n InputProps={resourceIdInputProps}\n />\n <Field variant=\"filled\" name=\"event\" label=\"Evento\" disabled />\n </Stack>\n </>\n )}\n <Stack direction=\"row\" gap={2} alignItems=\"center\">\n {hasType && (\n <Autocomplete\n fullWidth\n options={ContentTypeOptions}\n name=\"content_type\"\n label=\"Tipo de conteúdo\"\n required\n rules={CONTENT_TYPE_RULES}\n />\n )}\n <Autocomplete\n fullWidth\n options={HttpMethodOptions}\n name=\"http_method\"\n label=\"Método HTTP\"\n required\n rules={HTTP_METHOD_RULES}\n />\n </Stack>\n <Typography variant=\"overline\" color=\"grey\">\n Cabeçalho\n </Typography>\n {headers?.map((item, index) => (\n <Stack key={item.id} direction=\"row\" gap={2} alignItems=\"center\">\n <Field\n name={`headers.${index}.name`}\n label=\"Chave\"\n required\n rules={HEADER_KEY_RULES}\n />\n <Field name={`headers.${index}.value`} label=\"Valor\" />\n <IconButton\n aria-label=\"Remover cabeçalho\"\n color=\"error\"\n onClick={() => remove(index)}\n >\n <Icon icon=\"DELETE_MARK_BUTTON_02\" />\n </IconButton>\n </Stack>\n ))}\n <ActionButton\n actionType=\"NEW\"\n size=\"large\"\n variant=\"outlined\"\n color=\"inherit\"\n fullWidth\n onClick={handleCreateField}\n >\n Adicionar novo cabeçalho\n </ActionButton>\n <Divider />\n </>\n );\n};\n\nexport default Webhook;\n","import { WebhookType } from 'types/webhook';\n\nexport interface WebhookProps {\n webhookData?: WebhookType;\n isEditing?: boolean;\n haveTip?: boolean;\n hasFilter?: boolean;\n hasType?: boolean;\n}\nexport enum ContentTypeStatus {\n XML = 'XML',\n JSON = 'JSON',\n BYTEA = 'BYTEA',\n}\n\nexport enum HttpMethodStatus {\n GET = 'GET',\n POST = 'POST',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n PUT = 'PUT',\n}\n\nexport const ContentTypeOptions = [\n {\n label: ContentTypeStatus.XML,\n value: ContentTypeStatus.XML,\n },\n {\n label: ContentTypeStatus.JSON,\n value: ContentTypeStatus.JSON,\n },\n {\n label: ContentTypeStatus.BYTEA,\n value: ContentTypeStatus.BYTEA,\n },\n];\n\nexport const HttpMethodOptions = [\n {\n label: HttpMethodStatus.GET,\n value: HttpMethodStatus.GET,\n },\n {\n label: HttpMethodStatus.POST,\n value: HttpMethodStatus.POST,\n },\n {\n label: HttpMethodStatus.DELETE,\n value: HttpMethodStatus.DELETE,\n },\n {\n label: HttpMethodStatus.PUT,\n value: HttpMethodStatus.PUT,\n },\n];\n","import Alert from '@mui/material/Alert';\nimport IconButton from '@mui/material/IconButton';\nimport { alpha, styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\n\nexport const SyledIconButton = styled(IconButton)(({ theme }) => ({\n svg: {\n color: `${theme.palette.primary.main} !important`,\n },\n}));\n\nexport const StyledTypography = styled(Typography)(() => ({\n textDecoration: 'underline',\n fontWeight: '600',\n cursor: 'pointer',\n}));\n\nexport const StyledAlert = styled(Alert)(({ theme }) => ({\n backgroundColor: `${alpha(theme.palette.primary.main, 0.03)}`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.4)}`,\n flexDirection: 'row',\n alignItems: 'center',\n padding: '2px 12px',\n gap: 8,\n borderRadius: 8,\n marginBottom: 16,\n\n '& svg': {\n color: theme.palette.primary.main,\n },\n}));\n","import Typography from '@mui/material/Typography';\n\nimport { StyledAlert, StyledTypography } from './styles';\n\nconst WebhookAlert = () => {\n const handleLinkClick = () => {\n const url =\n 'https://ajuda.zydon.com.br/sobre-webhooks';\n window.open(url, '_blank');\n };\n\n return (\n <StyledAlert severity=\"info\">\n <Typography color=\"grey\" variant=\"caption\">\n Webhooks permitem que serviços externos sejam notificados quando\n determinados eventos acontecem. Saiba mais{' '}\n <StyledTypography\n variant=\"caption\"\n color=\"primary\"\n onClick={() => handleLinkClick()}\n >\n acessando a documentação do Webhook\n </StyledTypography>\n </Typography>\n </StyledAlert>\n );\n};\n\nexport default WebhookAlert;\n"]}
@@ -20,7 +20,15 @@ declare function fDate(date: DatePickerFormat, format?: string): string | null;
20
20
  declare function fTime(date: DatePickerFormat, format?: string): string | null;
21
21
  declare function fTimestamp(date: DatePickerFormat): number | "Invalid time value" | null;
22
22
  declare function fToNow(date: DatePickerFormat): string | null;
23
- declare function fTimeLeft(date: DatePickerFormat): string | null;
23
+ type TimeUnit = 'instant' | 'day';
24
+ interface Expiration {
25
+ expired: boolean;
26
+ label: string;
27
+ value: string;
28
+ text: string;
29
+ }
30
+ declare function fTimeAgo(date: DatePickerFormat, unit: TimeUnit): string | null;
31
+ declare function fExpiration(date: DatePickerFormat, unit: TimeUnit): Expiration | null;
24
32
  declare function fIsBetween(inputDate: DatePickerFormat, startDate: DatePickerFormat, endDate: DatePickerFormat): boolean;
25
33
  declare function fIsAfter(startDate: DatePickerFormat, endDate: DatePickerFormat): boolean;
26
34
  declare function fIsSame(startDate: DatePickerFormat, endDate: DatePickerFormat, units?: OpUnitType): boolean | "Invalid time value";
@@ -38,4 +46,4 @@ declare function fAdd({ years, months, days, hours, minutes, seconds, millisecon
38
46
  declare function fSub({ years, months, days, hours, minutes, seconds, milliseconds, }: DurationProps): string;
39
47
  declare const getDifferenceInDays: (startDate?: Date, endDate?: Date) => number | null;
40
48
 
41
- export { DatePickerFormat, DurationProps, fAdd, fDate, fDateRangeShortLabel, fDateTime, fIsAfter, fIsBetween, fIsSame, fSub, fTime, fTimeLeft, fTimestamp, fToNow, formatStr, getDifferenceInDays, today };
49
+ export { DatePickerFormat, DurationProps, Expiration, TimeUnit, fAdd, fDate, fDateRangeShortLabel, fDateTime, fExpiration, fIsAfter, fIsBetween, fIsSame, fSub, fTime, fTimeAgo, fTimestamp, fToNow, formatStr, getDifferenceInDays, today };
@@ -1,2 +1,2 @@
1
- export { m as fAdd, d as fDate, l as fDateRangeShortLabel, c as fDateTime, j as fIsAfter, i as fIsBetween, k as fIsSame, n as fSub, e as fTime, h as fTimeLeft, f as fTimestamp, g as fToNow, a as formatStr, o as getDifferenceInDays, b as today } from '../chunk-A7QSCOUE.js';
1
+ export { n as fAdd, d as fDate, m as fDateRangeShortLabel, c as fDateTime, i as fExpiration, k as fIsAfter, j as fIsBetween, l as fIsSame, o as fSub, e as fTime, h as fTimeAgo, f as fTimestamp, g as fToNow, a as formatStr, p as getDifferenceInDays, b as today } from '../chunk-2W5FGLTC.js';
2
2
  //# sourceMappingURL=formatTime.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zydon/common",
3
- "version": "2.9.29",
3
+ "version": "2.9.31",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "./dist/index.js",
@@ -1,8 +0,0 @@
1
- import t from 'dayjs';
2
- import p from 'dayjs/plugin/duration';
3
- import D from 'dayjs/plugin/relativeTime';
4
-
5
- t.extend(p);t.extend(D);var c={dateTime:"DD/MM/YYYY HH:mm",date:"DD/MM/YYYY",time:"HH:mm",split:{dateTime:"DD/MM/YYYY HH:mm",date:"DD/MM/YYYY"},paramCase:{dateTime:"DD/MM/YYYY HH:mm",date:"DD/MM/YYYY"}};function x(r){return t(new Date).startOf("day").format(r)}function P(r,i){return r?t(r).isValid()?t(r).format(i??c.dateTime):"Invalid time value":null}function f(r,i){return r?t(r).isValid()?t(r).format(i??c.date):"Invalid time value":null}function M(r,i){return r?t(r).isValid()?t(r).format(i??c.time):"Invalid time value":null}function m(r){return r?t(r).isValid()?t(r).valueOf():"Invalid time value":null}function k(r){return r?t(r).isValid()?t(r).toNow(!0):"Invalid time value":null}function F(r){if(!r)return null;let i=t(r);if(!i.isValid())return "Invalid time value";let e=t(),n=i.startOf("day").diff(e.startOf("day"),"day");if(n<0)return "vencido";if(n===0)return "hoje";if(n<7)return n===1?"1 dia":`${n} dias`;let a=i.diff(e,"year");if(a>=1)return a===1?"1 ano":`${a} anos`;let o=i.diff(e,"month");if(o>=1)return o===1?"1 m\xEAs":`${o} meses`;let s=Math.floor(n/7);return s===1?"1 semana":`${s} semanas`}function b(r,i,e){if(!r||!i||!e)return !1;let n=m(r),a=m(i),o=m(e);return n&&a&&o?n>=a&&n<=o:!1}function Y(r,i){return t(r).isAfter(i)}function l(r,i,e){return !r||!i?!1:t(r).isValid()&&t(i).isValid()?t(r).isSame(i,e??"year"):"Invalid time value"}function I(r,i,e){let n=t(r).isValid()&&t(i).isValid(),a=Y(r,i);if(!n||a)return "Invalid time value";let o=`${f(r)} - ${f(i)}`;if(e)return o;let s=l(r,i,"year"),u=l(r,i,"month"),d=l(r,i,"day");return s&&!u?o=`${f(r,"DD MMM")} - ${f(i)}`:s&&u&&!d?o=`${f(r,"DD")} - ${f(i)}`:s&&u&&d&&(o=`${f(i)}`),o}function T({years:r=0,months:i=0,days:e=0,hours:n=0,minutes:a=0,seconds:o=0,milliseconds:s=0}){return t().add(t.duration({years:r,months:i,days:e,hours:n,minutes:a,seconds:o,milliseconds:s})).format()}function $({years:r=0,months:i=0,days:e=0,hours:n=0,minutes:a=0,seconds:o=0,milliseconds:s=0}){return t().subtract(t.duration({years:r,months:i,days:e,hours:n,minutes:a,seconds:o,milliseconds:s})).format()}var h=(r,i)=>!r||!i?null:t(i).diff(t(r),"day");
6
-
7
- export { c as a, x as b, P as c, f as d, M as e, m as f, k as g, F as h, b as i, Y as j, l as k, I as l, T as m, $ as n, h as o };
8
- //# sourceMappingURL=chunk-A7QSCOUE.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/formatTime.ts"],"names":["dayjs","duration","relativeTime","formatStr","today","format","fDateTime","date","fDate","fTime","fTimestamp","fToNow","fTimeLeft","target","now","diffDays","diffYears","diffMonths","diffWeeks","fIsBetween","inputDate","startDate","endDate","formattedInputDate","formattedStartDate","formattedEndDate","fIsAfter","fIsSame","units","fDateRangeShortLabel","initial","isValid","isAfter","label","isSameYear","isSameMonth","isSameDay","fAdd","years","months","days","hours","minutes","seconds","milliseconds","fSub","getDifferenceInDays"],"mappings":"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","sourcesContent":["import type { Dayjs, OpUnitType } from 'dayjs';\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\nimport relativeTime from 'dayjs/plugin/relativeTime';\n\n// ----------------------------------------------------------------------\n\ndayjs.extend(duration);\ndayjs.extend(relativeTime);\n\n// ----------------------------------------------------------------------\n\nexport type DatePickerFormat =\n | Dayjs\n | Date\n | string\n | number\n | null\n | undefined;\n\nexport const formatStr = {\n dateTime: 'DD/MM/YYYY HH:mm',\n date: 'DD/MM/YYYY',\n time: 'HH:mm',\n split: {\n dateTime: 'DD/MM/YYYY HH:mm',\n date: 'DD/MM/YYYY',\n },\n paramCase: {\n dateTime: 'DD/MM/YYYY HH:mm',\n date: 'DD/MM/YYYY',\n },\n};\n\nexport function today(format?: string) {\n return dayjs(new Date()).startOf('day').format(format);\n}\n\nexport function fDateTime(date: DatePickerFormat, format?: string) {\n if (!date) {\n return null;\n }\n\n const isValid = dayjs(date).isValid();\n\n return isValid\n ? dayjs(date).format(format ?? formatStr.dateTime)\n : 'Invalid time value';\n}\n\nexport function fDate(date: DatePickerFormat, format?: string) {\n if (!date) {\n return null;\n }\n\n const isValid = dayjs(date).isValid();\n\n return isValid\n ? dayjs(date).format(format ?? formatStr.date)\n : 'Invalid time value';\n}\n\nexport function fTime(date: DatePickerFormat, format?: string) {\n if (!date) {\n return null;\n }\n\n const isValid = dayjs(date).isValid();\n\n return isValid\n ? dayjs(date).format(format ?? formatStr.time)\n : 'Invalid time value';\n}\n\nexport function fTimestamp(date: DatePickerFormat) {\n if (!date) {\n return null;\n }\n\n const isValid = dayjs(date).isValid();\n\n return isValid ? dayjs(date).valueOf() : 'Invalid time value';\n}\n\nexport function fToNow(date: DatePickerFormat) {\n if (!date) {\n return null;\n }\n\n const isValid = dayjs(date).isValid();\n\n return isValid ? dayjs(date).toNow(true) : 'Invalid time value';\n}\n\nexport function fTimeLeft(date: DatePickerFormat) {\n if (!date) {\n return null;\n }\n\n const target = dayjs(date);\n\n if (!target.isValid()) {\n return 'Invalid time value';\n }\n\n const now = dayjs();\n const diffDays = target.startOf('day').diff(now.startOf('day'), 'day');\n\n if (diffDays < 0) return 'vencido';\n if (diffDays === 0) return 'hoje';\n if (diffDays < 7) return diffDays === 1 ? '1 dia' : `${diffDays} dias`;\n\n const diffYears = target.diff(now, 'year');\n\n if (diffYears >= 1) {\n return diffYears === 1 ? '1 ano' : `${diffYears} anos`;\n }\n\n const diffMonths = target.diff(now, 'month');\n\n if (diffMonths >= 1) {\n return diffMonths === 1 ? '1 mês' : `${diffMonths} meses`;\n }\n\n const diffWeeks = Math.floor(diffDays / 7);\n\n return diffWeeks === 1 ? '1 semana' : `${diffWeeks} semanas`;\n}\n\nexport function fIsBetween(\n inputDate: DatePickerFormat,\n startDate: DatePickerFormat,\n endDate: DatePickerFormat,\n) {\n if (!inputDate || !startDate || !endDate) {\n return false;\n }\n\n const formattedInputDate = fTimestamp(inputDate);\n const formattedStartDate = fTimestamp(startDate);\n const formattedEndDate = fTimestamp(endDate);\n\n if (formattedInputDate && formattedStartDate && formattedEndDate) {\n return (\n formattedInputDate >= formattedStartDate &&\n formattedInputDate <= formattedEndDate\n );\n }\n\n return false;\n}\n\nexport function fIsAfter(\n startDate: DatePickerFormat,\n endDate: DatePickerFormat,\n) {\n return dayjs(startDate).isAfter(endDate);\n}\n\nexport function fIsSame(\n startDate: DatePickerFormat,\n endDate: DatePickerFormat,\n units?: OpUnitType,\n) {\n if (!startDate || !endDate) {\n return false;\n }\n\n const isValid = dayjs(startDate).isValid() && dayjs(endDate).isValid();\n\n if (!isValid) {\n return 'Invalid time value';\n }\n\n return dayjs(startDate).isSame(endDate, units ?? 'year');\n}\n\nexport function fDateRangeShortLabel(\n startDate: DatePickerFormat,\n endDate: DatePickerFormat,\n initial?: boolean,\n) {\n const isValid = dayjs(startDate).isValid() && dayjs(endDate).isValid();\n\n const isAfter = fIsAfter(startDate, endDate);\n\n if (!isValid || isAfter) {\n return 'Invalid time value';\n }\n\n let label = `${fDate(startDate)} - ${fDate(endDate)}`;\n\n if (initial) {\n return label;\n }\n\n const isSameYear = fIsSame(startDate, endDate, 'year');\n const isSameMonth = fIsSame(startDate, endDate, 'month');\n const isSameDay = fIsSame(startDate, endDate, 'day');\n\n if (isSameYear && !isSameMonth) {\n label = `${fDate(startDate, 'DD MMM')} - ${fDate(endDate)}`;\n } else if (isSameYear && isSameMonth && !isSameDay) {\n label = `${fDate(startDate, 'DD')} - ${fDate(endDate)}`;\n } else if (isSameYear && isSameMonth && isSameDay) {\n label = `${fDate(endDate)}`;\n }\n\n return label;\n}\n\nexport type DurationProps = {\n years?: number;\n months?: number;\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n};\n\nexport function fAdd({\n years = 0,\n months = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n milliseconds = 0,\n}: DurationProps) {\n const result = dayjs()\n .add(\n dayjs.duration({\n years,\n months,\n days,\n hours,\n minutes,\n seconds,\n milliseconds,\n }),\n )\n .format();\n\n return result;\n}\n\nexport function fSub({\n years = 0,\n months = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n milliseconds = 0,\n}: DurationProps) {\n const result = dayjs()\n .subtract(\n dayjs.duration({\n years,\n months,\n days,\n hours,\n minutes,\n seconds,\n milliseconds,\n }),\n )\n .format();\n\n return result;\n}\n\nexport const getDifferenceInDays = (startDate?: Date, endDate?: Date) => {\n if (!startDate || !endDate) return null;\n\n return dayjs(endDate).diff(dayjs(startDate), 'day');\n};\n"]}