{"version":3,"file":"__federation_expose_DRPage3EFUnicModel.chunk.bundle","sources":["/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/components/DRFooterActions.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/screens/DRPage3EFUnicModel.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/store/dailyReportBase.store.ts","/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/store/dailyReportEF.store.ts"],"sourcesContent":["import React from 'react';\nimport { View, StyleSheet, Platform } from 'react-native';\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { StatusButton } from '@data-oil-front/ui-mobile';\n// import { useTheme } from '@data-oil-front/core-shared';\nimport {\n  ArrowRightIcon,\n  XMarkIcon,\n  ArrowLeftIcon,\n} from 'react-native-heroicons/outline';\n\ntype DRFooterActionsProps = {\n  onContinue: () => void;\n  continueDisabled?: boolean;\n  onCancel?: () => void;\n  onBack?: () => void;\n  homeRouteName?: string;\n  accentColor?: string;\n  continueLabel?: string;\n};\n\nexport default function DRFooterActions({\n  onContinue,\n  continueDisabled,\n  onCancel,\n  onBack,\n  homeRouteName = 'DailyReport',\n  // TODO: Create a const for default black color\n  accentColor = '#000000',\n  continueLabel = 'Continuar',\n}: DRFooterActionsProps) {\n  const navigation = useNavigation();\n  const route = useRoute();\n  const insets = useSafeAreaInsets();\n  const calcPaddingBottom =\n    Platform.OS === 'ios' ? Math.max(insets.bottom, 12) : 12;\n\n  const canGoBack =\n    // @ts-ignore navegación provista por host\n    typeof navigation?.canGoBack === 'function' && navigation.canGoBack();\n  const showBackButton = canGoBack && route?.name !== homeRouteName;\n\n  const handleCancel = () => {\n    if (onCancel) return onCancel();\n    // @ts-ignore navegación provista por host\n    navigation?.navigate?.('Home');\n  };\n\n  return (\n    <View style={[styles.footerBar, { paddingBottom: calcPaddingBottom }]}>\n      <StatusButton\n        title=\"Cancelar\"\n        onPress={handleCancel}\n        leftIcon={<XMarkIcon size={20} color={accentColor} />}\n        // Texto visible con color de marca para contraste\n        textStyle={{ color: accentColor }}\n        style={styles.flexOne}\n      />\n      {showBackButton ? (\n        <StatusButton\n          title=\"Atrás\"\n          onPress={() => {\n            if (onBack) return onBack();\n            // @ts-ignore navegación provista por host\n            navigation?.goBack?.();\n          }}\n          leftIcon={<ArrowLeftIcon size={20} color={accentColor} />}\n          backgroundColor=\"transparent\"\n          textStyle={{ color: accentColor }}\n          style={styles.flexOne}\n        />\n      ) : (\n        <View style={styles.flexOne} />\n      )}\n      <StatusButton\n        title={continueLabel}\n        onPress={onContinue}\n        backgroundColor={accentColor}\n        rightIcon={<ArrowRightIcon size={20} color=\"white\" />}\n        style={styles.flexOne}\n        disabled={continueDisabled}\n      />\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  footerBar: {\n    position: 'absolute',\n    left: 0,\n    right: 0,\n    bottom: 0,\n    backgroundColor: '#fff',\n    borderTopWidth: 1,\n    borderTopColor: '#E5E7EB',\n    paddingHorizontal: 20,\n    // Reducido de 12 a 10 para un diseño más compacto\n    paddingTop: 10,\n    // Espaciado entre botones\n    gap: 12,\n    flexDirection: 'row',\n    shadowColor: '#000',\n    shadowOpacity: 0.08,\n    shadowRadius: 8,\n    shadowOffset: { width: 6, height: -3 },\n    elevation: 6,\n  },\n  cancelButtonText: {\n    // Color principal para el texto de cancelar (mejor visibilidad)\n    color: '#374151',\n  },\n  whiteText: {\n    // Color blanco para botones con fondo de color acento\n    color: 'white',\n  },\n  flexOne: { flex: 1 },\n});\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { View, StyleSheet, ScrollView, Text, TextInput } from 'react-native';\nimport { useNavigation } from '@react-navigation/native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport {\n  SummaryTable,\n  DatePicker,\n  TimePicker,\n  Select,\n  MenuItem,\n  NumericField,\n  RadioGroup,\n  ConfirmationModal,\n  useToast,\n} from '@data-oil-front/ui-mobile';\nimport DRFooterActions from '../components/DRFooterActions';\nimport { Controller, useForm, useWatch } from 'react-hook-form';\nimport { useDailyReportBaseStore } from '../store/dailyReportBase.store';\nimport {\n  useDailyReportEFStore,\n  SampleTakenOption,\n} from '../store/dailyReportEF.store';\nimport {\n  getFlowStationTanksFiltered,\n  submitReport,\n  useAuth,\n  useTheme,\n} from '@data-oil-front/core-shared';\nimport type { FlowStationTank } from '@data-oil-front/core-shared';\nimport { TABLE_NAMES, API_VERBS } from \"@data-oil-front/core-shared\";\n\ntype YesNoOption = 'yes' | 'no' | null;\n\ninterface FormValues {\n  status: string;\n  date: Date | null;\n  time: string | null;\n  tankLevel: string;\n  rawOperatedProduction: string;\n  sampleTaken: YesNoOption;\n  netOperatedProduction: string;\n  comments: string;\n}\n\nconst formatTwoDigits = (value: number) => value.toString().padStart(2, '0');\n\nconst getDefaultTime = () => {\n  const now = new Date();\n  return `${formatTwoDigits(now.getHours())}:${formatTwoDigits(now.getMinutes())}`;\n};\n\n// Helper function to normalize numeric strings (convert comma to dot)\nconst normalizeNumericString = (value: string | number | null | undefined): string => {\n  if (value === null || value === undefined || value === '') return '';\n  const str = String(value);\n  return str.replace(',', '.');\n};\n\nexport default function DRPage3EFUnicModel() {\n  const navigation = useNavigation();\n  const insets = useSafeAreaInsets();\n  const { primaryColor: themeColor } = useTheme();\n  const accentColor = themeColor ?? '#1B418C';\n  const { show } = useToast();\n  const { user } = useAuth();\n\n  const { summary } = useDailyReportBaseStore(state => state);\n  const { step2, unicModelStep3, setUnicModelStep3, reset } = useDailyReportEFStore(\n    state => state,\n  );\n\n  const [flowStationTank, setFlowStationTank] = useState<FlowStationTank | null>(\n    null,\n  );\n  const [isLoading, setIsLoading] = useState(false);\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const guardDisabledRef = useRef(false);\n  const missingToastShownRef = useRef(false);\n\n  const defaultDate = unicModelStep3.reportDate ?? new Date();\n  const defaultTime = unicModelStep3.reportTime ?? getDefaultTime();\n\n  const {\n    control,\n    handleSubmit,\n    formState: { isValid },\n  } = useForm<FormValues>({\n    defaultValues: {\n      status: unicModelStep3.status ?? 'active',\n      date: defaultDate,\n      time: defaultTime,\n      tankLevel: normalizeNumericString(unicModelStep3.tankLevel),\n      rawOperatedProduction: normalizeNumericString(unicModelStep3.rawOperatedProduction),\n      sampleTaken: unicModelStep3.sampleTaken ?? null,\n      netOperatedProduction: normalizeNumericString(unicModelStep3.netOperatedProduction),\n      comments: unicModelStep3.comments ?? '',\n    },\n    mode: 'onChange',\n  });\n\n  const watchedValues = useWatch({ control });\n\n  useEffect(() => {\n    if (!watchedValues) return;\n    const { status, date, time, tankLevel, rawOperatedProduction, sampleTaken, netOperatedProduction, comments } =\n      watchedValues;\n    setUnicModelStep3({\n      status: status ?? null,\n      reportDate: date ?? null,\n      reportTime: time ?? null,\n      tankLevel: tankLevel ?? null,\n      rawOperatedProduction: rawOperatedProduction ?? null,\n      sampleTaken: (sampleTaken ?? null) as SampleTakenOption,\n      netOperatedProduction: netOperatedProduction ?? null,\n      comments: comments ?? null,\n    });\n  }, [watchedValues, setUnicModelStep3]);\n\n  useEffect(() => {\n    let mounted = true;\n    const fetchTank = async () => {\n      if (!step2.tankId) {\n        setFlowStationTank(null);\n        setIsLoading(false);\n        return;\n      }\n      setIsLoading(true);\n      try {\n        const tanks = await getFlowStationTanksFiltered([\n          ['id', '=', Number(step2.tankId)],\n        ]);\n        if (!mounted) return;\n        setFlowStationTank(Array.isArray(tanks) ? tanks[0] ?? null : null);\n      } catch {\n        if (mounted) setFlowStationTank(null);\n      } finally {\n        if (mounted) setIsLoading(false);\n      }\n    };\n    fetchTank();\n    return () => {\n      mounted = false;\n    };\n  }, [step2.tankId]);\n\n  useEffect(() => {\n    if (guardDisabledRef.current) return;\n\n    const missing = !step2.flowStationId || !step2.tankId;\n    if (!missing) {\n      missingToastShownRef.current = false;\n      return;\n    }\n\n    if (!missingToastShownRef.current) {\n      missingToastShownRef.current = true;\n      show({\n        type: 'info',\n        message: 'Selecciona una estación de flujo y un tanque para continuar.',\n      });\n    }\n    // @ts-ignore navegación provista por host\n    navigation?.navigate?.('DRPage2EF');\n  }, [navigation, show, step2.flowStationId, step2.tankId]);\n\n  const summaryItems = useMemo(\n    () => [\n      { name: 'Localización', value: summary.location },\n      { name: 'Actividad', value: summary.activity },\n      { name: 'Campo', value: summary.field },\n      { name: 'Instalación', value: summary.facility },\n      { name: 'Estación de flujo', value: step2.flowStationName },\n      { name: 'Tanque', value: step2.tankName },\n    ],\n    [summary.activity, summary.field, summary.facility, summary.location, step2.flowStationName, step2.tankName],\n  );\n\n  const handleFinish = handleSubmit(async values => {\n    if (!step2.tankId) {\n      show({\n        type: 'error',\n        message: 'No se encontró el tanque seleccionado. Regresa y selecciona nuevamente.',\n      });\n      return;\n    }\n\n    if (isLoading || !flowStationTank) {\n      show({\n        type: 'info',\n        message: 'Esperando datos del tanque. Intenta nuevamente en unos segundos.',\n      });\n      return;\n    }\n\n    if (isSubmitting) return;\n\n    const sampleTaken = values.sampleTaken;\n    if (sampleTaken === null) {\n      show({ type: 'error', message: 'Debes indicar si se tomó muestra.' });\n      return;\n    }\n\n    setIsSubmitting(true);\n    const pad = (num: number) => num.toString().padStart(2, '0');\n    const now = new Date();\n    const nowDate = `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(\n      now.getDate(),\n    )} ${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`;\n\n    const toNumber = (value: string | number | null | undefined): number | null => {\n      if (value === null || value === undefined || value === '') return null;\n      // Normalize comma to dot before parsing\n      const normalized = normalizeNumericString(value);\n      const num = Number(normalized);\n      return Number.isNaN(num) ? null : num;\n    };\n\n    // Use the form's date and time values, not the current date/time\n    const formatDateWithTime = (date: Date | null, time: string | null) => {\n      if (!date) return null;\n      const safeTime = time ?? '00:00';\n      const [hoursRaw, minutesRaw] = safeTime.split(':');\n      const hours = formatTwoDigits(\n        Math.max(\n          0,\n          Math.min(23, Number.isFinite(Number(hoursRaw)) ? Number(hoursRaw) : 0),\n        ),\n      );\n      const minutes = formatTwoDigits(\n        Math.max(\n          0,\n          Math.min(\n            59,\n            Number.isFinite(Number(minutesRaw)) ? Number(minutesRaw) : 0,\n          ),\n        ),\n      );\n      const seconds = '00';\n      return `${date.getFullYear()}-${formatTwoDigits(\n        date.getMonth() + 1,\n      )}-${formatTwoDigits(date.getDate())} ${hours}:${minutes}:${seconds}`;\n    };\n\n    const reportDate = values.date ?? defaultDate;\n    const reportTime = values.time ?? defaultTime;\n    const reportDateTime = formatDateWithTime(reportDate, reportTime);\n\n    const activityId =\n      summary.activity === 'Producción'\n        ? 1\n        : summary.activity === 'Recuperación'\n        ? 2\n        : 1;\n\n    const fieldPairs: [string, string | number | boolean | null][] = [\n      ['date_created', reportDateTime ?? nowDate],\n      ['date_updated', nowDate],\n      ['edition_number', 0],\n      ['activity_id', activityId],\n      ['user_id', user?.id != null ? String(user.id) : null],\n      ['flow_station_tank_id', Number(step2.tankId)],\n      ['status', values.status || 'active'],\n      ['current_stock', null],\n      ['sample_taken', sampleTaken === 'yes'],\n      ['net_operated_production', toNumber(values.netOperatedProduction)],\n      ['tank_level', toNumber(values.tankLevel)],\n      ['filling_start_date', null],\n      ['filling_start_level', null],\n      ['filling_end_date', null],\n      ['filling_end_level', null],\n      ['raw_operated_production', toNumber(values.rawOperatedProduction)],\n      ['lab_analysis', false],\n      ['comments', values.comments || null],\n    ];\n\n    const payload = {\n      verb: API_VERBS.INSERT,\n      table: TABLE_NAMES.DAILY_REPORT_FLOW_STATION_TANK,\n      fields: fieldPairs.map(([key]) => key),\n      values: fieldPairs.map(([, value]) => value),\n      filter: [],\n    } as const;\n\n    try {\n      const result = await submitReport(\n        TABLE_NAMES.DAILY_REPORT_FLOW_STATION_TANK,\n        payload as any,\n        () => {},\n        error => {\n          show({\n            type: 'error',\n            message: `Error al enviar el reporte: ${error}`,\n          });\n        },\n      );\n\n      if (result.success) {\n        guardDisabledRef.current = true;\n        if (result.offline) {\n          show({\n            type: 'info',\n            message:\n              'Reporte guardado offline. Se enviará cuando tengas conexión.',\n          });\n        } else {\n          show({ type: 'success', message: 'Reporte enviado correctamente.' });\n        }\n        reset();\n        // @ts-ignore navegación provista por host\n        navigation?.navigate?.('Home');\n      } else {\n        show({\n          type: 'error',\n          message: 'No se pudo enviar el reporte. Inténtalo nuevamente.',\n        });\n      }\n    } catch (error) {\n      show({\n        type: 'error',\n        message: 'Error inesperado al procesar el reporte.',\n      });\n    } finally {\n      setIsSubmitting(false);\n    }\n  });\n\n  const handleCancel = () => {\n    setIsModalOpen(true);\n  };\n\n  const confirmCancel = () => {\n    guardDisabledRef.current = true;\n    reset();\n    setIsModalOpen(false);\n    // @ts-ignore navegación provista por host\n    navigation?.navigate?.('Home');\n  };\n\n  return (\n    <View style={styles.screen}>\n      <ScrollView\n        style={styles.container}\n        contentContainerStyle={{ paddingBottom: insets.bottom + 120 }}\n      >\n        <View style={styles.form}>\n          <SummaryTable items={summaryItems} />\n\n          <View style={styles.block} />\n\n          <Controller\n            control={control}\n            name=\"status\"\n            rules={{ required: true }}\n            render={({ field: { value, onChange } }) => (\n              <Select\n                value={value}\n                onChange={onChange}\n                label=\"Estado\"\n                accentColor={accentColor}\n                required\n              >\n                <MenuItem value=\"active\">Activo</MenuItem>\n                <MenuItem value=\"inactive\">Inactivo</MenuItem>\n              </Select>\n            )}\n          />\n\n          <View style={styles.block} />\n\n          <View style={styles.row}>\n            <View style={styles.flex1}>\n              <Controller\n                control={control}\n                name=\"date\"\n                render={({ field: { value, onChange } }) => (\n                  <DatePicker label=\"Fecha\" value={value} onChange={onChange} />\n                )}\n              />\n            </View>\n            <View style={styles.spacer} />\n            <View style={styles.flex1}>\n              <Controller\n                control={control}\n                name=\"time\"\n                render={({ field: { value, onChange } }) => (\n                  <TimePicker label=\"Hora\" value={value} onChange={onChange} />\n                )}\n              />\n            </View>\n          </View>\n\n          <View style={styles.block} />\n\n          <Text style={styles.sectionTitle}>Producción operada en tanque</Text>\n\n          <View style={styles.block} />\n\n          <Controller\n            control={control}\n            name=\"tankLevel\"\n            rules={{ required: 'El nivel del tanque es obligatorio' }}\n            render={({ field: { value, onChange }, fieldState: { error } }) => (\n              <View>\n                <NumericField\n                  label={`Nivel ${step2.tankName ?? ''} (Pies)`}\n                  value={value}\n                  onChange={onChange}\n                  required\n                  unit=\"ft\"\n                />\n                {error?.message ? (\n                  <Text style={styles.errorText}>{error.message}</Text>\n                ) : null}\n              </View>\n            )}\n          />\n\n          <View style={styles.block} />\n\n           <Controller\n            control={control}\n            name=\"rawOperatedProduction\"\n            rules={{\n              required: 'La producción operada bruta es obligatoria',\n            }}\n            render={({ field: { value, onChange }, fieldState: { error } }) => (\n              <View>\n                <NumericField\n                  label=\"Producción Operada Bruto (BLS)\"\n                  value={value}\n                  onChange={onChange}\n                  required\n                  unit=\"BLS\"\n                />\n                {error?.message ? (\n                  <Text style={styles.errorText}>{error.message}</Text>\n                ) : null}\n              </View>\n            )}\n          />\n\n          <View style={styles.block} />\n\n          <Controller\n            control={control}\n            name=\"sampleTaken\"\n            rules={{\n              validate: value =>\n                value !== null || 'Debes indicar si se tomó una muestra',\n            }}\n            render={({ field: { value, onChange }, fieldState: { error } }) => (\n              <View>\n                <RadioGroup\n                  title=\"¿Se tomó muestra?\"\n                  selectedValue={value as any}\n                  onValueChange={onChange as any}\n                  options={[\n                    { value: 'yes', label: 'Sí' },\n                    { value: 'no', label: 'No' },\n                  ]}\n                  row\n                  accentColor={accentColor}\n                  required\n                />\n                {error?.message ? (\n                  <Text style={styles.errorText}>{error.message}</Text>\n                ) : null}\n              </View>\n            )}\n          />\n\n          <View style={styles.block} />\n\n          <Controller\n            control={control}\n            name=\"netOperatedProduction\"\n            rules={{\n              required: 'La producción operada neta es obligatoria',\n            }}\n            render={({ field: { value, onChange }, fieldState: { error } }) => (\n              <View>\n                <NumericField\n                  label=\"Producción operada neta (BLS)\"\n                  value={value}\n                  onChange={onChange}\n                  required\n                  unit=\"BLS\"\n                  disabled={watchedValues.sampleTaken === 'yes'}\n                />\n                {error?.message ? (\n                  <Text style={styles.errorText}>{error.message}</Text>\n                ) : null}\n              </View>\n            )}\n          />\n\n          <View style={styles.block} />\n\n          <Controller\n            control={control}\n            name=\"comments\"\n            rules={{\n              maxLength: {\n                value: 800,\n                message: 'Los comentarios no pueden exceder los 800 caracteres',\n              },\n            }}\n            render={({ field: { value, onChange }, fieldState: { error } }) => (\n              <View>\n                <Text style={styles.label}>Ingresa los comentarios</Text>\n                <TextInput\n                  style={styles.textArea}\n                  value={value}\n                  onChangeText={onChange}\n                  placeholder=\"Escribe como máximo 800 caracteres\"\n                  multiline\n                  numberOfLines={4}\n                  maxLength={800}\n                />\n                <Text style={styles.characterCount}>{`${value?.length ?? 0}/800 caracteres`}</Text>\n                {error?.message ? (\n                  <Text style={styles.errorText}>{error.message}</Text>\n                ) : null}\n              </View>\n            )}\n          />\n\n          {isLoading ? (\n            <Text style={styles.helperText}>Cargando datos del tanque...</Text>\n          ) : null}\n        </View>\n      </ScrollView>\n      <DRFooterActions\n        onContinue={handleFinish}\n        continueDisabled={!isValid || isSubmitting || isLoading || !flowStationTank}\n        continueLabel={isSubmitting ? 'Enviando...' : 'Finalizar'}\n        onCancel={handleCancel}\n        accentColor={accentColor}\n      />\n      <ConfirmationModal\n        open={isModalOpen}\n        onClose={() => setIsModalOpen(false)}\n        onConfirm={confirmCancel}\n        title=\"¿Estás seguro de que deseas cancelar?\"\n        message=\"Se perderán todos los datos cargados en el reporte actual.\"\n      />\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, backgroundColor: '#f9fafb' },\n  container: { flex: 1, paddingTop: 16 },\n  form: { paddingHorizontal: 20, paddingBottom: 24, gap: 0 },\n  block: { height: 16 },\n  row: {\n    flexDirection: 'row',\n    alignItems: 'center',\n  },\n  flex1: { flex: 1 },\n  spacer: { width: 12 },\n  sectionTitle: {\n    textAlign: 'center',\n    fontSize: 18,\n    fontWeight: '600',\n    color: '#1F2937',\n  },\n  helperText: {\n    marginTop: 12,\n    textAlign: 'center',\n    color: '#6B7280',\n    fontSize: 14,\n  },\n  characterCount: {\n    marginTop: 4,\n    textAlign: 'left',\n    color: '#6B7280',\n    fontSize: 12,\n  },\n  errorText: {\n    marginTop: 8,\n    color: '#DC2626',\n    fontSize: 12,\n  },\n  label: {\n    marginBottom: 6,\n    color: '#6B7280',\n    fontSize: 14,\n    fontWeight: '500',\n  },\n  textArea: {\n    borderWidth: 1,\n    borderColor: '#D1D5DB',\n    borderRadius: 8,\n    backgroundColor: '#FFFFFF',\n    minHeight: 96,\n    padding: 12,\n    textAlignVertical: 'top',\n    fontSize: 14,\n    color: '#1F2937',\n  },\n});\n","import { create } from 'zustand';\nimport type { ReportHistoryTable } from '@data-oil-front/core-shared';\n\ninterface DailyReportBaseStore {\n  fieldId: string | null;\n  summary: {\n    location: string | null;\n    activity: string | null;\n    field: string | null;\n    facility: string | null;\n  };\n  editing: DailyReportEditingState;\n}\n\ninterface DailyReportBaseStoreActions {\n  setFieldId: (fieldId: string | null) => void;\n  setSummary: (summary: DailyReportBaseStore['summary']) => void;\n  setEditing: (editing: Partial<DailyReportEditingState>) => void;\n  resetEditing: () => void;\n}\n\nexport interface DailyReportEditingState {\n  isEditing: boolean;\n  reportId: string | number | null;\n  table: ReportHistoryTable | null;\n  revision?: number | null;\n  payload?: Record<string, any> | null;\n}\n\nconst INITIAL_EDITING_STATE: DailyReportEditingState = {\n  isEditing: false,\n  reportId: null,\n  table: null,\n  revision: null,\n  payload: null,\n};\n\nconst INITIAL_STATE: DailyReportBaseStore = {\n  fieldId: null,\n  summary: {\n    location: null,\n    activity: null,\n    field: null,\n    facility: null,\n  },\n  editing: INITIAL_EDITING_STATE,\n};\n\nexport const useDailyReportBaseStore = create<\n  DailyReportBaseStore & DailyReportBaseStoreActions\n>(set => ({\n  ...INITIAL_STATE,\n  // ACTIONS\n  setFieldId: (fieldId: string | null) => set(state => ({ ...state, fieldId })),\n  setSummary: (summary: DailyReportBaseStore['summary']) =>\n    set(state => ({ ...state, summary })),\n  setEditing: editing =>\n    set(state => ({\n      ...state,\n      editing: {\n        ...state.editing,\n        ...editing,\n      },\n    })),\n  resetEditing: () =>\n    set(state => ({\n      ...state,\n      editing: INITIAL_EDITING_STATE,\n    })),\n}));\n","import { create } from 'zustand';\n\nexport interface DREFStep2State {\n  flowStationId: string | null;\n  flowStationName?: string | null;\n  tankId: string | null;\n  tankName?: string | null;\n}\n\nexport type SampleTakenOption = 'yes' | 'no' | null;\n\nexport interface DREFModel1Step3State {\n  status: string | null;\n  reportDate: Date | null;\n  reportTime: string | null;\n  tankLevel: string | null;\n  sampleTaken: SampleTakenOption;\n  netOperatedProduction: string | null;\n}\n\nexport interface DREFModel2Step3State {\n  status: string | null;\n  reportDate: Date | null;\n  reportTime: string | null;\n  fillingStartDate: Date | null;\n  fillingStartTime: string | null;\n  fillingStartLevel: string | null;\n  fillingEndDate: Date | null;\n  fillingEndTime: string | null;\n  fillingEndLevel: string | null;\n  rawOperatedProduction: string | null;\n  sampleTaken: SampleTakenOption;\n  netOperatedProduction: string | null;\n}\n\nexport interface DREFUnicModelStep3State {\n  status: string | null;\n  reportDate: Date | null;\n  reportTime: string | null;\n  tankLevel: string | null;\n  rawOperatedProduction: string | null;\n  sampleTaken: SampleTakenOption;\n  netOperatedProduction: string | null;\n  comments: string | null;\n}\n\nexport interface DREFModel3Step3State {\n  status: string | null;\n  currentStockDate: Date | null;\n  currentStockTime: string | null;\n  currentStock: string | null;\n  previousDayStock: string | null;\n  vacuumTransfer: string | null;\n  grossOperatedProduction: string | null;\n  sampleTaken: SampleTakenOption;\n  netOperatedProduction: string | null;\n}\n\nexport interface DREFMeta {\n  editionMode: boolean;\n  recordId?: string | null;\n  revision?: number | null;\n  payload?: Record<string, any> | null;\n}\n\ninterface DailyReportEFStoreState {\n  step2: Partial<DREFStep2State>;\n  model1Step3: Partial<DREFModel1Step3State>;\n  model2Step3: Partial<DREFModel2Step3State>;\n  model3Step3: Partial<DREFModel3Step3State>;\n  unicModelStep3: Partial<DREFUnicModelStep3State>;\n  meta: DREFMeta;\n  setStep2: (values: Partial<DREFStep2State>) => void;\n  setModel1Step3: (values: Partial<DREFModel1Step3State>) => void;\n  setModel2Step3: (values: Partial<DREFModel2Step3State>) => void;\n  setModel3Step3: (values: Partial<DREFModel3Step3State>) => void;\n  setUnicModelStep3: (values: Partial<DREFUnicModelStep3State>) => void;\n  setLoadingMeta: (values: Partial<DREFMeta>) => void;\n  resetStep3: () => void;\n  reset: () => void;\n}\n\nconst createInitialStep2State = (): Partial<DREFStep2State> => ({\n  flowStationId: null,\n  tankId: null,\n  flowStationName: null,\n  tankName: null,\n});\n\nconst createInitialModel1Step3State = (): Partial<DREFModel1Step3State> => ({\n  status: 'active',\n  reportDate: null,\n  reportTime: null,\n  tankLevel: null,\n  sampleTaken: null,\n  netOperatedProduction: null,\n});\n\nconst createInitialModel2Step3State = (): Partial<DREFModel2Step3State> => ({\n  status: 'active',\n  reportDate: null,\n  reportTime: null,\n  fillingStartDate: null,\n  fillingStartTime: null,\n  fillingStartLevel: null,\n  fillingEndDate: null,\n  fillingEndTime: null,\n  fillingEndLevel: null,\n  rawOperatedProduction: null,\n  sampleTaken: null,\n  netOperatedProduction: null,\n});\n\nconst createInitialModel3Step3State = (): Partial<DREFModel3Step3State> => ({\n  status: 'active',\n  currentStockDate: null,\n  currentStockTime: null,\n  currentStock: null,\n  previousDayStock: null,\n  vacuumTransfer: null,\n  grossOperatedProduction: '0',\n  sampleTaken: null,\n  netOperatedProduction: null,\n});\n\nconst createInitialUnicModelStep3State = (): Partial<DREFUnicModelStep3State> => ({\n    status: 'active',\n    reportDate: null,\n    reportTime: null,\n    tankLevel: null,\n    rawOperatedProduction: null,\n    sampleTaken: null,\n    netOperatedProduction: null,\n    comments: null,\n});\n\nconst INITIAL_META_STATE: DREFMeta = {\n  editionMode: false,\n  recordId: null,\n  revision: null,\n  payload: null,\n};\n\nexport const useDailyReportEFStore = create<DailyReportEFStoreState>(set => ({\n  step2: createInitialStep2State(),\n  model1Step3: createInitialModel1Step3State(),\n  model2Step3: createInitialModel2Step3State(),\n  model3Step3: createInitialModel3Step3State(),\n  unicModelStep3: createInitialUnicModelStep3State(),\n  meta: INITIAL_META_STATE,\n  setStep2: values =>\n    set(state => ({\n      step2: {\n        ...state.step2,\n        ...values,\n      },\n    })),\n  setModel1Step3: values =>\n    set(state => ({\n      model1Step3: {\n        ...state.model1Step3,\n        ...values,\n      },\n    })),\n  setModel2Step3: values =>\n    set(state => ({\n      model2Step3: {\n        ...state.model2Step3,\n        ...values,\n      },\n    })),\n  setModel3Step3: values =>\n    set(state => ({\n      model3Step3: {\n        ...state.model3Step3,\n        ...values,\n      },\n    })),\n    setUnicModelStep3: values =>\n    set(state => ({\n      unicModelStep3: {\n        ...state.unicModelStep3,\n        ...values,\n      },\n    })),\n  setLoadingMeta: values =>\n    set(state => ({\n      meta: {\n        ...state.meta,\n        ...values,\n      },\n    })),\n  resetStep3: () =>\n    set(state => ({\n      step2: state.step2,\n      model1Step3: createInitialModel1Step3State(),\n      model2Step3: createInitialModel2Step3State(),\n      model3Step3: createInitialModel3Step3State(),\n      unicModelStep3: createInitialUnicModelStep3State(),\n      meta: state.meta,\n    })),\n  reset: () =>\n    set(() => ({\n      step2: createInitialStep2State(),\n      model1Step3: createInitialModel1Step3State(),\n      model2Step3: createInitialModel2Step3State(),\n      model3Step3: createInitialModel3Step3State(),\n      unicModelStep3: createInitialUnicModelStep3State(),\n      meta: INITIAL_META_STATE,\n    })),\n}));\n"],"names":["DRFooterActions","onContinue","continueDisabled","onCancel","onBack","homeRouteName","accentColor","continueLabel","navigation","useNavigation","route","useRoute","insets","useSafeAreaInsets","calcPaddingBottom","Platform","OS","Math","max","bottom","showBackButton","canGoBack","name","View","style","styles","footerBar","paddingBottom","StatusButton","title","onPress","handleCancel","navigate","leftIcon","XMarkIcon","size","color","textStyle","flexOne","goBack","ArrowLeftIcon","backgroundColor","rightIcon","ArrowRightIcon","disabled","StyleSheet","create","position","left","right","borderTopWidth","borderTopColor","paddingHorizontal","paddingTop","gap","flexDirection","shadowColor","shadowOpacity","shadowRadius","shadowOffset","width","height","elevation","cancelButtonText","whiteText","flex","DRPage3EFUnicModel","formatTwoDigits","value","toString","padStart","getDefaultTime","now","Date","getHours","getMinutes","normalizeNumericString","String","replace","unicModelStep3","themeColor","primaryColor","useToast","show","user","useAuth","useDailyReportBaseStore","state","summary","useDailyReportEFStore","step2","setUnicModelStep3","reset","flowStationTank","setFlowStationTank","useState","isLoading","setIsLoading","isSubmitting","setIsSubmitting","isModalOpen","setIsModalOpen","guardDisabledRef","useRef","missingToastShownRef","defaultDate","reportDate","defaultTime","reportTime","defaultValues","status","date","time","tankLevel","rawOperatedProduction","sampleTaken","netOperatedProduction","comments","mode","control","useForm","handleSubmit","formState","isValid","watchedValues","useWatch","useEffect","mounted","tankId","tanks","getFlowStationTanksFiltered","Number","Array","isArray","current","flowStationId","type","message","summaryItems","useMemo","location","activity","field","facility","flowStationName","tankName","handleFinish","values","pad","num","nowDate","getFullYear","getMonth","getDate","getSeconds","toNumber","normalized","isNaN","reportDateTime","formatDateWithTime","safeTime","split","hoursRaw","minutesRaw","hours","min","isFinite","minutes","fieldPairs","id","payload","verb","API_VERBS","INSERT","table","TABLE_NAMES","DAILY_REPORT_FLOW_STATION_TANK","fields","map","filter","result","submitReport","error","success","offline","screen","ScrollView","container","contentContainerStyle","form","SummaryTable","items","block","Controller","rules","required","render","onChange","Select","label","MenuItem","row","flex1","DatePicker","spacer","TimePicker","Text","sectionTitle","fieldState","NumericField","unit","errorText","validate","RadioGroup","selectedValue","onValueChange","options","maxLength","TextInput","textArea","onChangeText","placeholder","multiline","numberOfLines","characterCount","length","helperText","ConfirmationModal","open","onClose","onConfirm","confirmCancel","alignItems","textAlign","fontSize","fontWeight","marginTop","marginBottom","borderWidth","borderColor","borderRadius","minHeight","padding","textAlignVertical","INITIAL_EDITING_STATE","isEditing","reportId","revision","INITIAL_STATE","fieldId","editing","DailyReportBaseStore","set","setFieldId","setSummary","setEditing","resetEditing","INITIAL_META_STATE","editionMode","recordId","DailyReportEFStoreState","model1Step3","model2Step3","fillingStartDate","fillingStartTime","fillingStartLevel","fillingEndDate","fillingEndTime","fillingEndLevel","model3Step3","currentStockDate","currentStockTime","currentStock","previousDayStock","vacuumTransfer","grossOperatedProduction","meta","setStep2","setModel1Step3","setModel2Step3","setModel3Step3","setLoadingMeta","resetStep3"],"mappings":"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"}