{"version":3,"file":"__federation_expose_DRPage3PM.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/DRPage3PM.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/dailyReportPM.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 } from 'react-native';\nimport { useNavigation } from '@react-navigation/native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport { Controller, useForm } from 'react-hook-form';\nimport {\n  SummaryTable,\n  DatePicker,\n  TimePicker,\n  Select,\n  MenuItem,\n  NumericField,\n  RadioGroup,\n  ConfirmationModal,\n  LoadingSpinner,\n  FormBox,\n  FieldGroup,\n} from '@data-oil-front/ui-mobile';\nimport { useToast } from '@data-oil-front/ui-mobile';\nimport {\n  submitReport,\n  getDailyReportMeasurementPointById,\n  type DailyReportMeasurementPoint,\n  useAuth,\n  useTheme,\n} from '@data-oil-front/core-shared';\nimport { TABLE_NAMES } from '@data-oil-front/core-shared';\nimport DRFooterActions from '../components/DRFooterActions';\nimport { useDailyReportBaseStore } from '../store/dailyReportBase.store';\nimport { useDailyReportPMStore } from '../store/dailyReportPM.store';\n\ndayjs.extend(utc);\n\ntype YesNo = 'yes' | 'no' | null;\ntype StatusValue = 'active' | 'inactive';\n\ninterface DailyReportPMForm {\n  date: Date | null;\n  time: string | null;\n  status: StatusValue;\n  grossProduction: string;\n  netProduction: string;\n  sampleTaken: YesNo;\n}\n\nconst parseDateFromStep2 = (value?: string | null): Date | null => {\n  if (!value) return null;\n  const parsed = dayjs(value, 'YYYY-MM-DD', true);\n  return parsed.isValid() ? parsed.toDate() : null;\n};\n\nconst yesNoFromBool = (value: boolean | null | undefined): YesNo => {\n  if (value === true) return 'yes';\n  if (value === false) return 'no';\n  return null;\n};\n\nconst pad2 = (n: number) => String(n).padStart(2, '0');\n\nconst normalizeHHmmss = (timeValue: string | null | undefined): string => {\n  const raw = String(timeValue ?? '').trim();\n  const [hStr, mStr, sStr] = raw.split(':');\n  const hh = pad2(\n    Math.max(0, Math.min(23, Number.isFinite(Number(hStr)) ? Number(hStr) : 0)),\n  );\n  const mm = pad2(\n    Math.max(0, Math.min(59, Number.isFinite(Number(mStr)) ? Number(mStr) : 0)),\n  );\n  const ss = pad2(\n    Math.max(0, Math.min(59, Number.isFinite(Number(sStr)) ? Number(sStr) : 0)),\n  );\n  return `${hh}:${mm}:${ss}`;\n};\n\nconst buildTimestamp = (date: Date, timeValue: string | null | undefined): string => {\n  const yyyy = date.getFullYear();\n  const mm = pad2(date.getMonth() + 1);\n  const dd = pad2(date.getDate());\n  const hhmmss = normalizeHHmmss(timeValue);\n  return `${yyyy}-${mm}-${dd} ${hhmmss}`;\n};\n\nconst nowTimestamp = (): string => {\n  const now = new Date();\n  const hh = pad2(now.getHours());\n  const mm = pad2(now.getMinutes());\n  const ss = pad2(now.getSeconds());\n  return buildTimestamp(now, `${hh}:${mm}:${ss}`);\n};\n\nexport default function DRPage3PM() {\n  const { show } = useToast();\n  const { user } = useAuth();\n  const navigation = useNavigation();\n  const insets = useSafeAreaInsets();\n  const { primaryColor: themeColor } = useTheme();\n  const accentColor = themeColor ?? '#1B418C';\n\n  const formatTwoDigits = (n: number) => n.toString().padStart(2, '0');\n  const initialNowRef = useRef(new Date());\n  const initialTimeRef = useRef(\n    `${formatTwoDigits(initialNowRef.current.getHours())}:${formatTwoDigits(\n      initialNowRef.current.getMinutes(),\n    )}`,\n  );\n\n  const summaryLocation = useDailyReportBaseStore(state => state.summary.location);\n  const summaryActivity = useDailyReportBaseStore(state => state.summary.activity);\n  const summaryField = useDailyReportBaseStore(state => state.summary.field);\n  const summaryFacility = useDailyReportBaseStore(state => state.summary.facility);\n  const resetEditing = useDailyReportBaseStore(state => state.resetEditing);\n\n  const step2FlowStationName = useDailyReportPMStore(state => state.step2.flowStationName);\n  const step2MeasurementPointName = useDailyReportPMStore(\n    state => state.step2.measurementPointName,\n  );\n  const step2MeasurementPointId = useDailyReportPMStore(\n    state => state.step2.measurementPointId,\n  );\n  const step2Date = useDailyReportPMStore(state => state.step2.date);\n  const step2Time = useDailyReportPMStore(state => state.step2.time);\n  const metaEditionMode = useDailyReportPMStore(state => state.meta.editionMode);\n  const metaRecordId = useDailyReportPMStore(state => state.meta.recordId);\n  const metaEditionNumber = useDailyReportPMStore(state => state.meta.editionNumber);\n  const setMeta = useDailyReportPMStore(state => state.setMeta);\n  const resetPMStore = useDailyReportPMStore(state => state.reset);\n\n  const summary = useMemo(\n    () => ({\n      location: summaryLocation ?? null,\n      activity: summaryActivity ?? null,\n      field: summaryField ?? null,\n      facility: summaryFacility ?? null,\n    }),\n    [summaryActivity, summaryField, summaryFacility, summaryLocation],\n  );\n\n  const isEditing = Boolean(metaEditionMode && metaRecordId);\n  const [prefillReport, setPrefillReport] = useState<DailyReportMeasurementPoint | null>(null);\n  const [prefillLoading, setPrefillLoading] = useState<boolean>(isEditing);\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [isModalOpen, setIsModalOpen] = useState(false);\n\n  const resolvedStep2Date = useMemo(() => parseDateFromStep2(step2Date), [step2Date]);\n  const resolvedStep2Time = step2Time ?? null;\n  const initialDateValue = resolvedStep2Date ?? initialNowRef.current;\n  const initialTimeValue = resolvedStep2Time ?? initialTimeRef.current;\n\n  const defaultFormValues = useMemo<DailyReportPMForm>(() => {\n    const toInputString = (value: unknown): string => {\n      if (value === null || value === undefined) return '';\n      // Normalize comma to dot for numeric strings\n      return String(value).replace(',', '.');\n    };\n\n    if (!prefillReport) {\n      return {\n        date: initialDateValue,\n        time: initialTimeValue,\n        status: 'active',\n        grossProduction: '',\n        netProduction: '',\n        sampleTaken: 'no',\n      };\n    }\n\n    const createdAt = prefillReport.date_created ? dayjs(prefillReport.date_created) : null;\n    const resolvedDate = createdAt?.isValid()\n      ? createdAt.toDate()\n      : initialDateValue;\n    const resolvedTime = createdAt?.isValid()\n      ? createdAt.utc().format('HH:mm')\n      : initialTimeValue;\n\n    const normalizedStatus =\n      prefillReport.status === 'inactive' ? 'inactive' : 'active';\n\n    return {\n      date: resolvedDate,\n      time: resolvedTime,\n      status: normalizedStatus,\n      grossProduction: toInputString(prefillReport.raw_operated_production),\n      netProduction: toInputString(prefillReport.net_operated_production),\n      sampleTaken: yesNoFromBool(prefillReport.sample_taken) ?? 'no',\n    };\n  }, [initialDateValue, initialTimeValue, prefillReport]);\n\n  const {\n    control,\n    handleSubmit,\n    reset,\n    getValues,\n    formState: { isValid },\n  } = useForm<DailyReportPMForm>({\n    defaultValues: defaultFormValues,\n    mode: 'onChange',\n  });\n\n  useEffect(() => {\n    reset(defaultFormValues);\n  }, [defaultFormValues, reset]);\n\n  useEffect(() => {\n    if (!isEditing || !metaRecordId || prefillReport) {\n      setPrefillLoading(false);\n      return;\n    }\n\n    let cancelled = false;\n    setPrefillLoading(true);\n\n    const fetchReport = async () => {\n      try {\n        const record = await getDailyReportMeasurementPointById(Number(metaRecordId));\n        if (!record || cancelled) {\n          show({\n            type: 'error',\n            message: 'No fue posible cargar el reporte seleccionado.',\n          });\n          // @ts-ignore navegación provista por host\n          navigation?.goBack?.();\n          return;\n        }\n        setPrefillReport(record);\n        if (metaEditionNumber == null && record.edition_number != null) {\n          setMeta({ editionNumber: record.edition_number ?? null });\n        }\n      } catch (error) {\n        if (__DEV__) {\n          // eslint-disable-next-line no-console\n          console.error('Error obteniendo reporte de punto de medición en edición', error);\n        }\n        show({\n          type: 'error',\n          message: 'Ocurrió un error al preparar el formulario en modo edición.',\n        });\n        // @ts-ignore navegación provista por host\n        navigation?.goBack?.();\n      } finally {\n        if (!cancelled) {\n          setPrefillLoading(false);\n        }\n      }\n    };\n\n    fetchReport();\n\n    return () => {\n      cancelled = true;\n    };\n  }, [\n    isEditing,\n    metaEditionNumber,\n    metaRecordId,\n    navigation,\n    prefillReport,\n    setMeta,\n    show,\n  ]);\n\n  const measurementPointMissing = !step2MeasurementPointId;\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 ?? 'Punto de medición' },\n      { name: 'Estación de flujo', value: step2FlowStationName ?? '—' },\n      { name: 'Punto de medición', value: step2MeasurementPointName ?? '—' },\n    ],\n    [\n      step2FlowStationName,\n      step2MeasurementPointName,\n      summary.activity,\n      summary.field,\n      summary.facility,\n      summary.location,\n    ],\n  );\n\n  const showNumericError = (value: string | null | undefined) => {\n    if (value === null || value === undefined || value === '') {\n      return 'Campo requerido';\n    }\n    return Number.isNaN(Number(value)) ? 'Debe ser un número válido' : true;\n  };\n\n  const handleFinish = async () => {\n    if (isSubmitting) return;\n    const measurementPointId = step2MeasurementPointId\n      ? Number(step2MeasurementPointId)\n      : null;\n\n    if (!measurementPointId) {\n      show({\n        type: 'error',\n        message: 'Debes seleccionar un punto de medición en el paso anterior.',\n      });\n      return;\n    }\n\n    setIsSubmitting(true);\n    try {\n      const values = getValues();\n      const selectedDate = values.date ? new Date(values.date) : initialDateValue;\n      const dateCreated = buildTimestamp(selectedDate, values.time ?? initialTimeValue);\n      const dateUpdated = nowTimestamp();\n\n      const toNum = (value: string | null): number => {\n        if (!value) return 0;\n        // Normalize comma to dot before parsing\n        const normalized = value.replace(',', '.');\n        return Number(normalized) || 0;\n      };\n      const yesNoToBool = (value: YesNo): boolean => value === 'yes';\n      const activityId = summary.activity === 'Recuperación' ? 2 : 1;\n      const editionNumberValue = isEditing\n        ? metaEditionNumber ?? prefillReport?.edition_number ?? 0\n        : 0;\n\n      const basePairs: [string, string | number | boolean | null][] = [\n        ['date_updated', dateUpdated],\n        ['status', values.status ?? 'active'],\n        ['sample_taken', yesNoToBool(values.sampleTaken)],\n        ['raw_operated_production', toNum(values.grossProduction)],\n        ['net_operated_production', toNum(values.netProduction)],\n        ['activity_id', activityId],\n        ['measurement_point_id', measurementPointId],\n        ['user_id', user?.id ? String(user.id) : null],\n        ['lab_analysis', prefillReport?.lab_analysis ?? false],\n        ['current_stock', null],\n        ['edition_number', editionNumberValue],\n      ];\n\n      const excludeOnEdit = new Set<string>(['date_created']);\n      const pairsWithCreated: [string, string | number | boolean | null][] = isEditing\n        ? basePairs\n        : [['date_created', dateCreated], ...basePairs];\n\n      const filteredPairs = pairsWithCreated\n        .filter(([k]) => !(isEditing && excludeOnEdit.has(k)))\n        .filter(([, v]) => v !== undefined);\n      const fields = filteredPairs.map(([key]) => key);\n      const valuesArray = filteredPairs.map(([, value]) => value);\n\n      const payload = {\n        verb: isEditing ? 'UPDATE' : 'INSERT',\n        table: TABLE_NAMES.DAILY_REPORT_MEASUREMENT_POINT,\n        fields,\n        values: valuesArray,\n        filter: isEditing && metaRecordId\n          ? [['id', '=', Number(metaRecordId)]]\n          : [],\n      } as const;\n\n      const result = await submitReport(\n        TABLE_NAMES.DAILY_REPORT_MEASUREMENT_POINT,\n        payload as any,\n        () => {},\n        errorMessage => {\n          show({\n            type: 'error',\n            message: `Error al enviar el reporte: ${errorMessage}`,\n          });\n        },\n      );\n\n      if (result.success) {\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({\n            type: 'success',\n            message: isEditing\n              ? 'Reporte actualizado correctamente.'\n              : 'Reporte enviado correctamente.',\n          });\n        }\n        resetPMStore();\n        resetEditing();\n        if (isEditing) {\n          // @ts-ignore navegación provista por host\n          navigation?.navigate?.('ReportsHistory');\n        } else {\n          // @ts-ignore navegación provista por host\n          navigation?.navigate?.('Home');\n        }\n      }\n    } catch (error) {\n      if (__DEV__) {\n        // eslint-disable-next-line no-console\n        console.error('Error inesperado al procesar el reporte PM', error);\n      }\n      show({\n        type: 'error',\n        message: 'Error inesperado al procesar el reporte.',\n      });\n    } finally {\n      setIsSubmitting(false);\n    }\n  };\n\n  const handleConfirmCancel = () => {\n    setIsModalOpen(false);\n    resetPMStore();\n    resetEditing();\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          {prefillLoading ? (\n            <View style={styles.loadingBox}>\n              <LoadingSpinner />\n              <Text style={styles.loadingText}>Cargando datos del reporte...</Text>\n            </View>\n          ) : null}\n          <SummaryTable items={summaryItems} />\n\n          {measurementPointMissing ? (\n            <Text style={styles.warningText}>\n              Completa la selección del punto de medición en el paso anterior para continuar.\n            </Text>\n          ) : null}\n\n          <View style={styles.fieldBlock} />\n\n          <View style={styles.row}>\n            <View style={styles.flexItem}>\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.flexItem}>\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.fieldBlock} />\n\n          <Controller\n            control={control}\n            name=\"status\"\n            render={({ field: { value, onChange } }) => (\n              <Select\n                value={value}\n                onChange={onChange}\n                label=\"Estado\"\n                accentColor={accentColor}\n              >\n                <MenuItem value=\"active\">Activo</MenuItem>\n                <MenuItem value=\"inactive\">Inactivo</MenuItem>\n              </Select>\n            )}\n          />\n\n          <View style={styles.fieldBlock} />\n\n          <FormBox title=\"Producción operada\">\n            <FieldGroup>\n              <Controller\n                control={control}\n                name=\"grossProduction\"\n                rules={{\n                  validate: showNumericError,\n                }}\n                render={({ field: { value, onChange }, fieldState: { error, isTouched } }) => (\n                  <NumericField\n                    label=\"Producción Operada Bruta (BLS)\"\n                    value={value}\n                    onChange={onChange}\n                    required\n                    touched={isTouched}\n                    errorText={error?.message}\n                  />\n                )}\n              />\n\n              <View style={styles.fieldBlock} />\n\n              <Controller\n                control={control}\n                name=\"netProduction\"\n                rules={{\n                  validate: showNumericError,\n                }}\n                render={({ field: { value, onChange }, fieldState: { error, isTouched } }) => (\n                  <NumericField\n                    label=\"Producción Operada Neta (BLS)\"\n                    value={value}\n                    onChange={onChange}\n                    required\n                    touched={isTouched}\n                    errorText={error?.message}\n                  />\n                )}\n              />\n            </FieldGroup>\n          </FormBox>\n\n          <View style={styles.fieldBlock} />\n\n          <Controller\n            control={control}\n            name=\"sampleTaken\"\n            render={({ field: { value, onChange } }) => (\n              <RadioGroup\n                title=\"¿Se tomó muestra?\"\n                selectedValue={value as any}\n                onValueChange={onChange as any}\n                row\n                accentColor={accentColor}\n                options={[\n                  { value: 'yes', label: 'Sí' },\n                  { value: 'no', label: 'No' },\n                ]}\n              />\n            )}\n          />\n        </View>\n      </ScrollView>\n      <DRFooterActions\n        onContinue={handleSubmit(handleFinish)}\n        continueDisabled={\n          prefillLoading || isSubmitting || !isValid || measurementPointMissing\n        }\n        onCancel={() => setIsModalOpen(true)}\n        continueLabel={isSubmitting ? 'Enviando...' : 'Finalizar'}\n        accentColor={accentColor}\n      />\n      <ConfirmationModal\n        open={isModalOpen}\n        onClose={() => setIsModalOpen(false)}\n        onConfirm={handleConfirmCancel}\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  fieldBlock: { height: 16 },\n  loadingBox: {\n    paddingVertical: 16,\n    alignItems: 'center',\n    gap: 8,\n  },\n  loadingText: {\n    color: '#6B7280',\n    fontSize: 14,\n  },\n  warningText: {\n    marginTop: 12,\n    color: '#B45309',\n    backgroundColor: '#FEF3C7',\n    borderRadius: 8,\n    paddingHorizontal: 12,\n    paddingVertical: 8,\n    fontSize: 14,\n  },\n  row: {\n    flexDirection: 'row',\n    gap: 0,\n    alignItems: 'center',\n  },\n  flexItem: {\n    flex: 1,\n  },\n  spacer: {\n    width: 12,\n  },\n});\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 DRPMStep2State {\n  flowStationId: string | null;\n  flowStationName?: string | null;\n  measurementPointId: string | null;\n  measurementPointName?: string | null;\n  date?: string | null;\n  time?: string | null;\n}\n\nexport interface DRPMMetaState {\n  editionMode: boolean;\n  recordId?: string | null;\n  editionNumber?: number | null;\n}\n\ninterface DRPMStoreState {\n  step2: Partial<DRPMStep2State>;\n  meta: DRPMMetaState;\n  setStep2: (values: Partial<DRPMStep2State>) => void;\n  setMeta: (values: Partial<DRPMMetaState>) => void;\n  reset: () => void;\n}\n\nconst createInitialStep2State = (): Partial<DRPMStep2State> => ({\n  flowStationId: null,\n  measurementPointId: null,\n});\n\nconst createInitialMetaState = (): DRPMMetaState => ({\n  editionMode: false,\n  recordId: null,\n  editionNumber: null,\n});\n\nexport const useDailyReportPMStore = create<DRPMStoreState>(set => ({\n  step2: createInitialStep2State(),\n  meta: createInitialMetaState(),\n  setStep2: values =>\n    set(state => ({\n      step2: {\n        ...state.step2,\n        ...values,\n      },\n    })),\n  setMeta: values =>\n    set(state => ({\n      meta: {\n        ...state.meta,\n        ...values,\n      },\n    })),\n  reset: () =>\n    set(() => ({\n      step2: createInitialStep2State(),\n      meta: createInitialMetaState(),\n    })),\n}));\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","DRPage3PM","dayjs","extend","utc","parseDateFromStep2","value","parsed","isValid","toDate","yesNoFromBool","pad2","n","String","padStart","buildTimestamp","date","timeValue","yyyy","getFullYear","mm","getMonth","dd","getDate","hhmmss","normalizeHHmmss","raw","trim","split","hStr","mStr","sStr","min","Number","isFinite","nowTimestamp","now","Date","hh","getHours","getMinutes","ss","getSeconds","useToast","show","useAuth","user","themeColor","primaryColor","formatTwoDigits","toString","initialNowRef","useRef","initialTimeRef","current","summaryLocation","useDailyReportBaseStore","state","summary","location","summaryActivity","activity","summaryField","field","summaryFacility","facility","resetEditing","step2FlowStationName","useDailyReportPMStore","step2","flowStationName","step2MeasurementPointName","measurementPointName","step2MeasurementPointId","measurementPointId","step2Date","step2Time","time","metaEditionMode","meta","editionMode","metaRecordId","recordId","metaEditionNumber","editionNumber","setMeta","resetPMStore","reset","useMemo","isEditing","Boolean","prefillReport","setPrefillReport","useState","prefillLoading","setPrefillLoading","isSubmitting","setIsSubmitting","isModalOpen","setIsModalOpen","resolvedStep2Date","resolvedStep2Time","initialDateValue","initialTimeValue","defaultFormValues","toInputString","replace","status","grossProduction","netProduction","sampleTaken","createdAt","date_created","format","raw_operated_production","net_operated_production","sample_taken","useForm","defaultValues","mode","control","handleSubmit","getValues","formState","useEffect","cancelled","record","getDailyReportMeasurementPointById","type","message","edition_number","error","measurementPointMissing","summaryItems","showNumericError","isNaN","screen","ScrollView","container","contentContainerStyle","form","loadingBox","LoadingSpinner","Text","loadingText","SummaryTable","items","warningText","fieldBlock","row","flexItem","Controller","render","onChange","DatePicker","label","spacer","TimePicker","Select","MenuItem","FormBox","FieldGroup","rules","validate","fieldState","isTouched","NumericField","required","touched","errorText","RadioGroup","selectedValue","onValueChange","options","values","selectedDate","dateCreated","dateUpdated","toNum","normalized","activityId","editionNumberValue","basePairs","id","lab_analysis","excludeOnEdit","Set","filteredPairs","filter","k","has","undefined","fields","map","valuesArray","payload","verb","table","TABLE_NAMES","DAILY_REPORT_MEASUREMENT_POINT","result","submitReport","errorMessage","success","offline","__DEV__","yesNoToBool","ConfirmationModal","open","onClose","onConfirm","handleConfirmCancel","paddingVertical","alignItems","fontSize","marginTop","borderRadius","INITIAL_EDITING_STATE","reportId","revision","INITIAL_STATE","fieldId","editing","DailyReportBaseStore","set","setFieldId","setSummary","setEditing","DRPMStoreState","flowStationId","setStep2"],"mappings":"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"}