@zydon/common 2.7.86 → 2.7.88

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.
Files changed (92) hide show
  1. package/dist/{chunk-TB4Y7LXN.js → chunk-2W54CJ6E.js} +3 -3
  2. package/dist/chunk-2W54CJ6E.js.map +1 -0
  3. package/dist/chunk-3C7RDPW6.js +19 -0
  4. package/dist/chunk-3C7RDPW6.js.map +1 -0
  5. package/dist/chunk-4P2L7UJA.js +5 -0
  6. package/dist/chunk-4P2L7UJA.js.map +1 -0
  7. package/dist/chunk-CJXYDF24.js +26 -0
  8. package/dist/chunk-CJXYDF24.js.map +1 -0
  9. package/dist/chunk-G5LWV77F.js +12 -0
  10. package/dist/chunk-G5LWV77F.js.map +1 -0
  11. package/dist/chunk-HNEGKBXI.js +5 -0
  12. package/dist/chunk-HNEGKBXI.js.map +1 -0
  13. package/dist/chunk-K4FZQR7Q.js +19 -0
  14. package/dist/chunk-K4FZQR7Q.js.map +1 -0
  15. package/dist/chunk-LG2B5RFV.js +12 -0
  16. package/dist/chunk-LG2B5RFV.js.map +1 -0
  17. package/dist/{chunk-QGWIO2AX.js → chunk-MZOCS5HH.js} +3 -3
  18. package/dist/{chunk-UWW26H42.js → chunk-VXSEKK3V.js} +12 -12
  19. package/dist/chunk-VXSEKK3V.js.map +1 -0
  20. package/dist/chunk-ZOUROFZV.js +9 -0
  21. package/dist/chunk-ZOUROFZV.js.map +1 -0
  22. package/dist/components/Autocomplete/index.d.ts +1 -1
  23. package/dist/components/Autocomplete/index.js +1 -1
  24. package/dist/components/AutocompleteDetailed/index.d.ts +2 -2
  25. package/dist/components/AutocompleteDetailed/index.js +1 -1
  26. package/dist/components/AvatarButton/index.js +3 -3
  27. package/dist/components/BulkEditModal/index.js +3 -3
  28. package/dist/components/CardBrand/index.d.ts +4 -2
  29. package/dist/components/CardBrand/index.js +2 -2
  30. package/dist/components/CardBrand/index.js.map +1 -1
  31. package/dist/components/Common/index.js +3 -3
  32. package/dist/components/DataView/index.d.ts +8 -5
  33. package/dist/components/DataView/index.js +2 -2
  34. package/dist/components/DateRangeCalendar/index.d.ts +8 -4
  35. package/dist/components/DateRangeCalendar/index.js +3 -3
  36. package/dist/components/DateRangeCalendar/index.js.map +1 -1
  37. package/dist/components/DynamicDataView/index.d.ts +57 -33
  38. package/dist/components/DynamicDataView/index.js +32 -14
  39. package/dist/components/DynamicDataView/index.js.map +1 -1
  40. package/dist/components/FileUpload/index.d.ts +3 -1
  41. package/dist/components/FileUpload/index.js +2 -2
  42. package/dist/components/IconButton/index.d.ts +0 -2
  43. package/dist/components/IconButton/index.js +1 -1
  44. package/dist/components/ResponsivePopover/index.d.ts +19 -0
  45. package/dist/components/ResponsivePopover/index.js +4 -0
  46. package/dist/components/ResponsivePopover/index.js.map +1 -0
  47. package/dist/components/ToggleTheme/index.js +3 -3
  48. package/dist/components/form/Address/index.js +2 -2
  49. package/dist/components/form/Autocomplete/index.d.ts +1 -1
  50. package/dist/components/form/Autocomplete/index.js +2 -2
  51. package/dist/components/form/AutocompleteDetailed/index.d.ts +1 -1
  52. package/dist/components/form/AutocompleteDetailed/index.js +3 -3
  53. package/dist/components/form/AutocompleteDetailed/index.js.map +1 -1
  54. package/dist/components/form/Codes/index.js +2 -2
  55. package/dist/components/form/Codes/index.js.map +1 -1
  56. package/dist/components/form/FileUpload/index.js +3 -3
  57. package/dist/components/form/FileUpload/index.js.map +1 -1
  58. package/dist/components/form/Webhook/index.js +2 -2
  59. package/dist/hooks/useAutocomplete.js +3 -3
  60. package/dist/hooks/useAutocomplete.js.map +1 -1
  61. package/dist/hooks/useThemeToggle.js +3 -3
  62. package/dist/hooks/useUploadImage.d.ts +2 -1
  63. package/dist/hooks/useUploadImage.js +1 -1
  64. package/dist/hooks/useUploadImage.js.map +1 -1
  65. package/dist/index.js +3 -3
  66. package/dist/theme/theme-provider.js +3 -3
  67. package/dist/types/autoCompleteProps.d.ts +1 -1
  68. package/dist/types/entityMetadata.d.ts +30 -3
  69. package/dist/types/entityMetadata.js +1 -1
  70. package/dist/types/export.d.ts +42 -0
  71. package/dist/types/export.js +5 -0
  72. package/dist/types/export.js.map +1 -0
  73. package/dist/types/filter.d.ts +44 -0
  74. package/dist/types/filter.js +3 -0
  75. package/dist/types/filter.js.map +1 -0
  76. package/dist/utils/buildExportPayload.d.ts +20 -0
  77. package/dist/utils/buildExportPayload.js +8 -0
  78. package/dist/utils/buildExportPayload.js.map +1 -0
  79. package/package.json +1 -1
  80. package/dist/chunk-4HWP7ZLZ.js +0 -26
  81. package/dist/chunk-4HWP7ZLZ.js.map +0 -1
  82. package/dist/chunk-5PLCCVXS.js +0 -9
  83. package/dist/chunk-5PLCCVXS.js.map +0 -1
  84. package/dist/chunk-A22V4WPA.js +0 -19
  85. package/dist/chunk-A22V4WPA.js.map +0 -1
  86. package/dist/chunk-CKYSHYJK.js +0 -19
  87. package/dist/chunk-CKYSHYJK.js.map +0 -1
  88. package/dist/chunk-FCXNL2OG.js +0 -12
  89. package/dist/chunk-FCXNL2OG.js.map +0 -1
  90. package/dist/chunk-TB4Y7LXN.js.map +0 -1
  91. package/dist/chunk-UWW26H42.js.map +0 -1
  92. /package/dist/{chunk-QGWIO2AX.js.map → chunk-MZOCS5HH.js.map} +0 -0
@@ -1,5 +1,5 @@
1
- import { v, s, t, u } from '../../../chunk-UWW26H42.js';
2
- import '../../../chunk-FCXNL2OG.js';
1
+ import { x, u, v, w } from '../../../chunk-VXSEKK3V.js';
2
+ import '../../../chunk-G5LWV77F.js';
3
3
  import '../../../chunk-J2PFUGFW.js';
4
4
  import '../../../chunk-J7JX2QOP.js';
5
5
  import '../../../chunk-KGLU4CR2.js';
@@ -17,7 +17,7 @@ import { useFormContext, Controller } from 'react-hook-form';
17
17
  import { useState, useEffect, useMemo, useRef } from 'react';
18
18
  import { jsx } from 'react/jsx-runtime';
19
19
 
20
- var h=(e,r)=>{let{setValue:l,watch:s}=useFormContext(),t=s(e),[o,i]=useState();return useEffect(()=>{if(!t){i(void 0);return}(async()=>{try{let a=await r(t).unwrap();i({id:a.id,url:a.url,name:a.name});}catch{i({id:t,url:""});}})();},[t,r]),{fileDetails:o,handleFileSelect:d=>{l(e,d.id,{shouldValidate:!0,shouldDirty:!0});},handleRemove:()=>{l(e,null,{shouldValidate:!0,shouldDirty:!0});}}},R=(e,r)=>{let{setValue:l,watch:s}=useFormContext(),t=s(e),o=useMemo(()=>t||[],[t]),[i,n]=useState([]),u=useRef(new Map);return useEffect(()=>{if(!o||o.length===0){n([]);return}(async()=>{try{let p=[...new Set(o)],c=u.current,F=p.filter(S=>!c.has(S));if(F.length>0){let S=F.map(async U=>{try{let g=await r(U).unwrap(),M={id:g.id,url:g.url,name:g.name};return c.set(U,M),M}catch{let g={id:U,url:""};return c.set(U,g),g}});await Promise.all(S);}let T=p.map(S=>c.get(S));n(T);}catch{n(o.map(p=>({id:p,url:""})));}})();},[o,r]),{currentValue:o,filesDetails:i,handleFilesSelect:m=>{let p=m.map(F=>F.id),c=[...new Set([...o,...p])];l(e,c,{shouldValidate:!0,shouldDirty:!0});},handleRemove:m=>{if(!m)return;let p=o.filter(c=>c!==m.id);l(e,p,{shouldValidate:!0,shouldDirty:!0});},handleReorder:(m,p)=>{let c=[...o],[F]=c.splice(m,1);c.splice(p,0,F),l(e,c,{shouldValidate:!0,shouldDirty:!0});}}};var E=({name:e,rules:r,createFilesMutation:l,getFileQuery:s,disableRemove:t,aspectRatio:o=1,enableCrop:i=!0,maxSize:n=5242880,...u})=>{let{control:d}=useFormContext(),{fileDetails:a,handleFileSelect:f,handleRemove:m}=h(e,s);return jsx(Controller,{name:e,control:d,rules:r,render:({fieldState:{error:p}})=>jsx(v,{name:e,fileDetails:a,createFilesMutation:l,onFileSelect:f,onRemove:t?void 0:m,aspectRatio:o,enableCrop:i,maxSize:n,error:p?.message,...u})})},G=E;var J=({name:e,rules:r,createFilesMutation:l,getFileQuery:s$1,disableRemove:t,disableReorder:o,...i})=>{let{control:n}=useFormContext(),{filesDetails:u,handleFilesSelect:d,handleRemove:a,handleReorder:f}=R(e,s$1);return jsx(Controller,{name:e,control:n,rules:r,render:({fieldState:{error:m}})=>jsx(s,{name:e,filesDetails:u,createFilesMutation:l,onFilesSelect:d,onRemove:t?void 0:a,onReorder:o?void 0:f,error:m?.message,...i})})},K=J;var W=({name:e,rules:r,createFilesMutation:l,getFileQuery:s,disableRemove:t$1,disableReorder:o,...i})=>{let{control:n}=useFormContext(),{filesDetails:u,handleFilesSelect:d,handleRemove:a,handleReorder:f}=R(e,s);return jsx(Controller,{name:e,control:n,rules:r,render:({fieldState:{error:m}})=>jsx(t,{name:e,filesDetails:u,createFilesMutation:l,onFilesSelect:d,onRemove:t$1?void 0:a,onReorder:o?void 0:f,error:m?.message,...i})})},X=W;var _=({name:e,rules:r,createFilesMutation:l,getFileQuery:s,disableRemove:t,...o})=>{let{control:i}=useFormContext(),{fileDetails:n,handleFileSelect:u$1,handleRemove:d}=h(e,s);return jsx(Controller,{name:e,control:i,rules:r,render:({fieldState:{error:a}})=>jsx(u,{name:e,fileDetails:n,createFilesMutation:l,onFileSelect:u$1,onRemove:t?void 0:d,error:a?.message,...o})})},$=_;var oe=({name:e,rules:r,createFilesMutation:l,getFileQuery:s,disableRemove:t,hoverAlt:o,...i})=>{let{control:n}=useFormContext(),{fileDetails:u,handleFileSelect:d,handleRemove:a}=h(e,s);return jsx(Controller,{name:e,control:n,rules:r,render:({fieldState:{error:f}})=>jsx(v,{name:e,fileDetails:u,createFilesMutation:l,onFileSelect:d,onRemove:t?void 0:a,error:f?.message,hoverAlt:o,...i})})},te=oe;
20
+ var h=(e,r)=>{let{setValue:l,watch:s}=useFormContext(),t=s(e),[o,i]=useState();return useEffect(()=>{if(!t){i(void 0);return}(async()=>{try{let a=await r(t).unwrap();i({id:a.id,url:a.url,name:a.name});}catch{i({id:t,url:""});}})();},[t,r]),{fileDetails:o,handleFileSelect:d=>{l(e,d.id,{shouldValidate:!0,shouldDirty:!0});},handleRemove:()=>{l(e,null,{shouldValidate:!0,shouldDirty:!0});}}},R=(e,r)=>{let{setValue:l,watch:s}=useFormContext(),t=s(e),o=useMemo(()=>t||[],[t]),[i,n]=useState([]),u=useRef(new Map);return useEffect(()=>{if(!o||o.length===0){n([]);return}(async()=>{try{let p=[...new Set(o)],c=u.current,F=p.filter(S=>!c.has(S));if(F.length>0){let S=F.map(async U=>{try{let g=await r(U).unwrap(),M={id:g.id,url:g.url,name:g.name};return c.set(U,M),M}catch{let g={id:U,url:""};return c.set(U,g),g}});await Promise.all(S);}let T=p.map(S=>c.get(S));n(T);}catch{n(o.map(p=>({id:p,url:""})));}})();},[o,r]),{currentValue:o,filesDetails:i,handleFilesSelect:m=>{let p=m.map(F=>F.id),c=[...new Set([...o,...p])];l(e,c,{shouldValidate:!0,shouldDirty:!0});},handleRemove:m=>{if(!m)return;let p=o.filter(c=>c!==m.id);l(e,p,{shouldValidate:!0,shouldDirty:!0});},handleReorder:(m,p)=>{let c=[...o],[F]=c.splice(m,1);c.splice(p,0,F),l(e,c,{shouldValidate:!0,shouldDirty:!0});}}};var E=({name:e,rules:r,createFilesMutation:l,getFileQuery:s,disableRemove:t,aspectRatio:o=1,enableCrop:i=!0,maxSize:n=5242880,...u})=>{let{control:d}=useFormContext(),{fileDetails:a,handleFileSelect:f,handleRemove:m}=h(e,s);return jsx(Controller,{name:e,control:d,rules:r,render:({fieldState:{error:p}})=>jsx(x,{name:e,fileDetails:a,createFilesMutation:l,onFileSelect:f,onRemove:t?void 0:m,aspectRatio:o,enableCrop:i,maxSize:n,error:p?.message,...u})})},G=E;var J=({name:e,rules:r,createFilesMutation:l,getFileQuery:s,disableRemove:t,disableReorder:o,...i})=>{let{control:n}=useFormContext(),{filesDetails:u$1,handleFilesSelect:d,handleRemove:a,handleReorder:f}=R(e,s);return jsx(Controller,{name:e,control:n,rules:r,render:({fieldState:{error:m}})=>jsx(u,{name:e,filesDetails:u$1,createFilesMutation:l,onFilesSelect:d,onRemove:t?void 0:a,onReorder:o?void 0:f,error:m?.message,...i})})},K=J;var W=({name:e,rules:r,createFilesMutation:l,getFileQuery:s,disableRemove:t,disableReorder:o,...i})=>{let{control:n}=useFormContext(),{filesDetails:u,handleFilesSelect:d,handleRemove:a,handleReorder:f}=R(e,s);return jsx(Controller,{name:e,control:n,rules:r,render:({fieldState:{error:m}})=>jsx(v,{name:e,filesDetails:u,createFilesMutation:l,onFilesSelect:d,onRemove:t?void 0:a,onReorder:o?void 0:f,error:m?.message,...i})})},X=W;var _=({name:e,rules:r,createFilesMutation:l,getFileQuery:s,disableRemove:t,...o})=>{let{control:i}=useFormContext(),{fileDetails:n,handleFileSelect:u,handleRemove:d}=h(e,s);return jsx(Controller,{name:e,control:i,rules:r,render:({fieldState:{error:a}})=>jsx(w,{name:e,fileDetails:n,createFilesMutation:l,onFileSelect:u,onRemove:t?void 0:d,error:a?.message,...o})})},$=_;var oe=({name:e,rules:r,createFilesMutation:l,getFileQuery:s,disableRemove:t,hoverAlt:o,...i})=>{let{control:n}=useFormContext(),{fileDetails:u,handleFileSelect:d,handleRemove:a}=h(e,s);return jsx(Controller,{name:e,control:n,rules:r,render:({fieldState:{error:f}})=>jsx(x,{name:e,fileDetails:u,createFilesMutation:l,onFileSelect:d,onRemove:t?void 0:a,error:f?.message,hoverAlt:o,...i})})},te=oe;
21
21
 
