markpdfdown 0.1.3 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -67524,6 +67524,7 @@ const WindowControls = ({ onClose }) => {
67524
67524
  display: "flex",
67525
67525
  gap: "8px",
67526
67526
  padding: "12px",
67527
+ // @ts-expect-error WebkitAppRegion is Electron-specific CSS property
67527
67528
  WebkitAppRegion: "no-drag"
67528
67529
  },
67529
67530
  children: [
@@ -67780,6 +67781,7 @@ const AppLayout = () => {
67780
67781
  );
67781
67782
  };
67782
67783
  const { Text: Text$2 } = Typography;
67784
+ const SELECTED_MODEL_KEY = "markpdfdown_selected_model";
67783
67785
  const UploadPanel = () => {
67784
67786
  const navigate = useNavigate();
67785
67787
  const { message } = App$1.useApp();
@@ -67798,11 +67800,22 @@ const UploadPanel = () => {
67798
67800
  const result = await window.api.model.getAll();
67799
67801
  if (result.success && result.data) {
67800
67802
  setModelGroups(result.data);
67803
+ const savedModel = localStorage.getItem(SELECTED_MODEL_KEY);
67804
+ if (savedModel) {
67805
+ const modelExists = result.data.some(
67806
+ (group) => group.models.some(
67807
+ (model) => `${model.id}@${model.provider}` === savedModel
67808
+ )
67809
+ );
67810
+ if (modelExists) {
67811
+ setSelectedModel(savedModel);
67812
+ }
67813
+ }
67801
67814
  } else {
67802
67815
  message.error(result.error || t2("messages.fetch_models_failed"));
67803
67816
  }
67804
67817
  } catch (error) {
67805
- console.error("获取模型列表出错:", error);
67818
+ console.error("Failed to fetch model list:", error);
67806
67819
  message.error(
67807
67820
  t2("messages.fetch_models_failed") + ": " + (error instanceof Error ? error.message : String(error))
67808
67821
  );
@@ -67812,6 +67825,10 @@ const UploadPanel = () => {
67812
67825
  };
67813
67826
  fetchAllModels();
67814
67827
  }, [message, t2]);
67828
+ const handleModelChange = (value) => {
67829
+ setSelectedModel(value);
67830
+ localStorage.setItem(SELECTED_MODEL_KEY, value);
67831
+ };
67815
67832
  const getModelOptions = () => {
67816
67833
  const options = modelGroups.map((group) => ({
67817
67834
  label: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: group.providerName }),
@@ -67851,7 +67868,7 @@ const UploadPanel = () => {
67851
67868
  setFileList([...fileList, ...newFiles]);
67852
67869
  }
67853
67870
  } catch (error) {
67854
- console.error("选择文件失败:", error);
67871
+ console.error("Failed to select files:", error);
67855
67872
  message.error(
67856
67873
  t2("messages.select_failed") + ": " + (error instanceof Error ? error.message : String(error))
67857
67874
  );
@@ -67961,7 +67978,7 @@ const UploadPanel = () => {
67961
67978
  await window.api.task.delete(task.id);
67962
67979
  }
67963
67980
  } catch (error) {
67964
- console.error(`上传文件 ${file.name} 出错:`, error);
67981
+ console.error(`Failed to upload file ${file.name}:`, error);
67965
67982
  message.error(t2("messages.upload_failed", { filename: file.name }));
67966
67983
  await window.api.task.delete(task.id);
67967
67984
  }
@@ -67974,7 +67991,7 @@ const UploadPanel = () => {
67974
67991
  message.error(t2("messages.upload_error"));
67975
67992
  }
67976
67993
  } catch (error) {
67977
- console.error("上传文件出错:", error);
67994
+ console.error("Failed to upload files:", error);
67978
67995
  message.error(
67979
67996
  t2("messages.upload_error") + ": " + (error instanceof Error ? error.message : String(error))
67980
67997
  );
@@ -67991,7 +68008,10 @@ const UploadPanel = () => {
67991
68008
  Button$1,
67992
68009
  {
67993
68010
  type: "primary",
67994
- onClick: handleFileSelect,
68011
+ onClick: (e2) => {
68012
+ e2.stopPropagation();
68013
+ handleFileSelect();
68014
+ },
67995
68015
  style: { marginTop: 16 },
67996
68016
  children: t2("dragger.button")
67997
68017
  }
@@ -68006,7 +68026,8 @@ const UploadPanel = () => {
68006
68026
  options: getModelOptions(),
68007
68027
  loading,
68008
68028
  placeholder: t2("form.model_placeholder"),
68009
- onChange: (value) => setSelectedModel(value)
68029
+ value: selectedModel || void 0,
68030
+ onChange: handleModelChange
68010
68031
  }
68011
68032
  ),
68012
68033
  /* @__PURE__ */ jsxRuntimeExports.jsx(Text$2, { children: t2("form.page_range_label") }),
@@ -68157,7 +68178,7 @@ const List = () => {
68157
68178
  message.error(result.error || t2("messages.fetch_failed"));
68158
68179
  }
68159
68180
  } catch (error) {
68160
- console.error("获取任务列表失败:", error);
68181
+ console.error("Failed to fetch task list:", error);
68161
68182
  message.error(t2("messages.fetch_failed"));
68162
68183
  } finally {
68163
68184
  setLoading(false);
@@ -68259,7 +68280,7 @@ const List = () => {
68259
68280
  message.error(result.error || t2("messages.delete_failed"));
68260
68281
  }
68261
68282
  } catch (error) {
68262
- console.error("删除任务失败:", error);
68283
+ console.error("Failed to delete task:", error);
68263
68284
  message.error(t2("messages.delete_failed"));
68264
68285
  }
68265
68286
  }
@@ -68281,7 +68302,7 @@ const List = () => {
68281
68302
  message.error(result.error || t2("messages.action_failed", { action: statusText }));
68282
68303
  }
68283
68304
  } catch (error) {
68284
- console.error(`${statusText}任务失败:`, error);
68305
+ console.error(`Failed to ${statusText} task:`, error);
68285
68306
  message.error(t2("messages.action_failed", { action: statusText }));
68286
68307
  }
68287
68308
  }
@@ -68614,7 +68635,7 @@ const Provider = ({
68614
68635
  setSuffix(data.suffix);
68615
68636
  }
68616
68637
  } catch (error) {
68617
- console.error("获取服务商详情出错:", error);
68638
+ console.error("Failed to fetch provider details:", error);
68618
68639
  }
68619
68640
  };
68620
68641
  fetchProviderDetails();
