@acvl/mobile-components 0.0.0-stage → 0.0.1

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 (297) hide show
  1. package/README.md +146 -2
  2. package/assets/fonts/Inter_400Regular.ttf +0 -0
  3. package/assets/fonts/Inter_500Medium.ttf +0 -0
  4. package/assets/fonts/Inter_600SemiBold.ttf +0 -0
  5. package/assets/fonts/Inter_700Bold.ttf +0 -0
  6. package/assets/fonts/Inter_800ExtraBold.ttf +0 -0
  7. package/assets/fonts/Inter_900Black.ttf +0 -0
  8. package/assets/fonts/OFL.txt +93 -0
  9. package/lib/module/componentes/AccionesDelEncabezado.js +212 -0
  10. package/lib/module/componentes/AccionesDelEncabezado.js.map +1 -0
  11. package/lib/module/componentes/BotonDeAvatar.js +55 -0
  12. package/lib/module/componentes/BotonDeAvatar.js.map +1 -0
  13. package/lib/module/componentes/BotonGrande.js +105 -0
  14. package/lib/module/componentes/BotonGrande.js.map +1 -0
  15. package/lib/module/componentes/CabeceraEmpujada.js +101 -0
  16. package/lib/module/componentes/CabeceraEmpujada.js.map +1 -0
  17. package/lib/module/componentes/Chip.js +77 -0
  18. package/lib/module/componentes/Chip.js.map +1 -0
  19. package/lib/module/componentes/ContenidoDePantalla.js +56 -0
  20. package/lib/module/componentes/ContenidoDePantalla.js.map +1 -0
  21. package/lib/module/componentes/EstadoVacio.js +65 -0
  22. package/lib/module/componentes/EstadoVacio.js.map +1 -0
  23. package/lib/module/componentes/Foto.js +106 -0
  24. package/lib/module/componentes/Foto.js.map +1 -0
  25. package/lib/module/componentes/IconoDeRenglon.js +44 -0
  26. package/lib/module/componentes/IconoDeRenglon.js.map +1 -0
  27. package/lib/module/componentes/Logo.js +44 -0
  28. package/lib/module/componentes/Logo.js.map +1 -0
  29. package/lib/module/componentes/Nota.js +51 -0
  30. package/lib/module/componentes/Nota.js.map +1 -0
  31. package/lib/module/componentes/OpcionesExcluyentes.js +69 -0
  32. package/lib/module/componentes/OpcionesExcluyentes.js.map +1 -0
  33. package/lib/module/componentes/PantallaDeError.js +84 -0
  34. package/lib/module/componentes/PantallaDeError.js.map +1 -0
  35. package/lib/module/componentes/Pestanas.js +87 -0
  36. package/lib/module/componentes/Pestanas.js.map +1 -0
  37. package/lib/module/componentes/Rotulo.js +28 -0
  38. package/lib/module/componentes/Rotulo.js.map +1 -0
  39. package/lib/module/componentes/RotuloDeSeccion.js +87 -0
  40. package/lib/module/componentes/RotuloDeSeccion.js.map +1 -0
  41. package/lib/module/componentes/Tarjeta.js +47 -0
  42. package/lib/module/componentes/Tarjeta.js.map +1 -0
  43. package/lib/module/componentes/TarjetaDeDatos.js +79 -0
  44. package/lib/module/componentes/TarjetaDeDatos.js.map +1 -0
  45. package/lib/module/componentes/TiraDeFotos.js +184 -0
  46. package/lib/module/componentes/TiraDeFotos.js.map +1 -0
  47. package/lib/module/componentes/VisorDeFoto.js +171 -0
  48. package/lib/module/componentes/VisorDeFoto.js.map +1 -0
  49. package/lib/module/componentes/logos/bola-blanca.png +0 -0
  50. package/lib/module/componentes/logos/bola.png +0 -0
  51. package/lib/module/componentes/logos/logo-blanco.png +0 -0
  52. package/lib/module/componentes/logos/logo.png +0 -0
  53. package/lib/module/dialogos/HostDeDialogos.js +170 -0
  54. package/lib/module/dialogos/HostDeDialogos.js.map +1 -0
  55. package/lib/module/dialogos/dialogos.js +112 -0
  56. package/lib/module/dialogos/dialogos.js.map +1 -0
  57. package/lib/module/formularios/CampoDeSeleccion.js +47 -0
  58. package/lib/module/formularios/CampoDeSeleccion.js.map +1 -0
  59. package/lib/module/formularios/SelectorDeOpcion.js +406 -0
  60. package/lib/module/formularios/SelectorDeOpcion.js.map +1 -0
  61. package/lib/module/formularios/TextoDeAccesoControlado.js +73 -0
  62. package/lib/module/formularios/TextoDeAccesoControlado.js.map +1 -0
  63. package/lib/module/formularios/campos.js +493 -0
  64. package/lib/module/formularios/campos.js.map +1 -0
  65. package/lib/module/formularios/controlados.js +197 -0
  66. package/lib/module/formularios/controlados.js.map +1 -0
  67. package/lib/module/formularios/errores.js +91 -0
  68. package/lib/module/formularios/errores.js.map +1 -0
  69. package/lib/module/formularios/guardado.js +78 -0
  70. package/lib/module/formularios/guardado.js.map +1 -0
  71. package/lib/module/formularios/useBusqueda.js +22 -0
  72. package/lib/module/formularios/useBusqueda.js.map +1 -0
  73. package/lib/module/fotos/elegir.js +178 -0
  74. package/lib/module/fotos/elegir.js.map +1 -0
  75. package/lib/module/fotos/index.js +8 -0
  76. package/lib/module/fotos/index.js.map +1 -0
  77. package/lib/module/fotos/reducir.js +93 -0
  78. package/lib/module/fotos/reducir.js.map +1 -0
  79. package/lib/module/hoja/HojaInferior.js +108 -0
  80. package/lib/module/hoja/HojaInferior.js.map +1 -0
  81. package/lib/module/hoja/index.js +7 -0
  82. package/lib/module/hoja/index.js.map +1 -0
  83. package/lib/module/hoja/useMasDeLaFicha.js +48 -0
  84. package/lib/module/hoja/useMasDeLaFicha.js.map +1 -0
  85. package/lib/module/index.js +66 -0
  86. package/lib/module/index.js.map +1 -0
  87. package/lib/module/listas/HojaDeFiltros.js +260 -0
  88. package/lib/module/listas/HojaDeFiltros.js.map +1 -0
  89. package/lib/module/listas/ListaPaginada.js +103 -0
  90. package/lib/module/listas/ListaPaginada.js.map +1 -0
  91. package/lib/module/listas/TarjetaDeslizable.js +118 -0
  92. package/lib/module/listas/TarjetaDeslizable.js.map +1 -0
  93. package/lib/module/listas/paginado.js +11 -0
  94. package/lib/module/listas/paginado.js.map +1 -0
  95. package/lib/module/listas/piezas.js +603 -0
  96. package/lib/module/listas/piezas.js.map +1 -0
  97. package/lib/module/navegacion/BarraDePestanas.js +162 -0
  98. package/lib/module/navegacion/BarraDePestanas.js.map +1 -0
  99. package/lib/module/navegacion/BotonDeBarra.js +58 -0
  100. package/lib/module/navegacion/BotonDeBarra.js.map +1 -0
  101. package/lib/module/navegacion/encabezado.js +103 -0
  102. package/lib/module/navegacion/encabezado.js.map +1 -0
  103. package/lib/module/pantallas/PantallaDeAcceso.js +195 -0
  104. package/lib/module/pantallas/PantallaDeAcceso.js.map +1 -0
  105. package/lib/module/pantallas/PantallaDeEdicion.js +121 -0
  106. package/lib/module/pantallas/PantallaDeEdicion.js.map +1 -0
  107. package/lib/module/pantallas/PantallaDeFicha.js +94 -0
  108. package/lib/module/pantallas/PantallaDeFicha.js.map +1 -0
  109. package/lib/module/pantallas/PantallaDePerfil.js +137 -0
  110. package/lib/module/pantallas/PantallaDePerfil.js.map +1 -0
  111. package/lib/module/tema/ProveedorDeTema.js +122 -0
  112. package/lib/module/tema/ProveedorDeTema.js.map +1 -0
  113. package/lib/module/tema/estilos.js +54 -0
  114. package/lib/module/tema/estilos.js.map +1 -0
  115. package/lib/module/tema/fuentes.js +28 -0
  116. package/lib/module/tema/fuentes.js.map +1 -0
  117. package/lib/module/tema/index.js +8 -0
  118. package/lib/module/tema/index.js.map +1 -0
  119. package/lib/module/tema/paleta.js +107 -0
  120. package/lib/module/tema/paleta.js.map +1 -0
  121. package/lib/module/tema/tipografia.js +32 -0
  122. package/lib/module/tema/tipografia.js.map +1 -0
  123. package/lib/module/texto.js +48 -0
  124. package/lib/module/texto.js.map +1 -0
  125. package/lib/typescript/src/componentes/AccionesDelEncabezado.d.ts +34 -0
  126. package/lib/typescript/src/componentes/AccionesDelEncabezado.d.ts.map +1 -0
  127. package/lib/typescript/src/componentes/BotonDeAvatar.d.ts +17 -0
  128. package/lib/typescript/src/componentes/BotonDeAvatar.d.ts.map +1 -0
  129. package/lib/typescript/src/componentes/BotonGrande.d.ts +26 -0
  130. package/lib/typescript/src/componentes/BotonGrande.d.ts.map +1 -0
  131. package/lib/typescript/src/componentes/CabeceraEmpujada.d.ts +18 -0
  132. package/lib/typescript/src/componentes/CabeceraEmpujada.d.ts.map +1 -0
  133. package/lib/typescript/src/componentes/Chip.d.ts +14 -0
  134. package/lib/typescript/src/componentes/Chip.d.ts.map +1 -0
  135. package/lib/typescript/src/componentes/ContenidoDePantalla.d.ts +17 -0
  136. package/lib/typescript/src/componentes/ContenidoDePantalla.d.ts.map +1 -0
  137. package/lib/typescript/src/componentes/EstadoVacio.d.ts +17 -0
  138. package/lib/typescript/src/componentes/EstadoVacio.d.ts.map +1 -0
  139. package/lib/typescript/src/componentes/Foto.d.ts +41 -0
  140. package/lib/typescript/src/componentes/Foto.d.ts.map +1 -0
  141. package/lib/typescript/src/componentes/IconoDeRenglon.d.ts +25 -0
  142. package/lib/typescript/src/componentes/IconoDeRenglon.d.ts.map +1 -0
  143. package/lib/typescript/src/componentes/Logo.d.ts +13 -0
  144. package/lib/typescript/src/componentes/Logo.d.ts.map +1 -0
  145. package/lib/typescript/src/componentes/Nota.d.ts +7 -0
  146. package/lib/typescript/src/componentes/Nota.d.ts.map +1 -0
  147. package/lib/typescript/src/componentes/OpcionesExcluyentes.d.ts +14 -0
  148. package/lib/typescript/src/componentes/OpcionesExcluyentes.d.ts.map +1 -0
  149. package/lib/typescript/src/componentes/PantallaDeError.d.ts +23 -0
  150. package/lib/typescript/src/componentes/PantallaDeError.d.ts.map +1 -0
  151. package/lib/typescript/src/componentes/Pestanas.d.ts +28 -0
  152. package/lib/typescript/src/componentes/Pestanas.d.ts.map +1 -0
  153. package/lib/typescript/src/componentes/Rotulo.d.ts +6 -0
  154. package/lib/typescript/src/componentes/Rotulo.d.ts.map +1 -0
  155. package/lib/typescript/src/componentes/RotuloDeSeccion.d.ts +20 -0
  156. package/lib/typescript/src/componentes/RotuloDeSeccion.d.ts.map +1 -0
  157. package/lib/typescript/src/componentes/Tarjeta.d.ts +15 -0
  158. package/lib/typescript/src/componentes/Tarjeta.d.ts.map +1 -0
  159. package/lib/typescript/src/componentes/TarjetaDeDatos.d.ts +13 -0
  160. package/lib/typescript/src/componentes/TarjetaDeDatos.d.ts.map +1 -0
  161. package/lib/typescript/src/componentes/TiraDeFotos.d.ts +36 -0
  162. package/lib/typescript/src/componentes/TiraDeFotos.d.ts.map +1 -0
  163. package/lib/typescript/src/componentes/VisorDeFoto.d.ts +23 -0
  164. package/lib/typescript/src/componentes/VisorDeFoto.d.ts.map +1 -0
  165. package/lib/typescript/src/dialogos/HostDeDialogos.d.ts +14 -0
  166. package/lib/typescript/src/dialogos/HostDeDialogos.d.ts.map +1 -0
  167. package/lib/typescript/src/dialogos/dialogos.d.ts +65 -0
  168. package/lib/typescript/src/dialogos/dialogos.d.ts.map +1 -0
  169. package/lib/typescript/src/formularios/CampoDeSeleccion.d.ts +22 -0
  170. package/lib/typescript/src/formularios/CampoDeSeleccion.d.ts.map +1 -0
  171. package/lib/typescript/src/formularios/SelectorDeOpcion.d.ts +59 -0
  172. package/lib/typescript/src/formularios/SelectorDeOpcion.d.ts.map +1 -0
  173. package/lib/typescript/src/formularios/TextoDeAccesoControlado.d.ts +18 -0
  174. package/lib/typescript/src/formularios/TextoDeAccesoControlado.d.ts.map +1 -0
  175. package/lib/typescript/src/formularios/campos.d.ts +107 -0
  176. package/lib/typescript/src/formularios/campos.d.ts.map +1 -0
  177. package/lib/typescript/src/formularios/controlados.d.ts +29 -0
  178. package/lib/typescript/src/formularios/controlados.d.ts.map +1 -0
  179. package/lib/typescript/src/formularios/errores.d.ts +36 -0
  180. package/lib/typescript/src/formularios/errores.d.ts.map +1 -0
  181. package/lib/typescript/src/formularios/guardado.d.ts +36 -0
  182. package/lib/typescript/src/formularios/guardado.d.ts.map +1 -0
  183. package/lib/typescript/src/formularios/useBusqueda.d.ts +7 -0
  184. package/lib/typescript/src/formularios/useBusqueda.d.ts.map +1 -0
  185. package/lib/typescript/src/fotos/elegir.d.ts +58 -0
  186. package/lib/typescript/src/fotos/elegir.d.ts.map +1 -0
  187. package/lib/typescript/src/fotos/index.d.ts +3 -0
  188. package/lib/typescript/src/fotos/index.d.ts.map +1 -0
  189. package/lib/typescript/src/fotos/reducir.d.ts +32 -0
  190. package/lib/typescript/src/fotos/reducir.d.ts.map +1 -0
  191. package/lib/typescript/src/hoja/HojaInferior.d.ts +21 -0
  192. package/lib/typescript/src/hoja/HojaInferior.d.ts.map +1 -0
  193. package/lib/typescript/src/hoja/index.d.ts +3 -0
  194. package/lib/typescript/src/hoja/index.d.ts.map +1 -0
  195. package/lib/typescript/src/hoja/useMasDeLaFicha.d.ts +27 -0
  196. package/lib/typescript/src/hoja/useMasDeLaFicha.d.ts.map +1 -0
  197. package/lib/typescript/src/index.d.ts +45 -0
  198. package/lib/typescript/src/index.d.ts.map +1 -0
  199. package/lib/typescript/src/listas/HojaDeFiltros.d.ts +60 -0
  200. package/lib/typescript/src/listas/HojaDeFiltros.d.ts.map +1 -0
  201. package/lib/typescript/src/listas/ListaPaginada.d.ts +39 -0
  202. package/lib/typescript/src/listas/ListaPaginada.d.ts.map +1 -0
  203. package/lib/typescript/src/listas/TarjetaDeslizable.d.ts +33 -0
  204. package/lib/typescript/src/listas/TarjetaDeslizable.d.ts.map +1 -0
  205. package/lib/typescript/src/listas/paginado.d.ts +16 -0
  206. package/lib/typescript/src/listas/paginado.d.ts.map +1 -0
  207. package/lib/typescript/src/listas/piezas.d.ts +135 -0
  208. package/lib/typescript/src/listas/piezas.d.ts.map +1 -0
  209. package/lib/typescript/src/navegacion/BarraDePestanas.d.ts +57 -0
  210. package/lib/typescript/src/navegacion/BarraDePestanas.d.ts.map +1 -0
  211. package/lib/typescript/src/navegacion/BotonDeBarra.d.ts +15 -0
  212. package/lib/typescript/src/navegacion/BotonDeBarra.d.ts.map +1 -0
  213. package/lib/typescript/src/navegacion/encabezado.d.ts +44 -0
  214. package/lib/typescript/src/navegacion/encabezado.d.ts.map +1 -0
  215. package/lib/typescript/src/pantallas/PantallaDeAcceso.d.ts +32 -0
  216. package/lib/typescript/src/pantallas/PantallaDeAcceso.d.ts.map +1 -0
  217. package/lib/typescript/src/pantallas/PantallaDeEdicion.d.ts +38 -0
  218. package/lib/typescript/src/pantallas/PantallaDeEdicion.d.ts.map +1 -0
  219. package/lib/typescript/src/pantallas/PantallaDeFicha.d.ts +35 -0
  220. package/lib/typescript/src/pantallas/PantallaDeFicha.d.ts.map +1 -0
  221. package/lib/typescript/src/pantallas/PantallaDePerfil.d.ts +19 -0
  222. package/lib/typescript/src/pantallas/PantallaDePerfil.d.ts.map +1 -0
  223. package/lib/typescript/src/tema/ProveedorDeTema.d.ts +32 -0
  224. package/lib/typescript/src/tema/ProveedorDeTema.d.ts.map +1 -0
  225. package/lib/typescript/src/tema/estilos.d.ts +31 -0
  226. package/lib/typescript/src/tema/estilos.d.ts.map +1 -0
  227. package/lib/typescript/src/tema/fuentes.d.ts +20 -0
  228. package/lib/typescript/src/tema/fuentes.d.ts.map +1 -0
  229. package/lib/typescript/src/tema/index.d.ts +6 -0
  230. package/lib/typescript/src/tema/index.d.ts.map +1 -0
  231. package/lib/typescript/src/tema/paleta.d.ts +86 -0
  232. package/lib/typescript/src/tema/paleta.d.ts.map +1 -0
  233. package/lib/typescript/src/tema/tipografia.d.ts +29 -0
  234. package/lib/typescript/src/tema/tipografia.d.ts.map +1 -0
  235. package/lib/typescript/src/texto.d.ts +16 -0
  236. package/lib/typescript/src/texto.d.ts.map +1 -0
  237. package/package.json +135 -5
  238. package/src/componentes/AccionesDelEncabezado.tsx +247 -0
  239. package/src/componentes/BotonDeAvatar.tsx +59 -0
  240. package/src/componentes/BotonGrande.tsx +100 -0
  241. package/src/componentes/CabeceraEmpujada.tsx +69 -0
  242. package/src/componentes/Chip.tsx +60 -0
  243. package/src/componentes/ContenidoDePantalla.tsx +53 -0
  244. package/src/componentes/EstadoVacio.tsx +45 -0
  245. package/src/componentes/Foto.tsx +92 -0
  246. package/src/componentes/IconoDeRenglon.tsx +42 -0
  247. package/src/componentes/Logo.tsx +34 -0
  248. package/src/componentes/Nota.tsx +37 -0
  249. package/src/componentes/OpcionesExcluyentes.tsx +62 -0
  250. package/src/componentes/PantallaDeError.tsx +76 -0
  251. package/src/componentes/Pestanas.tsx +86 -0
  252. package/src/componentes/Rotulo.tsx +21 -0
  253. package/src/componentes/RotuloDeSeccion.tsx +71 -0
  254. package/src/componentes/Tarjeta.tsx +44 -0
  255. package/src/componentes/TarjetaDeDatos.tsx +62 -0
  256. package/src/componentes/TiraDeFotos.tsx +189 -0
  257. package/src/componentes/VisorDeFoto.tsx +181 -0
  258. package/src/componentes/logos/bola-blanca.png +0 -0
  259. package/src/componentes/logos/bola.png +0 -0
  260. package/src/componentes/logos/logo-blanco.png +0 -0
  261. package/src/componentes/logos/logo.png +0 -0
  262. package/src/dialogos/HostDeDialogos.tsx +172 -0
  263. package/src/dialogos/dialogos.ts +148 -0
  264. package/src/formularios/CampoDeSeleccion.tsx +46 -0
  265. package/src/formularios/SelectorDeOpcion.tsx +407 -0
  266. package/src/formularios/TextoDeAccesoControlado.tsx +72 -0
  267. package/src/formularios/campos.tsx +483 -0
  268. package/src/formularios/controlados.tsx +198 -0
  269. package/src/formularios/errores.ts +105 -0
  270. package/src/formularios/guardado.ts +76 -0
  271. package/src/formularios/useBusqueda.ts +19 -0
  272. package/src/fotos/elegir.ts +194 -0
  273. package/src/fotos/index.ts +15 -0
  274. package/src/fotos/reducir.ts +87 -0
  275. package/src/hoja/HojaInferior.tsx +102 -0
  276. package/src/hoja/index.ts +4 -0
  277. package/src/hoja/useMasDeLaFicha.tsx +63 -0
  278. package/src/index.ts +143 -0
  279. package/src/listas/HojaDeFiltros.tsx +261 -0
  280. package/src/listas/ListaPaginada.tsx +117 -0
  281. package/src/listas/TarjetaDeslizable.tsx +126 -0
  282. package/src/listas/paginado.ts +15 -0
  283. package/src/listas/piezas.tsx +594 -0
  284. package/src/navegacion/BarraDePestanas.tsx +198 -0
  285. package/src/navegacion/BotonDeBarra.tsx +61 -0
  286. package/src/navegacion/encabezado.tsx +88 -0
  287. package/src/pantallas/PantallaDeAcceso.tsx +184 -0
  288. package/src/pantallas/PantallaDeEdicion.tsx +116 -0
  289. package/src/pantallas/PantallaDeFicha.tsx +115 -0
  290. package/src/pantallas/PantallaDePerfil.tsx +126 -0
  291. package/src/tema/ProveedorDeTema.tsx +150 -0
  292. package/src/tema/estilos.ts +51 -0
  293. package/src/tema/fuentes.ts +20 -0
  294. package/src/tema/index.ts +10 -0
  295. package/src/tema/paleta.ts +147 -0
  296. package/src/tema/tipografia.ts +29 -0
  297. package/src/texto.tsx +44 -0
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+
3
+ import React from "react";
4
+ import { Controller } from "react-hook-form";
5
+ import CampoDeSeleccion, { CampoDeVarias } from "./CampoDeSeleccion";
6
+ import { CampoDeFecha, CampoDeFechaHora, CampoDeOpciones, CampoDeTelefono, CampoDeTexto, CampoInterruptor } from "./campos";
7
+
8
+ /**
9
+ * Los campos de `campos.tsx` ya atados a un formulario de react-hook-form: reciben `control` y
10
+ * `name` y se cuelgan su valor y su error. Así un formulario largo (un tracto, una caja, un
11
+ * operador) es una lista de campos y no una de `Controller`.
12
+ *
13
+ * Un campo propio de una app (un catálogo de su API, una dirección) se ata igual, con `CampoAtado`
14
+ * y `SinValor`.
15
+ */
16
+
17
+ /** Lo que un campo controlado recibe para atarse al formulario. */
18
+
19
+ /** Las props de un campo sin lo que pone el `Controller`. */
20
+ import { jsx as _jsx } from "react/jsx-runtime";
21
+ export function TextoControlado({
22
+ control,
23
+ name,
24
+ ...props
25
+ }) {
26
+ return /*#__PURE__*/_jsx(Controller, {
27
+ name: name,
28
+ control: control,
29
+ render: ({
30
+ field: {
31
+ value,
32
+ onChange
33
+ },
34
+ fieldState
35
+ }) => /*#__PURE__*/_jsx(CampoDeTexto, {
36
+ ...props,
37
+ valor: value ?? "",
38
+ onCambiar: onChange,
39
+ error: fieldState.error?.message
40
+ })
41
+ });
42
+ }
43
+ export function InterruptorControlado({
44
+ control,
45
+ name,
46
+ ...props
47
+ }) {
48
+ return /*#__PURE__*/_jsx(Controller, {
49
+ name: name,
50
+ control: control,
51
+ render: ({
52
+ field: {
53
+ value,
54
+ onChange
55
+ },
56
+ fieldState
57
+ }) => /*#__PURE__*/_jsx(CampoInterruptor, {
58
+ ...props,
59
+ valor: Boolean(value),
60
+ onCambiar: onChange,
61
+ error: fieldState.error?.message
62
+ })
63
+ });
64
+ }
65
+ export function FechaControlada({
66
+ control,
67
+ name,
68
+ ...props
69
+ }) {
70
+ return /*#__PURE__*/_jsx(Controller, {
71
+ name: name,
72
+ control: control,
73
+ render: ({
74
+ field: {
75
+ value,
76
+ onChange
77
+ },
78
+ fieldState
79
+ }) => /*#__PURE__*/_jsx(CampoDeFecha, {
80
+ ...props,
81
+ valor: value ?? null,
82
+ onCambiar: onChange,
83
+ error: fieldState.error?.message
84
+ })
85
+ });
86
+ }
87
+ export function FechaHoraControlada({
88
+ control,
89
+ name,
90
+ ...props
91
+ }) {
92
+ return /*#__PURE__*/_jsx(Controller, {
93
+ name: name,
94
+ control: control,
95
+ render: ({
96
+ field: {
97
+ value,
98
+ onChange
99
+ },
100
+ fieldState
101
+ }) => /*#__PURE__*/_jsx(CampoDeFechaHora, {
102
+ ...props,
103
+ valor: value ?? null,
104
+ onCambiar: onChange,
105
+ error: fieldState.error?.message
106
+ })
107
+ });
108
+ }
109
+ export function OpcionesControladas({
110
+ control,
111
+ name,
112
+ ...props
113
+ }) {
114
+ return /*#__PURE__*/_jsx(Controller, {
115
+ name: name,
116
+ control: control,
117
+ render: ({
118
+ field: {
119
+ value,
120
+ onChange
121
+ },
122
+ fieldState
123
+ }) => /*#__PURE__*/_jsx(CampoDeOpciones, {
124
+ ...props,
125
+ valor: value ?? null,
126
+ onElegir: onChange,
127
+ error: fieldState.error?.message
128
+ })
129
+ });
130
+ }
131
+ export function SeleccionControlada({
132
+ control,
133
+ name,
134
+ ...props
135
+ }) {
136
+ return /*#__PURE__*/_jsx(Controller, {
137
+ name: name,
138
+ control: control,
139
+ render: ({
140
+ field: {
141
+ value,
142
+ onChange
143
+ },
144
+ fieldState
145
+ }) => /*#__PURE__*/_jsx(CampoDeSeleccion, {
146
+ ...props,
147
+ valor: value ?? null,
148
+ onElegir: onChange,
149
+ error: fieldState.error?.message
150
+ })
151
+ });
152
+ }
153
+ export function TelefonoControlado({
154
+ control,
155
+ name,
156
+ ...props
157
+ }) {
158
+ return /*#__PURE__*/_jsx(Controller, {
159
+ name: name,
160
+ control: control,
161
+ render: ({
162
+ field: {
163
+ value,
164
+ onChange
165
+ },
166
+ fieldState
167
+ }) => /*#__PURE__*/_jsx(CampoDeTelefono, {
168
+ ...props,
169
+ valor: value ?? null,
170
+ onCambiar: onChange,
171
+ error: fieldState.error?.message
172
+ })
173
+ });
174
+ }
175
+ export function VariasControladas({
176
+ control,
177
+ name,
178
+ ...props
179
+ }) {
180
+ return /*#__PURE__*/_jsx(Controller, {
181
+ name: name,
182
+ control: control,
183
+ render: ({
184
+ field: {
185
+ value,
186
+ onChange
187
+ },
188
+ fieldState
189
+ }) => /*#__PURE__*/_jsx(CampoDeVarias, {
190
+ ...props,
191
+ valor: value ?? [],
192
+ onElegir: onChange,
193
+ error: fieldState.error?.message
194
+ })
195
+ });
196
+ }
197
+ //# sourceMappingURL=controlados.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Controller","CampoDeSeleccion","CampoDeVarias","CampoDeFecha","CampoDeFechaHora","CampoDeOpciones","CampoDeTelefono","CampoDeTexto","CampoInterruptor","jsx","_jsx","TextoControlado","control","name","props","render","field","value","onChange","fieldState","valor","onCambiar","error","message","InterruptorControlado","Boolean","FechaControlada","FechaHoraControlada","OpcionesControladas","onElegir","SeleccionControlada","TelefonoControlado","VariasControladas"],"sourceRoot":"../../../src","sources":["formularios/controlados.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ /** Si un texto es una página HTML y no un mensaje. */
4
+ const pareceHtml = texto => /^\s*</.test(texto) || /<(html|body|head)[\s>]/i.test(texto);
5
+
6
+ /**
7
+ * El mensaje que el backend mandó, listo para enseñárselo al usuario.
8
+ *
9
+ * Los errores de los backends de ACV salen de `drf_simple_api_errors`, que responde
10
+ * `{ title, detail?: string[], invalid_params?: [{ name, reason: string[] }] }`. Llegan en dos
11
+ * formas y se leen las dos:
12
+ *
13
+ * - `detail`: los errores de regla, que no cuelgan de un campo (el orden de los pasos, «falta lo
14
+ * que la acción pide»). Si vienen varios se juntan todos, uno por renglón: enseñar sólo el
15
+ * primero obligaba a corregir y reintentar para descubrir el siguiente.
16
+ * - `invalid_params`: los de un campo (`clave`, `lng`, `fecha_real`), cada uno con su motivo.
17
+ *
18
+ * `title` es la etiqueta del tipo de error («Validation error.»), que sola no le dice nada a
19
+ * nadie: sólo se usa si no hay nada más.
20
+ *
21
+ * Sirve para el feedback de una acción —un aviso, Pendientes—, no para pintar errores en los
22
+ * campos de un formulario: eso lo hace `setErrors` con `invalid_params`.
23
+ */
24
+ export const mensajeDeError = (error, fallback) => {
25
+ const data = error?.data;
26
+ if (typeof data === "string" && data) {
27
+ // Una página de error de un proxy (un 413 o un 502 de nginx) llega como `PARSING_ERROR`
28
+ // con el HTML en `data`: enseñarla tal cual llenaba Pendientes de etiquetas. Va el
29
+ // mensaje genérico con el código.
30
+ if (pareceHtml(data)) {
31
+ const codigo = error?.originalStatus ?? error?.status;
32
+ return typeof codigo === "number" ? `${fallback} (error ${codigo})` : fallback;
33
+ }
34
+ return data;
35
+ }
36
+ if (data && typeof data === "object") {
37
+ const renglones = [];
38
+ if (Array.isArray(data.detail)) renglones.push(...data.detail.map(String));else if (typeof data.detail === "string" && data.detail) renglones.push(data.detail);
39
+ for (const param of Array.isArray(data.invalid_params) ? data.invalid_params : []) {
40
+ const razon = Array.isArray(param?.reason) ? param.reason.join(" ") : param?.reason;
41
+ if (razon) renglones.push(String(razon));
42
+ }
43
+ const limpios = renglones.map(r => r.trim()).filter(Boolean);
44
+ if (limpios.length) return limpios.join("\n");
45
+ if (typeof data.title === "string" && data.title) return data.title;
46
+ }
47
+
48
+ // Un `Error` de la propia app (p. ej. el dispositivo no sabe compartir archivos) no trae
49
+ // `data`: su mensaje ya está escrito para el usuario.
50
+ if (typeof error?.message === "string" && error.message) return error.message;
51
+ return fallback;
52
+ };
53
+
54
+ /**
55
+ * Vuelca los motivos de un 400 sobre los campos del formulario.
56
+ *
57
+ * El backend responde en RFC 7807 (`invalid_params: [{ name, reason }]`). Un campo suelto trae
58
+ * su motivo como lista de textos y se cuelga de su nombre tal cual. Una **lista editable**
59
+ * (`useFieldArray`) trae en su lugar un objeto por renglón —vacío si ese
60
+ * renglón está bien—, que es como DRF reporta un serializador anidado `many=True`; ahí el motivo
61
+ * va a `lista.<índice>.<campo>`, que es justo como se llaman los inputs de la fila, para que se
62
+ * pinte sobre el campo que falla.
63
+ *
64
+ * Sin ese segundo caso el error quedaba a nombre de la lista entera, donde no hay ningún input
65
+ * registrado: quien capturaba sólo veía el aviso genérico de que no se pudo guardar. Es la misma
66
+ * traducción que hace el portal (`setErrors` de @acvl/frontend-components), así que la forma de
67
+ * la respuesta es una sola para los dos clientes.
68
+ */
69
+ export const setErrors = (form, error) => {
70
+ // Sin respuesta (una falla de red) o un 400 de regla sin campos (`invalid_params: null`): no
71
+ // hay nada que colgar de los campos, y quien llama ya enseña el aviso general.
72
+ const params = error?.data?.invalid_params;
73
+ if (!params || typeof params !== "object") return;
74
+ Object.values(params).forEach(param => {
75
+ const porRenglon = Array.isArray(param.reason) && param.reason.length > 0 && param.reason.every(renglon => typeof renglon === "object" && renglon !== null && !Array.isArray(renglon));
76
+ if (porRenglon) {
77
+ param.reason.forEach((renglon, indice) => {
78
+ Object.entries(renglon).forEach(([campo, motivos]) => {
79
+ form.setError(`${param.name}.${indice}.${campo}`, {
80
+ message: Array.isArray(motivos) ? motivos.join(", ") : String(motivos)
81
+ });
82
+ });
83
+ });
84
+ return;
85
+ }
86
+ form.setError(param.name, {
87
+ message: Array.isArray(param.reason) ? param.reason.join(", ") : param.reason
88
+ });
89
+ });
90
+ };
91
+ //# sourceMappingURL=errores.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["pareceHtml","texto","test","mensajeDeError","error","fallback","data","codigo","originalStatus","status","renglones","Array","isArray","detail","push","map","String","param","invalid_params","razon","reason","join","limpios","r","trim","filter","Boolean","length","title","message","setErrors","form","params","Object","values","forEach","porRenglon","every","renglon","indice","entries","campo","motivos","setError","name"],"sourceRoot":"../../../src","sources":["formularios/errores.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ import { router } from "expo-router";
4
+ import React from "react";
5
+ import { avisar } from "../dialogos/dialogos";
6
+ import { mensajeDeError, setErrors } from "./errores";
7
+
8
+ /**
9
+ * Lo que comparten los formularios de edición: cómo se compara lo capturado contra lo que vino,
10
+ * cómo se lee un rechazo del servidor y cómo se guarda.
11
+ */
12
+
13
+ /** Un texto anulable como se manda: sin espacios a los lados, y vacío es `null`. */
14
+ export const textoONulo = texto => {
15
+ const limpio = (texto ?? "").trim();
16
+ return limpio ? limpio : null;
17
+ };
18
+
19
+ /** Una fecha como se manda: ISO **con su hora** (la hora es el dato), o `null`. */
20
+ export const isoONulo = fecha => fecha ? fecha.toISOString() : null;
21
+
22
+ /** Una fecha del servidor como la captura el formulario. */
23
+ export const fechaONula = iso => iso ? new Date(iso) : null;
24
+
25
+ /** Si dos instantes son el mismo; dos nulos también lo son. */
26
+ export const mismoInstante = (a, b) => (a?.getTime() ?? null) === (b?.getTime() ?? null);
27
+
28
+ /**
29
+ * Cuelga de cada campo el motivo con el que el servidor lo rechazó (`invalid_params`). Sólo si
30
+ * vienen como lista: un 400 de regla trae `detail` y `invalid_params` nulo, y `setErrors` no lo
31
+ * aguanta. Lo que no es de un campo lo dice quien llama, con `mensajeDeError`.
32
+ */
33
+ export const volcarErrores = (form, error) => {
34
+ const data = error?.data;
35
+ if (data && Array.isArray(data.invalid_params)) setErrors(form, error);
36
+ };
37
+
38
+ /**
39
+ * Guardar un formulario de edición, igual en todos: si nada cambió, sólo se regresa; si el
40
+ * servidor lo rechaza, cada motivo se cuelga de su campo (`volcarErrores`), el mensaje queda
41
+ * abajo del formulario (`error`) y se avisa. Al guardar, regresa a la pantalla de antes.
42
+ */
43
+ export function useGuardado(form) {
44
+ const [error, setError] = React.useState(null);
45
+ const guardar = async (cambios, mandar) => {
46
+ if (Object.keys(cambios).length === 0) {
47
+ router.back();
48
+ return;
49
+ }
50
+ setError(null);
51
+ try {
52
+ await mandar();
53
+ router.back();
54
+ } catch (falla) {
55
+ volcarErrores(form, falla);
56
+ const mensaje = mensajeDeError(falla, "Revisa la señal e intenta de nuevo.");
57
+ setError(mensaje);
58
+ await avisar({
59
+ titulo: "No se guardó",
60
+ mensaje,
61
+ icono: "alert-circle-outline"
62
+ });
63
+ }
64
+ };
65
+ return {
66
+ error,
67
+ guardar
68
+ };
69
+ }
70
+
71
+ /**
72
+ * De dos cuerpos completos —lo que se mandaría con lo que vino y con lo capturado—, sólo las
73
+ * llaves que cambiaron, como el `formParser` del portal: un `PATCH` con todo pisaría lo que alguien
74
+ * cambió en el portal mientras la pantalla estaba abierta. Compara por valor (`JSON`), así que
75
+ * sirve con listas y objetos (los contactos, una dirección).
76
+ */
77
+ export const soloLoQueCambio = (antes, despues) => Object.fromEntries(Object.entries(despues).filter(([llave, valor]) => JSON.stringify(valor) !== JSON.stringify(antes[llave])));
78
+ //# sourceMappingURL=guardado.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["router","React","avisar","mensajeDeError","setErrors","textoONulo","texto","limpio","trim","isoONulo","fecha","toISOString","fechaONula","iso","Date","mismoInstante","a","b","getTime","volcarErrores","form","error","data","Array","isArray","invalid_params","useGuardado","setError","useState","guardar","cambios","mandar","Object","keys","length","back","falla","mensaje","titulo","icono","soloLoQueCambio","antes","despues","fromEntries","entries","filter","llave","valor","JSON","stringify"],"sourceRoot":"../../../src","sources":["formularios/guardado.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,aAAa;AACpC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,cAAc,EAAEC,SAAS,QAAQ,WAAW;;AAErD;AACA;AACA;AACA;;AAEA;AACA,OAAO,MAAMC,UAAU,GAAIC,KAAgC,IAAoB;EAC3E,MAAMC,MAAM,GAAG,CAACD,KAAK,IAAI,EAAE,EAAEE,IAAI,CAAC,CAAC;EACnC,OAAOD,MAAM,GAAGA,MAAM,GAAG,IAAI;AACjC,CAAC;;AAED;AACA,OAAO,MAAME,QAAQ,GAAIC,KAAkB,IAAqBA,KAAK,GAAGA,KAAK,CAACC,WAAW,CAAC,CAAC,GAAG,IAAK;;AAEnG;AACA,OAAO,MAAMC,UAAU,GAAIC,GAA8B,IACrDA,GAAG,GAAG,IAAIC,IAAI,CAACD,GAAG,CAAC,GAAG,IAAI;;AAE9B;AACA,OAAO,MAAME,aAAa,GAAGA,CAACC,CAAc,EAAEC,CAAc,KACxD,CAACD,CAAC,EAAEE,OAAO,CAAC,CAAC,IAAI,IAAI,OAAOD,CAAC,EAAEC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;;AAErD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGA,CAAwBC,IAAsB,EAAEC,KAAc,KAAK;EAC5F,MAAMC,IAAI,GAAID,KAAK,EAAqDC,IAAI;EAC5E,IAAIA,IAAI,IAAIC,KAAK,CAACC,OAAO,CAACF,IAAI,CAACG,cAAc,CAAC,EAAErB,SAAS,CAACgB,IAAI,EAAEC,KAAK,CAAC;AAC1E,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,SAASK,WAAWA,CAAwBN,IAAsB,EAAE;EACvE,MAAM,CAACC,KAAK,EAAEM,QAAQ,CAAC,GAAG1B,KAAK,CAAC2B,QAAQ,CAAgB,IAAI,CAAC;EAC7D,MAAMC,OAAO,GAAG,MAAAA,CAAOC,OAAe,EAAEC,MAA8B,KAAK;IACvE,IAAIC,MAAM,CAACC,IAAI,CAACH,OAAO,CAAC,CAACI,MAAM,KAAK,CAAC,EAAE;MACnClC,MAAM,CAACmC,IAAI,CAAC,CAAC;MACb;IACJ;IACAR,QAAQ,CAAC,IAAI,CAAC;IACd,IAAI;MACA,MAAMI,MAAM,CAAC,CAAC;MACd/B,MAAM,CAACmC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC,OAAOC,KAAK,EAAE;MACZjB,aAAa,CAACC,IAAI,EAAEgB,KAAK,CAAC;MAC1B,MAAMC,OAAO,GAAGlC,cAAc,CAACiC,KAAK,EAAE,qCAAqC,CAAC;MAC5ET,QAAQ,CAACU,OAAO,CAAC;MACjB,MAAMnC,MAAM,CAAC;QAAEoC,MAAM,EAAE,cAAc;QAAED,OAAO;QAAEE,KAAK,EAAE;MAAuB,CAAC,CAAC;IACpF;EACJ,CAAC;EACD,OAAO;IAAElB,KAAK;IAAEQ;EAAQ,CAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMW,eAAe,GAAGA,CAAoCC,KAAQ,EAAEC,OAAU,KACnFV,MAAM,CAACW,WAAW,CACdX,MAAM,CAACY,OAAO,CAACF,OAAO,CAAC,CAACG,MAAM,CAC1B,CAAC,CAACC,KAAK,EAAEC,KAAK,CAAC,KAAKC,IAAI,CAACC,SAAS,CAACF,KAAK,CAAC,KAAKC,IAAI,CAACC,SAAS,CAACR,KAAK,CAACK,KAAK,CAAC,CAC7E,CACJ,CAAe","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import React from "react";
4
+
5
+ /** Lo que tarda en buscar después de la última tecla: no una petición por letra. */
6
+ const PAUSA_MS = 300;
7
+
8
+ /**
9
+ * Un buscador que pide al servidor: `[texto, busqueda, setTexto]`. `texto` es lo escrito, al
10
+ * momento, para el campo; `busqueda` es lo mismo sin espacios a los lados y **300 ms después de la
11
+ * última tecla**, para la consulta.
12
+ */
13
+ export function useBusqueda() {
14
+ const [texto, setTexto] = React.useState("");
15
+ const [busqueda, setBusqueda] = React.useState("");
16
+ React.useEffect(() => {
17
+ const espera = setTimeout(() => setBusqueda(texto.trim()), PAUSA_MS);
18
+ return () => clearTimeout(espera);
19
+ }, [texto]);
20
+ return [texto, busqueda, setTexto];
21
+ }
22
+ //# sourceMappingURL=useBusqueda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","PAUSA_MS","useBusqueda","texto","setTexto","useState","busqueda","setBusqueda","useEffect","espera","setTimeout","trim","clearTimeout"],"sourceRoot":"../../../src","sources":["formularios/useBusqueda.ts"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;;AAEzB;AACA,MAAMC,QAAQ,GAAG,GAAG;;AAEpB;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAA,EAA8C;EACrE,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGJ,KAAK,CAACK,QAAQ,CAAC,EAAE,CAAC;EAC5C,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGP,KAAK,CAACK,QAAQ,CAAC,EAAE,CAAC;EAClDL,KAAK,CAACQ,SAAS,CAAC,MAAM;IAClB,MAAMC,MAAM,GAAGC,UAAU,CAAC,MAAMH,WAAW,CAACJ,KAAK,CAACQ,IAAI,CAAC,CAAC,CAAC,EAAEV,QAAQ,CAAC;IACpE,OAAO,MAAMW,YAAY,CAACH,MAAM,CAAC;EACrC,CAAC,EAAE,CAACN,KAAK,CAAC,CAAC;EACX,OAAO,CAACA,KAAK,EAAEG,QAAQ,EAAEF,QAAQ,CAAC;AACtC","ignoreList":[]}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ // Elegir una foto o un archivo para subirlo: de la cámara, de la galería o un documento. Contesta lo
4
+ // elegido ya listo para el `FormData` (las fotos reducidas a 1920 px); qué se hace con él —subirlo
5
+ // en el momento, guardarlo para una cola— es de quien llama.
6
+ import * as DocumentPicker from "expo-document-picker";
7
+ import { File } from "expo-file-system";
8
+ import * as ImagePicker from "expo-image-picker";
9
+ import { avisar, mostrarDialogo } from "../dialogos/dialogos";
10
+ import { reducirFoto, reducirImagenAdjunta } from "./reducir";
11
+
12
+ /** Lo elegido: dónde está en el teléfono, su nombre, su tipo y si es una foto. */
13
+
14
+ /** El tope de un archivo en el servidor (`ConArchivoSubido.TAMANO_MAXIMO`): 25 MB. */
15
+ export const TAMANO_MAXIMO_BYTES = 25 * 1024 * 1024;
16
+
17
+ /**
18
+ * Lo que el servidor acepta de un adjunto (`core/shared/serializers.py`): PDF, imágenes y hojas de
19
+ * cálculo. Lo demás ni se ofrece en el selector.
20
+ */
21
+ export const TIPOS_DE_ADJUNTO = ["application/pdf", "image/*", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.ms-excel", "text/csv"];
22
+
23
+ /** Para qué se pide la cámara, dicho a quien la usa. */
24
+
25
+ /**
26
+ * El permiso de la cámara. Si ya se negó para siempre, se dice dónde activarlo; si nunca se ha
27
+ * pedido, primero la explicación de la app (si hay) y luego el diálogo del sistema.
28
+ */
29
+ export async function pedirPermisoDeCamara({
30
+ para,
31
+ explicacion
32
+ }) {
33
+ const actual = await ImagePicker.getCameraPermissionsAsync();
34
+ if (actual.granted) return true;
35
+ if (!actual.canAskAgain) {
36
+ await avisar({
37
+ titulo: "Sin permiso de cámara",
38
+ mensaje: `Para ${para}, activa la cámara para la app en los ajustes del teléfono.`,
39
+ icono: "camera-off-outline"
40
+ });
41
+ return false;
42
+ }
43
+ if (explicacion) {
44
+ await avisar({
45
+ titulo: "La cámara",
46
+ mensaje: explicacion,
47
+ icono: "camera-outline",
48
+ cancelable: false
49
+ });
50
+ }
51
+ return (await ImagePicker.requestCameraPermissionsAsync()).granted;
52
+ }
53
+
54
+ /** Las imágenes elegidas, reducidas a 1920 px en JPEG (`reducirFoto`). */
55
+ async function deFotos(assets) {
56
+ const elegidos = [];
57
+ for (const asset of assets) {
58
+ const reducida = await reducirFoto(asset);
59
+ elegidos.push({
60
+ uri: reducida.uri,
61
+ nombre: reducida.fileName ?? "foto.jpg",
62
+ tipo: reducida.mimeType ?? "image/jpeg",
63
+ esFoto: true
64
+ });
65
+ }
66
+ return elegidos;
67
+ }
68
+
69
+ /** Una foto con la cámara, con su permiso. Vacío si no hubo permiso o se canceló. */
70
+ export async function tomarFoto(permiso) {
71
+ if (!(await pedirPermisoDeCamara(permiso))) return [];
72
+ const resultado = await ImagePicker.launchCameraAsync({
73
+ mediaTypes: ["images"],
74
+ quality: 1
75
+ });
76
+ return resultado.canceled ? [] : deFotos(resultado.assets);
77
+ }
78
+
79
+ /**
80
+ * De la galería. En Android el selector de fotos del sistema no pide permiso de almacenamiento,
81
+ * así que no hay explicación previa que dar.
82
+ */
83
+ export async function elegirDeGaleria({
84
+ varias = false
85
+ } = {}) {
86
+ const resultado = await ImagePicker.launchImageLibraryAsync({
87
+ mediaTypes: ["images"],
88
+ allowsMultipleSelection: varias,
89
+ quality: 1
90
+ });
91
+ return resultado.canceled ? [] : deFotos(resultado.assets);
92
+ }
93
+
94
+ /**
95
+ * Documentos (un PDF, una foto ya escaneada). Uno más pesado que el tope del servidor se rechaza al
96
+ * subirlo, así que se avisa aquí y se deja fuera. Una imagen adjuntada como archivo también se
97
+ * reduce, igual que una de la cámara.
98
+ */
99
+ export async function elegirDocumentos({
100
+ tipos = TIPOS_DE_ADJUNTO,
101
+ varias = false,
102
+ tamanoMaximo = TAMANO_MAXIMO_BYTES
103
+ } = {}) {
104
+ const resultado = await DocumentPicker.getDocumentAsync({
105
+ type: tipos,
106
+ multiple: varias,
107
+ copyToCacheDirectory: true
108
+ });
109
+ if (resultado.canceled) return [];
110
+ const elegidos = [];
111
+ for (const doc of resultado.assets) {
112
+ const pesa = doc.size ?? new File(doc.uri).size;
113
+ if (pesa > tamanoMaximo) {
114
+ await avisar({
115
+ titulo: "Archivo demasiado pesado",
116
+ mensaje: `«${doc.name}» pesa ${(pesa / (1024 * 1024)).toFixed(1)} MB y el tope son ` + `${tamanoMaximo / (1024 * 1024)} MB. Elige uno más ligero o tómale una foto.`,
117
+ icono: "file-alert-outline"
118
+ });
119
+ continue;
120
+ }
121
+ const tipo = doc.mimeType ?? "application/octet-stream";
122
+ const esFoto = tipo.startsWith("image/");
123
+ const archivo = esFoto ? await reducirImagenAdjunta({
124
+ uri: doc.uri,
125
+ nombre: doc.name,
126
+ tipo
127
+ }) : {
128
+ uri: doc.uri,
129
+ nombre: doc.name,
130
+ tipo
131
+ };
132
+ elegidos.push({
133
+ ...archivo,
134
+ esFoto
135
+ });
136
+ }
137
+ return elegidos;
138
+ }
139
+
140
+ /**
141
+ * Pregunta de dónde (cámara, galería o un documento) y elige uno. Contesta `null` si se canceló en
142
+ * cualquier paso o el archivo no se puede subir (y ya se dijo por qué).
143
+ */
144
+ export async function elegirAdjunto({
145
+ titulo = "Subir un archivo",
146
+ permiso,
147
+ tipos
148
+ }) {
149
+ const origen = await mostrarDialogo({
150
+ titulo,
151
+ icono: "paperclip",
152
+ botones: [{
153
+ texto: "Tomar una foto",
154
+ icono: "camera-outline",
155
+ estilo: "principal",
156
+ valor: "camara"
157
+ }, {
158
+ texto: "De la galería",
159
+ icono: "image-outline",
160
+ estilo: "secundario",
161
+ valor: "galeria"
162
+ }, {
163
+ texto: "Un documento",
164
+ icono: "file-document-outline",
165
+ estilo: "secundario",
166
+ valor: "documento"
167
+ }, {
168
+ texto: "Cancelar",
169
+ estilo: "cancelar",
170
+ valor: null
171
+ }]
172
+ });
173
+ const elegidos = origen === "camara" ? await tomarFoto(permiso) : origen === "galeria" ? await elegirDeGaleria() : origen === "documento" ? await elegirDocumentos({
174
+ tipos
175
+ }) : [];
176
+ return elegidos[0] ?? null;
177
+ }
178
+ //# sourceMappingURL=elegir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DocumentPicker","File","ImagePicker","avisar","mostrarDialogo","reducirFoto","reducirImagenAdjunta","TAMANO_MAXIMO_BYTES","TIPOS_DE_ADJUNTO","pedirPermisoDeCamara","para","explicacion","actual","getCameraPermissionsAsync","granted","canAskAgain","titulo","mensaje","icono","cancelable","requestCameraPermissionsAsync","deFotos","assets","elegidos","asset","reducida","push","uri","nombre","fileName","tipo","mimeType","esFoto","tomarFoto","permiso","resultado","launchCameraAsync","mediaTypes","quality","canceled","elegirDeGaleria","varias","launchImageLibraryAsync","allowsMultipleSelection","elegirDocumentos","tipos","tamanoMaximo","getDocumentAsync","type","multiple","copyToCacheDirectory","doc","pesa","size","name","toFixed","startsWith","archivo","elegirAdjunto","origen","botones","texto","estilo","valor"],"sourceRoot":"../../../src","sources":["fotos/elegir.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ // `@acvl/mobile-components/fotos`: tomar y elegir fotos y archivos. Va aparte de la entrada
4
+ // principal porque usa expo-image-picker, expo-image-manipulator, expo-document-picker y
5
+ // expo-file-system, que sólo instala la app que sube fotos.
6
+ export { elegirAdjunto, elegirDeGaleria, elegirDocumentos, pedirPermisoDeCamara, TAMANO_MAXIMO_BYTES, TIPOS_DE_ADJUNTO, tomarFoto } from "./elegir";
7
+ export { LADO_MAXIMO, reducirFoto, reducirImagenAdjunta } from "./reducir";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["elegirAdjunto","elegirDeGaleria","elegirDocumentos","pedirPermisoDeCamara","TAMANO_MAXIMO_BYTES","TIPOS_DE_ADJUNTO","tomarFoto","LADO_MAXIMO","reducirFoto","reducirImagenAdjunta"],"sourceRoot":"../../../src","sources":["fotos/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA,SACIA,aAAa,EACbC,eAAe,EACfC,gBAAgB,EAChBC,oBAAoB,EACpBC,mBAAmB,EACnBC,gBAAgB,EAChBC,SAAS,QAGN,UAAU;AACjB,SAASC,WAAW,EAAEC,WAAW,EAAEC,oBAAoB,QAAQ,WAAW","ignoreList":[]}