22
22
  export { G as AvatarUpload, K as MultiFileUpload, X as MultiImageUpload, $ as SingleFileUpload, te as SingleImageUpload };
23
23
  //# sourceMappingURL=out.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/form/FileUpload/AvatarUpload.tsx","../../../../src/components/form/FileUpload/useFormFileUpload.ts","../../../../src/components/form/FileUpload/MultiFileUpload.tsx","../../../../src/components/form/FileUpload/MultiImageUpload.tsx","../../../../src/components/form/FileUpload/SingleFileUpload.tsx","../../../../src/components/form/FileUpload/SingleImageUpload.tsx"],"names":["Controller","useFormContext","useEffect","useMemo","useRef","useState","useSingleFileUpload","name","getFileQuery","setValue","watch","value","fileDetails","setFileDetails","file","useMultiFileUpload","watchedValue","currentValue","filesDetails","setFilesDetails","cacheRef","uniqueIds","cache","newIds","id","promises","fallback","results","files","updatedIds","oldIndex","newIndex","removed","jsx","AvatarUpload","rules","createFilesMutation","disableRemove","aspectRatio","enableCrop","maxSize","other","control","handleFileSelect","handleRemove","error","SingleImageUpload_default","AvatarUpload_default","MultiFileUpload","disableReorder","handleFilesSelect","handleReorder","MultipleFileUpload_default","MultiFileUpload_default","MultiImageUpload","MultipleImageUpload_default","MultiImageUpload_default","SingleFileUpload","SingleFileUpload_default","SingleImageUpload","hoverAlt"],"mappings":"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","sourcesContent":["import { Controller, useFormContext } from 'react-hook-form';\n\nimport SingleImageUploadComponent from 'components/FileUpload/SingleImageUpload';\n\nimport { FormSingleImageUploadProps } from './props';\nimport { useSingleFileUpload } from './useFormFileUpload';\n\n/**\n * AvatarUpload integrado ao React Hook Form\n * Componente especializado para upload de avatar (imagem circular de perfil)\n * Gerencia automaticamente o estado do arquivo e retorna apenas o resource_file_id\n *\n * @example\n * ```tsx\n * import { Form } from 'components/form';\n * import { AvatarUpload } from 'components/form/FileUpload';\n * import { useCreateFilesMutation, useGetFileQuery } from 'services/filesApi';\n *\n * interface FormData {\n * avatar_id: string | null;\n * }\n *\n * const ProfileForm = () => {\n * const createFilesMutation = useCreateFilesMutation();\n * const getFileQuery = useGetFileQuery();\n * const methods = useForm<FormData>();\n *\n * return (\n * <Form methods={methods} onSubmit={handleSubmit}>\n * <AvatarUpload\n * name=\"avatar_id\"\n * createFilesMutation={createFilesMutation}\n * getFileQuery={getFileQuery}\n * />\n * </Form>\n * );\n * };\n * ```\n */\nconst AvatarUpload = ({\n name,\n rules,\n createFilesMutation,\n getFileQuery,\n disableRemove,\n aspectRatio = 1,\n enableCrop = true,\n maxSize = 5242880,\n ...other\n}: FormSingleImageUploadProps) => {\n const { control } = useFormContext();\n const { fileDetails, handleFileSelect, handleRemove } = useSingleFileUpload(\n name,\n getFileQuery,\n );\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ fieldState: { error } }) => (\n <SingleImageUploadComponent\n name={name}\n fileDetails={fileDetails}\n createFilesMutation={createFilesMutation}\n onFileSelect={handleFileSelect}\n onRemove={disableRemove ? undefined : handleRemove}\n aspectRatio={aspectRatio}\n enableCrop={enableCrop}\n maxSize={maxSize}\n error={error?.message}\n {...other}\n />\n )}\n />\n );\n};\n\nexport default AvatarUpload;\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\n\nimport { FileDetails } from 'components/FileUpload/props';\n\nimport { LazyQueryTrigger } from './props';\n\n/**\n * Hook para gerenciar upload de arquivo único\n */\nexport const useSingleFileUpload = (\n name: string,\n getFileQuery: LazyQueryTrigger,\n) => {\n const { setValue, watch } = useFormContext();\n const value = watch(name);\n const [fileDetails, setFileDetails] = useState<FileDetails | undefined>();\n\n useEffect(() => {\n if (!value) {\n setFileDetails(undefined);\n return;\n }\n const fetchFile = async () => {\n try {\n const file = await getFileQuery(value).unwrap();\n setFileDetails({\n id: file.id,\n url: file.url,\n name: file.name,\n });\n } catch {\n setFileDetails({ id: value, url: '' });\n }\n };\n fetchFile();\n }, [value, getFileQuery]);\n\n const handleFileSelect = (file: FileDetails) => {\n setValue(name, file.id, { shouldValidate: true, shouldDirty: true });\n };\n\n const handleRemove = () => {\n setValue(name, null, { shouldValidate: true, shouldDirty: true });\n };\n\n return {\n fileDetails,\n handleFileSelect,\n handleRemove,\n };\n};\n\n/**\n * Hook para gerenciar upload de múltiplos arquivos\n */\nexport const useMultiFileUpload = (\n name: string,\n getFileQuery: LazyQueryTrigger,\n) => {\n const { setValue, watch } = useFormContext();\n const watchedValue = watch(name);\n const currentValue = useMemo(() => watchedValue || [], [watchedValue]);\n const [filesDetails, setFilesDetails] = useState<FileDetails[]>([]);\n const cacheRef = useRef<Map<string, FileDetails>>(new Map());\n\n useEffect(() => {\n if (!currentValue || currentValue.length === 0) {\n setFilesDetails([]);\n return;\n }\n const fetchFiles = async () => {\n try {\n // Remove duplicatas mantendo a ordem\n const uniqueIds = [...new Set(currentValue)] as string[];\n\n const cache = cacheRef.current;\n const newIds = uniqueIds.filter(id => !cache.has(id));\n\n if (newIds.length > 0) {\n const promises = newIds.map(async (id: string) => {\n try {\n const file = await getFileQuery(id).unwrap();\n const fileDetails = {\n id: file.id,\n url: file.url,\n name: file.name,\n };\n cache.set(id, fileDetails);\n return fileDetails;\n } catch {\n const fallback = { id, url: '' };\n cache.set(id, fallback);\n return fallback;\n }\n });\n await Promise.all(promises);\n }\n\n const results = uniqueIds.map(id => cache.get(id)!);\n setFilesDetails(results);\n } catch {\n setFilesDetails(currentValue.map((id: string) => ({ id, url: '' })));\n }\n };\n fetchFiles();\n }, [currentValue, getFileQuery]);\n\n const handleFilesSelect = (files: FileDetails[]) => {\n const newIds = files.map(file => file.id);\n const updatedIds = [...new Set([...currentValue, ...newIds])];\n setValue(name, updatedIds, {\n shouldValidate: true,\n shouldDirty: true,\n });\n };\n\n const handleRemove = (file?: { id: string }) => {\n if (!file) return;\n const updatedIds = currentValue.filter((id: string) => id !== file.id);\n setValue(name, updatedIds, {\n shouldValidate: true,\n shouldDirty: true,\n });\n };\n\n const handleReorder = (oldIndex: number, newIndex: number) => {\n const newIds = [...currentValue];\n const [removed] = newIds.splice(oldIndex, 1);\n newIds.splice(newIndex, 0, removed);\n setValue(name, newIds, {\n shouldValidate: true,\n shouldDirty: true,\n });\n };\n\n return {\n currentValue,\n filesDetails,\n handleFilesSelect,\n handleRemove,\n handleReorder,\n };\n};\n","import { Controller, useFormContext } from 'react-hook-form';\n\nimport MultiFileUploadComponent from 'components/FileUpload/MultipleFileUpload';\n\nimport { FormMultiFileUploadProps } from './props';\nimport { useMultiFileUpload } from './useFormFileUpload';\n\n/**\n * MultiFileUpload integrado ao React Hook Form\n * Gerencia automaticamente o estado dos arquivos e retorna array de resource_file_ids\n *\n * @example\n * ```tsx\n * import { Form } from 'components/form';\n * import { MultiFileUpload } from 'components/form/FileUpload';\n * import { useCreateFilesMutation } from 'services/filesApi';\n *\n * const FormExample = () => {\n * const createFilesMutation = useCreateFilesMutation();\n * const methods = useForm({\n * defaultValues: {\n * document_ids: [],\n * },\n * });\n *\n * const handleSubmit = (data: any) => {\n * console.log(data.document_ids); // Array de IDs\n * };\n *\n * return (\n * <Form methods={methods} onSubmit={handleSubmit}>\n * <MultiFileUpload\n * name=\"document_ids\"\n * label=\"Documentos\"\n * createFilesMutation={createFilesMutation}\n * maxFiles={5}\n * />\n * </Form>\n * );\n * };\n * ```\n */\nconst MultiFileUpload = ({\n name,\n rules,\n createFilesMutation,\n getFileQuery,\n disableRemove,\n disableReorder,\n ...other\n}: FormMultiFileUploadProps) => {\n const { control } = useFormContext();\n const { filesDetails, handleFilesSelect, handleRemove, handleReorder } =\n useMultiFileUpload(name, getFileQuery);\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ fieldState: { error } }) => (\n <MultiFileUploadComponent\n name={name}\n filesDetails={filesDetails}\n createFilesMutation={createFilesMutation}\n onFilesSelect={handleFilesSelect}\n onRemove={disableRemove ? undefined : handleRemove}\n onReorder={disableReorder ? undefined : handleReorder}\n error={error?.message}\n {...other}\n />\n )}\n />\n );\n};\n\nexport default MultiFileUpload;\n","import { Controller, useFormContext } from 'react-hook-form';\n\nimport MultiImageUploadComponent from 'components/FileUpload/MultipleImageUpload';\n\nimport { FormMultiImageUploadProps } from './props';\nimport { useMultiFileUpload } from './useFormFileUpload';\n\n/**\n * MultiImageUpload integrado ao React Hook Form\n * Gerencia automaticamente o estado dos arquivos e retorna array de resource_file_ids\n *\n * @example\n * ```tsx\n * import { Form } from 'components/form';\n * import { MultiImageUpload } from 'components/form/FileUpload';\n * import { useCreateFilesMutation } from 'services/filesApi';\n *\n * const FormExample = () => {\n * const createFilesMutation = useCreateFilesMutation();\n * const methods = useForm({\n * defaultValues: {\n * image_ids: [],\n * },\n * });\n *\n * const handleSubmit = (data: any) => {\n * console.log(data.image_ids); // Array de IDs\n * };\n *\n * return (\n * <Form methods={methods} onSubmit={handleSubmit}>\n * <MultiImageUpload\n * name=\"image_ids\"\n * label=\"Imagens\"\n * createFilesMutation={createFilesMutation}\n * maxFiles={5}\n * />\n * </Form>\n * );\n * };\n * ```\n */\nconst MultiImageUpload = ({\n name,\n rules,\n createFilesMutation,\n getFileQuery,\n disableRemove,\n disableReorder,\n ...other\n}: FormMultiImageUploadProps) => {\n const { control } = useFormContext();\n const { filesDetails, handleFilesSelect, handleRemove, handleReorder } =\n useMultiFileUpload(name, getFileQuery);\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ fieldState: { error } }) => (\n <MultiImageUploadComponent\n name={name}\n filesDetails={filesDetails}\n createFilesMutation={createFilesMutation}\n onFilesSelect={handleFilesSelect}\n onRemove={disableRemove ? undefined : handleRemove}\n onReorder={disableReorder ? undefined : handleReorder}\n error={error?.message}\n {...other}\n />\n )}\n />\n );\n};\n\nexport default MultiImageUpload;\n","import { Controller, useFormContext } from 'react-hook-form';\n\nimport SingleFileUploadComponent from 'components/FileUpload/SingleFileUpload';\n\nimport { FormSingleFileUploadProps } from './props';\nimport { useSingleFileUpload } from './useFormFileUpload';\n\n/**\n * SingleFileUpload integrado ao React Hook Form\n * Gerencia automaticamente o estado do arquivo e retorna apenas o resource_file_id\n *\n * @example\n * ```tsx\n * import { Form } from 'components/form';\n * import { SingleFileUpload } from 'components/form/FileUpload';\n * import { useCreateFilesMutation } from 'services/filesApi';\n *\n * const FormExample = () => {\n * const createFilesMutation = useCreateFilesMutation();\n * const methods = useForm({\n * defaultValues: {\n * document_id: null,\n * },\n * });\n *\n * const handleSubmit = (data: any) => {\n * console.log(data.document_id); // ID do arquivo\n * };\n *\n * return (\n * <Form methods={methods} onSubmit={handleSubmit}>\n * <SingleFileUpload\n * name=\"document_id\"\n * label=\"Documento\"\n * createFilesMutation={createFilesMutation}\n * maxSize={1024 * 1024 * 10}\n * />\n * </Form>\n * );\n * };\n * ```\n */\nconst SingleFileUpload = ({\n name,\n rules,\n createFilesMutation,\n getFileQuery,\n disableRemove,\n ...other\n}: FormSingleFileUploadProps) => {\n const { control } = useFormContext();\n const { fileDetails, handleFileSelect, handleRemove } = useSingleFileUpload(\n name,\n getFileQuery,\n );\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ fieldState: { error } }) => (\n <SingleFileUploadComponent\n name={name}\n fileDetails={fileDetails}\n createFilesMutation={createFilesMutation}\n onFileSelect={handleFileSelect}\n onRemove={disableRemove ? undefined : handleRemove}\n error={error?.message}\n {...other}\n />\n )}\n />\n );\n};\n\nexport default SingleFileUpload;\n","import { Controller, useFormContext } from 'react-hook-form';\n\nimport SingleImageUploadComponent from 'components/FileUpload/SingleImageUpload';\n\nimport { FormSingleImageUploadProps } from './props';\nimport { useSingleFileUpload } from './useFormFileUpload';\n\n/**\n * SingleImageUpload integrado ao React Hook Form\n * Gerencia automaticamente o estado do arquivo e retorna apenas o resource_file_id\n *\n * @example\n * ```tsx\n * import { Form } from 'components/form';\n * import { SingleImageUpload } from 'components/form/FileUpload';\n * import { useCreateFilesMutation } from 'services/filesApi';\n *\n * const FormExample = () => {\n * const createFilesMutation = useCreateFilesMutation();\n * const methods = useForm({\n * defaultValues: {\n * resource_id: null,\n * },\n * });\n *\n * const handleSubmit = (data: any) => {\n * console.log(data.resource_id); // ID do arquivo\n * };\n *\n * return (\n * <Form methods={methods} onSubmit={handleSubmit}>\n * <SingleImageUpload\n * name=\"resource_id\"\n * label=\"Imagem\"\n * createFilesMutation={createFilesMutation}\n * maxSize={1024 * 1024 * 5}\n * />\n * </Form>\n * );\n * };\n * ```\n */\nconst SingleImageUpload = ({\n name,\n rules,\n createFilesMutation,\n getFileQuery,\n disableRemove,\n hoverAlt,\n ...other\n}: FormSingleImageUploadProps) => {\n const { control } = useFormContext();\n const { fileDetails, handleFileSelect, handleRemove } = useSingleFileUpload(\n name,\n getFileQuery,\n );\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ fieldState: { error } }) => (\n <SingleImageUploadComponent\n name={name}\n fileDetails={fileDetails}\n createFilesMutation={createFilesMutation}\n onFileSelect={handleFileSelect}\n onRemove={disableRemove ? undefined : handleRemove}\n error={error?.message}\n hoverAlt={hoverAlt}\n {...other}\n />\n )}\n />\n );\n};\n\nexport default SingleImageUpload;\n"]}
