{"version":3,"file":"src_screens_MachineChangeStatusScreen_tsx.chunk.bundle","sources":["/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/machinery/src/screens/MachineChangeStatus.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/machinery/src/screens/MachineChangeStatusScreen.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback, useMemo } from 'react';\nimport {\n  StyleSheet,\n  View,\n  Text,\n  ScrollView,\n  TextInput,\n  Image,\n  TouchableOpacity,\n} from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { useRoute, useNavigation } from '@react-navigation/native';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport {\n  fetchMachineryById,\n  fetchMachineryLocations,\n  fetchMachineryOperators,\n  updateMachineryStatus,\n  insertMachineryStatusChange,\n  type MachineryData,\n} from '@data-oil-front/core-machinery';\nimport {\n  useAuth,\n  useConfig,\n  configService,\n} from '@data-oil-front/core-host';\nimport {\n  MACHINERY_SCREENS,\n  uploadFileToServer,\n} from '@data-oil-front/core-utils';\nimport {\n  LoadingSpinner,\n  SearchableSelect,\n  useAttachmentPicker,\n} from '@data-oil-front/ui-mobile';\nimport StatusDot, {\n  statusColorMap,\n  type MachineStatus,\n} from '../components/StatusDot';\n\ndayjs.extend(utc);\n\ntype MachineStatusAPI = 'operational' | 'maintenance' | 'inactive';\n\nconst statusMap: Record<MachineStatus, MachineStatusAPI> = {\n  operativa: 'operational',\n  mantenimiento: 'maintenance',\n  inactiva: 'inactive',\n} as const;\n\nconst statusMapFromAPI: Record<MachineStatusAPI, MachineStatus> = {\n  operational: 'operativa',\n  maintenance: 'mantenimiento',\n  inactive: 'inactiva',\n} as const;\n\nfunction MachineChangeStatus() {\n  const route = useRoute<any>();\n  const navigation = useNavigation();\n  const insets = useSafeAreaInsets();\n  const machineryId = route?.params?.id as number | undefined;\n  const { config: clientConfig } = useConfig();\n  const { user } = useAuth();\n  const defaultConfig = useMemo(() => configService.getDefaultConfig(), []);\n  const accentColor =\n    clientConfig.primaryColor ?? defaultConfig.primaryColor ?? '#1B418C';\n  const apiFileServer =\n    (clientConfig as any)?.API_FILE_SERVER ??\n    (defaultConfig as any)?.API_FILE_SERVER ??\n    null;\n\n  const [machineryData, setMachineryData] = useState<MachineryData | null>(\n    null,\n  );\n  const [loadingMachinery, setLoadingMachinery] = useState(true);\n  const [status, setStatus] = useState<MachineStatus>('operativa');\n  const [location, setLocation] = useState<string | null>(null);\n  const [assignee, setAssignee] = useState<string | null>(null);\n  const [isSaving, setIsSaving] = useState(false);\n  const [error, setError] = useState<string | null>(null);\n  const [locations, setLocations] = useState<\n    Array<{ value: string; label: string }>\n  >([]);\n  const [operators, setOperators] = useState<\n    Array<{ value: string; label: string }>\n  >([]);\n  const [loadingOptions, setLoadingOptions] = useState(true);\n\n  const [eventTitle, setEventTitle] = useState('');\n  const [eventComment, setEventComment] = useState('');\n\n  const {\n    fileName: eventImage,\n    localUri: localImageUri,\n    isUploading: isUploadingImage,\n    pickFile: handlePickFile,\n    clearFile: clearEventImage,\n  } = useAttachmentPicker({\n    uploadFn: uploadFileToServer,\n    onError: message => setError(message),\n  });\n\n  const requiresEvent = status === 'mantenimiento' || status === 'inactiva';\n\n  const loadMachineryData = useCallback(async () => {\n    if (!machineryId) {\n      setError('ID de maquinaria no válido');\n      setLoadingMachinery(false);\n      return;\n    }\n\n    setLoadingMachinery(true);\n    setError(null);\n\n    try {\n      const machinery = await fetchMachineryById(machineryId);\n      if (!machinery) {\n        setError('No se encontró la máquina');\n        setLoadingMachinery(false);\n        return;\n      }\n\n      setMachineryData(machinery);\n\n      if (machinery.status) {\n        const apiStatus = machinery.status as MachineStatusAPI;\n        const spanishStatus = statusMapFromAPI[apiStatus];\n        if (spanishStatus) {\n          setStatus(spanishStatus);\n        }\n      }\n\n      if (machinery.location_id) {\n        setLocation(String(machinery.location_id));\n      }\n\n      if (machinery.assigned_to_id) {\n        setAssignee(String(machinery.assigned_to_id));\n      }\n    } catch (err: any) {\n      console.error('Error al cargar datos de la máquina:', err);\n      setError(err.message || 'Error al cargar los datos de la máquina');\n    } finally {\n      setLoadingMachinery(false);\n    }\n  }, [machineryId]);\n\n  const loadOptions = useCallback(async () => {\n    setLoadingOptions(true);\n    try {\n      const [locationData, operatorData] = await Promise.all([\n        fetchMachineryLocations(),\n        fetchMachineryOperators(),\n      ]);\n\n      if (Array.isArray(locationData)) {\n        const locationOptions = locationData.map(loc => ({\n          value: String(loc.id),\n          label: loc.name || `Location ${loc.id}`,\n        }));\n        setLocations(locationOptions);\n      }\n\n      if (Array.isArray(operatorData)) {\n        const operatorOptions = operatorData.map(op => ({\n          value: String(op.id),\n          label: op.name || op.operator_name || `Operator ${op.id}`,\n        }));\n        setOperators(operatorOptions);\n      }\n    } catch (err) {\n      console.error('Error al cargar opciones:', err);\n    } finally {\n      setLoadingOptions(false);\n    }\n  }, []);\n\n  useEffect(() => {\n    loadMachineryData();\n    loadOptions();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  const clearEventFields = useCallback(() => {\n    setEventTitle('');\n    setEventComment('');\n    clearEventImage();\n  }, [clearEventImage]);\n\n  const save = useCallback(async () => {\n    if (!machineryId) {\n      setError('ID de maquinaria no válido');\n      return;\n    }\n    if (isUploadingImage) {\n      setError('La imagen aún se está subiendo. Espere un momento.');\n      return;\n    }\n\n    if (requiresEvent) {\n      if (!eventTitle.trim()) {\n        setError('El título del evento es obligatorio');\n        return;\n      }\n      if (!eventComment.trim()) {\n        setError('El comentario del evento es obligatorio');\n        return;\n      }\n    }\n\n    setIsSaving(true);\n    setError(null);\n\n    try {\n      const apiStatus = statusMap[status];\n\n      const fields: string[] = ['status'];\n      const values: any[] = [apiStatus];\n\n      if (location) {\n        fields.push('location_id');\n        values.push(parseInt(location, 10));\n      }\n\n      if (assignee) {\n        fields.push('assigned_to_id');\n        values.push(parseInt(assignee, 10));\n      }\n\n      await updateMachineryStatus(machineryId, fields, values);\n\n      const nowLocal = dayjs();\n      const nowUTC = nowLocal.utc();\n      const statusChangeDateTime = nowUTC.format('YYYY-MM-DD HH:mm:ss');\n\n      await insertMachineryStatusChange(\n        machineryId,\n        statusChangeDateTime,\n        requiresEvent ? eventTitle.trim() : null,\n        requiresEvent ? eventComment.trim() : null,\n        requiresEvent ? eventImage || null : null,\n        user?.id ?? null,\n      );\n\n      // @ts-ignore\n      navigation.navigate(MACHINERY_SCREENS.PREVIEW, { id: machineryId });\n    } catch (err: any) {\n      console.error('Error al actualizar estado de la máquina:', err);\n      setError(\n        err.message ||\n          'Error al actualizar el estado de la máquina. Por favor, intente nuevamente.',\n      );\n    } finally {\n      setIsSaving(false);\n    }\n  }, [\n    machineryId,\n    status,\n    location,\n    assignee,\n    navigation,\n    requiresEvent,\n    eventTitle,\n    eventComment,\n    eventImage,\n    isUploadingImage,\n    user?.id,\n  ]);\n\n  const machineName =\n    machineryData?.name ||\n    machineryData?.machine_name ||\n    machineryData?.machinery_name ||\n    machineryData?.description ||\n    machineryData?.type ||\n    'Sin nombre';\n\n  if (loadingMachinery) {\n    return (\n      <>\n        <View style={styles.center}>\n          <LoadingSpinner size=\"large\" color={accentColor} />\n          <Text style={styles.loadingText}>Cargando datos de la máquina...</Text>\n        </View>\n      </>\n    );\n  }\n\n  if (error && !machineryData) {\n    return (\n      <>\n        <View style={styles.center}>\n          <Text style={styles.errorIcon}>⚠️</Text>\n          <Text style={styles.errorTitle}>Error al cargar las maquinarias</Text>\n          <Text style={styles.errorSubtitle}>\n            Verifica tu conexión o inténtalo nuevamente.\n          </Text>\n          <View style={styles.errorMessageBox}>\n            <Text style={styles.errorMessageText} numberOfLines={3}>\n              {error || 'Error desconocido'}\n            </Text>\n          </View>\n          <TouchableOpacity\n            onPress={loadMachineryData}\n            activeOpacity={0.8}\n            style={[styles.errorRetryButton, { backgroundColor: accentColor }]}\n          >\n            <Text style={styles.errorRetryButtonText}>Reintentar</Text>\n          </TouchableOpacity>\n        </View>\n      </>\n    );\n  }\n\n  if (!machineryData) {\n    return (\n      <>\n        <View style={styles.center}>\n          <Text style={styles.emptyIcon}>🔧</Text>\n          <Text style={styles.emptyTitle}>No se encontró la máquina</Text>\n          <Text style={styles.emptyText}>La máquina solicitada no existe</Text>\n        </View>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <View style={styles.screen}>\n      <ScrollView\n        style={styles.container}\n        contentContainerStyle={{\n          ...styles.contentContainer,\n          paddingBottom: insets.bottom + 16,\n        }}\n      >\n        {}\n        <View style={styles.headerCard}>\n          {machineryData ? (\n            <View style={styles.headerContent}>\n              <View style={styles.machineInfo}>\n                <Text style={styles.machineLabel}>MÁQUINA</Text>\n                <Text style={styles.machineName}>{machineName}</Text>\n              </View>\n              <View style={styles.plateInfo}>\n                <Text style={styles.plateLabel}>PLACA</Text>\n                <Text style={styles.plateValue}>\n                  {machineryData.plate || 'Sin placa'}\n                </Text>\n              </View>\n            </View>\n          ) : (\n            <Text style={styles.loadingText}>\n              Cargando datos de la máquina...\n            </Text>\n          )}\n        </View>\n\n        {}\n        <View style={styles.formCard}>\n          {}\n          <View style={styles.statusSection}>\n            <Text style={styles.sectionTitle}>SELECCIONE NUEVO ESTADO</Text>\n            <View style={styles.statusOptions}>\n              <StatusOption\n                value=\"operativa\"\n                label=\"Operativa\"\n                color={statusColorMap.operativa}\n                isActive={status === 'operativa'}\n                onPress={() => {\n                  setStatus('operativa');\n                  clearEventFields();\n                }}\n              />\n              <StatusOption\n                value=\"mantenimiento\"\n                label=\"Mantenimiento\"\n                color={statusColorMap.mantenimiento}\n                isActive={status === 'mantenimiento'}\n                onPress={() => setStatus('mantenimiento')}\n              />\n              <StatusOption\n                value=\"inactiva\"\n                label=\"Inactiva\"\n                color={statusColorMap.inactiva}\n                isActive={status === 'inactiva'}\n                onPress={() => setStatus('inactiva')}\n              />\n            </View>\n          </View>\n\n          {}\n          <View style={styles.fieldSection}>\n            <Text style={styles.fieldLabel}>UBICACIÓN</Text>\n            <SearchableSelect\n              selectedValue={location}\n              onValueChange={value => setLocation(value as string | null)}\n              options={locations}\n              placeholder={\n                loadingOptions ? 'Cargando...' : 'Seleccione una ubicación'\n              }\n              minSearchLength={0}\n            />\n          </View>\n\n          {}\n          <View style={styles.fieldSection}>\n            <Text style={styles.fieldLabel}>ASIGNADO A</Text>\n            <SearchableSelect\n              selectedValue={assignee}\n              onValueChange={value => setAssignee(value as string | null)}\n              options={operators}\n              placeholder={\n                loadingOptions ? 'Cargando...' : 'Seleccione un operador'\n              }\n              minSearchLength={0}\n            />\n          </View>\n        </View>\n\n        {/* Event Registration (only for mantenimiento / inactiva) */}\n        {requiresEvent && (\n          <View style={styles.formCard}>\n            <View style={styles.statusSection}>\n              <Text style={styles.sectionTitle}>REGISTRO DE EVENTO</Text>\n\n              {/* Title */}\n              <View style={styles.eventField}>\n                <Text style={styles.fieldLabel}>\n                  TÍTULO <Text style={styles.requiredMark}>*</Text>\n                </Text>\n                <TextInput\n                  value={eventTitle}\n                  onChangeText={setEventTitle}\n                  placeholder=\"Escriba aquí\"\n                  style={styles.textInput}\n                  editable={!isSaving}\n                />\n              </View>\n\n              {/* Comment */}\n              <View style={styles.eventField}>\n                <Text style={styles.fieldLabel}>\n                  COMENTARIO <Text style={styles.requiredMark}>*</Text>\n                </Text>\n                <TextInput\n                  value={eventComment}\n                  onChangeText={t => setEventComment(t.slice(0, 160))}\n                  placeholder=\"Escriba aquí (Límite 160 caracteres)\"\n                  style={styles.textArea}\n                  multiline\n                  editable={!isSaving}\n                />\n                <Text style={styles.charCount}>\n                  {eventComment.length}/160\n                </Text>\n              </View>\n\n              {/* Photo */}\n              <View style={styles.eventField}>\n                <Text style={styles.fieldLabel}>FOTO</Text>\n                <View style={styles.imageRow}>\n                  <TouchableOpacity\n                    onPress={handlePickFile}\n                    style={[styles.uploadButton, { backgroundColor: accentColor }]}\n                    activeOpacity={0.8}\n                    disabled={isSaving || isUploadingImage}\n                  >\n                    <Text style={styles.uploadButtonText}>\n                      {isUploadingImage ? 'Subiendo foto...' : 'Seleccionar foto'}\n                    </Text>\n                  </TouchableOpacity>\n                  {eventImage ? (\n                    <>\n                      <Text\n                        style={styles.imageName}\n                        numberOfLines={1}\n                        ellipsizeMode=\"tail\"\n                      >\n                        {eventImage}\n                      </Text>\n                      <TouchableOpacity\n                        onPress={clearEventImage}\n                        style={styles.clearButton}\n                      >\n                        <Text style={styles.clearButtonText}>Quitar</Text>\n                      </TouchableOpacity>\n                    </>\n                  ) : (\n                    <Text style={styles.noImageText}>Sin foto seleccionada</Text>\n                  )}\n                </View>\n                {(!!localImageUri || (apiFileServer && !!eventImage)) && (\n                  <View style={styles.imagePreviewContainer}>\n                    <Image\n                      source={{\n                        uri: localImageUri || `${apiFileServer}/get/${eventImage}`,\n                      }}\n                      style={styles.imagePreview}\n                      resizeMode=\"cover\"\n                    />\n                  </View>\n                )}\n                {isUploadingImage && (\n                  <Text style={styles.uploadHint}>\n                    Subiendo imagen, puede tardar unos segundos...\n                  </Text>\n                )}\n              </View>\n            </View>\n          </View>\n        )}\n\n        {/* Error message */}\n        {error && (\n          <View style={styles.errorContainer}>\n            <Text style={styles.errorText}>{error}</Text>\n          </View>\n        )}\n\n        {}\n        <View style={styles.actionsContainer}>\n          <TouchableOpacity\n            style={[styles.saveButton, { backgroundColor: accentColor }]}\n            onPress={save}\n            disabled={isSaving || isUploadingImage}\n            activeOpacity={0.8}\n          >\n            <Text style={styles.saveButtonText}>\n              {isSaving ? 'Guardando...' : isUploadingImage ? 'Subiendo imagen...' : 'Guardar'}\n            </Text>\n          </TouchableOpacity>\n        </View>\n      </ScrollView>\n    </View>\n  </>\n  );\n}\n\nfunction StatusOption({\n  value,\n  label,\n  color,\n  isActive,\n  onPress,\n}: {\n  value: MachineStatus;\n  label: string;\n  color: string;\n  isActive: boolean;\n  onPress: () => void;\n}) {\n  return (\n    <TouchableOpacity\n      style={[styles.statusOption, isActive && styles.statusOptionActive]}\n      onPress={onPress}\n      activeOpacity={0.8}\n    >\n      <StatusDot status={value} size={14} />\n      <Text style={styles.statusOptionLabel}>{label}</Text>\n      {isActive && (\n        <View style={[styles.statusCheckmark, { backgroundColor: color }]}>\n          <Text style={styles.statusCheckmarkText}>✓</Text>\n        </View>\n      )}\n    </TouchableOpacity>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    flex: 1,\n    backgroundColor: '#F9FAFB',\n  },\n  container: {\n    flex: 1,\n  },\n  contentContainer: {\n    padding: 16,\n  },\n  center: {\n    flex: 1,\n    alignItems: 'center',\n    justifyContent: 'center',\n    gap: 12,\n    backgroundColor: '#FFFFFF',\n  },\n  loadingText: {\n    color: '#6B7280',\n    fontSize: 16,\n  },\n  errorIcon: {\n    fontSize: 48,\n  },\n  errorTitle: {\n    fontSize: 16,\n    fontWeight: '600',\n    color: '#7f1d1d',\n    marginBottom: 4,\n  },\n  errorSubtitle: {\n    fontSize: 14,\n    color: '#7f1d1d',\n    marginBottom: 8,\n  },\n  errorMessageBox: {\n    backgroundColor: '#ffe4e6',\n    padding: 12,\n    borderRadius: 6,\n    marginBottom: 12,\n    maxWidth: '80%',\n  },\n  errorMessageText: {\n    fontSize: 12,\n    color: '#7f1d1d',\n  },\n  errorRetryButton: {\n    alignSelf: 'center',\n    paddingHorizontal: 16,\n    paddingVertical: 10,\n    borderRadius: 6,\n  },\n  errorRetryButtonText: {\n    color: '#ffffff',\n    fontSize: 14,\n    fontWeight: '600',\n  },\n  emptyIcon: {\n    fontSize: 48,\n    marginBottom: 12,\n  },\n  emptyTitle: {\n    fontSize: 16,\n    fontWeight: '600',\n    color: '#6B7280',\n    marginBottom: 4,\n  },\n  emptyText: {\n    fontSize: 14,\n    color: '#9CA3AF',\n  },\n  headerCard: {\n    backgroundColor: '#FFFFFF',\n    borderRadius: 16,\n    padding: 24,\n    marginBottom: 16,\n    borderWidth: 1,\n    borderColor: '#E5E7EB',\n  },\n  headerContent: {\n    gap: 16,\n  },\n  machineInfo: {\n    gap: 8,\n  },\n  machineLabel: {\n    fontSize: 12,\n    letterSpacing: 1,\n    color: '#6B7280',\n    fontWeight: '500',\n  },\n  machineName: {\n    fontSize: 24,\n    fontWeight: '800',\n    color: '#111827',\n  },\n  plateInfo: {\n    gap: 8,\n  },\n  plateLabel: {\n    fontSize: 12,\n    letterSpacing: 1,\n    color: '#6B7280',\n    fontWeight: '500',\n  },\n  plateValue: {\n    fontSize: 16,\n    fontWeight: '600',\n    color: '#374151',\n  },\n  formCard: {\n    backgroundColor: '#FFFFFF',\n    borderRadius: 16,\n    borderWidth: 1,\n    borderColor: '#E5E7EB',\n    overflow: 'hidden',\n    marginBottom: 16,\n  },\n  statusSection: {\n    padding: 24,\n    backgroundColor: '#F9FAFB',\n    borderBottomWidth: 1,\n    borderBottomColor: '#E5E7EB',\n  },\n  sectionTitle: {\n    fontSize: 14,\n    fontWeight: '600',\n    color: '#374151',\n    textAlign: 'center',\n    marginBottom: 24,\n  },\n  statusOptions: {\n    gap: 12,\n  },\n  statusOption: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    gap: 12,\n    padding: 16,\n    borderRadius: 12,\n    borderWidth: 1,\n    borderColor: '#E5E7EB',\n    backgroundColor: '#FFFFFF',\n  },\n  statusOptionActive: {\n    backgroundColor: 'rgba(0,0,0,0.02)',\n    borderColor: 'transparent',\n  },\n  statusOptionLabel: {\n    fontSize: 16,\n    fontWeight: '600',\n    color: '#111827',\n    flex: 1,\n  },\n  statusCheckmark: {\n    width: 24,\n    height: 24,\n    borderRadius: 12,\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  statusCheckmarkText: {\n    color: '#FFFFFF',\n    fontSize: 14,\n    fontWeight: '700',\n  },\n  fieldSection: {\n    padding: 24,\n    borderBottomWidth: 1,\n    borderBottomColor: '#E5E7EB',\n    gap: 12,\n  },\n  fieldLabel: {\n    fontSize: 12,\n    letterSpacing: 1,\n    color: '#6B7280',\n    fontWeight: '500',\n  },\n  eventField: {\n    marginTop: 16,\n    gap: 8,\n  },\n  requiredMark: {\n    color: '#DC2626',\n    fontWeight: '700',\n  },\n  textInput: {\n    borderWidth: 1,\n    borderColor: '#D1D5DB',\n    borderRadius: 8,\n    paddingHorizontal: 12,\n    paddingVertical: 10,\n    fontSize: 14,\n    color: '#111827',\n    backgroundColor: '#FFFFFF',\n  },\n  textArea: {\n    borderWidth: 1,\n    borderColor: '#D1D5DB',\n    borderRadius: 8,\n    paddingHorizontal: 12,\n    paddingVertical: 10,\n    fontSize: 14,\n    color: '#111827',\n    backgroundColor: '#FFFFFF',\n    minHeight: 80,\n    textAlignVertical: 'top',\n  },\n  charCount: {\n    fontSize: 12,\n    color: '#9CA3AF',\n    textAlign: 'right',\n  },\n  imageRow: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    gap: 10,\n    flexWrap: 'wrap',\n  },\n  uploadButton: {\n    paddingHorizontal: 14,\n    paddingVertical: 8,\n    borderRadius: 6,\n  },\n  uploadButtonText: {\n    color: '#FFFFFF',\n    fontSize: 13,\n    fontWeight: '600',\n  },\n  imageName: {\n    flex: 1,\n    fontSize: 13,\n    color: '#374151',\n  },\n  clearButton: {\n    paddingHorizontal: 8,\n    paddingVertical: 4,\n  },\n  clearButtonText: {\n    fontSize: 13,\n    color: '#DC2626',\n    fontWeight: '600',\n  },\n  noImageText: {\n    fontSize: 13,\n    color: '#9CA3AF',\n  },\n  uploadHint: {\n    fontSize: 12,\n    color: '#6B7280',\n    marginTop: 6,\n  },\n  imagePreviewContainer: {\n    marginTop: 8,\n    borderRadius: 8,\n    overflow: 'hidden',\n    borderWidth: 1,\n    borderColor: '#E5E7EB',\n  },\n  imagePreview: {\n    width: '100%',\n    height: 200,\n  },\n  errorContainer: {\n    marginBottom: 16,\n    padding: 16,\n    backgroundColor: '#FEF2F2',\n    borderWidth: 1,\n    borderColor: '#FECACA',\n    borderRadius: 8,\n  },\n  errorText: {\n    fontSize: 14,\n    color: '#991B1B',\n  },\n  actionsContainer: {\n    marginTop: 8,\n    alignItems: 'flex-end',\n  },\n  saveButton: {\n    paddingHorizontal: 24,\n    paddingVertical: 12,\n    borderRadius: 8,\n    minWidth: 120,\n    alignItems: 'center',\n  },\n  saveButtonText: {\n    fontSize: 14,\n    fontWeight: '600',\n    color: '#FFFFFF',\n  },\n});\n\nexport default MachineChangeStatus;\n","import MachineChangeStatusComponent from './MachineChangeStatus';\n\nfunction MachineChangeStatusScreen() {\n  return <MachineChangeStatusComponent />;\n}\n\nexport default MachineChangeStatusScreen;\n"],"names":["dayjs","extend","utc","statusMap","operativa","mantenimiento","inactiva","statusMapFromAPI","operational","maintenance","inactive","StatusOption","value","label","color","isActive","onPress","TouchableOpacity","style","styles","statusOption","statusOptionActive","activeOpacity","status","size","Text","statusOptionLabel","View","statusCheckmark","backgroundColor","statusCheckmarkText","StyleSheet","create","screen","flex","container","contentContainer","padding","center","alignItems","justifyContent","gap","loadingText","fontSize","errorIcon","errorTitle","fontWeight","marginBottom","errorSubtitle","errorMessageBox","borderRadius","maxWidth","errorMessageText","errorRetryButton","alignSelf","paddingHorizontal","paddingVertical","errorRetryButtonText","emptyIcon","emptyTitle","emptyText","headerCard","borderWidth","borderColor","headerContent","machineInfo","machineLabel","letterSpacing","machineName","plateInfo","plateLabel","plateValue","formCard","overflow","statusSection","borderBottomWidth","borderBottomColor","sectionTitle","textAlign","statusOptions","flexDirection","width","height","fieldSection","fieldLabel","eventField","marginTop","requiredMark","textInput","textArea","minHeight","textAlignVertical","charCount","imageRow","flexWrap","uploadButton","uploadButtonText","imageName","clearButton","clearButtonText","noImageText","uploadHint","imagePreviewContainer","imagePreview","errorContainer","errorText","actionsContainer","saveButton","minWidth","saveButtonText","route","useRoute","navigation","useNavigation","insets","useSafeAreaInsets","machineryId","params","id","clientConfig","config","useAuth","user","defaultConfig","useMemo","configService","getDefaultConfig","accentColor","primaryColor","apiFileServer","API_FILE_SERVER","machineryData","setMachineryData","useState","loadingMachinery","setLoadingMachinery","setStatus","location","setLocation","assignee","setAssignee","isSaving","setIsSaving","error","setError","locations","setLocations","operators","setOperators","loadingOptions","setLoadingOptions","eventTitle","setEventTitle","eventComment","setEventComment","useAttachmentPicker","uploadFn","uploadFileToServer","onError","message","fileName","localImageUri","localUri","isUploadingImage","isUploading","handlePickFile","pickFile","clearEventImage","clearFile","requiresEvent","loadMachineryData","useCallback","machinery","fetchMachineryById","apiStatus","spanishStatus","location_id","String","assigned_to_id","err","console","loadOptions","Promise","all","fetchMachineryLocations","fetchMachineryOperators","locationData","operatorData","Array","isArray","locationOptions","map","loc","name","operatorOptions","op","operator_name","useEffect","clearEventFields","save","trim","fields","values","push","parseInt","updateMachineryStatus","statusChangeDateTime","format","insertMachineryStatusChange","eventImage","navigate","MACHINERY_SCREENS","PREVIEW","machine_name","machinery_name","description","type","LoadingSpinner","numberOfLines","ScrollView","contentContainerStyle","paddingBottom","bottom","plate","statusColorMap","SearchableSelect","selectedValue","onValueChange","options","placeholder","minSearchLength","TextInput","onChangeText","editable","t","slice","multiline","length","disabled","ellipsizeMode","Image","source","uri","resizeMode"],"mappings":"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"}