{"version":3,"sources":["../src/pages/MyTasksPage.tsx","../src/pages/MyHistoryTasksPage.tsx","../src/pages/ApproveTaskPage.tsx","../src/i18n/index.ts"],"names":["MyTasksPage","bpmClient","currentUser","onApprove","renderTaskName","renderActions","onRefresh","className","t","useTranslation","tasks","setTasks","useState","loading","setLoading","error","setError","fetchTasks","useCallback","data","fetchError","err","useEffect","handleRefresh","handleApprove","task","formatDate","dateString","defaultActionButton","jsx","jsxs","MyHistoryTasksPage","formatDuration","start","end","diffMs","diffMins","diffHours","diffDays","ApproveTaskPage","taskId","renderForm","onApproved","onRejected","onCancel","additionalVariables","setTask","formVariables","setFormVariables","formValues","setFormValues","submitting","setSubmitting","fetchTaskData","taskRes","varsRes","handleFieldChange","field","value","prev","handleComplete","approved","variables","completeError","bpmTranslations","addBpmTranslations","i18n","lng","resources"],"mappings":"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","file":"index.cjs","sourcesContent":["import { useState, useEffect, useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport type { Task, BpmClient } from \"@amaster.ai/bpm-client\";\n\nexport interface MyTasksPageProps {\n  /** BPM client instance */\n  bpmClient: BpmClient;\n  /** Current user identifier */\n  currentUser: string;\n  /** Called when clicking approve button */\n  onApprove?: (task: Task) => void;\n  /** Custom render for task name cell */\n  renderTaskName?: (task: Task) => React.ReactNode;\n  /** Custom render for actions cell */\n  renderActions?: (task: Task, defaultAction: React.ReactNode) => React.ReactNode;\n  /** Called when task list is refreshed */\n  onRefresh?: () => void;\n  /** Additional class name */\n  className?: string;\n}\n\n/**\n * My Tasks Page - displays current user's pending tasks\n *\n * This is a shared component that can be used across different applications.\n * Each application sees the same UI but fetches different data based on the currentUser.\n */\nexport function MyTasksPage({\n  bpmClient,\n  currentUser,\n  onApprove,\n  renderTaskName,\n  renderActions,\n  onRefresh,\n  className = \"\",\n}: MyTasksPageProps) {\n  const { t } = useTranslation(\"bpm\");\n  const [tasks, setTasks] = useState<Task[]>([]);\n  const [loading, setLoading] = useState(false);\n  const [error, setError] = useState<string | null>(null);\n\n  const fetchTasks = useCallback(async () => {\n    setLoading(true);\n    setError(null);\n    try {\n      const { data, error: fetchError } = await bpmClient.getTasks({\n        assignee: currentUser,\n      });\n      if (fetchError) {\n        setError(fetchError.message);\n      } else {\n        setTasks(data || []);\n      }\n    } catch (err) {\n      setError(err instanceof Error ? err.message : \"Failed to fetch tasks\");\n    } finally {\n      setLoading(false);\n    }\n  }, [bpmClient, currentUser]);\n\n  useEffect(() => {\n    fetchTasks();\n  }, [fetchTasks]);\n\n  const handleRefresh = () => {\n    fetchTasks();\n    onRefresh?.();\n  };\n\n  const handleApprove = (task: Task) => {\n    onApprove?.(task);\n  };\n\n  const formatDate = (dateString: string | null | undefined) => {\n    if (!dateString) return \"-\";\n    return new Date(dateString).toLocaleString();\n  };\n\n  const defaultActionButton = (task: Task) => (\n    <button type=\"button\" onClick={() => handleApprove(task)} className=\"bpm-btn bpm-btn-outline\">\n      {t(\"taskList.approve\", \"Approve\")}\n    </button>\n  );\n\n  return (\n    <div className={`bpm-tasks-page ${className}`}>\n      <div className=\"bpm-tasks-header\">\n        <h1 className=\"bpm-tasks-title\">{t(\"taskList.myTasks\", \"My Tasks\")}</h1>\n        <button\n          type=\"button\"\n          onClick={handleRefresh}\n          disabled={loading}\n          className=\"bpm-btn bpm-btn-outline\"\n        >\n          {loading ? t(\"taskList.loading\", \"Loading...\") : t(\"taskList.refresh\", \"Refresh\")}\n        </button>\n      </div>\n\n      {error && <div className=\"bpm-error\">{error}</div>}\n\n      <table className=\"bpm-table\">\n        <thead>\n          <tr>\n            <th>{t(\"taskList.taskName\", \"Task Name\")}</th>\n            <th>{t(\"taskList.processInstance\", \"Process Instance\")}</th>\n            <th>{t(\"taskList.createdAt\", \"Created At\")}</th>\n            <th>{t(\"taskList.dueDate\", \"Due Date\")}</th>\n            <th>{t(\"taskList.actions\", \"Actions\")}</th>\n          </tr>\n        </thead>\n        <tbody>\n          {tasks.length === 0 ? (\n            <tr>\n              <td colSpan={5} className=\"bpm-table-empty\">\n                {loading\n                  ? t(\"taskList.loading\", \"Loading...\")\n                  : t(\"taskList.noTasks\", \"No pending tasks\")}\n              </td>\n            </tr>\n          ) : (\n            tasks.map((task) => (\n              <tr key={task.id}>\n                <td>{renderTaskName ? renderTaskName(task) : task.name}</td>\n                <td className=\"bpm-mono\">{task.processInstanceId?.slice(0, 8)}...</td>\n                <td>{formatDate(task.created)}</td>\n                <td>{formatDate(task.due)}</td>\n                <td>\n                  {renderActions\n                    ? renderActions(task, defaultActionButton(task))\n                    : defaultActionButton(task)}\n                </td>\n              </tr>\n            ))\n          )}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n\nexport type { Task };\n","import { useState, useEffect, useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport type { HistoryTask, BpmClient } from \"@amaster.ai/bpm-client\";\n\nexport interface MyHistoryTasksPageProps {\n  /** BPM client instance */\n  bpmClient: BpmClient;\n  /** Current user identifier */\n  currentUser: string;\n  /** Custom render for task name cell */\n  renderTaskName?: (task: HistoryTask) => React.ReactNode;\n  /** Custom render for actions cell */\n  renderActions?: (task: HistoryTask) => React.ReactNode;\n  /** Called when task list is refreshed */\n  onRefresh?: () => void;\n  /** Additional class name */\n  className?: string;\n}\n\n/**\n * My History Tasks Page - displays current user's completed tasks\n */\nexport function MyHistoryTasksPage({\n  bpmClient,\n  currentUser,\n  renderTaskName,\n  renderActions,\n  onRefresh,\n  className = \"\",\n}: MyHistoryTasksPageProps) {\n  const { t } = useTranslation(\"bpm\");\n  const [tasks, setTasks] = useState<HistoryTask[]>([]);\n  const [loading, setLoading] = useState(false);\n  const [error, setError] = useState<string | null>(null);\n\n  const fetchTasks = useCallback(async () => {\n    setLoading(true);\n    setError(null);\n    try {\n      const { data, error: fetchError } = await bpmClient.getHistoryTasks({\n        taskAssignee: currentUser,\n        finished: true,\n      });\n      if (fetchError) {\n        setError(fetchError.message);\n      } else {\n        setTasks(data || []);\n      }\n    } catch (err) {\n      setError(err instanceof Error ? err.message : \"Failed to fetch history\");\n    } finally {\n      setLoading(false);\n    }\n  }, [bpmClient, currentUser]);\n\n  useEffect(() => {\n    fetchTasks();\n  }, [fetchTasks]);\n\n  const handleRefresh = () => {\n    fetchTasks();\n    onRefresh?.();\n  };\n\n  const formatDate = (dateString: string | null | undefined) => {\n    if (!dateString) return \"-\";\n    return new Date(dateString).toLocaleString();\n  };\n\n  const formatDuration = (start: string | null | undefined, end: string | null | undefined) => {\n    if (!start || !end) return \"-\";\n    const diffMs = new Date(end).getTime() - new Date(start).getTime();\n    const diffMins = Math.floor(diffMs / 60000);\n    const diffHours = Math.floor(diffMins / 60);\n    const diffDays = Math.floor(diffHours / 24);\n\n    if (diffDays > 0) return `${diffDays}d ${diffHours % 24}h`;\n    if (diffHours > 0) return `${diffHours}h ${diffMins % 60}m`;\n    return `${diffMins}m`;\n  };\n\n  return (\n    <div className={`bpm-history-page ${className}`}>\n      <div className=\"bpm-tasks-header\">\n        <h1 className=\"bpm-tasks-title\">{t(\"taskList.myHistory\", \"My Completed Tasks\")}</h1>\n        <button\n          type=\"button\"\n          onClick={handleRefresh}\n          disabled={loading}\n          className=\"bpm-btn bpm-btn-outline\"\n        >\n          {loading ? t(\"taskList.loading\", \"Loading...\") : t(\"taskList.refresh\", \"Refresh\")}\n        </button>\n      </div>\n\n      {error && <div className=\"bpm-error\">{error}</div>}\n\n      <table className=\"bpm-table\">\n        <thead>\n          <tr>\n            <th>{t(\"taskList.taskName\", \"Task Name\")}</th>\n            <th>{t(\"taskList.processInstance\", \"Process Instance\")}</th>\n            <th>{t(\"taskList.startTime\", \"Start Time\")}</th>\n            <th>{t(\"taskList.endTime\", \"End Time\")}</th>\n            <th>{t(\"taskList.duration\", \"Duration\")}</th>\n            {renderActions && <th>{t(\"taskList.actions\", \"Actions\")}</th>}\n          </tr>\n        </thead>\n        <tbody>\n          {tasks.length === 0 ? (\n            <tr>\n              <td colSpan={renderActions ? 6 : 5} className=\"bpm-table-empty\">\n                {loading\n                  ? t(\"taskList.loading\", \"Loading...\")\n                  : t(\"taskList.noHistory\", \"No completed tasks\")}\n              </td>\n            </tr>\n          ) : (\n            tasks.map((task) => (\n              <tr key={task.id}>\n                <td>{renderTaskName ? renderTaskName(task) : task.name}</td>\n                <td className=\"bpm-mono\">{task.processInstanceId?.slice(0, 8)}...</td>\n                <td>{formatDate(task.startTime)}</td>\n                <td>{formatDate(task.endTime)}</td>\n                <td>{formatDuration(task.startTime, task.endTime)}</td>\n                {renderActions && <td>{renderActions(task)}</td>}\n              </tr>\n            ))\n          )}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n\nexport type { HistoryTask };\n","import { useState, useEffect, useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport type { BpmClient, TaskFormVariables, Task } from \"@amaster.ai/bpm-client\";\n\nexport interface ApproveTaskPageProps {\n  /** Task ID to approve */\n  taskId: string;\n  /** BPM client instance */\n  bpmClient: BpmClient;\n  /** Render form fields based on form variables */\n  renderForm: (\n    formVariables: TaskFormVariables,\n    onFieldChange: (field: string, value: unknown) => void\n  ) => React.ReactNode;\n  /** Called after successful approval */\n  onApproved?: () => void;\n  /** Called after rejection */\n  onRejected?: () => void;\n  /** Called on cancel */\n  onCancel?: () => void;\n  /** Additional variables to include when completing task */\n  additionalVariables?: Record<string, unknown>;\n  /** Additional class name */\n  className?: string;\n}\n\n/**\n * Approve Task Page - displays task details and form for approval\n */\nexport function ApproveTaskPage({\n  taskId,\n  bpmClient,\n  renderForm,\n  onApproved,\n  onRejected,\n  onCancel,\n  additionalVariables = {},\n  className = \"\",\n}: ApproveTaskPageProps) {\n  const { t } = useTranslation(\"bpm\");\n  const [task, setTask] = useState<Task | null>(null);\n  const [formVariables, setFormVariables] = useState<TaskFormVariables>({});\n  const [formValues, setFormValues] = useState<Record<string, unknown>>({});\n  const [loading, setLoading] = useState(true);\n  const [submitting, setSubmitting] = useState(false);\n  const [error, setError] = useState<string | null>(null);\n\n  const fetchTaskData = useCallback(async () => {\n    setLoading(true);\n    setError(null);\n    try {\n      const [taskRes, varsRes] = await Promise.all([\n        bpmClient.getTask(taskId),\n        bpmClient.getTaskFormVariables(taskId),\n      ]);\n\n      if (taskRes.error) {\n        setError(taskRes.error.message);\n        return;\n      }\n      if (varsRes.error) {\n        setError(varsRes.error.message);\n        return;\n      }\n\n      setTask(taskRes.data);\n      setFormVariables(varsRes.data || {});\n    } catch (err) {\n      setError(err instanceof Error ? err.message : \"Failed to load task\");\n    } finally {\n      setLoading(false);\n    }\n  }, [bpmClient, taskId]);\n\n  useEffect(() => {\n    if (taskId) {\n      fetchTaskData();\n    }\n  }, [taskId, fetchTaskData]);\n\n  const handleFieldChange = (field: string, value: unknown) => {\n    setFormValues((prev) => ({ ...prev, [field]: value }));\n  };\n\n  const handleComplete = async (approved: boolean) => {\n    setSubmitting(true);\n    setError(null);\n    try {\n      const variables = {\n        ...formValues,\n        ...additionalVariables,\n        approvalStatus: approved ? \"approved\" : \"rejected\",\n      };\n\n      const { error: completeError } = await bpmClient.completeTask(taskId, variables);\n\n      if (completeError) {\n        setError(completeError.message);\n        return;\n      }\n\n      if (approved) {\n        onApproved?.();\n      } else {\n        onRejected?.();\n      }\n    } catch (err) {\n      setError(err instanceof Error ? err.message : \"Failed to complete task\");\n    } finally {\n      setSubmitting(false);\n    }\n  };\n\n  if (loading) {\n    return (\n      <div className={`bpm-approve-page bpm-loading ${className}`}>\n        {t(\"approveTask.loading\", \"Loading...\")}\n      </div>\n    );\n  }\n\n  if (!task) {\n    return (\n      <div className={`bpm-approve-page ${className}`}>\n        <div className=\"bpm-error\">{t(\"approveTask.notFound\", \"Task not found\")}</div>\n      </div>\n    );\n  }\n\n  return (\n    <div className={`bpm-approve-page ${className}`}>\n      <div className=\"bpm-approve-card\">\n        <div className=\"bpm-approve-header\">\n          <h2 className=\"bpm-approve-title\">{task.name}</h2>\n        </div>\n        <div className=\"bpm-approve-content\">\n          {error && <div className=\"bpm-error\">{error}</div>}\n\n          <div className=\"bpm-approve-form\">{renderForm(formVariables, handleFieldChange)}</div>\n\n          <div className=\"bpm-approve-actions\">\n            <button\n              type=\"button\"\n              onClick={() => handleComplete(true)}\n              disabled={submitting}\n              className=\"bpm-btn bpm-btn-primary\"\n            >\n              {submitting\n                ? t(\"approveTask.submitting\", \"Submitting...\")\n                : t(\"approveTask.approve\", \"Approve\")}\n            </button>\n            <button\n              type=\"button\"\n              onClick={() => handleComplete(false)}\n              disabled={submitting}\n              className=\"bpm-btn bpm-btn-danger\"\n            >\n              {submitting\n                ? t(\"approveTask.submitting\", \"Submitting...\")\n                : t(\"approveTask.reject\", \"Reject\")}\n            </button>\n            {onCancel && (\n              <button\n                type=\"button\"\n                onClick={onCancel}\n                disabled={submitting}\n                className=\"bpm-btn bpm-btn-outline\"\n              >\n                {t(\"approveTask.cancel\", \"Cancel\")}\n              </button>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport type { TaskFormVariables };\n","export const bpmTranslations = {\n  en: {\n    taskList: {\n      myTasks: \"My Tasks\",\n      myHistory: \"My Completed Tasks\",\n      taskName: \"Task Name\",\n      processInstance: \"Process Instance\",\n      createdAt: \"Created At\",\n      dueDate: \"Due Date\",\n      startTime: \"Start Time\",\n      endTime: \"End Time\",\n      duration: \"Duration\",\n      actions: \"Actions\",\n      approve: \"Approve\",\n      refresh: \"Refresh\",\n      loading: \"Loading...\",\n      noTasks: \"No pending tasks\",\n      noHistory: \"No completed tasks\",\n    },\n    approveTask: {\n      approve: \"Approve\",\n      reject: \"Reject\",\n      cancel: \"Cancel\",\n      notFound: \"Task not found\",\n      loading: \"Loading...\",\n      submitting: \"Submitting...\",\n    },\n  },\n  \"zh-CN\": {\n    taskList: {\n      myTasks: \"我的待办\",\n      myHistory: \"我的已办\",\n      taskName: \"任务名称\",\n      processInstance: \"流程实例\",\n      createdAt: \"创建时间\",\n      dueDate: \"截止时间\",\n      startTime: \"开始时间\",\n      endTime: \"结束时间\",\n      duration: \"耗时\",\n      actions: \"操作\",\n      approve: \"审批\",\n      refresh: \"刷新\",\n      loading: \"加载中...\",\n      noTasks: \"暂无待办任务\",\n      noHistory: \"暂无已办任务\",\n    },\n    approveTask: {\n      approve: \"同意\",\n      reject: \"拒绝\",\n      cancel: \"取消\",\n      notFound: \"任务不存在\",\n      loading: \"加载中...\",\n      submitting: \"提交中...\",\n    },\n  },\n};\n\n/**\n * Add BPM translations to i18next instance\n */\nexport function addBpmTranslations(i18n: {\n  addResourceBundle: (\n    lng: string,\n    ns: string,\n    resources: Record<string, unknown>,\n    deep?: boolean,\n    overwrite?: boolean\n  ) => void;\n}) {\n  Object.entries(bpmTranslations).forEach(([lng, resources]) => {\n    i18n.addResourceBundle(lng, \"bpm\", resources, true, true);\n  });\n}\n"]}