1
+ {"version":3,"sources":["../../../../src/components/form/FileUpload/AvatarUpload.tsx","../../../../src/components/form/FileUpload/useFormFileUpload.ts","../../../../src/components/form/FileUpload/MultiFileUpload.tsx","../../../../src/components/form/FileUpload/MultiImageUpload.tsx","../../../../src/components/form/FileUpload/SingleFileUpload.tsx","../../../../src/components/form/FileUpload/SingleImageUpload.tsx"],"names":["Controller","useFormContext","useEffect","useMemo","useRef","useState","useSingleFileUpload","name","getFileQuery","setValue","watch","value","fileDetails","setFileDetails","file","useMultiFileUpload","watchedValue","currentValue","filesDetails","setFilesDetails","cacheRef","uniqueIds","cache","newIds","id","promises","fallback","results","files","updatedIds","oldIndex","newIndex","removed","jsx","AvatarUpload","rules","createFilesMutation","disableRemove","aspectRatio","enableCrop","maxSize","other","control","handleFileSelect","handleRemove","error","SingleImageUpload_default","AvatarUpload_default","MultiFileUpload","disableReorder","handleFilesSelect","handleReorder","MultipleFileUpload_default","MultiFileUpload_default","MultiImageUpload","MultipleImageUpload_default","MultiImageUpload_default","SingleFileUpload","SingleFileUpload_default","SingleImageUpload","hoverAlt"],"mappings":"yiBAAA,OAAS,cAAAA,EAAY,kBAAAC,MAAsB,kBCA3C,OAAS,aAAAC,EAAW,WAAAC,EAAS,UAAAC,EAAQ,YAAAC,MAAgB,QACrD,OAAS,kBAAAJ,MAAsB,kBASxB,IAAMK,EAAsB,CACjCC,EACAC,IACG,CACH,GAAM,CAAE,SAAAC,EAAU,MAAAC,CAAM,EAAIT,EAAe,EACrCU,EAAQD,EAAMH,CAAI,EAClB,CAACK,EAAaC,CAAc,EAAIR,EAAkC,EAExE,OAAAH,EAAU,IAAM,CACd,GAAI,CAACS,EAAO,CACVE,EAAe,MAAS,EACxB,QAEgB,SAAY,CAC5B,GAAI,CACF,IAAMC,EAAO,MAAMN,EAAaG,CAAK,EAAE,OAAO,EAC9CE,EAAe,CACb,GAAIC,EAAK,GACT,IAAKA,EAAK,IACV,KAAMA,EAAK,IACb,CAAC,CACH,MAAE,CACAD,EAAe,CAAE,GAAIF,EAAO,IAAK,EAAG,CAAC,CACvC,CACF,GACU,CACZ,EAAG,CAACA,EAAOH,CAAY,CAAC,EAUjB,CACL,YAAAI,EACA,iBAVwBE,GAAsB,CAC9CL,EAASF,EAAMO,EAAK,GAAI,CAAE,eAAgB,GAAM,YAAa,EAAK,CAAC,CACrE,EASE,aAPmB,IAAM,CACzBL,EAASF,EAAM,KAAM,CAAE,eAAgB,GAAM,YAAa,EAAK,CAAC,CAClE,CAMA,CACF,EAKaQ,EAAqB,CAChCR,EACAC,IACG,CACH,GAAM,CAAE,SAAAC,EAAU,MAAAC,CAAM,EAAIT,EAAe,EACrCe,EAAeN,EAAMH,CAAI,EACzBU,EAAed,EAAQ,IAAMa,GAAgB,CAAC,EAAG,CAACA,CAAY,CAAC,EAC/D,CAACE,EAAcC,CAAe,EAAId,EAAwB,CAAC,CAAC,EAC5De,EAAWhB,EAAiC,IAAI,GAAK,EAE3D,OAAAF,EAAU,IAAM,CACd,GAAI,CAACe,GAAgBA,EAAa,SAAW,EAAG,CAC9CE,EAAgB,CAAC,CAAC,EAClB,QAEiB,SAAY,CAC7B,GAAI,CAEF,IAAME,EAAY,CAAC,GAAG,IAAI,IAAIJ,CAAY,CAAC,EAErCK,EAAQF,EAAS,QACjBG,EAASF,EAAU,OAAOG,GAAM,CAACF,EAAM,IAAIE,CAAE,CAAC,EAEpD,GAAID,EAAO,OAAS,EAAG,CACrB,IAAME,EAAWF,EAAO,IAAI,MAAOC,GAAe,CAChD,GAAI,CACF,IAAMV,EAAO,MAAMN,EAAagB,CAAE,EAAE,OAAO,EACrCZ,EAAc,CAClB,GAAIE,EAAK,GACT,IAAKA,EAAK,IACV,KAAMA,EAAK,IACb,EACA,OAAAQ,EAAM,IAAIE,EAAIZ,CAAW,EAClBA,CACT,MAAE,CACA,IAAMc,EAAW,CAAE,GAAAF,EAAI,IAAK,EAAG,EAC/B,OAAAF,EAAM,IAAIE,EAAIE,CAAQ,EACfA,CACT,CACF,CAAC,EACD,MAAM,QAAQ,IAAID,CAAQ,EAG5B,IAAME,EAAUN,EAAU,IAAIG,GAAMF,EAAM,IAAIE,CAAE,CAAE,EAClDL,EAAgBQ,CAAO,CACzB,MAAE,CACAR,EAAgBF,EAAa,IAAKO,IAAgB,CAAE,GAAAA,EAAI,IAAK,EAAG,EAAE,CAAC,CACrE,CACF,GACW,CACb,EAAG,CAACP,EAAcT,CAAY,CAAC,EA8BxB,CACL,aAAAS,EACA,aAAAC,EACA,kBA/ByBU,GAAyB,CAClD,IAAML,EAASK,EAAM,IAAId,GAAQA,EAAK,EAAE,EAClCe,EAAa,CAAC,GAAG,IAAI,IAAI,CAAC,GAAGZ,EAAc,GAAGM,CAAM,CAAC,CAAC,EAC5Dd,EAASF,EAAMsB,EAAY,CACzB,eAAgB,GAChB,YAAa,EACf,CAAC,CACH,EAyBE,aAvBoBf,GAA0B,CAC9C,GAAI,CAACA,EAAM,OACX,IAAMe,EAAaZ,EAAa,OAAQO,GAAeA,IAAOV,EAAK,EAAE,EACrEL,EAASF,EAAMsB,EAAY,CACzB,eAAgB,GAChB,YAAa,EACf,CAAC,CACH,EAiBE,cAfoB,CAACC,EAAkBC,IAAqB,CAC5D,IAAMR,EAAS,CAAC,GAAGN,CAAY,EACzB,CAACe,CAAO,EAAIT,EAAO,OAAOO,EAAU,CAAC,EAC3CP,EAAO,OAAOQ,EAAU,EAAGC,CAAO,EAClCvB,EAASF,EAAMgB,EAAQ,CACrB,eAAgB,GAChB,YAAa,EACf,CAAC,CACH,CAQA,CACF,EDjFQ,cAAAU,MAAA,oBAvBR,IAAMC,EAAe,CAAC,CACpB,KAAA3B,EACA,MAAA4B,EACA,oBAAAC,EACA,aAAA5B,EACA,cAAA6B,EACA,YAAAC,EAAc,EACd,WAAAC,EAAa,GACb,QAAAC,EAAU,QACV,GAAGC,CACL,IAAkC,CAChC,GAAM,CAAE,QAAAC,CAAQ,EAAIzC,EAAe,EAC7B,CAAE,YAAAW,EAAa,iBAAA+B,EAAkB,aAAAC,CAAa,EAAItC,EACtDC,EACAC,CACF,EAEA,OACEyB,EAACjC,EAAA,CACC,KAAMO,EACN,QAASmC,EACT,MAAOP,EACP,OAAQ,CAAC,CAAE,WAAY,CAAE,MAAAU,CAAM,CAAE,IAC/BZ,EAACa,EAAA,CACC,KAAMvC,EACN,YAAaK,EACb,oBAAqBwB,EACrB,aAAcO,EACd,SAAUN,EAAgB,OAAYO,EACtC,YAAaN,EACb,WAAYC,EACZ,QAASC,EACT,MAAOK,GAAO,QACb,GAAGJ,EACN,EAEJ,CAEJ,EAEOM,EAAQb,EE/Ef,OAAS,cAAAlC,EAAY,kBAAAC,MAAsB,kBA6DnC,cAAAgC,MAAA,oBAnBR,IAAMe,EAAkB,CAAC,CACvB,KAAAzC,EACA,MAAA4B,EACA,oBAAAC,EACA,aAAA5B,EACA,cAAA6B,EACA,eAAAY,EACA,GAAGR,CACL,IAAgC,CAC9B,GAAM,CAAE,QAAAC,CAAQ,EAAIzC,EAAe,EAC7B,CAAE,aAAAiB,EAAc,kBAAAgC,EAAmB,aAAAN,EAAc,cAAAO,CAAc,EACnEpC,EAAmBR,EAAMC,CAAY,EAEvC,OACEyB,EAACjC,EAAA,CACC,KAAMO,EACN,QAASmC,EACT,MAAOP,EACP,OAAQ,CAAC,CAAE,WAAY,CAAE,MAAAU,CAAM,CAAE,IAC/BZ,EAACmB,EAAA,CACC,KAAM7C,EACN,aAAcW,EACd,oBAAqBkB,EACrB,cAAec,EACf,SAAUb,EAAgB,OAAYO,EACtC,UAAWK,EAAiB,OAAYE,EACxC,MAAON,GAAO,QACb,GAAGJ,EACN,EAEJ,CAEJ,EAEOY,EAAQL,EC5Ef,OAAS,cAAAhD,EAAY,kBAAAC,MAAsB,kBA6DnC,cAAAgC,MAAA,oBAnBR,IAAMqB,EAAmB,CAAC,CACxB,KAAA/C,EACA,MAAA4B,EACA,oBAAAC,EACA,aAAA5B,EACA,cAAA6B,EACA,eAAAY,EACA,GAAGR,CACL,IAAiC,CAC/B,GAAM,CAAE,QAAAC,CAAQ,EAAIzC,EAAe,EAC7B,CAAE,aAAAiB,EAAc,kBAAAgC,EAAmB,aAAAN,EAAc,cAAAO,CAAc,EACnEpC,EAAmBR,EAAMC,CAAY,EAEvC,OACEyB,EAACjC,EAAA,CACC,KAAMO,EACN,QAASmC,EACT,MAAOP,EACP,OAAQ,CAAC,CAAE,WAAY,CAAE,MAAAU,CAAM,CAAE,IAC/BZ,EAACsB,EAAA,CACC,KAAMhD,EACN,aAAcW,EACd,oBAAqBkB,EACrB,cAAec,EACf,SAAUb,EAAgB,OAAYO,EACtC,UAAWK,EAAiB,OAAYE,EACxC,MAAON,GAAO,QACb,GAAGJ,EACN,EAEJ,CAEJ,EAEOe,EAAQF,EC5Ef,OAAS,cAAAtD,EAAY,kBAAAC,MAAsB,kBA8DnC,cAAAgC,MAAA,oBApBR,IAAMwB,EAAmB,CAAC,CACxB,KAAAlD,EACA,MAAA4B,EACA,oBAAAC,EACA,aAAA5B,EACA,cAAA6B,EACA,GAAGI,CACL,IAAiC,CAC/B,GAAM,CAAE,QAAAC,CAAQ,EAAIzC,EAAe,EAC7B,CAAE,YAAAW,EAAa,iBAAA+B,EAAkB,aAAAC,CAAa,EAAItC,EACtDC,EACAC,CACF,EAEA,OACEyB,EAACjC,EAAA,CACC,KAAMO,EACN,QAASmC,EACT,MAAOP,EACP,OAAQ,CAAC,CAAE,WAAY,CAAE,MAAAU,CAAM,CAAE,IAC/BZ,EAACyB,EAAA,CACC,KAAMnD,EACN,YAAaK,EACb,oBAAqBwB,EACrB,aAAcO,EACd,SAAUN,EAAgB,OAAYO,EACtC,MAAOC,GAAO,QACb,GAAGJ,EACN,EAEJ,CAEJ,EAEOiB,EAAQD,EC5Ef,OAAS,cAAAzD,EAAY,kBAAAC,OAAsB,kBA+DnC,cAAAgC,MAAA,oBArBR,IAAM0B,GAAoB,CAAC,CACzB,KAAApD,EACA,MAAA4B,EACA,oBAAAC,EACA,aAAA5B,EACA,cAAA6B,EACA,SAAAuB,EACA,GAAGnB,CACL,IAAkC,CAChC,GAAM,CAAE,QAAAC,CAAQ,EAAIzC,GAAe,EAC7B,CAAE,YAAAW,EAAa,iBAAA+B,EAAkB,aAAAC,CAAa,EAAItC,EACtDC,EACAC,CACF,EAEA,OACEyB,EAACjC,EAAA,CACC,KAAMO,EACN,QAASmC,EACT,MAAOP,EACP,OAAQ,CAAC,CAAE,WAAY,CAAE,MAAAU,CAAM,CAAE,IAC/BZ,EAACa,EAAA,CACC,KAAMvC,EACN,YAAaK,EACb,oBAAqBwB,EACrB,aAAcO,EACd,SAAUN,EAAgB,OAAYO,EACtC,MAAOC,GAAO,QACd,SAAUe,EACT,GAAGnB,EACN,EAEJ,CAEJ,EAEOK,GAAQa","sourcesContent":["import { Controller, useFormContext } from 'react-hook-form';\n\nimport SingleImageUploadComponent from 'components/FileUpload/SingleImageUpload';\n\nimport { FormSingleImageUploadProps } from './props';\nimport { useSingleFileUpload } from './useFormFileUpload';\n\n/**\n * AvatarUpload integrado ao React Hook Form\n * Componente especializado para upload de avatar (imagem circular de perfil)\n * Gerencia automaticamente o estado do arquivo e retorna apenas o resource_file_id\n *\n * @example\n * ```tsx\n * import { Form } from 'components/form';\n * import { AvatarUpload } from 'components/form/FileUpload';\n * import { useCreateFilesMutation, useGetFileQuery } from 'services/filesApi';\n *\n * interface FormData {\n * avatar_id: string | null;\n * }\n *\n * const ProfileForm = () => {\n * const createFilesMutation = useCreateFilesMutation();\n * const getFileQuery = useGetFileQuery();\n * const methods = useForm<FormData>();\n *\n * return (\n * <Form methods={methods} onSubmit={handleSubmit}>\n * <AvatarUpload\n * name=\"avatar_id\"\n * createFilesMutation={createFilesMutation}\n * getFileQuery={getFileQuery}\n * />\n * </Form>\n * );\n * };\n * ```\n */\nconst AvatarUpload = ({\n name,\n rules,\n createFilesMutation,\n getFileQuery,\n disableRemove,\n aspectRatio = 1,\n enableCrop = true,\n maxSize = 5242880,\n ...other\n}: FormSingleImageUploadProps) => {\n const { control } = useFormContext();\n const { fileDetails, handleFileSelect, handleRemove } = useSingleFileUpload(\n name,\n getFileQuery,\n );\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ fieldState: { error } }) => (\n <SingleImageUploadComponent\n name={name}\n fileDetails={fileDetails}\n createFilesMutation={createFilesMutation}\n onFileSelect={handleFileSelect}\n onRemove={disableRemove ? undefined : handleRemove}\n aspectRatio={aspectRatio}\n enableCrop={enableCrop}\n maxSize={maxSize}\n error={error?.message}\n {...other}\n />\n )}\n />\n );\n};\n\nexport default AvatarUpload;\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\n\nimport { FileDetails } from 'components/FileUpload/props';\n\nimport { LazyQueryTrigger } from './props';\n\n/**\n * Hook para gerenciar upload de arquivo único\n */\nexport const useSingleFileUpload = (\n name: string,\n getFileQuery: LazyQueryTrigger,\n) => {\n const { setValue, watch } = useFormContext();\n const value = watch(name);\n const [fileDetails, setFileDetails] = useState<FileDetails | undefined>();\n\n useEffect(() => {\n if (!value) {\n setFileDetails(undefined);\n return;\n }\n const fetchFile = async () => {\n try {\n const file = await getFileQuery(value).unwrap();\n setFileDetails({\n id: file.id,\n url: file.url,\n name: file.name,\n });\n } catch {\n setFileDetails({ id: value, url: '' });\n }\n };\n fetchFile();\n }, [value, getFileQuery]);\n\n const handleFileSelect = (file: FileDetails) => {\n setValue(name, file.id, { shouldValidate: true, shouldDirty: true });\n };\n\n const handleRemove = () => {\n setValue(name, null, { shouldValidate: true, shouldDirty: true });\n };\n\n return {\n fileDetails,\n handleFileSelect,\n handleRemove,\n };\n};\n\n/**\n * Hook para gerenciar upload de múltiplos arquivos\n */\nexport const useMultiFileUpload = (\n name: string,\n getFileQuery: LazyQueryTrigger,\n) => {\n const { setValue, watch } = useFormContext();\n const watchedValue = watch(name);\n const currentValue = useMemo(() => watchedValue || [], [watchedValue]);\n const [filesDetails, setFilesDetails] = useState<FileDetails[]>([]);\n const cacheRef = useRef<Map<string, FileDetails>>(new Map());\n\n useEffect(() => {\n if (!currentValue || currentValue.length === 0) {\n setFilesDetails([]);\n return;\n }\n const fetchFiles = async () => {\n try {\n // Remove duplicatas mantendo a ordem\n const uniqueIds = [...new Set(currentValue)] as string[];\n\n const cache = cacheRef.current;\n const newIds = uniqueIds.filter(id => !cache.has(id));\n\n if (newIds.length > 0) {\n const promises = newIds.map(async (id: string) => {\n try {\n const file = await getFileQuery(id).unwrap();\n const fileDetails = {\n id: file.id,\n url: file.url,\n name: file.name,\n };\n cache.set(id, fileDetails);\n return fileDetails;\n } catch {\n const fallback = { id, url: '' };\n cache.set(id, fallback);\n return fallback;\n }\n });\n await Promise.all(promises);\n }\n\n const results = uniqueIds.map(id => cache.get(id)!);\n setFilesDetails(results);\n } catch {\n setFilesDetails(currentValue.map((id: string) => ({ id, url: '' })));\n }\n };\n fetchFiles();\n }, [currentValue, getFileQuery]);\n\n const handleFilesSelect = (files: FileDetails[]) => {\n const newIds = files.map(file => file.id);\n const updatedIds = [...new Set([...currentValue, ...newIds])];\n setValue(name, updatedIds, {\n shouldValidate: true,\n shouldDirty: true,\n });\n };\n\n const handleRemove = (file?: { id: string }) => {\n if (!file) return;\n const updatedIds = currentValue.filter((id: string) => id !== file.id);\n setValue(name, updatedIds, {\n shouldValidate: true,\n shouldDirty: true,\n });\n };\n\n const handleReorder = (oldIndex: number, newIndex: number) => {\n const newIds = [...currentValue];\n const [removed] = newIds.splice(oldIndex, 1);\n newIds.splice(newIndex, 0, removed);\n setValue(name, newIds, {\n shouldValidate: true,\n shouldDirty: true,\n });\n };\n\n return {\n currentValue,\n filesDetails,\n handleFilesSelect,\n handleRemove,\n handleReorder,\n };\n};\n","import { Controller, useFormContext } from 'react-hook-form';\n\nimport MultiFileUploadComponent from 'components/FileUpload/MultipleFileUpload';\n\nimport { FormMultiFileUploadProps } from './props';\nimport { useMultiFileUpload } from './useFormFileUpload';\n\n/**\n * MultiFileUpload integrado ao React Hook Form\n * Gerencia automaticamente o estado dos arquivos e retorna array de resource_file_ids\n *\n * @example\n * ```tsx\n * import { Form } from 'components/form';\n * import { MultiFileUpload } from 'components/form/FileUpload';\n * import { useCreateFilesMutation } from 'services/filesApi';\n *\n * const FormExample = () => {\n * const createFilesMutation = useCreateFilesMutation();\n * const methods = useForm({\n * defaultValues: {\n * document_ids: [],\n * },\n * });\n *\n * const handleSubmit = (data: any) => {\n * console.log(data.document_ids); // Array de IDs\n * };\n *\n * return (\n * <Form methods={methods} onSubmit={handleSubmit}>\n * <MultiFileUpload\n * name=\"document_ids\"\n * label=\"Documentos\"\n * createFilesMutation={createFilesMutation}\n * maxFiles={5}\n * />\n * </Form>\n * );\n * };\n * ```\n */\nconst MultiFileUpload = ({\n name,\n rules,\n createFilesMutation,\n getFileQuery,\n disableRemove,\n disableReorder,\n ...other\n}: FormMultiFileUploadProps) => {\n const { control } = useFormContext();\n const { filesDetails, handleFilesSelect, handleRemove, handleReorder } =\n useMultiFileUpload(name, getFileQuery);\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ fieldState: { error } }) => (\n <MultiFileUploadComponent\n name={name}\n filesDetails={filesDetails}\n createFilesMutation={createFilesMutation}\n onFilesSelect={handleFilesSelect}\n onRemove={disableRemove ? undefined : handleRemove}\n onReorder={disableReorder ? undefined : handleReorder}\n error={error?.message}\n {...other}\n />\n )}\n />\n );\n};\n\nexport default MultiFileUpload;\n","import { Controller, useFormContext } from 'react-hook-form';\n\nimport MultiImageUploadComponent from 'components/FileUpload/MultipleImageUpload';\n\nimport { FormMultiImageUploadProps } from './props';\nimport { useMultiFileUpload } from './useFormFileUpload';\n\n/**\n * MultiImageUpload integrado ao React Hook Form\n * Gerencia automaticamente o estado dos arquivos e retorna array de resource_file_ids\n *\n * @example\n * ```tsx\n * import { Form } from 'components/form';\n * import { MultiImageUpload } from 'components/form/FileUpload';\n * import { useCreateFilesMutation } from 'services/filesApi';\n *\n * const FormExample = () => {\n * const createFilesMutation = useCreateFilesMutation();\n * const methods = useForm({\n * defaultValues: {\n * image_ids: [],\n * },\n * });\n *\n * const handleSubmit = (data: any) => {\n * console.log(data.image_ids); // Array de IDs\n * };\n *\n * return (\n * <Form methods={methods} onSubmit={handleSubmit}>\n * <MultiImageUpload\n * name=\"image_ids\"\n * label=\"Imagens\"\n * createFilesMutation={createFilesMutation}\n * maxFiles={5}\n * />\n * </Form>\n * );\n * };\n * ```\n */\nconst MultiImageUpload = ({\n name,\n rules,\n createFilesMutation,\n getFileQuery,\n disableRemove,\n disableReorder,\n ...other\n}: FormMultiImageUploadProps) => {\n const { control } = useFormContext();\n const { filesDetails, handleFilesSelect, handleRemove, handleReorder } =\n useMultiFileUpload(name, getFileQuery);\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ fieldState: { error } }) => (\n <MultiImageUploadComponent\n name={name}\n filesDetails={filesDetails}\n createFilesMutation={createFilesMutation}\n onFilesSelect={handleFilesSelect}\n onRemove={disableRemove ? undefined : handleRemove}\n onReorder={disableReorder ? undefined : handleReorder}\n error={error?.message}\n {...other}\n />\n )}\n />\n );\n};\n\nexport default MultiImageUpload;\n","import { Controller, useFormContext } from 'react-hook-form';\n\nimport SingleFileUploadComponent from 'components/FileUpload/SingleFileUpload';\n\nimport { FormSingleFileUploadProps } from './props';\nimport { useSingleFileUpload } from './useFormFileUpload';\n\n/**\n * SingleFileUpload integrado ao React Hook Form\n * Gerencia automaticamente o estado do arquivo e retorna apenas o resource_file_id\n *\n * @example\n * ```tsx\n * import { Form } from 'components/form';\n * import { SingleFileUpload } from 'components/form/FileUpload';\n * import { useCreateFilesMutation } from 'services/filesApi';\n *\n * const FormExample = () => {\n * const createFilesMutation = useCreateFilesMutation();\n * const methods = useForm({\n * defaultValues: {\n * document_id: null,\n * },\n * });\n *\n * const handleSubmit = (data: any) => {\n * console.log(data.document_id); // ID do arquivo\n * };\n *\n * return (\n * <Form methods={methods} onSubmit={handleSubmit}>\n * <SingleFileUpload\n * name=\"document_id\"\n * label=\"Documento\"\n * createFilesMutation={createFilesMutation}\n * maxSize={1024 * 1024 * 10}\n * />\n * </Form>\n * );\n * };\n * ```\n */\nconst SingleFileUpload = ({\n name,\n rules,\n createFilesMutation,\n getFileQuery,\n disableRemove,\n ...other\n}: FormSingleFileUploadProps) => {\n const { control } = useFormContext();\n const { fileDetails, handleFileSelect, handleRemove } = useSingleFileUpload(\n name,\n getFileQuery,\n );\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ fieldState: { error } }) => (\n <SingleFileUploadComponent\n name={name}\n fileDetails={fileDetails}\n createFilesMutation={createFilesMutation}\n onFileSelect={handleFileSelect}\n onRemove={disableRemove ? undefined : handleRemove}\n error={error?.message}\n {...other}\n />\n )}\n />\n );\n};\n\nexport default SingleFileUpload;\n","import { Controller, useFormContext } from 'react-hook-form';\n\nimport SingleImageUploadComponent from 'components/FileUpload/SingleImageUpload';\n\nimport { FormSingleImageUploadProps } from './props';\nimport { useSingleFileUpload } from './useFormFileUpload';\n\n/**\n * SingleImageUpload integrado ao React Hook Form\n * Gerencia automaticamente o estado do arquivo e retorna apenas o resource_file_id\n *\n * @example\n * ```tsx\n * import { Form } from 'components/form';\n * import { SingleImageUpload } from 'components/form/FileUpload';\n * import { useCreateFilesMutation } from 'services/filesApi';\n *\n * const FormExample = () => {\n * const createFilesMutation = useCreateFilesMutation();\n * const methods = useForm({\n * defaultValues: {\n * resource_id: null,\n * },\n * });\n *\n * const handleSubmit = (data: any) => {\n * console.log(data.resource_id); // ID do arquivo\n * };\n *\n * return (\n * <Form methods={methods} onSubmit={handleSubmit}>\n * <SingleImageUpload\n * name=\"resource_id\"\n * label=\"Imagem\"\n * createFilesMutation={createFilesMutation}\n * maxSize={1024 * 1024 * 5}\n * />\n * </Form>\n * );\n * };\n * ```\n */\nconst SingleImageUpload = ({\n name,\n rules,\n createFilesMutation,\n getFileQuery,\n disableRemove,\n hoverAlt,\n ...other\n}: FormSingleImageUploadProps) => {\n const { control } = useFormContext();\n const { fileDetails, handleFileSelect, handleRemove } = useSingleFileUpload(\n name,\n getFileQuery,\n );\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ fieldState: { error } }) => (\n <SingleImageUploadComponent\n name={name}\n fileDetails={fileDetails}\n createFilesMutation={createFilesMutation}\n onFileSelect={handleFileSelect}\n onRemove={disableRemove ? undefined : handleRemove}\n error={error?.message}\n hoverAlt={hoverAlt}\n {...other}\n />\n )}\n />\n );\n};\n\nexport default SingleImageUpload;\n"]}
@@ -1,7 +1,7 @@
1
1
  import { a } from '../../../chunk-YXRL4O4H.js';
