stat2025 commited on
Commit
9c56050
·
verified ·
1 Parent(s): a2d435c

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +18 -15
index.html CHANGED
@@ -40,15 +40,15 @@
40
  <section class="steps">
41
  <div class="step">
42
  <span class="step-number">1</span>
43
- <span class="step-text">اضغط لاختيار الملفات (يمكن الإضافة على دفعات).</span>
44
  </div>
45
  <div class="step">
46
  <span class="step-number">2</span>
47
- <span class="step-text">اختر صورًا فقط أو ملفات PDF فقط في العملية نفسها.</span>
48
  </div>
49
  <div class="step">
50
  <span class="step-number">3</span>
51
- <span class="step-text">احصل على ملف PDF واحد جاهز للتحميل والمشاركة.</span>
52
  </div>
53
  </section>
54
 
@@ -63,7 +63,7 @@
63
  <strong>دمج عدة ملفات PDF</strong> في ملف واحد،
64
  أو
65
  <strong>تحويل عدة صور (JPG / PNG)</strong> إلى ملف PDF واحد.
66
- يُمنع خلط الصور وملفات PDF في نفس العملية.
67
  </p>
68
 
69
  <label class="file-picker">
@@ -107,7 +107,7 @@
107
  const fileListDiv = document.getElementById("fileList");
108
  const outputNameInput = document.getElementById("outputName");
109
 
110
- // نخزن جميع الملفات المختارة من عدة مرات اختيار
111
  let selectedFiles = [];
112
 
113
  function setStatus(msg, type = "") {
@@ -167,12 +167,12 @@
167
  URL.revokeObjectURL(url);
168
  }
169
 
170
- // السماح بالإضافة على دفعات (مهم للموبايل)
171
  filesInput.addEventListener("change", () => {
172
  const newFiles = Array.from(filesInput.files || []);
173
  if (!newFiles.length) return;
174
 
175
- // دمج بدون تكرار (اسم + حجم + تاريخ تعديل)
176
  const map = new Map();
177
  [...selectedFiles, ...newFiles].forEach(f => {
178
  const key = `${f.name}|${f.size}|${f.lastModified}`;
@@ -185,22 +185,19 @@
185
 
186
  renderFileList(selectedFiles);
187
  setStatus("");
188
- filesInput.value = ""; // للسماح بالاختيار مرة أخرى
 
 
189
  });
190
 
191
  mergeBtn.addEventListener("click", async () => {
192
- let files = [...selectedFiles];
193
 
194
  if (!files.length) {
195
  setStatus("الرجاء اختيار الملفات أولاً.", "error");
196
  return;
197
  }
198
 
199
- files.sort((a, b) =>
200
- a.name.localeCompare(b.name, undefined, { numeric: true })
201
- );
202
- renderFileList(files);
203
-
204
  const mode = detectMode(files);
205
  if (!mode) {
206
  setStatus(
@@ -210,6 +207,12 @@
210
  return;
211
  }
212
 
 
 
 
 
 
 
213
  try {
214
  setStatus("جاري معالجة الملفات...", "loading");
215
  mergeBtn.disabled = true;
@@ -278,7 +281,7 @@
278
  setStatus("تم دمج ملفات PDF بنجاح.", "ok");
279
  }
280
 
281
- // إعادة التهيئة بعد الانتهاء
282
  selectedFiles = [];
283
  renderFileList([]);
284
  } catch (err) {
 
40
  <section class="steps">
41
  <div class="step">
42
  <span class="step-number">1</span>
43
+ <span class="step-text">اضغط لاختيار الملفات، ويمكن الإضافة على دفعات.</span>
44
  </div>
45
  <div class="step">
46
  <span class="step-number">2</span>
47
+ <span class="step-text">استخدم إما صورًا فقط أو ملفات PDF فقط في كل عملية.</span>
48
  </div>
49
  <div class="step">
50
  <span class="step-number">3</span>
51
+ <span class="step-text">احصل على ملف PDF واحد جاهز للتحميل.</span>
52
  </div>
53
  </section>
54
 
 
63
  <strong>دمج عدة ملفات PDF</strong> في ملف واحد،
64
  أو
65
  <strong>تحويل عدة صور (JPG / PNG)</strong> إلى ملف PDF واحد.
66
+ لا تخلط بين الصور وملفات PDF في نفس العملية.
67
  </p>
68
 
69
  <label class="file-picker">
 
107
  const fileListDiv = document.getElementById("fileList");
108
  const outputNameInput = document.getElementById("outputName");
109
 
110
+ // نخزن جميع الملفات المختارة من عدة محاولات اختيار
111
  let selectedFiles = [];
112
 
113
  function setStatus(msg, type = "") {
 
167
  URL.revokeObjectURL(url);
168
  }
169
 
170
+ // إضافة ملفات على دفعات (مفيد للجوال)
171
  filesInput.addEventListener("change", () => {
172
  const newFiles = Array.from(filesInput.files || []);
173
  if (!newFiles.length) return;
174
 
175
+ // دمج بدون تكرار (اسم + حجم + تاريخ التعديل)
176
  const map = new Map();
177
  [...selectedFiles, ...newFiles].forEach(f => {
178
  const key = `${f.name}|${f.size}|${f.lastModified}`;
 
185
 
186
  renderFileList(selectedFiles);
187
  setStatus("");
188
+
189
+ // إفراغ input حتى نسمح باختيار دفعة جديدة
190
+ filesInput.value = "";
191
  });
192
 
193
  mergeBtn.addEventListener("click", async () => {
194
+ const files = [...selectedFiles];
195
 
196
  if (!files.length) {
197
  setStatus("الرجاء اختيار الملفات أولاً.", "error");
198
  return;
199
  }
200
 
 
 
 
 
 
201
  const mode = detectMode(files);
202
  if (!mode) {
203
  setStatus(
 
207
  return;
208
  }
209
 
210
+ // ترتيب نهائي حسب الاسم
211
+ files.sort((a, b) =>
212
+ a.name.localeCompare(b.name, undefined, { numeric: true })
213
+ );
214
+ renderFileList(files);
215
+
216
  try {
217
  setStatus("جاري معالجة الملفات...", "loading");
218
  mergeBtn.disabled = true;
 
281
  setStatus("تم دمج ملفات PDF بنجاح.", "ok");
282
  }
283
 
284
+ // بعد الانتهاء: تنظيف
285
  selectedFiles = [];
286
  renderFileList([]);
287
  } catch (err) {