@@ -68630,7 +68651,7 @@ const Provider = ({
68630
68651
  }
68631
68652
  setModels(result.data);
68632
68653
  } catch (error) {
68633
- console.error("获取模型列表出错:", error);
68654
+ console.error("Failed to fetch models:", error);
68634
68655
  message.error(
68635
68656
  t2("messages.fetch_models_failed") + ": " + (error instanceof Error ? error.message : String(error))
68636
68657
  );
@@ -68649,7 +68670,7 @@ const Provider = ({
68649
68670
  message.success(t2("messages.delete_model_success"));
68650
68671
  fetchModelsRef.current();
68651
68672
  } catch (error) {
68652
- console.error("删除模型出错:", error);
68673
+ console.error("Failed to delete model:", error);
68653
68674
  message.error(
68654
68675
  t2("messages.delete_model_failed") + ": " + (error instanceof Error ? error.message : String(error))
68655
68676
  );
@@ -68674,7 +68695,7 @@ const Provider = ({
68674
68695
  message.success(t2("messages.add_model_success"));
68675
68696
  fetchModelsRef.current();
68676
68697
  } catch (error) {
68677
- console.error("添加模型出错:", error);
68698
+ console.error("Failed to add model:", error);
68678
68699
  message.error(
68679
68700
  t2("messages.add_model_failed") + ": " + (error instanceof Error ? error.message : String(error))
68680
68701
  );
@@ -68690,7 +68711,7 @@ const Provider = ({
68690
68711
  setProviderData(result.data);
68691
68712
  message.success(t2("messages.update_success"));
68692
68713
  } catch (error) {
68693
- console.error("更新服务商信息出错:", error);
68714
+ console.error("Failed to update provider:", error);
68694
68715
  message.error(
68695
68716
  t2("messages.update_failed") + ": " + (error instanceof Error ? error.message : String(error))
68696
68717
  );
@@ -68709,7 +68730,7 @@ const Provider = ({
68709
68730
  }
68710
68731
  message.success(t2("messages.test_success"));
68711
68732
  } catch (error) {
68712
- console.error("测试模型连接出错:", error);
68733
+ console.error("Failed to test model connection:", error);
68713
68734
  message.error(
68714
68735
  t2("messages.test_failed") + ": " + (error instanceof Error ? error.message : String(error))
68715
68736
  );
@@ -68745,7 +68766,7 @@ const Provider = ({
68745
68766
  }
68746
68767
  setProviderData(result.data);
68747
68768
  } catch (error) {
68748
- console.error("更新服务商状态出错:", error);
68769
+ console.error("Failed to update provider status:", error);
68749
68770
  }
68750
68771
  }
68751
68772
  }
@@ -68947,7 +68968,7 @@ const Provider = ({
68947
68968
  onProviderDeleted();
68948
68969
  }
68949
68970
  } catch (error) {
68950
- console.error("删除服务商出错:", error);
68971
+ console.error("Failed to delete provider:", error);
68951
68972
  message.error(
68952
68973
  t2("messages.delete_provider_failed") + ": " + (error instanceof Error ? error.message : String(error))
68953
68974
  );
@@ -68983,7 +69004,7 @@ const ModelService = () => {
68983
69004
  try {
68984
69005
  const response = await window.api.provider.getAll();
68985
69006
  if (!response.success) {
68986
- throw new Error(response.error || "获取服务商列表失败");
69007
+ throw new Error(response.error || t2("messages.fetch_providers_failed"));
68987
69008
  }
68988
69009
  const providers = response.data;
68989
69010
  const providerTabs = providers.map((provider) => ({
@@ -69010,7 +69031,7 @@ const ModelService = () => {
69010
69031
  setIsInitialLoad(false);
69011
69032
  }
69012
69033
  } catch (error) {
69013
- console.error("获取服务商列表出错:", error);
69034
+ console.error("Failed to fetch provider list:", error);
69014
69035
  }
69015
69036
  }, [activeKey, isInitialLoad, t2]);
69016
69037
  const handleProviderAdded = reactExports.useCallback((providerId) => {
@@ -69023,7 +69044,7 @@ const ModelService = () => {
69023
69044
  try {
69024
69045
  const response = await window.api.provider.getAll();
69025
69046
  if (!response.success) {
69026
- throw new Error(response.error || "获取服务商列表失败");
69047
+ throw new Error(response.error || t2("messages.fetch_providers_failed"));
69027
69048
  }
69028
69049
  const providers = response.data;
69029
69050
  if (providers.length > 0) {
@@ -69032,11 +69053,11 @@ const ModelService = () => {
69032
69053
  setActiveKey("add provider");
69033
69054
  }
69034
69055
  } catch (error) {
69035
- console.error("获取服务商列表失败:", error);
69056
+ console.error("Failed to fetch provider list:", error);
69036
69057
  setActiveKey("add provider");
69037
69058
  }
69038
69059
  });
69039
- }, []);
69060
+ }, [t2]);
69040
69061
  reactExports.useEffect(() => {
69041
69062
  handleProviderAddedRef.current = handleProviderAdded;
69042
69063
  }, [handleProviderAdded]);
@@ -121138,6 +121159,7 @@ const Preview = () => {
121138
121159
  const [loading, setLoading] = reactExports.useState(true);
121139
121160
  const [imageError, setImageError] = reactExports.useState(false);
121140
121161
  const [retrying, setRetrying] = reactExports.useState(false);
121162
+ const [retryingFailed, setRetryingFailed] = reactExports.useState(false);
121141
121163
  const fetchTask = reactExports.useCallback(async () => {
121142
121164
  if (!id) return;
121143
121165
  try {
@@ -121145,15 +121167,15 @@ const Preview = () => {
121145
121167
  if (result.success && result.data) {
121146
121168
  setTask(result.data);
121147
121169
  } else {
121148
- message.error(result.error || "获取任务信息失败");
121170
+ message.error(result.error || t2("preview.fetch_task_failed"));
121149
121171
  navigate("/list");
121150
121172
  }
121151
121173
  } catch (error) {
121152
- console.error("获取任务失败:", error);
121153
- message.error("获取任务信息失败");
121174
+ console.error("Failed to fetch task:", error);
121175
+ message.error(t2("preview.fetch_task_failed"));
121154
121176
  navigate("/list");
121155
121177
  }
121156
- }, [id, message, navigate]);
121178
+ }, [id, message, navigate, t2]);
121157
121179
  const fetchPageDetail = reactExports.useCallback(async (page) => {
121158
121180
  if (!id) return;
121159
121181
  setLoading(true);
@@ -121164,17 +121186,17 @@ const Preview = () => {
121164
121186
  setTaskDetail(result.data);
121165
121187
  setImageError(!result.data.imageExists);
121166
121188
  } else {
121167
- message.error(result.error || "获取页面详情失败");
121189
+ message.error(result.error || t2("preview.fetch_page_failed"));
121168
121190
  setTaskDetail(null);
121169
121191
  }
121170
121192
  } catch (error) {
121171
- console.error("获取页面详情失败:", error);
121172
- message.error("获取页面详情失败");
121193
+ console.error("Failed to fetch page detail:", error);
121194
+ message.error(t2("preview.fetch_page_failed"));
121173
121195
  setTaskDetail(null);
121174
121196
  } finally {
121175
121197
  setLoading(false);
121176
121198
  }
121177
- }, [id, message]);
121199
+ }, [id, message, t2]);
121178
121200
  reactExports.useEffect(() => {
121179
121201
  if (!id) return;
121180
121202
  const handleTaskEvent = (event) => {
@@ -121190,7 +121212,7 @@ const Preview = () => {
121190
121212
  }
121191
121213
  break;
121192
121214
  case "task:deleted":
121193
- message.info("任务已被删除");
121215
+ message.info(t2("preview.task_deleted"));
121194
121216
  navigate("/list");
121195
121217
  break;
121196
121218
  }
@@ -121219,28 +121241,28 @@ const Preview = () => {
121219
121241
  fetchTask();
121220
121242
  }, [fetchTask]);
121221
121243
  reactExports.useEffect(() => {
121222
- if (task && task.pages > 0) {
121244
+ if (task && task.pages && task.pages > 0) {
121223
121245
  fetchPageDetail(currentPage);
121224
121246
  }
121225
121247
  }, [currentPage, task, fetchPageDetail]);
121226
121248
  reactExports.useEffect(() => {
121227
- if (task && task.status < 2) {
121228
- message.warning("任务尚未开始处理,无法预览");
121249
+ if (task && task.status !== void 0 && task.status < 2) {
121250
+ message.warning(t2("preview.task_not_started"));
121229
121251
  navigate("/list");
121230
121252
  }
121231
- }, [task, message, navigate]);
121253
+ }, [task, message, navigate, t2]);
121232
121254
  const handleDownload = async () => {
121233
121255
  if (!id) return;
121234
121256
  try {
121235
121257
  const result = await window.api.file.downloadMarkdown(id);
121236
121258
  if (result.success) {
121237
- message.success("下载成功");
121259
+ message.success(t2("preview.download_success"));
121238
121260
  } else {
121239
- message.error(result.error || "下载失败");
121261
+ message.error(result.error || t2("preview.download_failed"));
121240
121262
  }
121241
121263
  } catch (error) {
121242
- console.error("下载失败:", error);
121243
- message.error("下载失败");
121264
+ console.error("Download failed:", error);
121265
+ message.error(t2("preview.download_failed"));
121244
121266
  }
121245
121267
  };
121246
121268
  const handleDelete2 = async () => {
@@ -121312,6 +121334,31 @@ const Preview = () => {
121312
121334
  }
121313
121335
  });
121314
121336
  };
121337
+ const handleRetryFailed = async () => {
121338
+ if (!id) return;
121339
+ modal.confirm({
121340
+ title: t2("preview.confirm_retry_failed"),
121341
+ content: t2("preview.confirm_retry_failed_content"),
121342
+ okText: tCommon("common.confirm"),
121343
+ cancelText: tCommon("common.cancel"),
121344
+ onOk: async () => {
121345
+ setRetryingFailed(true);
121346
+ try {
121347
+ const result = await window.api.taskDetail.retryFailed(id);
121348
+ if (result.success) {
121349
+ message.success(t2("preview.retry_failed_success", { count: result.data?.retried || 0 }));
121350
+ } else {
121351
+ message.error(result.error || t2("preview.retry_failed"));
121352
+ }
121353
+ } catch (error) {
121354
+ console.error("重试失败页失败:", error);
121355
+ message.error(t2("preview.retry_failed"));
121356
+ } finally {
121357
+ setRetryingFailed(false);
121358
+ }
121359
+ }
121360
+ });
121361
+ };
121315
121362
  const handlePageChange = (page) => {
121316
121363
  setCurrentPage(page);
121317
121364
  };
@@ -121321,14 +121368,14 @@ const Preview = () => {
121321
121368
  try {
121322
121369
  const result = await window.api.taskDetail.retry(taskDetail.id);
121323
121370
  if (result.success) {
121324
- message.success("页面已加入重试队列");
121371
+ message.success(t2("preview.page_retry_success"));
121325
121372
  fetchPageDetail(currentPage);
121326
121373
  } else {
121327
- message.error(result.error || "重试失败");
121374
+ message.error(result.error || t2("preview.page_retry_failed"));
121328
121375
  }
121329
121376
  } catch (error) {
121330
- console.error("重试页面失败:", error);
121331
- message.error("重试失败");
121377
+ console.error("Failed to retry page:", error);
121378
+ message.error(t2("preview.page_retry_failed"));
121332
121379
  } finally {
121333
121380
  setRetrying(false);
121334
121381
  }
@@ -121441,35 +121488,84 @@ const Preview = () => {
121441
121488
  children: t2("preview.download")
121442
121489
  }
121443
121490
  ),
121444
- task?.status && task.status > 0 && task.status < 6 && /* @__PURE__ */ jsxRuntimeExports.jsx(
121445
- Button$1,
121446
- {
121447
- icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$2, {}),
121448
- variant: "filled",
121449
- onClick: handleCancel,
121450
- children: t2("preview.cancel")
121491
+ (() => {
121492
+ const status2 = task?.status;
121493
+ const failedCount = task?.failed_count || 0;
121494
+ const menuItems = [];
121495
+ if (status2 === 8 && failedCount > 0) {
121496
+ menuItems.push({
121497
+ key: "retry_failed",
121498
+ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$4, {}),
121499
+ label: t2("preview.retry_failed"),
121500
+ onClick: handleRetryFailed,
121501
+ disabled: retryingFailed
121502
+ });
121451
121503
  }
121452
- ),
121453
- task?.status === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
121454
- Button$1,
121455
- {
121456
- color: "primary",
121457
- icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$4, {}),
121458
- variant: "filled",
121459
- onClick: handleRetryTask,
121460
- children: t2("preview.retry")
121504
+ if (status2 === 0) {
121505
+ menuItems.push({
121506
+ key: "retry_all",
121507
+ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$4, {}),
121508
+ label: t2("preview.retry_all"),
121509
+ onClick: handleRetryTask
121510
+ });
121461
121511
  }
121462
- ),
121463
- (task?.status === 0 || task?.status && task.status >= 6) && /* @__PURE__ */ jsxRuntimeExports.jsx(
121464
- Button$1,
121465
- {
121466
- color: "danger",
121467
- icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$u, {}),
121468
- variant: "filled",
121469
- onClick: handleDelete2,
121470
- children: t2("preview.delete")
121512
+ if (menuItems.length > 0 && (status2 !== void 0 && status2 > 0 && status2 < 6 || status2 === 0 || status2 !== void 0 && status2 >= 6)) {
121513
+ menuItems.push({ type: "divider" });
121471
121514
  }
121472
- )
121515
+ if (status2 !== void 0 && status2 > 0 && status2 < 6) {
121516
+ menuItems.push({
121517
+ key: "cancel",
121518
+ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$2, {}),
121519
+ label: t2("preview.cancel"),
121520
+ onClick: handleCancel
121521
+ });
121522
+ }
121523
+ if (status2 === 0 || status2 !== void 0 && status2 >= 6) {
121524
+ menuItems.push({
121525
+ key: "delete",
121526
+ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$u, {}),
121527
+ label: t2("preview.delete"),
121528
+ danger: true,
121529
+ onClick: handleDelete2
121530
+ });
121531
+ }
121532
+ if (menuItems.length === 0) return null;
121533
+ const hasRetryFailed = status2 === 8 && failedCount > 0;
121534
+ const hasRetryAll = status2 === 0;
121535
+ const hasPrimaryAction = hasRetryFailed || hasRetryAll;
121536
+ if (hasPrimaryAction) {
121537
+ const primaryLabel = hasRetryFailed ? t2("preview.retry_failed") : t2("preview.retry_all");
121538
+ const primaryAction = hasRetryFailed ? handleRetryFailed : handleRetryTask;
121539
+ const primaryIcon = hasRetryFailed && retryingFailed ? /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$S, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$4, {});
121540
+ const filteredMenuItems = menuItems.filter((item) => {
121541
+ if (!item || item.type === "divider") return true;
121542
+ if (hasRetryFailed && item.key === "retry_failed") return false;
121543
+ if (hasRetryAll && item.key === "retry_all") return false;
121544
+ return true;
121545
+ });
121546
+ while (filteredMenuItems.length > 0 && filteredMenuItems[0]?.type === "divider") {
121547
+ filteredMenuItems.shift();
121548
+ }
121549
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
121550
+ Dropdown.Button,
121551
+ {
121552
+ menu: { items: filteredMenuItems },
121553
+ onClick: primaryAction,
121554
+ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$P, {}),
121555
+ disabled: hasRetryFailed && retryingFailed,
121556
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Space, { children: [
121557
+ primaryIcon,
121558
+ primaryLabel
121559
+ ] })
121560
+ }
121561
+ );
121562
+ } else {
121563
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Dropdown, { menu: { items: menuItems }, trigger: ["click"], children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Button$1, { children: [
121564
+ t2("preview.more_actions"),
121565
+ /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$P, {})
121566
+ ] }) });
121567
+ }
121568
+ })()
121473
121569
  ] })