2
- import { a as a$2 } from '../../../chunk-5PLCCVXS.js';
2
+ import { a as a$2 } from '../../../chunk-ZOUROFZV.js';
3
3
  import { a as a$3 } from '../../../chunk-E6NUW3KZ.js';
4
- import '../../../chunk-CKYSHYJK.js';
4
+ import '../../../chunk-K4FZQR7Q.js';
5
5
  import { a as a$1 } from '../../../chunk-VPG46WNM.js';
6
6
  import '../../../chunk-CIGSMWKF.js';
7
7
  import { useFormContext, useFieldArray } from 'react-hook-form';
@@ -1,8 +1,8 @@
1
- import { useState } from 'react';
1
+ import { useState, useMemo, useCallback } from 'react';
2
2
  import { debounce } from '@mui/material/utils';
3
3
 
4
- var h=d=>{let[o,i]=useState(!1),[s,l]=useState(),[p,a]=useState(),O=debounce(e=>{l(e),i(!1);},500),S=e=>{e&&i(!0),O(e);},c=()=>{i(!1),l(void 0);};return {search:s,searching:o,buildOptions:(e=[],r=!1)=>{let t=p||d;if(!t||s!==void 0)return e.filter(n=>n.value!==null&&n.value!==void 0);if(o||r)return [];let f=[...Array.isArray(t)?t:[t],...e];return Array.from(new Set(f.map(n=>n.value))).map(n=>f.find(m=>m.value===n)).filter(n=>n.value!==null&&n.value!==void 0)},onSearch:S,onSelectValue:(e=[],r)=>{if(!r||Array.isArray(r)&&r.length===0){a(void 0);return}Array.isArray(r)?a(e.filter(t=>r.includes(t.value))):a(e.find(t=>t.value===r)),c();},finishSearch:c}},w=h;
4
+ var b=f=>{let[i,s]=useState(!1),[u,d]=useState(),[p,o]=useState(),m=useMemo(()=>debounce(e=>{d(e),s(!1);},500),[]),O=useCallback(e=>{e&&s(!0),m(e);},[m]),l=useCallback(()=>{s(!1),d(void 0);},[]),S=useCallback((e=[],r=!1)=>{let t=p||f;if(!t||u!==void 0)return e.filter(n=>n.value!==null&&n.value!==void 0);if(i||r)return [];let A=[...Array.isArray(t)?t:[t],...e];return Array.from(new Set(A.map(n=>n.value))).map(n=>A.find(v=>v.value===n)).filter(n=>n.value!==null&&n.value!==void 0)},[p,f,u,i]),h=useCallback((e=[],r)=>{if(!r||Array.isArray(r)&&r.length===0){o(void 0);return}Array.isArray(r)?o(e.filter(t=>r.includes(t.value))):o(e.find(t=>t.value===r)),l();},[l]);return {search:u,searching:i,buildOptions:S,onSearch:O,onSelectValue:h,finishSearch:l}},x=b;
5
5
 
6
- export { w as default };
6
+ export { x as default };
7
7
  //# sourceMappingURL=out.js.map
8
8
  //# sourceMappingURL=useAutocomplete.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useAutocomplete.ts"],"names":["useState","debounce","useAutocomplete","initialValue","searching","setSearching","search","setSearch","selectedValue","setSelectedValue","debouncedSetSearch","onSearch","term","finishSearch","options","fetching","value","opt","combinedOptions","uniqueValue","selected","useAutocomplete_default"],"mappings":"AAAA,OAAS,YAAAA,MAAgB,QACzB,OAAS,YAAAC,MAAgB,sBAIzB,IAAMC,EAAmBC,GAAqC,CAC5D,GAAM,CAACC,EAAWC,CAAY,EAAIL,EAAS,EAAK,EAC1C,CAACM,EAAQC,CAAS,EAAIP,EAAiB,EACvC,CAACQ,EAAeC,CAAgB,EAAIT,EAA4B,EAEhEU,EAAqBT,EAAUK,GAAoB,CACvDC,EAAUD,CAAM,EAChBD,EAAa,EAAK,CACpB,EAAG,GAAG,EAEAM,EAAYC,GAAkB,CAC9BA,GAAMP,EAAa,EAAI,EAC3BK,EAAmBE,CAAI,CACzB,EAEMC,EAAe,IAAM,CACzBR,EAAa,EAAK,EAClBE,EAAU,MAAS,CACrB,EAuCA,MAAO,CACL,OAAAD,EACA,UAAAF,EACA,aAxCmB,CAACU,EAAoB,CAAC,EAAGC,EAAW,KAAU,CACjE,IAAMC,EAAQR,GAAiBL,EAE/B,GAAI,CAACa,GAASV,IAAW,OACvB,OAAOQ,EAAQ,OACbG,GAAOA,EAAI,QAAU,MAAQA,EAAI,QAAU,MAC7C,EAEF,GAAIb,GAAaW,EAAU,MAAO,CAAC,EAGnC,IAAMG,EAAkB,CAAC,GADH,MAAM,QAAQF,CAAK,EAAIA,EAAQ,CAACA,CAAK,EAChB,GAAGF,CAAO,EAErD,OACE,MAAM,KAAK,IAAI,IAAII,EAAgB,IAAID,GAAOA,EAAI,KAAK,CAAC,CAAC,EAAE,IACzDE,GAAeD,EAAgB,KAAKD,GAAOA,EAAI,QAAUE,CAAW,CACtE,EACA,OAAOF,GAAOA,EAAI,QAAU,MAAQA,EAAI,QAAU,MAAS,CAC/D,EAuBE,SAAAN,EACA,cAtBoB,CAACG,EAAoB,CAAC,EAAGM,IAAsB,CACnE,GAAI,CAACA,GAAa,MAAM,QAAQA,CAAQ,GAAKA,EAAS,SAAW,EAAI,CACnEX,EAAiB,MAAS,EAC1B,OAGE,MAAM,QAAQW,CAAQ,EACxBX,EACEK,EAAQ,OAAOG,GAAOG,EAAS,SAASH,EAAI,KAAe,CAAC,CAC9D,EAEAR,EAAiBK,EAAQ,KAAKG,GAAOA,EAAI,QAAUG,CAAQ,CAAC,EAG9DP,EAAa,CACf,EAQE,aAAAA,CACF,CACF,EAEOQ,EAAQnB","sourcesContent":["import { useState } from 'react';\nimport { debounce } from '@mui/material/utils';\n\nimport { Option } from 'types/option';\n\nconst useAutocomplete = (initialValue?: Option | Option[]) => {\n const [searching, setSearching] = useState(false);\n const [search, setSearch] = useState<string>();\n const [selectedValue, setSelectedValue] = useState<Option | Option[]>();\n\n const debouncedSetSearch = debounce((search?: string) => {\n setSearch(search);\n setSearching(false);\n }, 500);\n\n const onSearch = (term?: string) => {\n if (term) setSearching(true);\n debouncedSetSearch(term);\n };\n\n const finishSearch = () => {\n setSearching(false);\n setSearch(undefined);\n };\n\n const buildOptions = (options: Option[] = [], fetching = false) => {\n const value = selectedValue || initialValue;\n\n if (!value || search !== undefined)\n return options.filter(\n opt => opt.value !== null && opt.value !== undefined,\n );\n\n if (searching || fetching) return [];\n\n const selectedArray = Array.isArray(value) ? value : [value];\n const combinedOptions = [...selectedArray, ...options];\n\n return (\n Array.from(new Set(combinedOptions.map(opt => opt.value))).map(\n uniqueValue => combinedOptions.find(opt => opt.value === uniqueValue),\n ) as Option[]\n ).filter(opt => opt.value !== null && opt.value !== undefined);\n };\n\n const onSelectValue = (options: Option[] = [], selected: unknown) => {\n if (!selected || (Array.isArray(selected) && selected.length === 0)) {\n setSelectedValue(undefined);\n return;\n }\n\n if (Array.isArray(selected)) {\n setSelectedValue(\n options.filter(opt => selected.includes(opt.value as string)),\n );\n } else {\n setSelectedValue(options.find(opt => opt.value === selected));\n }\n\n finishSearch();\n };\n\n return {\n search,\n searching,\n buildOptions,\n onSearch,\n onSelectValue,\n finishSearch,\n };\n};\n\nexport default useAutocomplete;\n"]}
1
+ {"version":3,"sources":["../../src/hooks/useAutocomplete.ts"],"names":["useCallback","useMemo","useState","debounce","useAutocomplete","initialValue","searching","setSearching","search","setSearch","selectedValue","setSelectedValue","debouncedSetSearch","searchTerm","onSearch","term","finishSearch","buildOptions","options","fetching","value","opt","combinedOptions","uniqueValue","onSelectValue","selected","useAutocomplete_default"],"mappings":"AAAA,OAAS,eAAAA,EAAa,WAAAC,EAAS,YAAAC,MAAgB,QAC/C,OAAS,YAAAC,MAAgB,sBAIzB,IAAMC,EAAmBC,GAAqC,CAC5D,GAAM,CAACC,EAAWC,CAAY,EAAIL,EAAS,EAAK,EAC1C,CAACM,EAAQC,CAAS,EAAIP,EAAiB,EACvC,CAACQ,EAAeC,CAAgB,EAAIT,EAA4B,EAEhEU,EAAqBX,EACzB,IACEE,EAAUU,GAAwB,CAChCJ,EAAUI,CAAU,EACpBN,EAAa,EAAK,CACpB,EAAG,GAAG,EACR,CAAC,CACH,EAEMO,EAAWd,EACde,GAAkB,CACbA,GAAMR,EAAa,EAAI,EAC3BK,EAAmBG,CAAI,CACzB,EACA,CAACH,CAAkB,CACrB,EAEMI,EAAehB,EAAY,IAAM,CACrCO,EAAa,EAAK,EAClBE,EAAU,MAAS,CACrB,EAAG,CAAC,CAAC,EAECQ,EAAejB,EACnB,CAACkB,EAAoB,CAAC,EAAGC,EAAW,KAAU,CAC5C,IAAMC,EAAQV,GAAiBL,EAE/B,GAAI,CAACe,GAASZ,IAAW,OACvB,OAAOU,EAAQ,OACbG,GAAOA,EAAI,QAAU,MAAQA,EAAI,QAAU,MAC7C,EAEF,GAAIf,GAAaa,EAAU,MAAO,CAAC,EAGnC,IAAMG,EAAkB,CAAC,GADH,MAAM,QAAQF,CAAK,EAAIA,EAAQ,CAACA,CAAK,EAChB,GAAGF,CAAO,EAErD,OACE,MAAM,KAAK,IAAI,IAAII,EAAgB,IAAID,GAAOA,EAAI,KAAK,CAAC,CAAC,EAAE,IACzDE,GAAeD,EAAgB,KAAKD,GAAOA,EAAI,QAAUE,CAAW,CACtE,EACA,OAAOF,GAAOA,EAAI,QAAU,MAAQA,EAAI,QAAU,MAAS,CAC/D,EACA,CAACX,EAAeL,EAAcG,EAAQF,CAAS,CACjD,EAEMkB,EAAgBxB,EACpB,CAACkB,EAAoB,CAAC,EAAGO,IAAsB,CAC7C,GAAI,CAACA,GAAa,MAAM,QAAQA,CAAQ,GAAKA,EAAS,SAAW,EAAI,CACnEd,EAAiB,MAAS,EAC1B,OAGE,MAAM,QAAQc,CAAQ,EACxBd,EACEO,EAAQ,OAAOG,GAAOI,EAAS,SAASJ,EAAI,KAAe,CAAC,CAC9D,EAEAV,EAAiBO,EAAQ,KAAKG,GAAOA,EAAI,QAAUI,CAAQ,CAAC,EAG9DT,EAAa,CACf,EACA,CAACA,CAAY,CACf,EAEA,MAAO,CACL,OAAAR,EACA,UAAAF,EACA,aAAAW,EACA,SAAAH,EACA,cAAAU,EACA,aAAAR,CACF,CACF,EAEOU,EAAQtB","sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport { debounce } from '@mui/material/utils';\n\nimport { Option } from 'types/option';\n\nconst useAutocomplete = (initialValue?: Option | Option[]) => {\n const [searching, setSearching] = useState(false);\n const [search, setSearch] = useState<string>();\n const [selectedValue, setSelectedValue] = useState<Option | Option[]>();\n\n const debouncedSetSearch = useMemo(\n () =>\n debounce((searchTerm?: string) => {\n setSearch(searchTerm);\n setSearching(false);\n }, 500),\n [],\n );\n\n const onSearch = useCallback(\n (term?: string) => {\n if (term) setSearching(true);\n debouncedSetSearch(term);\n },\n [debouncedSetSearch],\n );\n\n const finishSearch = useCallback(() => {\n setSearching(false);\n setSearch(undefined);\n }, []);\n\n const buildOptions = useCallback(\n (options: Option[] = [], fetching = false) => {\n const value = selectedValue || initialValue;\n\n if (!value || search !== undefined)\n return options.filter(\n opt => opt.value !== null && opt.value !== undefined,\n );\n\n if (searching || fetching) return [];\n\n const selectedArray = Array.isArray(value) ? value : [value];\n const combinedOptions = [...selectedArray, ...options];\n\n return (\n Array.from(new Set(combinedOptions.map(opt => opt.value))).map(\n uniqueValue => combinedOptions.find(opt => opt.value === uniqueValue),\n ) as Option[]\n ).filter(opt => opt.value !== null && opt.value !== undefined);\n },\n [selectedValue, initialValue, search, searching],\n );\n\n const onSelectValue = useCallback(\n (options: Option[] = [], selected: unknown) => {\n if (!selected || (Array.isArray(selected) && selected.length === 0)) {\n setSelectedValue(undefined);\n return;\n }\n\n if (Array.isArray(selected)) {\n setSelectedValue(\n options.filter(opt => selected.includes(opt.value as string)),\n );\n } else {\n setSelectedValue(options.find(opt => opt.value === selected));\n }\n\n finishSearch();\n },\n [finishSearch],\n );\n\n return {\n search,\n searching,\n buildOptions,\n onSearch,\n onSelectValue,\n finishSearch,\n };\n};\n\nexport default useAutocomplete;\n"]}
@@ -1,12 +1,12 @@
1
1
  export { a as useThemeToggle } from '../chunk-EDWQYAWG.js';