121474
121570
  ] }),
121475
121571
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
@@ -121506,7 +121602,7 @@ const Preview = () => {
121506
121602
  alignItems: "center",
121507
121603
  overflow: "hidden"
121508
121604
  },
121509
- children: loading ? /* @__PURE__ */ jsxRuntimeExports.jsx(Spin, { size: "large" }) : imageError || !taskDetail?.imagePath ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { textAlign: "center", color: "#999" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Text, { type: "secondary", children: "图片加载失败或不存在" }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
121605
+ children: loading ? /* @__PURE__ */ jsxRuntimeExports.jsx(Spin, { size: "large" }) : imageError || !taskDetail?.imagePath ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { textAlign: "center", color: "#999" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Text, { type: "secondary", children: t2("preview.image_load_failed") }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
121510
121606
  "img",
121511
121607
  {
121512
121608
  src: `local-file:///${taskDetail.imagePath.replace(/\\/g, "/")}`,
@@ -123560,7 +123656,7 @@ const details$5 = { "protocol_type": "Protocol:", "api_key_label": "API Key:", "
123560
123656
  const model_config$5 = { "title": "Model Configuration", "name_label": "Model Name:", "name_placeholder": "GPT 4o", "id_label": "Model ID:", "id_placeholder": "gpt-4o", "add_button": "Add Model", "warning": "Note: Please add models that support vision recognition and ensure the Model ID is correct, otherwise the model will not work properly!" };
123561
123657
  const actions$f = { "delete_provider": "Delete Provider", "delete_model_title": "Delete", "test_connection": "Test Connection" };
123562
123658
  const confirmations$a = { "delete_model_title": "Confirm Delete", "delete_model_content": 'Are you sure you want to delete model "{{name}}"?', "delete_provider_title": "Confirm Delete", "delete_provider_content": "Are you sure you want to delete this provider? This action cannot be undone.", "ok": "Delete", "cancel": "Cancel" };
123563
- const messages$f = { "fetch_details_failed": "Failed to fetch provider details", "fetch_models_failed": "Failed to fetch model list", "delete_model_success": "Model deleted successfully", "delete_model_failed": "Failed to delete model", "add_model_warning": "Please fill in complete model information", "add_model_success": "Model added successfully", "add_model_failed": "Failed to add model", "update_success": "Updated successfully", "update_failed": "Update failed", "test_success": "Model connection test successful", "test_failed": "Connection test failed", "delete_provider_success": "Provider deleted successfully", "delete_provider_failed": "Failed to delete provider", "update_status_failed": "Failed to update provider status" };
123659
+ const messages$f = { "fetch_providers_failed": "Failed to fetch provider list", "fetch_details_failed": "Failed to fetch provider details", "fetch_models_failed": "Failed to fetch model list", "delete_model_success": "Model deleted successfully", "delete_model_failed": "Failed to delete model", "add_model_warning": "Please fill in complete model information", "add_model_success": "Model added successfully", "add_model_failed": "Failed to add model", "update_success": "Updated successfully", "update_failed": "Update failed", "test_success": "Model connection test successful", "test_failed": "Connection test failed", "delete_provider_success": "Provider deleted successfully", "delete_provider_failed": "Failed to delete provider", "update_status_failed": "Failed to update provider status" };
123564
123660
  const add_provider$5 = { "tab_label": "Add Provider", "name_label": "Provider Name", "name_placeholder": "Enter provider name", "name_required": "Please enter provider name", "type_label": "Protocol Type", "type_placeholder": "Select protocol type", "type_required": "Please select protocol type", "submit_button": "Add Provider", "success": "Provider added successfully", "failed": "Failed to add provider" };
123565
123661
  const enProvider = {
123566
123662
  details: details$5,
@@ -123572,7 +123668,7 @@ const enProvider = {
123572
123668
  };
123573
123669
  const tabs$5 = { "model_service": "Model Service", "about": "About Us" };
123574
123670
  const about$5 = { "subtitle": "A high-quality PDF to Markdown converter powered by large vision models", "buttons": { "website": "Official Website", "license": "License", "feedback": "Feedback", "contact": "Contact Email" } };
123575
- const preview$5 = { "back": "Back", "download": "Download .md", "delete": "Delete", "cancel": "Cancel", "retry": "Retry", "regenerate": "Regenerate", "regenerate_tooltip": "Regenerate current page", "confirm_delete": "Confirm Delete", "confirm_delete_content": "Are you sure you want to delete this task? This action cannot be undone.", "delete_success": "Deleted successfully", "delete_failed": "Delete failed", "confirm_cancel": "Confirm Cancel", "confirm_cancel_content": "Are you sure you want to cancel this task?", "cancel_success": "Cancelled successfully", "cancel_failed": "Cancel failed", "confirm_retry": "Confirm Retry", "confirm_retry_content": "Are you sure you want to retry this task?", "retry_success": "Task has been added to retry queue", "retry_failed": "Retry failed", "status": { "failed": "Conversion failed", "pending": "Pending", "processing": "Converting", "completed": "Completed", "retrying": "Retrying" } };
123671
+ const preview$5 = { "back": "Back", "download": "Download .md", "delete": "Delete", "cancel": "Cancel", "retry": "Retry", "retry_failed": "Retry Failed", "retry_all": "Retry All", "more_actions": "More Actions", "regenerate": "Regenerate", "regenerate_tooltip": "Regenerate current page", "confirm_delete": "Confirm Delete", "confirm_delete_content": "Are you sure you want to delete this task? This action cannot be undone.", "delete_success": "Deleted successfully", "delete_failed": "Delete failed", "confirm_cancel": "Confirm Cancel", "confirm_cancel_content": "Are you sure you want to cancel this task?", "cancel_success": "Cancelled successfully", "cancel_failed": "Cancel failed", "confirm_retry": "Confirm Retry", "confirm_retry_content": "Are you sure you want to retry this task?", "confirm_retry_failed": "Confirm Retry Failed Pages", "confirm_retry_failed_content": "Are you sure you want to retry all failed pages?", "retry_success": "Task has been added to retry queue", "retry_failed_success": "{{count}} failed pages have been added to retry queue", "page_retry_success": "Page has been added to retry queue", "page_retry_failed": "Retry failed", "fetch_task_failed": "Failed to fetch task info", "fetch_page_failed": "Failed to fetch page details", "task_deleted": "Task has been deleted", "task_not_started": "Task has not started processing, cannot preview", "download_success": "Download successful", "download_failed": "Download failed", "image_load_failed": "Image failed to load or does not exist", "status": { "failed": "Conversion failed", "pending": "Pending", "processing": "Converting", "completed": "Completed", "retrying": "Retrying" } };
123576
123672
  const enSettings = {
123577
123673
  tabs: tabs$5,
123578
123674
  about: about$5,
@@ -123620,7 +123716,7 @@ const details$4 = { "protocol_type": "协议类型:", "api_key_label": "API 密
123620
123716
  const model_config$4 = { "title": "模型配置", "name_label": "模型名称:", "name_placeholder": "GPT 4o", "id_label": "模型ID:", "id_placeholder": "gpt-4o", "add_button": "添加模型", "warning": "注意:请添加支持视觉识别的模型,并确保模型ID正确,否则模型将无法正常使用!" };
123621
123717
  const actions$c = { "delete_provider": "删除服务商", "delete_model_title": "删除", "test_connection": "检查" };
123622
123718
  const confirmations$8 = { "delete_model_title": "确认删除", "delete_model_content": '确定要删除模型"{{name}}"吗?', "delete_provider_title": "确认删除", "delete_provider_content": "确定要删除此服务商吗?删除后无法恢复。", "ok": "删除", "cancel": "取消" };
123623
- const messages$c = { "fetch_details_failed": "获取服务商详情失败", "fetch_models_failed": "获取模型列表失败", "delete_model_success": "模型已成功删除", "delete_model_failed": "删除模型失败", "add_model_warning": "请填写完整的模型信息", "add_model_success": "模型添加成功", "add_model_failed": "添加模型失败", "update_success": "更新成功", "update_failed": "更新失败", "test_success": "模型连接测试成功", "test_failed": "连接测试失败", "delete_provider_success": "服务商已成功删除", "delete_provider_failed": "删除服务商失败", "update_status_failed": "更新服务商状态失败" };
123719
+ const messages$c = { "fetch_providers_failed": "获取服务商列表失败", "fetch_details_failed": "获取服务商详情失败", "fetch_models_failed": "获取模型列表失败", "delete_model_success": "模型已成功删除", "delete_model_failed": "删除模型失败", "add_model_warning": "请填写完整的模型信息", "add_model_success": "模型添加成功", "add_model_failed": "添加模型失败", "update_success": "更新成功", "update_failed": "更新失败", "test_success": "模型连接测试成功", "test_failed": "连接测试失败", "delete_provider_success": "服务商已成功删除", "delete_provider_failed": "删除服务商失败", "update_status_failed": "更新服务商状态失败" };
123624
123720
  const add_provider$4 = { "tab_label": "添加服务商", "name_label": "服务商名称", "name_placeholder": "请输入服务商名称", "name_required": "请输入服务商名称", "type_label": "协议类型", "type_placeholder": "请选择协议类型", "type_required": "请选择协议类型", "submit_button": "确认添加", "success": "服务商添加成功", "failed": "添加服务商失败" };
123625
123721
  const zhProvider = {
123626
123722
  details: details$4,
@@ -123632,7 +123728,7 @@ const zhProvider = {
123632
123728
  };
123633
123729
  const tabs$4 = { "model_service": "模型服务", "about": "关于我们" };
123634
123730
  const about$4 = { "subtitle": "一款基于大模型视觉识别的高质量PDF转Markdown工具", "buttons": { "website": "官方网址", "license": "许可协议", "feedback": "反馈意见", "contact": "联系邮件" } };
123635
- const preview$4 = { "back": "返回", "download": "下载 .md", "delete": "删除", "cancel": "取消", "retry": "重试", "regenerate": "重新生成", "regenerate_tooltip": "重新生成当前页", "confirm_delete": "确认删除", "confirm_delete_content": "确定要删除此任务吗?此操作不可恢复。", "delete_success": "删除成功", "delete_failed": "删除失败", "confirm_cancel": "确认取消", "confirm_cancel_content": "确定要取消此任务吗?", "cancel_success": "取消成功", "cancel_failed": "取消失败", "confirm_retry": "确认重试", "confirm_retry_content": "确定要重试此任务吗?", "retry_success": "任务已加入重试队列", "retry_failed": "重试失败", "status": { "failed": "转换失败", "pending": "等待转换", "processing": "转换中", "completed": "转换完成", "retrying": "重试中" } };
123731
+ const preview$4 = { "back": "返回", "download": "下载 .md", "delete": "删除", "cancel": "取消", "retry": "重试", "retry_failed": "重试失败页", "retry_all": "全部重试", "more_actions": "更多操作", "regenerate": "重新生成", "regenerate_tooltip": "重新生成当前页", "confirm_delete": "确认删除", "confirm_delete_content": "确定要删除此任务吗?此操作不可恢复。", "delete_success": "删除成功", "delete_failed": "删除失败", "confirm_cancel": "确认取消", "confirm_cancel_content": "确定要取消此任务吗?", "cancel_success": "取消成功", "cancel_failed": "取消失败", "confirm_retry": "确认重试", "confirm_retry_content": "确定要重试此任务吗?", "confirm_retry_failed": "确认重试失败页", "confirm_retry_failed_content": "确定要重试所有失败的页面吗?", "retry_success": "任务已加入重试队列", "retry_failed_success": "{{count}} 个失败页面已加入重试队列", "page_retry_success": "页面已加入重试队列", "page_retry_failed": "重试失败", "fetch_task_failed": "获取任务信息失败", "fetch_page_failed": "获取页面详情失败", "task_deleted": "任务已被删除", "task_not_started": "任务尚未开始处理,无法预览", "download_success": "下载成功", "download_failed": "下载失败", "image_load_failed": "图片加载失败或不存在", "status": { "failed": "转换失败", "pending": "等待转换", "processing": "转换中", "completed": "转换完成", "retrying": "重试中" } };
123636
123732
  const zhSettings = {
123637
123733
  tabs: tabs$4,
123638
123734
  about: about$4,
@@ -123680,7 +123776,7 @@ const details$3 = { "protocol_type": "プロトコル:", "api_key_label": "API
123680
123776
  const model_config$3 = { "title": "モデル設定", "name_label": "モデル名:", "name_placeholder": "GPT 4o", "id_label": "モデルID:", "id_placeholder": "gpt-4o", "add_button": "モデルを追加", "warning": "注意: 視覚認識に対応しているモデルを追加し、モデルIDが正確であることを確認してください。さもなければモデルは正常に動作しません!" };
123681
123777
  const actions$9 = { "delete_provider": "プロバイダーを削除", "delete_model_title": "削除", "test_connection": "接続をテスト" };
123682
123778
  const confirmations$6 = { "delete_model_title": "削除の確認", "delete_model_content": "モデル「{{name}}」を削除してもよろしいですか?", "delete_provider_title": "削除の確認", "delete_provider_content": "このプロバイダーを削除してもよろしいですか?この操作は元に戻せません。", "ok": "削除", "cancel": "キャンセル" };
123683
- const messages$9 = { "fetch_details_failed": "プロバイダーの詳細取得に失敗しました", "fetch_models_failed": "モデルリストの取得に失敗しました", "delete_model_success": "モデルの削除が完了しました", "delete_model_failed": "モデルの削除に失敗しました", "add_model_warning": "モデル情報をすべて入力してください", "add_model_success": "モデルの追加が完了しました", "add_model_failed": "モデルの追加に失敗しました", "update_success": "更新が完了しました", "update_failed": "更新に失敗しました", "test_success": "モデルの接続テストが成功しました", "test_failed": "接続テストに失敗しました", "delete_provider_success": "プロバイダーの削除が完了しました", "delete_provider_failed": "プロバイダーの削除に失敗しました", "update_status_failed": "プロバイダーのステータス更新に失敗しました" };
123779
+ const messages$9 = { "fetch_providers_failed": "プロバイダーリストの取得に失敗しました", "fetch_details_failed": "プロバイダーの詳細取得に失敗しました", "fetch_models_failed": "モデルリストの取得に失敗しました", "delete_model_success": "モデルの削除が完了しました", "delete_model_failed": "モデルの削除に失敗しました", "add_model_warning": "モデル情報をすべて入力してください", "add_model_success": "モデルの追加が完了しました", "add_model_failed": "モデルの追加に失敗しました", "update_success": "更新が完了しました", "update_failed": "更新に失敗しました", "test_success": "モデルの接続テストが成功しました", "test_failed": "接続テストに失敗しました", "delete_provider_success": "プロバイダーの削除が完了しました", "delete_provider_failed": "プロバイダーの削除に失敗しました", "update_status_failed": "プロバイダーのステータス更新に失敗しました" };
123684
123780
  const add_provider$3 = { "tab_label": "プロバイダーを追加", "name_label": "プロバイダー名", "name_placeholder": "プロバイダー名を入力してください", "name_required": "プロバイダー名を入力してください", "type_label": "プロトコルタイプ", "type_placeholder": "プロトコルタイプを選択してください", "type_required": "プロトコルタイプを選択してください", "submit_button": "プロバイダーを追加", "success": "プロバイダーの追加が完了しました", "failed": "プロバイダーの追加に失敗しました" };
123685
123781
  const jaProvider = {
123686
123782
  details: details$3,
@@ -123692,7 +123788,7 @@ const jaProvider = {
123692
123788
  };
123693
123789
  const tabs$3 = { "model_service": "モデルサービス", "about": "概要" };
123694
123790
  const about$3 = { "version": "v1.0.6", "subtitle": "大規模ビジョンモデルを使用した高品質なPDFからMarkdownへのコンバーター", "buttons": { "website": "公式サイト", "license": "ライセンス", "feedback": "フィードバック", "contact": "連絡先メールアドレス" } };
123695
- const preview$3 = { "back": "戻る", "download": ".md形式でダウンロード", "delete": "削除", "cancel": "キャンセル", "retry": "再試行", "regenerate": "再生成", "regenerate_tooltip": "現在のページを再生成", "confirm_delete": "削除の確認", "confirm_delete_content": "このタスクを削除してもよろしいですか?この操作は元に戻せません。", "delete_success": "削除しました", "delete_failed": "削除に失敗しました", "confirm_cancel": "キャンセルの確認", "confirm_cancel_content": "このタスクをキャンセルしてもよろしいですか?", "cancel_success": "キャンセルしました", "cancel_failed": "キャンセルに失敗しました", "confirm_retry": "再試行の確認", "confirm_retry_content": "このタスクを再試行してもよろしいですか?", "retry_success": "タスクが再試行キューに追加されました", "retry_failed": "再試行に失敗しました", "status": { "failed": "変換失敗", "pending": "変換待ち", "processing": "変換中", "completed": "変換完了", "retrying": "再試行中" } };
123791
+ const preview$3 = { "back": "戻る", "download": ".md形式でダウンロード", "delete": "削除", "cancel": "キャンセル", "retry": "再試行", "retry_failed": "失敗ページを再試行", "retry_all": "すべて再試行", "more_actions": "その他の操作", "regenerate": "再生成", "regenerate_tooltip": "現在のページを再生成", "confirm_delete": "削除の確認", "confirm_delete_content": "このタスクを削除してもよろしいですか?この操作は元に戻せません。", "delete_success": "削除しました", "delete_failed": "削除に失敗しました", "confirm_cancel": "キャンセルの確認", "confirm_cancel_content": "このタスクをキャンセルしてもよろしいですか?", "cancel_success": "キャンセルしました", "cancel_failed": "キャンセルに失敗しました", "confirm_retry": "再試行の確認", "confirm_retry_content": "このタスクを再試行してもよろしいですか?", "confirm_retry_failed": "失敗ページの再試行確認", "confirm_retry_failed_content": "すべての失敗したページを再試行してもよろしいですか?", "retry_success": "タスクが再試行キューに追加されました", "retry_failed_success": "{{count}}個の失敗ページが再試行キューに追加されました", "page_retry_success": "ページが再試行キューに追加されました", "page_retry_failed": "再試行に失敗しました", "fetch_task_failed": "タスク情報の取得に失敗しました", "fetch_page_failed": "ページ詳細の取得に失敗しました", "task_deleted": "タスクは削除されました", "task_not_started": "タスクはまだ処理されていません。プレビューできません", "download_success": "ダウンロードしました", "download_failed": "ダウンロードに失敗しました", "image_load_failed": "画像の読み込みに失敗したか、存在しません", "status": { "failed": "変換失敗", "pending": "変換待ち", "processing": "変換中", "completed": "変換完了", "retrying": "再試行中" } };
123696
123792
  const jaSettings = {
123697
123793
  tabs: tabs$3,
123698
123794
  about: about$3,
@@ -123740,7 +123836,7 @@ const details$2 = { "protocol_type": "Протокол:", "api_key_label": "API-
123740
123836
  const model_config$2 = { "title": "Конфигурация модели", "name_label": "Название модели:", "name_placeholder": "GPT 4o", "id_label": "ID модели:", "id_placeholder": "gpt-4o", "add_button": "Добавить модель", "warning": "Примечание: Пожалуйста, добавьте модели, поддерживающие визуальное распознавание, и убедитесь, что ID модели указан правильно. В противном случае модель не будет работать должным образом!" };
123741
123837
  const actions$6 = { "delete_provider": "Удалить провайдера", "delete_model_title": "Удалить", "test_connection": "Проверить подключение" };
123742
123838
  const confirmations$4 = { "delete_model_title": "Подтверждение удаления", "delete_model_content": 'Вы уверены, что хотите удалить модель "{{name}}"?', "delete_provider_title": "Подтверждение удаления", "delete_provider_content": "Вы уверены, что хотите удалить этого провайдера? Это действие нельзя отменить.", "ok": "Удалить", "cancel": "Отмена" };
123743
- const messages$6 = { "fetch_details_failed": "Не удалось получить данные провайдера", "fetch_models_failed": "Не удалось получить список моделей", "delete_model_success": "Модель успешно удалена", "delete_model_failed": "Не удалось удалить модель", "add_model_warning": "Пожалуйста, заполните полную информацию о модели", "add_model_success": "Модель успешно добавлена", "add_model_failed": "Не удалось добавить модель", "update_success": "Успешно обновлено", "update_failed": "Ошибка обновления", "test_success": "Проверка подключения модели успешна", "test_failed": "Ошибка проверки подключения", "delete_provider_success": "Провайдер успешно удалён", "delete_provider_failed": "Не удалось удалить провайдера", "update_status_failed": "Не удалось обновить статус провайдера" };
123839
+ const messages$6 = { "fetch_providers_failed": "Не удалось получить список провайдеров", "fetch_details_failed": "Не удалось получить данные провайдера", "fetch_models_failed": "Не удалось получить список моделей", "delete_model_success": "Модель успешно удалена", "delete_model_failed": "Не удалось удалить модель", "add_model_warning": "Пожалуйста, заполните полную информацию о модели", "add_model_success": "Модель успешно добавлена", "add_model_failed": "Не удалось добавить модель", "update_success": "Успешно обновлено", "update_failed": "Ошибка обновления", "test_success": "Проверка подключения модели успешна", "test_failed": "Ошибка проверки подключения", "delete_provider_success": "Провайдер успешно удалён", "delete_provider_failed": "Не удалось удалить провайдера", "update_status_failed": "Не удалось обновить статус провайдера" };
123744
123840
  const add_provider$2 = { "tab_label": "Добавить провайдера", "name_label": "Название провайдера", "name_placeholder": "Введите название провайдера", "name_required": "Пожалуйста, введите название провайдера", "type_label": "Тип протокола", "type_placeholder": "Выберите тип протокола", "type_required": "Пожалуйста, выберите тип протокола", "submit_button": "Добавить провайдера", "success": "Провайдер успешно добавлен", "failed": "Не удалось добавить провайдера" };
123745
123841
  const ruProvider = {
123746
123842
  details: details$2,
@@ -123752,7 +123848,7 @@ const ruProvider = {
123752
123848
  };
123753
123849
  const tabs$2 = { "model_service": "Модельный сервис", "about": "О приложении" };
123754
123850
  const about$2 = { "version": "v1.0.6", "subtitle": "Высококачественный конвертер PDF в Markdown на основе больших визуальных моделей", "buttons": { "website": "Официальный сайт", "license": "Лицензия", "feedback": "Обратная связь", "contact": "Контактный email" } };
123755
- const preview$2 = { "back": "Назад", "download": "Скачать .md", "delete": "Удалить", "cancel": "Отмена", "retry": "Повторить", "regenerate": "Перегенерировать", "regenerate_tooltip": "Перегенерировать текущую страницу", "confirm_delete": "Подтвердите удаление", "confirm_delete_content": "Вы уверены, что хотите удалить эту задачу? Это действие необратимо.", "delete_success": "Успешно удалено", "delete_failed": "Ошибка удаления", "confirm_cancel": "Подтвердите отмену", "confirm_cancel_content": "Вы уверены, что хотите отменить эту задачу?", "cancel_success": "Успешно отменено", "cancel_failed": "Ошибка отмены", "confirm_retry": "Подтвердите повтор", "confirm_retry_content": "Вы уверены, что хотите повторить эту задачу?", "retry_success": "Задача добавлена в очередь на повтор", "retry_failed": "Ошибка повтора", "status": { "failed": "Ошибка конвертации", "pending": "Ожидание", "processing": "Конвертация", "completed": "Завершено", "retrying": "Повторная попытка" } };
123851
+ const preview$2 = { "back": "Назад", "download": "Скачать .md", "delete": "Удалить", "cancel": "Отмена", "retry": "Повторить", "retry_failed": "Повторить неудачные", "retry_all": "Повторить все", "more_actions": "Действия", "regenerate": "Перегенерировать", "regenerate_tooltip": "Перегенерировать текущую страницу", "confirm_delete": "Подтвердите удаление", "confirm_delete_content": "Вы уверены, что хотите удалить эту задачу? Это действие необратимо.", "delete_success": "Успешно удалено", "delete_failed": "Ошибка удаления", "confirm_cancel": "Подтвердите отмену", "confirm_cancel_content": "Вы уверены, что хотите отменить эту задачу?", "cancel_success": "Успешно отменено", "cancel_failed": "Ошибка отмены", "confirm_retry": "Подтвердите повтор", "confirm_retry_content": "Вы уверены, что хотите повторить эту задачу?", "confirm_retry_failed": "Подтвердите повтор неудачных", "confirm_retry_failed_content": "Вы уверены, что хотите повторить все неудачные страницы?", "retry_success": "Задача добавлена в очередь на повтор", "retry_failed_success": "{{count}} неудачных страниц добавлено в очередь на повтор", "page_retry_success": "Страница добавлена в очередь на повтор", "page_retry_failed": "Ошибка повтора", "fetch_task_failed": "Не удалось получить информацию о задаче", "fetch_page_failed": "Не удалось получить детали страницы", "task_deleted": "Задача была удалена", "task_not_started": "Задача ещё не обработана, предпросмотр недоступен", "download_success": "Успешно скачано", "download_failed": "Ошибка скачивания", "image_load_failed": "Не удалось загрузить изображение или оно не существует", "status": { "failed": "Ошибка конвертации", "pending": "Ожидание", "processing": "Конвертация", "completed": "Завершено", "retrying": "Повторная попытка" } };
123756
123852
  const ruSettings = {
123757
123853
  tabs: tabs$2,
123758
123854
  about: about$2,
@@ -123800,7 +123896,7 @@ const details$1 = { "protocol_type": "پروتکل:", "api_key_label": "کلید
123800
123896
  const model_config$1 = { "title": "پیکربندی مدل", "name_label": "نام مدل:", "name_placeholder": "GPT 4o", "id_label": "شناسه مدل:", "id_placeholder": "gpt-4o", "add_button": "افزودن مدل", "warning": "توجه: لطفاً مدل‌هایی که از تشخیص تصویر پشتیبانی می‌کنند اضافه کنید و مطمئن شوید که شناسه مدل صحیح است. در غیر این صورت مدل به درستی کار نخواهد کرد!" };
123801
123897
  const actions$3 = { "delete_provider": "حذف ارائه‌دهنده", "delete_model_title": "حذف", "test_connection": "تست اتصال" };
123802
123898
  const confirmations$2 = { "delete_model_title": "تأیید حذف", "delete_model_content": "آیا از حذف مدل «{{name}}» مطمئن هستید؟", "delete_provider_title": "تأیید حذف", "delete_provider_content": "آیا از حذف این ارائه‌دهنده مطمئن هستید؟ این عملیات قابل بازگشت نیست.", "ok": "حذف", "cancel": "لغو" };
123803
- const messages$3 = { "fetch_details_failed": "دریافت جزئیات ارائه‌دهنده ناموفق بود", "fetch_models_failed": "دریافت لیست مدل‌ها ناموفق بود", "delete_model_success": "مدل با موفقیت حذف شد", "delete_model_failed": "حذف مدل ناموفق بود", "add_model_warning": "لطفاً اطلاعات کامل مدل را وارد کنید", "add_model_success": "مدل با موفقیت اضافه شد", "add_model_failed": "افزودن مدل ناموفق بود", "update_success": "با موفقیت به‌روزرسانی شد", "update_failed": "به‌روزرسانی ناموفق بود", "test_success": "تست اتصال مدل موفق بود", "test_failed": "تست اتصال ناموفق بود", "delete_provider_success": "ارائه‌دهنده با موفقیت حذف شد", "delete_provider_failed": "حذف ارائه‌دهنده ناموفق بود", "update_status_failed": "به‌روزرسانی وضعیت ارائه‌دهنده ناموفق بود" };
123899
+ const messages$3 = { "fetch_providers_failed": "دریافت لیست ارائه‌دهندگان ناموفق بود", "fetch_details_failed": "دریافت جزئیات ارائه‌دهنده ناموفق بود", "fetch_models_failed": "دریافت لیست مدل‌ها ناموفق بود", "delete_model_success": "مدل با موفقیت حذف شد", "delete_model_failed": "حذف مدل ناموفق بود", "add_model_warning": "لطفاً اطلاعات کامل مدل را وارد کنید", "add_model_success": "مدل با موفقیت اضافه شد", "add_model_failed": "افزودن مدل ناموفق بود", "update_success": "با موفقیت به‌روزرسانی شد", "update_failed": "به‌روزرسانی ناموفق بود", "test_success": "تست اتصال مدل موفق بود", "test_failed": "تست اتصال ناموفق بود", "delete_provider_success": "ارائه‌دهنده با موفقیت حذف شد", "delete_provider_failed": "حذف ارائه‌دهنده ناموفق بود", "update_status_failed": "به‌روزرسانی وضعیت ارائه‌دهنده ناموفق بود" };
123804
123900
  const add_provider$1 = { "tab_label": "افزودن ارائه‌دهنده", "name_label": "نام ارائه‌دهنده", "name_placeholder": "نام ارائه‌دهنده را وارد کنید", "name_required": "لطفاً نام ارائه‌دهنده را وارد کنید", "type_label": "نوع پروتکل", "type_placeholder": "نوع پروتکل را انتخاب کنید", "type_required": "لطفاً نوع پروتکل را انتخاب کنید", "submit_button": "افزودن ارائه‌دهنده", "success": "ارائه‌دهنده با موفقیت اضافه شد", "failed": "افزودن ارائه‌دهنده ناموفق بود" };
123805
123901
  const faProvider = {
123806
123902
  details: details$1,
@@ -123812,7 +123908,7 @@ const faProvider = {
123812
123908
  };
123813
123909
  const tabs$1 = { "model_service": "سرویس مدل", "about": "درباره ما" };
123814
123910
  const about$1 = { "version": "v1.0.6", "subtitle": "مبدل با کیفیت بالای PDF به Markdown با قدرت مدل‌های بینایی بزرگ", "buttons": { "website": "سایت رسمی", "license": "مجوز", "feedback": "بازخورد", "contact": "ایمیل تماس" } };
123815
- const preview$1 = { "back": "بازگشت", "download": "دانلود .md", "delete": "حذف", "cancel": "لغو", "retry": "تلاش مجدد", "regenerate": "بازتولید", "regenerate_tooltip": "بازتولید صفحه فعلی", "confirm_delete": "تأیید حذف", "confirm_delete_content": "آیا مطمئن هستید که می‌خواهید این وظیفه را حذف کنید؟ این عمل قابل بازگشت نیست.", "delete_success": "با موفقیت حذف شد", "delete_failed": "حذف ناموفق بود", "confirm_cancel": "تأیید لغو", "confirm_cancel_content": "آیا مطمئن هستید که می‌خواهید این وظیفه را لغو کنید؟", "cancel_success": "با موفقیت لغو شد", "cancel_failed": "لغو ناموفق بود", "confirm_retry": "تأیید تلاش مجدد", "confirm_retry_content": "آیا مطمئن هستید که می‌خواهید این وظیفه را مجدداً تلاش کنید؟", "retry_success": "وظیفه به صف تلاش مجدد اضافه شد", "retry_failed": "تلاش مجدد ناموفق بود", "status": { "failed": "تبدیل ناموفق", "pending": "در انتظار", "processing": "در حال تبدیل", "completed": "تکمیل شده", "retrying": "در حال تلاش مجدد" } };
123911
+ const preview$1 = { "back": "بازگشت", "download": "دانلود .md", "delete": "حذف", "cancel": "لغو", "retry": "تلاش مجدد", "retry_failed": "تلاش مجدد ناموفق‌ها", "retry_all": "تلاش مجدد همه", "more_actions": "عملیات بیشتر", "regenerate": "بازتولید", "regenerate_tooltip": "بازتولید صفحه فعلی", "confirm_delete": "تأیید حذف", "confirm_delete_content": "آیا مطمئن هستید که می‌خواهید این وظیفه را حذف کنید؟ این عمل قابل بازگشت نیست.", "delete_success": "با موفقیت حذف شد", "delete_failed": "حذف ناموفق بود", "confirm_cancel": "تأیید لغو", "confirm_cancel_content": "آیا مطمئن هستید که می‌خواهید این وظیفه را لغو کنید؟", "cancel_success": "با موفقیت لغو شد", "cancel_failed": "لغو ناموفق بود", "confirm_retry": "تأیید تلاش مجدد", "confirm_retry_content": "آیا مطمئن هستید که می‌خواهید این وظیفه را مجدداً تلاش کنید؟", "confirm_retry_failed": "تأیید تلاش مجدد صفحات ناموفق", "confirm_retry_failed_content": "آیا مطمئن هستید که می‌خواهید همه صفحات ناموفق را مجدداً تلاش کنید؟", "retry_success": "وظیفه به صف تلاش مجدد اضافه شد", "retry_failed_success": "{{count}} صفحه ناموفق به صف تلاش مجدد اضافه شد", "page_retry_success": "صفحه به صف تلاش مجدد اضافه شد", "page_retry_failed": "تلاش مجدد ناموفق بود", "fetch_task_failed": "دریافت اطلاعات وظیفه ناموفق بود", "fetch_page_failed": "دریافت جزئیات صفحه ناموفق بود", "task_deleted": "وظیفه حذف شده است", "task_not_started": "وظیفه هنوز پردازش نشده است، پیش‌نمایش امکان‌پذیر نیست", "download_success": "دانلود موفق", "download_failed": "دانلود ناموفق بود", "image_load_failed": "بارگذاری تصویر ناموفق بود یا وجود ندارد", "status": { "failed": "تبدیل ناموفق", "pending": "در انتظار", "processing": "در حال تبدیل", "completed": "تکمیل شده", "retrying": "در حال تلاش مجدد" } };
123816
123912
  const faSettings = {
123817
123913
  tabs: tabs$1,
123818
123914
  about: about$1,
@@ -123860,7 +123956,7 @@ const details = { "protocol_type": "بروتوكول:", "api_key_label": "مفت
123860
123956
  const model_config = { "title": "تكوين النموذج", "name_label": "اسم النموذج:", "name_placeholder": "GPT 4o", "id_label": "معرف النموذج:", "id_placeholder": "gpt-4o", "add_button": "إضافة نموذج", "warning": "ملاحظة: يرجى إضافة نماذج تدعم التعرف على الرؤية والتأكد من صحة معرف النموذج، وإلا لن يعمل النموذج بشكل صحيح!" };
123861
123957
  const actions = { "delete_provider": "حذف المزود", "delete_model_title": "حذف", "test_connection": "اختبار الاتصال" };
123862
123958
  const confirmations = { "delete_model_title": "تأكيد الحذف", "delete_model_content": 'هل أنت متأكد من حذف النموذج "{{name}}"؟', "delete_provider_title": "تأكيد الحذف", "delete_provider_content": "هل أنت متأكد من حذف هذا المزود؟ لا يمكن التراجع عن هذا الإجراء.", "ok": "حذف", "cancel": "إلغاء" };
123863
- const messages = { "fetch_details_failed": "فشل في جلب تفاصيل المزود", "fetch_models_failed": "فشل في جلب قائمة النماذج", "delete_model_success": "تم حذف النموذج بنجاح", "delete_model_failed": "فشل في حذف النموذج", "add_model_warning": "الرجاء ملء معلومات النموذج الكاملة", "add_model_success": "تم إضافة النموذج بنجاح", "add_model_failed": "فشل في إضافة النموذج", "update_success": "تم التحديث بنجاح", "update_failed": "فشل التحديث", "test_success": "نجاح اختبار اتصال النموذج", "test_failed": "فشل اختبار الاتصال", "delete_provider_success": "تم حذف المزود بنجاح", "delete_provider_failed": "فشل في حذف المزود", "update_status_failed": "فشل في تحديث حالة المزود" };
123959
+ const messages = { "fetch_providers_failed": "فشل في جلب قائمة المزودين", "fetch_details_failed": "فشل في جلب تفاصيل المزود", "fetch_models_failed": "فشل في جلب قائمة النماذج", "delete_model_success": "تم حذف النموذج بنجاح", "delete_model_failed": "فشل في حذف النموذج", "add_model_warning": "الرجاء ملء معلومات النموذج الكاملة", "add_model_success": "تم إضافة النموذج بنجاح", "add_model_failed": "فشل في إضافة النموذج", "update_success": "تم التحديث بنجاح", "update_failed": "فشل التحديث", "test_success": "نجاح اختبار اتصال النموذج", "test_failed": "فشل اختبار الاتصال", "delete_provider_success": "تم حذف المزود بنجاح", "delete_provider_failed": "فشل في حذف المزود", "update_status_failed": "فشل في تحديث حالة المزود" };
123864
123960
  const add_provider = { "tab_label": "إضافة مزود", "name_label": "اسم المزود", "name_placeholder": "أدخل اسم المزود", "name_required": "الرجاء إدخال اسم المزود", "type_label": "نوع البروتوكول", "type_placeholder": "اختر نوع البروتوكول", "type_required": "الرجاء اختيار نوع البروتوكول", "submit_button": "إضافة مزود", "success": "تم إضافة المزود بنجاح", "failed": "فشل في إضافة المزود" };
123865
123961
  const arProvider = {
123866
123962
  details,
@@ -123872,7 +123968,7 @@ const arProvider = {
123872
123968
  };
123873
123969
  const tabs = { "model_service": "خدمة النماذج", "about": "من نحن" };
123874
123970
  const about = { "version": "v1.0.6", "subtitle": "محول PDF إلى Markdown عالي الجودة مدعوم بنماذج الرؤية الكبيرة", "buttons": { "website": "الموقع الرسمي", "license": "الرخصة", "feedback": "الملاحظات", "contact": "البريد الإلكتروني للتواصل" } };
123875
- const preview = { "back": "رجوع", "download": "تحميل .md", "delete": "حذف", "cancel": "إلغاء", "retry": "إعادة المحاولة", "regenerate": "إعادة إنشاء", "regenerate_tooltip": "إعادة إنشاء الصفحة الحالية", "confirm_delete": "تأكيد الحذف", "confirm_delete_content": "هل أنت متأكد من حذف هذه المهمة؟ لا يمكن التراجع عن هذا الإجراء.", "delete_success": "تم الحذف بنجاح", "delete_failed": "فشل الحذف", "confirm_cancel": "تأكيد الإلغاء", "confirm_cancel_content": "هل أنت متأكد من إلغاء هذه المهمة؟", "cancel_success": "تم الإلغاء بنجاح", "cancel_failed": "فشل الإلغاء", "confirm_retry": "تأكيد إعادة المحاولة", "confirm_retry_content": "هل أنت متأكد من إعادة محاولة هذه المهمة؟", "retry_success": "تمت إضافة المهمة إلى قائمة إعادة المحاولة", "retry_failed": "فشلت إعادة المحاولة", "status": { "failed": "فشل التحويل", "pending": "في الانتظار", "processing": "جاري التحويل", "completed": "مكتمل", "retrying": "إعادة المحاولة" } };
123971
+ const preview = { "back": "رجوع", "download": "تحميل .md", "delete": "حذف", "cancel": "إلغاء", "retry": "إعادة المحاولة", "retry_failed": "إعادة محاولة الفاشلة", "retry_all": "إعادة محاولة الكل", "more_actions": "المزيد من الإجراءات", "regenerate": "إعادة إنشاء", "regenerate_tooltip": "إعادة إنشاء الصفحة الحالية", "confirm_delete": "تأكيد الحذف", "confirm_delete_content": "هل أنت متأكد من حذف هذه المهمة؟ لا يمكن التراجع عن هذا الإجراء.", "delete_success": "تم الحذف بنجاح", "delete_failed": "فشل الحذف", "confirm_cancel": "تأكيد الإلغاء", "confirm_cancel_content": "هل أنت متأكد من إلغاء هذه المهمة؟", "cancel_success": "تم الإلغاء بنجاح", "cancel_failed": "فشل الإلغاء", "confirm_retry": "تأكيد إعادة المحاولة", "confirm_retry_content": "هل أنت متأكد من إعادة محاولة هذه المهمة؟", "confirm_retry_failed": "تأكيد إعادة محاولة الصفحات الفاشلة", "confirm_retry_failed_content": "هل أنت متأكد من إعادة محاولة جميع الصفحات الفاشلة؟", "retry_success": "تمت إضافة المهمة إلى قائمة إعادة المحاولة", "retry_failed_success": "تمت إضافة {{count}} صفحة فاشلة إلى قائمة إعادة المحاولة", "page_retry_success": "تمت إضافة الصفحة إلى قائمة إعادة المحاولة", "page_retry_failed": "فشل إعادة المحاولة", "fetch_task_failed": "فشل في الحصول على معلومات المهمة", "fetch_page_failed": "فشل في الحصول على تفاصيل الصفحة", "task_deleted": "تم حذف المهمة", "task_not_started": "لم تتم معالجة المهمة بعد، لا يمكن المعاينة", "download_success": "تم التحميل بنجاح", "download_failed": "فشل التحميل", "image_load_failed": "فشل تحميل الصورة أو غير موجودة", "status": { "failed": "فشل التحويل", "pending": "في الانتظار", "processing": "جاري التحويل", "completed": "مكتمل", "retrying": "إعادة المحاولة" } };
123876
123972
  const arSettings = {
123877
123973
  tabs,
123878
123974
  about,