2
- import '../chunk-QGWIO2AX.js';
2
+ import '../chunk-MZOCS5HH.js';
3
3
  import '../chunk-373WGZZL.js';
4
+ import '../chunk-6W52DPH4.js';
4
5
  import '../chunk-TWSAWMZ3.js';
5
6
  import '../chunk-ROVD7OGE.js';
7
+ import '../chunk-EQYL7U3J.js';
6
8
  import '../chunk-WUFEPE2G.js';
7
9
  import '../chunk-BX2DSNRV.js';
8
- import '../chunk-6W52DPH4.js';
9
- import '../chunk-EQYL7U3J.js';
10
10
  import '../chunk-GLRLKFPS.js';
11
11
  //# sourceMappingURL=out.js.map
12
12
  //# sourceMappingURL=useThemeToggle.js.map
@@ -1,4 +1,5 @@
1
1
  import * as react from 'react';
2
+ import Cropper from 'cropperjs';
2
3
 
3
4
  interface Props {
4
5
  onFileCropped(file?: File): void;
@@ -14,7 +15,7 @@ declare const useUploadImage: ({ onFileCropped, onImageUploaded, onCancel, }: Pr
14
15
  cancelChanges: () => void;
15
16
  saveChanges: () => void;
16
17
  previewImage: () => void;
17
- setCropper: react.Dispatch<any>;
18
+ setCropper: react.Dispatch<react.SetStateAction<Cropper | undefined>>;
18
19
  preview: string | undefined;
19
20
  closePreviewImage: () => void;
20
21
  saving: boolean;
@@ -2,7 +2,7 @@ import { a } from '../chunk-E3R7W7GK.js';
2
2
  import { useId, useState } from 'react';
3
3
  import I from 'browser-image-compression';
4
4
 
5
- var h=5242880,y=({onFileCropped:n,onImageUploaded:d,onCancel:i})=>{let l=useId(),[e,m]=useState(),[f,o,a$1]=a(),[u,r]=useState(),[v,p]=useState(!1);return {id:l,setCropModalOpen:a$1,handleRemove:()=>{n(void 0),d(void 0),a$1(!1);},toggleCropModalOpen:o,cropModalOpen:f,cancelChanges:()=>{i&&i(),a$1(!1);},saveChanges:()=>{e!==void 0&&e.getCroppedCanvas().toBlob(async g=>{try{if(!g)return;p(!0);let s=new File([g],"imagem.png",{type:"image/png"});if(s.size>h){let C=await I(s,{maxSizeMB:5});n(C),o();return}n(s),o();}finally{p(!1);}},"image/png",1);},previewImage:()=>{e!==void 0&&r(e.getCroppedCanvas().toDataURL());},setCropper:m,preview:u,closePreviewImage:()=>r(void 0),saving:v}},x=y;
5
+ var h=5242880,M=({onFileCropped:n,onImageUploaded:c,onCancel:t})=>{let d=useId(),[e,m]=useState(),[f,o,s]=a(),[u,i]=useState(),[v,p]=useState(!1);return {id:d,setCropModalOpen:s,handleRemove:()=>{n(void 0),c(void 0),s(!1);},toggleCropModalOpen:o,cropModalOpen:f,cancelChanges:()=>{t&&t(),s(!1);},saveChanges:()=>{e!==void 0&&e.getCroppedCanvas().toBlob(async g=>{try{if(!g)return;p(!0);let a=new File([g],"imagem.png",{type:"image/png"});if(a.size>h){let C=await I(a,{maxSizeMB:5});n(C),o();return}n(a),o();}finally{p(!1);}},"image/png",1);},previewImage:()=>{e!==void 0&&i(e.getCroppedCanvas().toDataURL());},setCropper:m,preview:u,closePreviewImage:()=>i(void 0),saving:v}},x=M;
6
6
 
7
7
  export { x as default };
8
8
  //# sourceMappingURL=out.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useUploadImage.ts"],"names":["useId","useState","imageCompression","FIVE_MB","useUploadImage","onFileCropped","onImageUploaded","onCancel","id","cropper","setCropper","cropModalOpen","toggleCropModalOpen","setCropModalOpen","useToggle_default","preview","setPreview","saving","setSaving","blob","file","compressedFile","useUploadImage_default"],"mappings":"yCACA,OAAS,SAAAA,EAAO,YAAAC,MAAgB,QAChC,OAAOC,MAAsB,4BAU7B,IAAMC,EAAU,QAEVC,EAAiB,CAAC,CACtB,cAAAC,EACA,gBAAAC,EACA,SAAAC,CACF,IAAa,CACX,IAAMC,EAAKR,EAAM,EACX,CAACS,EAASC,CAAU,EAAIT,EAAc,EACtC,CAACU,EAAeC,EAAqBC,CAAgB,EAAIC,EAAU,EACnE,CAACC,EAASC,CAAU,EAAIf,EAAiB,EACzC,CAACgB,EAAQC,CAAS,EAAIjB,EAAS,EAAK,EAuD1C,MAAO,CACL,GAAAO,EACA,iBAAAK,EACA,aATmB,IAAM,CACzBR,EAAc,MAAS,EACvBC,EAAgB,MAAS,EACzBO,EAAiB,EAAK,CACxB,EAME,oBAAAD,EACA,cAAAD,EACA,cA3DoB,IAAM,CACtBJ,GAAUA,EAAS,EACvBM,EAAiB,EAAK,CACxB,EAyDE,YA/CkB,IAAM,CACpBJ,IAAY,QAEhBA,EAAQ,iBAAiB,EAAE,OACzB,MAAOU,GAAc,CACnB,GAAI,CACF,GAAI,CAACA,EAAM,OAEXD,EAAU,EAAI,EAEd,IAAME,EAAO,IAAI,KAAK,CAACD,CAAI,EAAG,aAAc,CAAE,KAAM,WAAY,CAAC,EAEjE,GAAIC,EAAK,KAAOjB,EAAS,CACvB,IAAMkB,EAAiB,MAAMnB,EAAiBkB,EAAM,CAClD,UAAW,CACb,CAAC,EAEDf,EAAcgB,CAAc,EAC5BT,EAAoB,EAEpB,OAGFP,EAAce,CAAI,EAClBR,EAAoB,CACtB,QAAE,CACAM,EAAU,EAAK,CACjB,CACF,EACA,YACA,CACF,CACF,EAgBE,aAxDmB,IAAM,CACrBT,IAAY,QAEhBO,EAAWP,EAAQ,iBAAiB,EAAE,UAAU,CAAC,CACnD,EAqDE,WAAAC,EACA,QAAAK,EACA,kBArDwB,IAAMC,EAAW,MAAS,EAsDlD,OAAAC,CACF,CACF,EAEOK,EAAQlB","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useId, useState } from 'react';\nimport imageCompression from 'browser-image-compression';\n\nimport useToggle from './useToggle';\n\ninterface Props {\n onFileCropped(file?: File): void;\n onImageUploaded(image?: string): void;\n onCancel?: VoidFunction;\n}\n\nconst FIVE_MB = 5242880;\n\nconst useUploadImage = ({\n onFileCropped,\n onImageUploaded,\n onCancel,\n}: Props) => {\n const id = useId();\n const [cropper, setCropper] = useState<any>();\n const [cropModalOpen, toggleCropModalOpen, setCropModalOpen] = useToggle();\n const [preview, setPreview] = useState<string>();\n const [saving, setSaving] = useState(false);\n\n const cancelChanges = () => {\n if (onCancel) onCancel();\n setCropModalOpen(false);\n };\n\n const previewImage = () => {\n if (cropper === undefined) return;\n\n setPreview(cropper.getCroppedCanvas().toDataURL());\n };\n\n const closePreviewImage = () => setPreview(undefined);\n\n const saveChanges = () => {\n if (cropper === undefined) return;\n\n cropper.getCroppedCanvas().toBlob(\n async (blob: any) => {\n try {\n if (!blob) return;\n\n setSaving(true);\n\n const file = new File([blob], 'imagem.png', { type: 'image/png' });\n\n if (file.size > FIVE_MB) {\n const compressedFile = await imageCompression(file, {\n maxSizeMB: 5,\n });\n\n onFileCropped(compressedFile);\n toggleCropModalOpen();\n\n return;\n }\n\n onFileCropped(file);\n toggleCropModalOpen();\n } finally {\n setSaving(false);\n }\n },\n 'image/png',\n 1,\n );\n };\n\n const handleRemove = () => {\n onFileCropped(undefined);\n onImageUploaded(undefined);\n setCropModalOpen(false);\n };\n\n return {\n id,\n setCropModalOpen,\n handleRemove,\n toggleCropModalOpen,\n cropModalOpen,\n cancelChanges,\n saveChanges,\n previewImage,\n setCropper,\n preview,\n closePreviewImage,\n saving,\n };\n};\n\nexport default useUploadImage;\n"]}
1
+ {"version":3,"sources":["../../src/hooks/useUploadImage.ts"],"names":["useId","useState","imageCompression","FIVE_MB","useUploadImage","onFileCropped","onImageUploaded","onCancel","id","cropper","setCropper","cropModalOpen","toggleCropModalOpen","setCropModalOpen","useToggle_default","preview","setPreview","saving","setSaving","blob","file","compressedFile","useUploadImage_default"],"mappings":"yCAAA,OAAS,SAAAA,EAAO,YAAAC,MAAgB,QAChC,OAAOC,MAAsB,4BAW7B,IAAMC,EAAU,QAEVC,EAAiB,CAAC,CACtB,cAAAC,EACA,gBAAAC,EACA,SAAAC,CACF,IAAa,CACX,IAAMC,EAAKR,EAAM,EACX,CAACS,EAASC,CAAU,EAAIT,EAAkB,EAC1C,CAACU,EAAeC,EAAqBC,CAAgB,EAAIC,EAAU,EACnE,CAACC,EAASC,CAAU,EAAIf,EAAiB,EACzC,CAACgB,EAAQC,CAAS,EAAIjB,EAAS,EAAK,EAuD1C,MAAO,CACL,GAAAO,EACA,iBAAAK,EACA,aATmB,IAAM,CACzBR,EAAc,MAAS,EACvBC,EAAgB,MAAS,EACzBO,EAAiB,EAAK,CACxB,EAME,oBAAAD,EACA,cAAAD,EACA,cA3DoB,IAAM,CACtBJ,GAAUA,EAAS,EACvBM,EAAiB,EAAK,CACxB,EAyDE,YA/CkB,IAAM,CACpBJ,IAAY,QAEhBA,EAAQ,iBAAiB,EAAE,OACzB,MAAOU,GAAsB,CAC3B,GAAI,CACF,GAAI,CAACA,EAAM,OAEXD,EAAU,EAAI,EAEd,IAAME,EAAO,IAAI,KAAK,CAACD,CAAI,EAAG,aAAc,CAAE,KAAM,WAAY,CAAC,EAEjE,GAAIC,EAAK,KAAOjB,EAAS,CACvB,IAAMkB,EAAiB,MAAMnB,EAAiBkB,EAAM,CAClD,UAAW,CACb,CAAC,EAEDf,EAAcgB,CAAc,EAC5BT,EAAoB,EAEpB,OAGFP,EAAce,CAAI,EAClBR,EAAoB,CACtB,QAAE,CACAM,EAAU,EAAK,CACjB,CACF,EACA,YACA,CACF,CACF,EAgBE,aAxDmB,IAAM,CACrBT,IAAY,QAEhBO,EAAWP,EAAQ,iBAAiB,EAAE,UAAU,CAAC,CACnD,EAqDE,WAAAC,EACA,QAAAK,EACA,kBArDwB,IAAMC,EAAW,MAAS,EAsDlD,OAAAC,CACF,CACF,EAEOK,EAAQlB","sourcesContent":["import { useId, useState } from 'react';\nimport imageCompression from 'browser-image-compression';\nimport Cropper from 'cropperjs';\n\nimport useToggle from './useToggle';\n\ninterface Props {\n onFileCropped(file?: File): void;\n onImageUploaded(image?: string): void;\n onCancel?: VoidFunction;\n}\n\nconst FIVE_MB = 5242880;\n\nconst useUploadImage = ({\n onFileCropped,\n onImageUploaded,\n onCancel,\n}: Props) => {\n const id = useId();\n const [cropper, setCropper] = useState<Cropper>();\n const [cropModalOpen, toggleCropModalOpen, setCropModalOpen] = useToggle();\n const [preview, setPreview] = useState<string>();\n const [saving, setSaving] = useState(false);\n\n const cancelChanges = () => {\n if (onCancel) onCancel();\n setCropModalOpen(false);\n };\n\n const previewImage = () => {\n if (cropper === undefined) return;\n\n setPreview(cropper.getCroppedCanvas().toDataURL());\n };\n\n const closePreviewImage = () => setPreview(undefined);\n\n const saveChanges = () => {\n if (cropper === undefined) return;\n\n cropper.getCroppedCanvas().toBlob(\n async (blob: Blob | null) => {\n try {\n if (!blob) return;\n\n setSaving(true);\n\n const file = new File([blob], 'imagem.png', { type: 'image/png' });\n\n if (file.size > FIVE_MB) {\n const compressedFile = await imageCompression(file, {\n maxSizeMB: 5,\n });\n\n onFileCropped(compressedFile);\n toggleCropModalOpen();\n\n return;\n }\n\n onFileCropped(file);\n toggleCropModalOpen();\n } finally {\n setSaving(false);\n }\n },\n 'image/png',\n 1,\n );\n };\n\n const handleRemove = () => {\n onFileCropped(undefined);\n onImageUploaded(undefined);\n setCropModalOpen(false);\n };\n\n return {\n id,\n setCropModalOpen,\n handleRemove,\n toggleCropModalOpen,\n cropModalOpen,\n cancelChanges,\n saveChanges,\n previewImage,\n setCropper,\n preview,\n closePreviewImage,\n saving,\n };\n};\n\nexport default useUploadImage;\n"]}
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  export { a as useThemeToggle } from './chunk-EDWQYAWG.js';
2
- export { b as ThemeProvider, a as createTheme } from './chunk-QGWIO2AX.js';
2
+ export { b as ThemeProvider, a as createTheme } from './chunk-MZOCS5HH.js';
3
3
  import './chunk-373WGZZL.js';
4
+ export { b as defaultFont, c as primaryFont, d as secondaryFont, a as shadows, e as typography } from './chunk-6W52DPH4.js';
4
5
  import './chunk-TWSAWMZ3.js';
5
6
  import './chunk-ROVD7OGE.js';
7
+ export { l as action, k as background, m as basePalette, p as colorSchemes, i as common, a as components, q as createShadowColor, r as customShadows, o as darkPalette, h as error, b as grey, e as info, n as lightPalette, c as primary, d as secondary, f as success, j as text, g as warning } from './chunk-EQYL7U3J.js';
6
8
  import './chunk-WUFEPE2G.js';
7
9
  export { c as SettingsProvider, b as useSettingsContext } from './chunk-BX2DSNRV.js';
8
- export { b as defaultFont, c as primaryFont, d as secondaryFont, a as shadows, e as typography } from './chunk-6W52DPH4.js';
9
- export { l as action, k as background, m as basePalette, p as colorSchemes, i as common, a as components, q as createShadowColor, r as customShadows, o as darkPalette, h as error, b as grey, e as info, n as lightPalette, c as primary, d as secondary, f as success, j as text, g as warning } from './chunk-EQYL7U3J.js';
10
10
  export { a as THEME_CONFIG, q as bgBlur, p as bgGradient, o as borderGradient, j as createPaletteChannel, h as hexToRgbChannel, i as hexToRgbaChannel, l as hideScrollX, m as hideScrollY, r as maxLine, c as mediaQueries, t as menuItem, s as paper, f as pxToRem, e as remToPx, g as responsiveFontSizes, d as setFont, b as stylesMode, n as textGradient, k as varAlpha } from './chunk-GLRLKFPS.js';
11
11
  //# sourceMappingURL=out.js.map
12
12
  //# sourceMappingURL=index.js.map
@@ -1,11 +1,11 @@
1
- export { b as default } from '../chunk-QGWIO2AX.js';
1
+ export { b as default } from '../chunk-MZOCS5HH.js';
2
2
  import '../chunk-373WGZZL.js';
3
+ import '../chunk-6W52DPH4.js';
3
4
  import '../chunk-TWSAWMZ3.js';
4
5
  import '../chunk-ROVD7OGE.js';
6
+ import '../chunk-EQYL7U3J.js';
5
7
  import '../chunk-WUFEPE2G.js';
6
8
  export { b as useSettingsContext } from '../chunk-BX2DSNRV.js';
7
- import '../chunk-6W52DPH4.js';
8
- import '../chunk-EQYL7U3J.js';
9
9
  export { a as THEME_CONFIG } from '../chunk-GLRLKFPS.js';
10
10
  //# sourceMappingURL=out.js.map
11
11
  //# sourceMappingURL=theme-provider.js.map
@@ -5,7 +5,7 @@ import 'react';
5
5
  import '@mui/material/Autocomplete';
6
6
  import './icon.js';
7
7
 
8
- type AutocompleteProps = BaseAutoComplete & {
8
+ type AutocompleteProps = Omit<BaseAutoComplete, 'onChange'> & {
9
9
  name: string;
10
10
  label?: string;
11
11
  onChange(value: NonNullable<string | Option> | (string | Option)[] | null | undefined): void;
@@ -1,6 +1,33 @@
1
- type AccessType = 'READ_AND_WRITE' | 'READ_ONLY' | 'WRITE_ONLY';
2
- type DataType = 'TEXT' | 'BOOLEAN' | 'DECIMAL' | 'INTEGER' | 'DATE' | 'DATETIME' | 'FILE' | 'ENTITY' | 'LIST';
3
- type Condition = 'EQUALS' | 'NOT_EQUALS' | 'LIKE' | 'NOT_LIKE' | 'IN' | 'NOT_IN' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUAL' | 'LESS_THAN' | 'LESS_THAN_OR_EQUAL' | 'IS_NULL' | 'IS_NOT_NULL';
1
+ declare enum AccessType {
2
+ READ_AND_WRITE = "READ_AND_WRITE",
3
+ READ_ONLY = "READ_ONLY",
4
+ WRITE_ONLY = "WRITE_ONLY"
5
+ }
6
+ declare enum DataType {
7
+ TEXT = "TEXT",
8
+ BOOLEAN = "BOOLEAN",
9
+ DECIMAL = "DECIMAL",
10
+ INTEGER = "INTEGER",
11
+ DATE = "DATE",
12
+ DATETIME = "DATETIME",
13
+ FILE = "FILE",
14
+ ENTITY = "ENTITY",
15
+ LIST = "LIST"
16
+ }
17
+ declare enum Condition {
18
+ EQUALS = "EQUALS",
19
+ NOT_EQUALS = "NOT_EQUALS",
20
+ LIKE = "LIKE",
21
+ NOT_LIKE = "NOT_LIKE",
22
+ IN = "IN",
23
+ NOT_IN = "NOT_IN",
24
+ GREATER_THAN = "GREATER_THAN",
25
+ GREATER_THAN_OR_EQUAL = "GREATER_THAN_OR_EQUAL",
26
+ LESS_THAN = "LESS_THAN",
27
+ LESS_THAN_OR_EQUAL = "LESS_THAN_OR_EQUAL",
28
+ IS_NULL = "IS_NULL",
29
+ IS_NOT_NULL = "IS_NOT_NULL"
30
+ }
4
31
  interface EntityMetadata {
5
32
  name: string;
6
33
  id_field_name: string;
@@ -1,3 +1,3 @@
1
-
1
+ export { a as AccessType, c as Condition, b as DataType } from '../chunk-4P2L7UJA.js';
2
2
  //# sourceMappingURL=out.js.map
3
3
  //# sourceMappingURL=entityMetadata.js.map
@@ -0,0 +1,42 @@
1
+ import { Condition } from './entityMetadata.js';
2
+ import { FilterOperator, SortType } from './filter.js';
3
+
4
+ interface ExportFilterConditional {
5
+ fieldName: string;
6
+ conditional: Condition;
7
+ value: string[];
8
+ }
9
+ interface ExportFilterGroup {
10
+ operator: FilterOperator;
11
+ conditionals: ExportFilterConditional[];
12
+ }
13
+ interface ExportFilter {
14
+ operator: FilterOperator;
15
+ groups: ExportFilterGroup[];
16
+ }
17
+ interface ExportSort {
18
+ fieldName: string;
19
+ sortType: SortType;
20
+ }
21
+ declare enum ExportEntityOrigin {
22
+ DATABASE = "DATABASE",
23
+ SALES = "SALES",
24
+ PORTAL = "PORTAL"
25
+ }
26
+ declare enum ExportType {
27
+ SPREADSHEET = "SPREADSHEET"
28
+ }
29
+ interface ExportPayload {
30
+ entity_origin: ExportEntityOrigin;
31
+ entity_name: string;
32
+ export_type: ExportType;
33
+ criteria?: string[];
34
+ filter?: ExportFilter;
35
+ sort?: ExportSort;
36
+ }
37
+ interface ExportResponse {
38
+ id: string;
39
+ status: string;
40
+ }
41
+
42
+ export { ExportEntityOrigin, ExportFilter, ExportFilterConditional, ExportFilterGroup, ExportPayload, ExportResponse, ExportSort, ExportType };
@@ -0,0 +1,5 @@
1
+ var e=(r=>(r.DATABASE="DATABASE",r.SALES="SALES",r.PORTAL="PORTAL",r))(e||{}),o=(t=>(t.SPREADSHEET="SPREADSHEET",t))(o||{});
2
+
3
+ export { e as ExportEntityOrigin, o as ExportType };
4
+ //# sourceMappingURL=out.js.map
5
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/model/export.ts"],"names":["ExportEntityOrigin","ExportType"],"mappings":"AAwBO,IAAKA,OACVA,EAAA,SAAW,WACXA,EAAA,MAAQ,QACRA,EAAA,OAAS,SAHCA,OAAA,IAMAC,OACVA,EAAA,YAAc,cADJA,OAAA","sourcesContent":["import { Condition } from './entity-metadata';\nimport { FilterOperator, SortType } from './filter';\n\nexport interface ExportFilterConditional {\n fieldName: string;\n conditional: Condition;\n value: string[];\n}\n\nexport interface ExportFilterGroup {\n operator: FilterOperator;\n conditionals: ExportFilterConditional[];\n}\n\nexport interface ExportFilter {\n operator: FilterOperator;\n groups: ExportFilterGroup[];\n}\n\nexport interface ExportSort {\n fieldName: string;\n sortType: SortType;\n}\n\nexport enum ExportEntityOrigin {\n DATABASE = 'DATABASE',\n SALES = 'SALES',\n PORTAL = 'PORTAL',\n}\n\nexport enum ExportType {\n SPREADSHEET = 'SPREADSHEET',\n}\n\nexport interface ExportPayload {\n entity_origin: ExportEntityOrigin;\n entity_name: string;\n export_type: ExportType;\n criteria?: string[];\n filter?: ExportFilter;\n sort?: ExportSort;\n}\n\nexport interface ExportResponse {\n id: string;\n status: string;\n}\n"]}
@@ -0,0 +1,44 @@
1
+ import { Condition } from './entityMetadata.js';
2
+
3
+ declare enum FilterOperator {
4
+ AND = "AND",
5
+ OR = "OR"
6
+ }
7
+ interface FilterValue {
8
+ fieldName: string;
9
+ conditional: Condition;
10
+ value: string[];
11
+ }
12
+ interface FilterState {
13
+ [fieldName: string]: FilterValue;
14
+ }
15
+ interface FilterConditional {
16
+ fieldName: string;
17
+ conditional: Condition;
18
+ value: string[];
19
+ }
20
+ interface FilterGroup {
21
+ operator: FilterOperator;
22
+ conditionals: FilterConditional[];
23
+ }
24
+ interface Filter {
25
+ operator: FilterOperator;
26
+ groups: FilterGroup[];
27
+ }
28
+ interface FilterCondition {
29
+ id: string;
30
+ operator: FilterOperator;
31
+ fieldName: string;
32
+ conditional: Condition;
33
+ value: string[];
34
+ }
35
+ declare enum SortType {
36
+ ASC = "ASC",
37
+ DESC = "DESC"
38
+ }
39
+ interface Sort {
40
+ fieldName: string;
41
+ sortType: SortType;
42
+ }
43
+
44
+ export { Filter, FilterCondition, FilterConditional, FilterGroup, FilterOperator, FilterState, FilterValue, Sort, SortType };
@@ -0,0 +1,3 @@
1
+ export { a as FilterOperator, b as SortType } from '../chunk-HNEGKBXI.js';
2
+ //# sourceMappingURL=out.js.map
3
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { EntityMetadataResponse, Field } from '../types/entityMetadata.js';
2
+ import { ExportPayload, ExportFilter, ExportSort } from '../types/export.js';
3
+ import '../types/filter.js';
4
+
5
+ interface BuildExportPayloadParams {
6
+ metadata?: EntityMetadataResponse;
7
+ visibleFieldNames?: string[];
8
+ search?: string;
9
+ sort?: string;
10
+ dir?: 'asc' | 'desc';
11
+ }
12
+
13
+ declare const getFieldByName: (metadata: EntityMetadataResponse | undefined, fieldName?: string) => Field | undefined;
14
+ declare const mapToFilterFieldName: (metadata: EntityMetadataResponse | undefined, fieldName?: string) => string | undefined;
15
+ declare const buildCriteria: (metadata: EntityMetadataResponse | undefined, visibleFieldNames?: string[]) => ExportPayload['criteria'];
16
+ declare const buildFilter: (metadata: EntityMetadataResponse | undefined, search?: string) => ExportFilter | undefined;
17
+ declare const buildSort: (metadata: EntityMetadataResponse | undefined, sort?: string, dir?: 'asc' | 'desc') => ExportSort | undefined;
18
+ declare const buildExportPayload: ({ metadata, visibleFieldNames, search, sort, dir, }: BuildExportPayloadParams) => Pick<ExportPayload, 'criteria' | 'filter' | 'sort'>;
19
+
20
+ export { BuildExportPayloadParams, buildCriteria, buildFilter, buildSort, buildExportPayload as default, getFieldByName, mapToFilterFieldName };
@@ -0,0 +1,8 @@
1
+ import '../chunk-4P2L7UJA.js';
2
+ import '../chunk-HNEGKBXI.js';
3
+
4
+ var u=(t,e)=>{if(!(!t?.fields||!e))return t.fields.find(r=>r.name===e||r.filter_field_name===e)},i=(t,e)=>{if(!e)return;let r=u(t,e);return t?.fields?r?.filter_field_name||r?.name:e},f=(t,e)=>{if(!(!t?.fields||!e||e.length===0))return e.filter(r=>r!=="ACTIONS")},l=(t,e)=>{let r=e?.trim();if(!r)return;let n=i(t,t?.description_field_name)||i(t,"name");if(n)return {operator:"AND",groups:[{operator:"AND",conditionals:[{fieldName:n,conditional:"LIKE",value:[r]}]}]}},p=(t,e,r)=>{if(!e||!r)return;let n=i(t,e);if(n)return {fieldName:n,sortType:r==="desc"?"DESC":"ASC"}},c=({metadata:t,visibleFieldNames:e,search:r,sort:n,dir:s})=>{let o=f(t,e),d=l(t,r),a=p(t,n,s);return {...o&&{criteria:o},...d&&{filter:d},...a&&{sort:a}}},y=c;
5
+
6
+ export { f as buildCriteria, l as buildFilter, p as buildSort, y as default, u as getFieldByName, i as mapToFilterFieldName };
7
+ //# sourceMappingURL=out.js.map
8
+ //# sourceMappingURL=buildExportPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/buildExportPayload.ts"],"names":["getFieldByName","metadata","fieldName","field","mapToFilterFieldName","buildCriteria","visibleFieldNames","buildFilter","search","value","searchFieldName","buildSort","sort","dir","buildExportPayload","criteria","filter","sortPayload","buildExportPayload_default"],"mappings":"0DAWA,IAAMA,EAAiB,CACrBC,EACAC,IACsB,CACtB,GAAI,GAACD,GAAU,QAAU,CAACC,GAC1B,OAAOD,EAAS,OAAO,KACrBE,GAASA,EAAM,OAASD,GAAaC,EAAM,oBAAsBD,CACnE,CACF,EAEME,EAAuB,CAC3BH,EACAC,IACuB,CACvB,GAAI,CAACA,EAAW,OAChB,IAAMC,EAAQH,EAAeC,EAAUC,CAAS,EAChD,OAAID,GAAU,OACLE,GAAO,mBAAqBA,GAAO,KAErCD,CACT,EAEMG,EAAgB,CACpBJ,EACAK,IAC8B,CAC9B,GACE,GAACL,GAAU,QACX,CAACK,GACDA,EAAkB,SAAW,GAI/B,OAAOA,EAAkB,OAAOJ,GAAaA,IAAc,SAAS,CACtE,EAEMK,EAAc,CAClBN,EACAO,IAC6B,CAC7B,IAAMC,EAAQD,GAAQ,KAAK,EAC3B,GAAI,CAACC,EAAO,OACZ,IAAMC,EACJN,EAAqBH,EAAUA,GAAU,sBAAsB,GAC/DG,EAAqBH,EAAU,MAAM,EACvC,GAAKS,EACL,MAAO,CACL,eACA,OAAQ,CACN,CACE,eACA,aAAc,CACZ,CACE,UAAWA,EACX,mBACA,MAAO,CAACD,CAAK,CACf,CACF,CACF,CACF,CACF,CACF,EAEME,EAAY,CAChBV,EACAW,EACAC,IAC2B,CAC3B,GAAI,CAACD,GAAQ,CAACC,EAAK,OACnB,IAAMX,EAAYE,EAAqBH,EAAUW,CAAI,EACrD,GAAKV,EACL,MAAO,CACL,UAAAA,EACA,SAAUW,IAAQ,mBACpB,CACF,EAEMC,EAAqB,CAAC,CAC1B,SAAAb,EACA,kBAAAK,EACA,OAAAE,EACA,KAAAI,EACA,IAAAC,CACF,IAGK,CACH,IAAME,EAAWV,EAAcJ,EAAUK,CAAiB,EACpDU,EAAST,EAAYN,EAAUO,CAAM,EACrCS,EAAcN,EAAUV,EAAUW,EAAMC,CAAG,EACjD,MAAO,CACL,GAAIE,GAAY,CAAE,SAAAA,CAAS,EAC3B,GAAIC,GAAU,CAAE,OAAAA,CAAO,EACvB,GAAIC,GAAe,CAAE,KAAMA,CAAY,CACzC,CACF,EAEOC,EAAQJ","sourcesContent":["import type { BuildExportPayloadParams } from 'model/build-export-payload';\nimport {\n Condition,\n EntityMetadataResponse,\n Field,\n} from 'model/entity-metadata';\nimport { ExportFilter, ExportPayload, ExportSort } from 'model/export';\nimport { FilterOperator, SortType } from 'model/filter';\n\nexport type { BuildExportPayloadParams };\n\nconst getFieldByName = (\n metadata: EntityMetadataResponse | undefined,\n fieldName?: string,\n): Field | undefined => {\n if (!metadata?.fields || !fieldName) return undefined;\n return metadata.fields.find(\n field => field.name === fieldName || field.filter_field_name === fieldName,\n );\n};\n\nconst mapToFilterFieldName = (\n metadata: EntityMetadataResponse | undefined,\n fieldName?: string,\n): string | undefined => {\n if (!fieldName) return undefined;\n const field = getFieldByName(metadata, fieldName);\n if (metadata?.fields) {\n return field?.filter_field_name || field?.name;\n }\n return fieldName;\n};\n\nconst buildCriteria = (\n metadata: EntityMetadataResponse | undefined,\n visibleFieldNames?: string[],\n): ExportPayload['criteria'] => {\n if (\n !metadata?.fields ||\n !visibleFieldNames ||\n visibleFieldNames.length === 0\n ) {\n return undefined;\n }\n return visibleFieldNames.filter(fieldName => fieldName !== 'ACTIONS');\n};\n\nconst buildFilter = (\n metadata: EntityMetadataResponse | undefined,\n search?: string,\n): ExportFilter | undefined => {\n const value = search?.trim();\n if (!value) return undefined;\n const searchFieldName =\n mapToFilterFieldName(metadata, metadata?.description_field_name) ||\n mapToFilterFieldName(metadata, 'name');\n if (!searchFieldName) return undefined;\n return {\n operator: FilterOperator.AND,\n groups: [\n {\n operator: FilterOperator.AND,\n conditionals: [\n {\n fieldName: searchFieldName,\n conditional: Condition.LIKE,\n value: [value],\n },\n ],\n },\n ],\n };\n};\n\nconst buildSort = (\n metadata: EntityMetadataResponse | undefined,\n sort?: string,\n dir?: 'asc' | 'desc',\n): ExportSort | undefined => {\n if (!sort || !dir) return undefined;\n const fieldName = mapToFilterFieldName(metadata, sort);\n if (!fieldName) return undefined;\n return {\n fieldName,\n sortType: dir === 'desc' ? SortType.DESC : SortType.ASC,\n };\n};\n\nconst buildExportPayload = ({\n metadata,\n visibleFieldNames,\n search,\n sort,\n dir,\n}: BuildExportPayloadParams): Pick<\n ExportPayload,\n 'criteria' | 'filter' | 'sort'\n> => {\n const criteria = buildCriteria(metadata, visibleFieldNames);\n const filter = buildFilter(metadata, search);\n const sortPayload = buildSort(metadata, sort, dir);\n return {\n ...(criteria && { criteria }),\n ...(filter && { filter }),\n ...(sortPayload && { sort: sortPayload }),\n };\n};\n\nexport default buildExportPayload;\nexport {\n buildCriteria,\n buildFilter,\n buildSort,\n getFieldByName,\n mapToFilterFieldName,\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zydon/common",
3
- "version": "2.7.86",
3
+ "version": "2.7.88",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "./dist/index.js",
@@ -1,26 +0,0 @@
1
- import { a as a$4 } from './chunk-SHJKJLBQ.js';
2
- import { a as a$5 } from './chunk-IJZCVZ32.js';
3
- import { a as a$8 } from './chunk-IDFJFFIV.js';
4
- import { a as a$6 } from './chunk-6U5LS7MP.js';
5
- import { i, j, a as a$2, b as b$2, c, d, f, e, g, h } from './chunk-TB4Y7LXN.js';
6
- import { a as a$9 } from './chunk-I4PPSW36.js';
7
- import { a as a$3 } from './chunk-CO2KQFUN.js';
8
- import { a } from './chunk-VPG46WNM.js';
9
- import { a as a$7 } from './chunk-F65ZXAGV.js';
10
- import { a as a$1 } from './chunk-LQRRMVFN.js';
11
- import { b as b$1 } from './chunk-RPO7AI5K.js';
12
- import { memo, forwardRef, useState, useCallback, useMemo, Children, isValidElement, cloneElement } from 'react';
13
- import Fo from 'react-fast-compare';
14
- import E from '@mui/material/Button';
15
- import zo from '@mui/material/CircularProgress';
16
- import _o from '@mui/material/Divider';
17
- import po from '@mui/material/Stack';
18
- import eo from '@mui/material/Typography';
19
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
20
- import { GridToolbarColumnsButton } from '@mui/x-data-grid-premium';
21
-
22
- var b="datagrid-actions";var Ao=({rowCount:t,page:e,rowsPerPage:r,onPaginationChange:i$1})=>jsxs(i,{children:[jsxs(po,{direction:"row",alignItems:"center",gap:.5,children:[jsx(eo,{variant:"body2",color:"text.disabled",children:"Total de itens:"}),jsx(eo,{variant:"body2",children:t})]}),jsx(j,{count:t,page:e,rowsPerPage:r,onPageChange:n=>i$1(n,r),onRowsPerPageChange:n=>i$1(e,n)})]}),ao=memo(Ao);var io=(t,e)=>Children.map(t,r=>{if(!isValidElement(r))return r;let i=r.props.onClick,n={};n.onClick=(...m)=>{e(),i&&i(...m);};let P=r.props;return P?.children&&(n.children=io(P.children,e)),cloneElement(r,n)}),Ro=({children:t,onClose:e})=>t?io(t,e):null,so=memo(Ro);var Bo=forwardRef(({children:t,...e},r)=>jsx(E,{...e,ref:r,color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:t??"Colunas"}));Bo.displayName="ColumnsButton";var Oo=({setFilterButtonEl:t})=>{let e=useCallback(r=>{t(r);},[t]);return jsx(a$9,{container:b,children:jsx(GridToolbarColumnsButton,{ref:e,slotProps:{button:{color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:"Colunas"}}})})},co=Oo;var Vo=({title:t,headerContent:e$1,breakpoint:r="md",columns:i,rows:n=[],mobileRender:P,rowCount:m=0,paginationModel:s={page:0,pageSize:25},onPaginationChange:C,actions:I,moreActions:M,onAdd:x,onSearch:B,searchValue:mo,onSearchChange:fo,slots:f$1,slotProps:uo,loading:u,fetching:O,containerProps:ho={height:562,maxHeight:562},hideFooter:G,hideHeader:N=!1,showColumnButton:D=!1,...go})=>{let l=a$1(),d$1=b$1("down",r),[Po,Co]=useState(null),H=!!B,A=!!x,k=!!I,T=!!M,v=d$1&&T,w=!d$1&&T,ko=k||A||v,L=w||H||D||!d$1,F=useCallback(()=>jsx(ao,{rowCount:m,page:s.page,rowsPerPage:s.pageSize,onPaginationChange:C}),[m,s,C]),So=useMemo(()=>({...f$1,footer:F,...D&&!f$1?.toolbar&&{toolbar:co}}),[f$1,F,D]);return jsxs(a$2,{breakpoint:r,...ho,flex:u?1:void 0,minHeight:!u&&n.length===0?562:void 0,children:[!N&&jsxs(Fragment,{children:[jsxs(b$2,{breakpoint:r,children:[jsx(eo,{variant:"overline",color:"text.secondary",noWrap:!0,children:t}),ko&&jsxs(c,{breakpoint:r,children:[k&&I,A&&jsxs(Fragment,{children:[k&&jsx(d,{orientation:"vertical",flexItem:!0}),jsx(E,{startIcon:jsx(a,{icon:"SIMPLE_ADD"}),variant:"contained",onClick:x,children:"Adicionar"})]}),v&&jsxs(Fragment,{children:[(k||A)&&jsx(d,{orientation:"vertical",flexItem:!0}),jsx(E,{color:"inherit",startIcon:jsx(a,{icon:"MORE_BOLD"}),size:"small",onClick:l.onOpen,children:"Mais"})]})]})]}),L&&jsxs(f,{breakpoint:r,children:[jsx(po,{flex:1,direction:"row",alignItems:"center",id:b,gap:.5,children:T&&jsxs(Fragment,{children:[w&&jsxs(Fragment,{children:[jsx(E,{color:"inherit",startIcon:jsx(a,{icon:"MORE_BOLD"}),size:"small",onClick:l.onOpen,children:"Mais"}),!d$1&&jsx(e,{orientation:"vertical",flexItem:!0})]}),(w||v)&&jsx(a$3,{open:l.open,anchorEl:l.open,onClose:l.onClose,sx:{minWidth:160},disabledArrow:!0,children:jsx(so,{onClose:l.onClose,children:M})})]})}),H&&jsx(g,{breakpoint:r,children:jsx(a$4,{value:mo,placeholder:"Buscar",onSearch:B,onChange:c=>fo?.(c.target.value),size:"small",fullWidth:!0,iconPosition:"start"})})]})]}),!L&&!N&&jsx(_o,{sx:{mt:2}}),e$1&&e$1,d$1?jsxs(a$5,{isFetching:O,fetching:jsx(a$6,{}),isLoading:u,loading:jsx(zo,{sx:{m:"160px auto"}}),isEmpty:n.length===0,empty:jsx(po,{flex:1,alignItems:"center",justifyContent:"center",children:f$1?.noRowsOverlay?jsx(f$1.noRowsOverlay,{}):jsx(eo,{variant:"body2",color:"text.secondary",children:"Nenhum registro encontrado"})}),children:[jsx(a$7,{fillContent:!0,children:n.map(c=>P(c))}),!G&&jsx(h,{children:jsx(j,{count:m,page:s.page,rowsPerPage:s.pageSize,onPageChange:c=>C(c,s.pageSize),onRowsPerPageChange:c=>C(s.page,c)})})]}):jsx(a$8,{columns:i,rows:n,slots:So,slotProps:{panel:{anchorEl:Po},toolbar:{setFilterButtonEl:Co,showQuickFilter:!0},...uo},columnHeaderHeight:48,getRowHeight:()=>68,loading:u,fetching:O,hideFooter:G,...go})]},u?"loading":"data")},xr=memo(Vo,Fo);
23
-
24
- export { ao as a, so as b, co as c, xr as d };
25
- //# sourceMappingURL=out.js.map
26
- //# sourceMappingURL=chunk-4HWP7ZLZ.js.map