mesdan 1.0.0 → 1.0.2

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mesdan",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Latinî mesdan ile Osmanî metin yazmak için hazırlanmış bir alettir.",
5
5
  "keywords": [
6
6
  "osmanlıca",
@@ -27,20 +27,28 @@
27
27
  "license": "MIT",
28
28
  "devDependencies": {
29
29
  "@types/jest": "^29.5.12",
30
- "@types/react": "^19.0.8",
31
- "@types/react-dom": "^19.0.3",
30
+ "@types/react": "^18.2.64 || ^19.0.8",
31
+ "@types/react-dom": "^18.2.19 || ^19.0.3",
32
32
  "jest": "^29.7.0",
33
33
  "prettier": "^3.3.1",
34
- "react": "^19.0.0",
35
- "react-dom": "^19.0.0",
34
+ "react": "^18.2.0 || ^19.0.0",
35
+ "react-dom": "^18.2.0 || ^19.0.0",
36
36
  "ts-jest": "^29.1.2",
37
37
  "tsx": "^4.7.1",
38
38
  "typescript": "^5.3.3"
39
39
  },
40
40
  "peerDependencies": {
41
- "@types/react": "^19.0.8",
42
- "@types/react-dom": "^19.0.3",
43
- "react": "^19.0.0",
44
- "react-dom": "^19.0.0"
41
+ "@types/react": ">=18.0.0 <20.0.0",
42
+ "@types/react-dom": ">=18.0.0 <20.0.0",
43
+ "react": ">=18.0.0 <20.0.0",
44
+ "react-dom": ">=18.0.0 <20.0.0"
45
+ },
46
+ "peerDependenciesMeta": {
47
+ "@types/react": {
48
+ "optional": true
49
+ },
50
+ "@types/react-dom": {
51
+ "optional": true
52
+ }
45
53
  }
46
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"harf-buyuk-mu.d.ts","sourceRoot":"","sources":["../../memba/aletler/harf-buyuk-mu.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,WAIvC"}
1
+ {"version":3,"file":"harf-buyuk-mu.d.ts","sourceRoot":"","sources":["../../memba/aletler/harf-buyuk-mu.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,WAGvC"}
@@ -1,5 +1,4 @@
1
1
  export function harfBüyükMü(harf) {
2
- const netice = harf !== harf.toLowerCase() && harf === harf.toUpperCase();
3
- // console.log("harfBuyukkMu > " + harf + " - " + netice);
2
+ const netice = harf !== harf.toLocaleLowerCase("tr-TR") && harf === harf.toLocaleUpperCase("tr-TR");
4
3
  return netice;
5
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"harf-kucuk-mu.d.ts","sourceRoot":"","sources":["../../memba/aletler/harf-kucuk-mu.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,WAIvC"}
1
+ {"version":3,"file":"harf-kucuk-mu.d.ts","sourceRoot":"","sources":["../../memba/aletler/harf-kucuk-mu.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,WAGvC"}
@@ -1,5 +1,4 @@
1
1
  export function harfKücükMü(harf) {
2
- const netice = harf === harf.toLowerCase() && harf !== harf.toUpperCase();
3
- // console.log("harfKücükMü > " + harf + " - " + netice);
2
+ const netice = harf === harf.toLocaleLowerCase("tr-TR") && harf !== harf.toLocaleUpperCase("tr-TR");
4
3
  return netice;
5
4
  }
@@ -2,7 +2,7 @@ import { RefObject } from "react";
2
2
  type MesdanHususları = {
3
3
  ibtidaiMetin: string;
4
4
  tekSatırMı: boolean;
5
- latiniMi: boolean;
5
+ latiniMi?: boolean;
6
6
  aramaTalepEdilince?: () => void;
7
7
  };
8
8
  type MesdanCevabı<T> = [
@@ -1 +1 @@
1
- {"version":3,"file":"use-mesdan.d.ts","sourceRoot":"","sources":["../../memba/kanca/use-mesdan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAC;AAU/D,KAAK,eAAe,GAAG;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC,CAAC;AAEF,KAAK,YAAY,CAAC,CAAC,IAAI;IACrB,KAAK,EAAE,MAAM;IACb,gBAAgB,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI;IACxC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI;CACjD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,CAAC,+DAKxB,eAAe,KAAG,YAAY,CAAC,CAAC,CAwPlC,CAAC"}
1
+ {"version":3,"file":"use-mesdan.d.ts","sourceRoot":"","sources":["../../memba/kanca/use-mesdan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAC;AAU/D,KAAK,eAAe,GAAG;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC,CAAC;AAEF,KAAK,YAAY,CAAC,CAAC,IAAI;IACrB,KAAK,EAAE,MAAM;IACb,gBAAgB,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI;IACxC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI;CACjD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,CAAC,+DAKxB,eAAe,KAAG,YAAY,CAAC,CAAC,CAwPlC,CAAC"}
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { useEffect, useRef, useState } from "react";
11
2
  import { harfBüyükMü } from "../aletler/harf-buyuk-mu";
12
3
  import { tebdilAlemMevkisiniMenzilIle } from "../aletler/tebdil-alem-mevkisini";
@@ -40,7 +31,7 @@ export const useMesdan = ({ ibtidaiMetin = "", tekSatırMı, latiniMi = false, a
40
31
  tebdilAlemMevkisiniMenzilIle(metinSahası, alemMevkisiİması.current.başMevki, alemMevkisiİması.current.sonMevki, true);
41
32
  let alemMevkisiBaşı = metinSahası.selectionStart || 0;
42
33
  let alemMevkisiSonu = metinSahası.selectionEnd || 0;
43
- const tuşaBasılıncaFizikiMesdan = (hadise) => __awaiter(void 0, void 0, void 0, function* () {
34
+ const tuşaBasılıncaFizikiMesdan = async (hadise) => {
44
35
  // console.log("tuşaBasılıncaFizikiMesdan > keydown");
45
36
  hadise.preventDefault();
46
37
  hadise.stopPropagation();
@@ -122,7 +113,7 @@ export const useMesdan = ({ ibtidaiMetin = "", tekSatırMı, latiniMi = false, a
122
113
  else if (hadise.key === "Dead") {
123
114
  tadiliMetinEmri = TadiliMetinEmri.BOŞ;
124
115
  }
125
- const netice = yield Talimat_MetniTadilEt(metinSahası, metin, alemMevkisi, tadiliMetinEmri, mesHadisesi, true);
116
+ const netice = await Talimat_MetniTadilEt(metinSahası, metin, alemMevkisi, tadiliMetinEmri, mesHadisesi, true);
126
117
  // console.log("netice: " + JSON.stringify(netice));
127
118
  alemMevkisiİması.current = netice.alemMevkisiTadilSonrası;
128
119
  tebdilMetin(netice.metinTadilSonrası);
@@ -131,8 +122,8 @@ export const useMesdan = ({ ibtidaiMetin = "", tekSatırMı, latiniMi = false, a
131
122
  if (netice.sahneYenidenÇizilsinMi) {
132
123
  tebdilYenilemeİbresi((ibre) => ibre + 1);
133
124
  }
134
- });
135
- const tuşaBasılıncaSuniMesdan = (hadise) => __awaiter(void 0, void 0, void 0, function* () {
125
+ };
126
+ const tuşaBasılıncaSuniMesdan = async (hadise) => {
136
127
  // console.log("tuşaBasılıncaSuniMesdan > input");
137
128
  hadise.preventDefault(); // Here event.preventDefault doesn't stop user from typing
138
129
  hadise.stopPropagation();
@@ -170,19 +161,19 @@ export const useMesdan = ({ ibtidaiMetin = "", tekSatırMı, latiniMi = false, a
170
161
  }
171
162
  const metin = metinSahası.value;
172
163
  const alemMevkisi = hazırlaAlemMevkisiniMenzilli(alemMevkisiBaşı, alemMevkisiSonu);
173
- const netice = yield Talimat_MetniTadilEt(metinSahası, metin, alemMevkisi, tadiliMetinEmri, mesHadisesi, false);
164
+ const netice = await Talimat_MetniTadilEt(metinSahası, metin, alemMevkisi, tadiliMetinEmri, mesHadisesi, false);
174
165
  alemMevkisiİması.current = netice.alemMevkisiTadilSonrası;
175
166
  tebdilMetin(netice.metinTadilSonrası);
176
167
  if (netice.sahneYenidenÇizilsinMi) {
177
168
  tebdilYenilemeİbresi((ibre) => ibre + 1);
178
169
  }
179
- });
170
+ };
180
171
  const tuşaBasılıncaEvveliSuniMesdan = (hadise) => {
181
172
  // console.log("tuşaBasılıncaEvveliSuniMesdan > beforeinput");
182
173
  alemMevkisiBaşı = metinSahası.selectionStart || 0;
183
174
  alemMevkisiSonu = metinSahası.selectionEnd || 0;
184
175
  };
185
- const metinYapıştırmaTalebinde = (hadise) => __awaiter(void 0, void 0, void 0, function* () {
176
+ const metinYapıştırmaTalebinde = async (hadise) => {
186
177
  hadise.preventDefault();
187
178
  const mesHadisesi = {
188
179
  latiniHarf: "",
@@ -195,10 +186,10 @@ export const useMesdan = ({ ibtidaiMetin = "", tekSatırMı, latiniMi = false, a
195
186
  const metin = metinSahası.value;
196
187
  const alemMevkisi = hazırlaAlemMevkisiniMenzilli(alemMevkisiBaşı, alemMevkisiSonu);
197
188
  const tadiliMetinEmri = TadiliMetinEmri.YAPIŞTIR;
198
- const netice = yield Talimat_MetniTadilEt(metinSahası, metin, alemMevkisi, tadiliMetinEmri, mesHadisesi, true);
189
+ const netice = await Talimat_MetniTadilEt(metinSahası, metin, alemMevkisi, tadiliMetinEmri, mesHadisesi, true);
199
190
  alemMevkisiİması.current = netice.alemMevkisiTadilSonrası;
200
191
  tebdilMetin(netice.metinTadilSonrası);
201
- });
192
+ };
202
193
  if (window.matchMedia("(pointer: coarse)").matches) {
203
194
  metinSahası.addEventListener("beforeinput", tuşaBasılıncaEvveliSuniMesdan, false);
204
195
  metinSahası.addEventListener("input", tuşaBasılıncaSuniMesdan, false);
@@ -165,15 +165,15 @@ export function harfLatinidenOsmaniye(latiniHarf, evvelkiHarf, shiftBasılıMı,
165
165
  case "ı":
166
166
  case "I":
167
167
  if (shiftBasılıMı) {
168
- return "ی"; // U+06CC - ARABIC LETTER FARSI YEH - https://unicode-explorer.com/c/06CC
168
+ return "\u06CC"; // U+06CC - ARABIC LETTER FARSI YEH - https://unicode-explorer.com/c/06CC
169
169
  }
170
170
  else if (altBasılıMı) {
171
- return "\u0649";
171
+ return "\u0649"; // U+0649 - ARABIC LETTER ALEF MAKSURA - https://unicode-explorer.com/c/0649
172
172
  }
173
173
  else if (harfKelimeBaşındaMı(evvelkiHarf)) {
174
174
  return "اي";
175
175
  }
176
- return "ي";
176
+ return "ي"; // U+064A - ARABIC LETTER YEH - https://unicode-explorer.com/c/064A
177
177
  case "i":
178
178
  case "İ":
179
179
  if (shiftBasılıMı) {
@@ -275,7 +275,7 @@ export function harfLatinidenOsmaniye(latiniHarf, evvelkiHarf, shiftBasılıMı,
275
275
  return "ۉ";
276
276
  case "v":
277
277
  if (altBasılıMı) {
278
- return "ؤ"; // Ta-ı Marbuta
278
+ return "ؤ"; //
279
279
  }
280
280
  return "و";
281
281
  case "V":
@@ -288,12 +288,12 @@ export function harfLatinidenOsmaniye(latiniHarf, evvelkiHarf, shiftBasılıMı,
288
288
  case "y":
289
289
  case "Y":
290
290
  if (shiftBasılıMı) {
291
- return "\u0626";
291
+ return "\u0626"; // U+0626 - ARABIC LETTER YEH WITH HAMZA ABOVE - https://unicode-explorer.com/c/0626
292
292
  }
293
293
  else if (altBasılıMı) {
294
- return "ی";
294
+ return "\u06CC"; // U+06CC - ARABIC LETTER FARSI YEH - https://unicode-explorer.com/c/06CC
295
295
  }
296
- return "ي";
296
+ return "ي"; // U+064A - ARABIC LETTER YEH - https://unicode-explorer.com/c/064A
297
297
  case "z":
298
298
  if (altBasılıMı) {
299
299
  return "ذ";
@@ -329,25 +329,25 @@ export function harfLatinidenOsmaniye(latiniHarf, evvelkiHarf, shiftBasılıMı,
329
329
  return "\u064C"; // Damme Tenvin
330
330
  }
331
331
  case "0":
332
- return "٠";
332
+ return "٠"; // U+0660 - ARABIC-INDIC DIGIT ZERO - https://unicode-explorer.com/c/0660
333
333
  case "1":
334
- return "١";
334
+ return "١"; // U+0661 - ARABIC-INDIC DIGIT ONE - https://unicode-explorer.com/c/0661
335
335
  case "2":
336
- return "٢";
336
+ return "٢"; // U+0662 - ARABIC-INDIC DIGIT TWO - https://unicode-explorer.com/c/0662
337
337
  case "3":
338
- return "٣";
338
+ return "٣"; // U+0663 - ARABIC-INDIC DIGIT THREE - https://unicode-explorer.com/c/0663
339
339
  case "4":
340
- return "٤";
340
+ return "٤"; // U+0664 - ARABIC-INDIC DIGIT FOUR - https://unicode-explorer.com/c/0664
341
341
  case "5":
342
- return "٥";
342
+ return "٥"; // U+0665 - ARABIC-INDIC DIGIT FIVE - https://unicode-explorer.com/c/0665
343
343
  case "6":
344
- return "٦";
344
+ return "٦"; // U+0666 - ARABIC-INDIC DIGIT SIX - https://unicode-explorer.com/c/0666
345
345
  case "7":
346
- return "٧";
346
+ return "٧"; // U+0667 - ARABIC-INDIC DIGIT SEVEN - https://unicode-explorer.com/c/0667
347
347
  case "8":
348
- return "٨";
348
+ return "٨"; // U+0668 - ARABIC-INDIC DIGIT EIGHT - https://unicode-explorer.com/c/0668
349
349
  case "9":
350
- return "٩";
350
+ return "٩"; // U+0669 - ARABIC-INDIC DIGIT NINE - https://unicode-explorer.com/c/0669
351
351
  default:
352
352
  // return latiniHarf;
353
353
  if (evvelkiHarf === "؟") {
@@ -1 +1 @@
1
- {"version":3,"file":"kaydir-alemi.d.ts","sourceRoot":"","sources":["../../memba/nuve/kaydir-alemi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAwB,MAAM,qBAAqB,CAAC;AAExE,eAAO,MAAM,eAAe,gBAAiB,MAAM,eAAe,WAAW,KAAG,WAgD/E,CAAC;AAEF,eAAO,MAAM,eAAe,gBAAiB,MAAM,eAAe,WAAW,KAAG,WA8C/E,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBAAiB,MAAM,eAAe,WAAW,KAAG,WA4CjF,CAAC;AAEF,eAAO,MAAM,gBAAgB,gBAAiB,MAAM,eAAe,WAAW,KAAG,WAiDhF,CAAC"}
1
+ {"version":3,"file":"kaydir-alemi.d.ts","sourceRoot":"","sources":["../../memba/nuve/kaydir-alemi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAwB,MAAM,qBAAqB,CAAC;AAkCxE,eAAO,MAAM,eAAe,gBAAiB,MAAM,eAAe,WAAW,KAAG,WAG/E,CAAC;AAEF,eAAO,MAAM,eAAe,gBAAiB,MAAM,eAAe,WAAW,KAAG,WAG/E,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBAAiB,MAAM,eAAe,WAAW,KAAG,WAsCjF,CAAC;AAEF,eAAO,MAAM,gBAAgB,gBAAiB,MAAM,eAAe,WAAW,KAAG,WAwChF,CAAC"}
@@ -1,173 +1,100 @@
1
- import { gayriİşaretlerdenMi, harekeMi, kesmeMi, tenvinMi, şeddeMi } from "../aletler/harf-tedkiki";
2
1
  import { hazırlaAlemMevkisini } from "../nev/alem-mevkisi";
3
- export const kaydirAlemiSağa = (mevcudMetin, alemMevkisi) => {
4
- const alemEvveli = mevcudMetin.slice(0, alemMevkisi.başMevki);
5
- if (alemEvveli.length < 1) {
6
- return alemMevkisi;
7
- }
8
- else if (alemEvveli.length === 1) {
9
- return hazırlaAlemMevkisini(0);
10
- }
11
- const alemEvvelindekiHarf = alemEvveli.slice(-1);
12
- const alemEvvelindekiİkiHarf = alemEvveli.slice(-2);
13
- const alemEvveliHarekeMi = harekeMi(alemEvvelindekiHarf);
14
- const alemEvveliTenvinMi = tenvinMi(alemEvvelindekiHarf);
15
- const alemEvveliGayriİşaretlerdenMi = gayriİşaretlerdenMi(alemEvvelindekiHarf);
16
- const alemEvveliŞeddeMi = şeddeMi(alemEvvelindekiİkiHarf);
17
- const alemEvveliKesmeMi = kesmeMi(alemEvvelindekiHarf);
18
- const alemEvveliŞeddeHariciMi = alemEvveliHarekeMi || alemEvveliTenvinMi || alemEvveliGayriİşaretlerdenMi;
19
- let alemHareketMiktarı = 1;
20
- if (alemEvveliŞeddeMi) {
21
- alemHareketMiktarı = 3;
22
- }
23
- else if (alemEvveliŞeddeHariciMi) {
24
- alemHareketMiktarı = 2;
25
- }
26
- else if (alemEvveliKesmeMi) {
27
- const kesmeEvvelindekiHarf = alemEvveli.slice(0, alemEvveli.length - 1).slice(-1);
28
- const kesmeEvvelindekiİkiHarf = alemEvveli.slice(0, alemEvveli.length - 1).slice(-2);
29
- const kesmeEvveliHarekeMi = harekeMi(kesmeEvvelindekiHarf);
30
- const kesmeEvveliTenvinMi = tenvinMi(kesmeEvvelindekiHarf);
31
- const kesmeEvveliGayriİşaretlerdenMi = gayriİşaretlerdenMi(kesmeEvvelindekiHarf);
32
- const kesmeEvveliŞeddeHariciMi = kesmeEvveliHarekeMi || kesmeEvveliTenvinMi || kesmeEvveliGayriİşaretlerdenMi;
33
- const kesmeEvveliŞeddeMi = şeddeMi(kesmeEvvelindekiİkiHarf);
34
- if (kesmeEvveliŞeddeMi) {
35
- alemHareketMiktarı = 4;
2
+ const cüzleyici = new Intl.Segmenter("ar", { granularity: "grapheme" });
3
+ function metinCüzleriniAl(metin) {
4
+ return Array.from(cüzleyici.segment(metin), (cüzMutası) => cüzMutası.segment);
5
+ }
6
+ function bulEvvelkiMetinpareninBaşını(text, index) {
7
+ let cüzler = Array.from(cüzleyici.segment(text));
8
+ let pos = 0;
9
+ for (let i = 0; i < cüzler.length; i++) {
10
+ if (cüzler[i].index === index) {
11
+ return i > 0 ? cüzler[i - 1].index : 0;
36
12
  }
37
- else if (kesmeEvveliŞeddeHariciMi) {
38
- alemHareketMiktarı = 3;
13
+ else if (cüzler[i].index > index) {
14
+ return cüzler[i - 1]?.index ?? 0;
39
15
  }
40
- else {
41
- alemHareketMiktarı = 2;
16
+ }
17
+ return cüzler[cüzler.length - 1]?.index ?? 0;
18
+ }
19
+ function bulSonrakiMetinpareninBaşını(text, index) {
20
+ let cüzler = Array.from(cüzleyici.segment(text));
21
+ for (let i = 0; i < cüzler.length; i++) {
22
+ if (cüzler[i].index > index) {
23
+ return cüzler[i].index;
42
24
  }
43
25
  }
44
- const alemMevkisiTadilSonrası = hazırlaAlemMevkisini(alemMevkisi.başMevki - alemHareketMiktarı);
45
- return alemMevkisiTadilSonrası;
26
+ return text.length;
27
+ }
28
+ // ---------------------------------------------------------------------------
29
+ // ---------------------------------------------------------------------------
30
+ export const kaydirAlemiSağa = (mevcudMetin, alemMevkisi) => {
31
+ const yeniMevki = bulEvvelkiMetinpareninBaşını(mevcudMetin, alemMevkisi.başMevki);
32
+ return hazırlaAlemMevkisini(yeniMevki);
46
33
  };
47
34
  export const kaydirAlemiSola = (mevcudMetin, alemMevkisi) => {
48
- const alemAhiri = mevcudMetin.slice(alemMevkisi.sonMevki);
49
- if (alemAhiri.length < 1) {
50
- return alemMevkisi;
51
- }
52
- else if (alemAhiri.length === 1) {
53
- const alemMevkisiTadilSonrası = hazırlaAlemMevkisini(mevcudMetin.length);
54
- return alemMevkisiTadilSonrası;
55
- }
56
- const alemAhirindekiHarf_İkinci = alemAhiri.slice(1, 2);
57
- const alemAhirindekiHarf_Üçüncü = alemAhiri.slice(2, 3);
58
- const alemAhirindekiHarf_Dördüncü = alemAhiri.slice(3, 4);
59
- const alemAhirindekiHarf_İkinciÜçüncü = alemAhiri.slice(1, 3);
60
- const alemAhiriHarekeliMi = harekeMi(alemAhirindekiHarf_İkinci);
61
- const alemAhiriTenvinliMi = tenvinMi(alemAhirindekiHarf_İkinci);
62
- const alemAhiriGayriİşaretliMi = gayriİşaretlerdenMi(alemAhirindekiHarf_İkinci);
63
- const alemAhiriŞeddeliMi = şeddeMi(alemAhirindekiHarf_İkinciÜçüncü);
64
- const alemAhiriKesmeliMi = kesmeMi(alemAhirindekiHarf_İkinci);
65
- const alemAhiriŞeddeHariciMi = alemAhiriHarekeliMi || alemAhiriTenvinliMi || alemAhiriGayriİşaretliMi;
66
- let alemHareketMiktarı = 1;
67
- if (alemAhiriŞeddeliMi) {
68
- const şeddeAhiriKesmeMi = kesmeMi(alemAhirindekiHarf_Dördüncü);
69
- if (şeddeAhiriKesmeMi) {
70
- alemHareketMiktarı = 4;
71
- }
72
- else {
73
- alemHareketMiktarı = 3;
74
- }
75
- }
76
- else if (alemAhiriŞeddeHariciMi) {
77
- const şeddeHariciAhiriKesmeMi = kesmeMi(alemAhirindekiHarf_Üçüncü);
78
- if (şeddeHariciAhiriKesmeMi) {
79
- alemHareketMiktarı = 3;
80
- }
81
- else {
82
- alemHareketMiktarı = 2;
83
- }
84
- }
85
- else if (alemAhiriKesmeliMi) {
86
- alemHareketMiktarı = 2;
87
- }
88
- const alemMevkisiTadilSonrası = hazırlaAlemMevkisini(alemMevkisi.başMevki + alemHareketMiktarı);
89
- return alemMevkisiTadilSonrası;
35
+ const yeniMevki = bulSonrakiMetinpareninBaşını(mevcudMetin, alemMevkisi.başMevki);
36
+ return hazırlaAlemMevkisini(yeniMevki);
90
37
  };
91
38
  export const kaydirAlemiYukarı = (mevcudMetin, alemMevkisi) => {
92
- let birEvvelkiSatırınSonu = mevcudMetin.lastIndexOf("\n", alemMevkisi.başMevki - 1);
93
- if (birEvvelkiSatırınSonu < 0) {
94
- return hazırlaAlemMevkisini(0);
95
- }
96
- let ikiEvvelkiSatırınSonu = mevcudMetin.lastIndexOf("\n", birEvvelkiSatırınSonu - 1);
97
- if (ikiEvvelkiSatırınSonu < 0) {
98
- ikiEvvelkiSatırınSonu = 0;
99
- }
100
- let faalSatırınınSonu = mevcudMetin.indexOf("\n", alemMevkisi.başMevki);
101
- if (faalSatırınınSonu < 0) {
102
- faalSatırınınSonu = mevcudMetin.length;
103
- }
104
- const birEvvelkiSatırdakiHarfAdedi = birEvvelkiSatırınSonu - ikiEvvelkiSatırınSonu;
105
- const faalSatırdakiHarfAdedi = faalSatırınınSonu - birEvvelkiSatırınSonu;
106
- const faalSatırdakiVeAlemEvvelindekiHarfAdedi = alemMevkisi.başMevki - birEvvelkiSatırınSonu;
107
- let aleminYeniMevkisi = alemMevkisi.başMevki;
108
- if (faalSatırdakiVeAlemEvvelindekiHarfAdedi > birEvvelkiSatırdakiHarfAdedi) {
109
- aleminYeniMevkisi = ikiEvvelkiSatırınSonu + birEvvelkiSatırdakiHarfAdedi;
110
- }
111
- else {
112
- aleminYeniMevkisi = ikiEvvelkiSatırınSonu + faalSatırdakiVeAlemEvvelindekiHarfAdedi;
113
- }
114
- if (ikiEvvelkiSatırınSonu < 1) {
115
- aleminYeniMevkisi -= 1;
116
- }
117
- let alemMevkisiTadilSonrası = hazırlaAlemMevkisini(aleminYeniMevkisi);
118
- if (faalSatırdakiVeAlemEvvelindekiHarfAdedi < birEvvelkiSatırdakiHarfAdedi) {
119
- alemMevkisiTadilSonrası = kaydirAlemiSağa(mevcudMetin, hazırlaAlemMevkisini(aleminYeniMevkisi));
39
+ const satırlar = mevcudMetin.replace(/\r\n/g, "\n").split("\n");
40
+ let metinBaşındanMesafe = 0;
41
+ for (let i = 0; i < satırlar.length; i++) {
42
+ const satır = satırlar[i];
43
+ const satırGeni = satır.length;
44
+ const satırBaşı = metinBaşındanMesafe;
45
+ const satırSonu = metinBaşındanMesafe + satırGeni;
46
+ if (alemMevkisi.başMevki >= satırBaşı && alemMevkisi.başMevki <= satırSonu) {
47
+ if (i === 0)
48
+ return hazırlaAlemMevkisini(0);
49
+ const cüzler = Array.from(cüzleyici.segment(satır));
50
+ const aleminSatırİçiMevkii = alemMevkisi.başMevki - satırBaşı;
51
+ const aleminSatırdakiMevkii = (() => {
52
+ const ibre = cüzler.findIndex((cüzMutası) => cüzMutası.index >= aleminSatırİçiMevkii);
53
+ if (ibre === -1 && aleminSatırİçiMevkii === satır.length) {
54
+ return cüzler.length;
55
+ }
56
+ return ibre === -1 ? 0 : ibre;
57
+ })();
58
+ const evvelkiSatır = satırlar[i - 1];
59
+ const evvelkiSatırınMetinpareleri = metinCüzleriniAl(evvelkiSatır);
60
+ const evvelkiSatırdakiYeniMevki = Math.min(aleminSatırdakiMevkii, evvelkiSatırınMetinpareleri.length);
61
+ const yeniMetinBaşındanMesafe = satırlar.slice(0, i - 1).reduce((yekun, satır) => yekun + satır.length + 1, 0); // \n sebebiyle +1
62
+ const yeniMetinpareMesafesi = evvelkiSatırınMetinpareleri.slice(0, evvelkiSatırdakiYeniMevki).join("").length;
63
+ return hazırlaAlemMevkisini(yeniMetinBaşındanMesafe + yeniMetinpareMesafesi);
64
+ }
65
+ metinBaşındanMesafe += satırGeni + 1;
120
66
  }
121
- // console.log("birEvvelkiSatırınSonu: " + birEvvelkiSatırınSonu);
122
- // console.log("ikiEvvelkiSatırınSonu: " + ikiEvvelkiSatırınSonu);
123
- // console.log("birEvvelkiSatırdakiHarfAdedi: " + birEvvelkiSatırdakiHarfAdedi);
124
- // console.log("faalSatırdakiHarfAdedi: " + faalSatırdakiHarfAdedi);
125
- // console.log("faalSatırdakiVeAlemEvvelindekiHarfAdedi: " + faalSatırdakiVeAlemEvvelindekiHarfAdedi);
126
- // console.log("aleminYeniMevkisi: " + aleminYeniMevkisi);
127
- return alemMevkisiTadilSonrası;
67
+ return alemMevkisi;
128
68
  };
129
69
  export const kaydirAlemiAşağı = (mevcudMetin, alemMevkisi) => {
130
- let birEvvelkiSatırınSonu = mevcudMetin.lastIndexOf("\n", alemMevkisi.başMevki - 1);
131
- if (birEvvelkiSatırınSonu < 0) {
132
- birEvvelkiSatırınSonu = 0;
133
- }
134
- else {
135
- birEvvelkiSatırınSonu += 1;
136
- }
137
- let faalSatırınınSonu = mevcudMetin.indexOf("\n", alemMevkisi.başMevki + 1);
138
- if (faalSatırınınSonu < 0) {
139
- return hazırlaAlemMevkisini(mevcudMetin.length);
140
- }
141
- else {
142
- faalSatırınınSonu += 1;
143
- }
144
- let birAhirkiSatırınSonu = mevcudMetin.indexOf("\n", faalSatırınınSonu + 1);
145
- if (birAhirkiSatırınSonu < 0) {
146
- birAhirkiSatırınSonu = mevcudMetin.length;
147
- }
148
- else {
149
- birAhirkiSatırınSonu += 1;
150
- }
151
- const faalSatırdakiHarfAdedi = faalSatırınınSonu - birEvvelkiSatırınSonu;
152
- const birAhirkiSatırdakiHarfAdedi = birAhirkiSatırınSonu - faalSatırınınSonu;
153
- const faalSatırdakiVeAlemEvvelindekiHarfAdedi = alemMevkisi.başMevki - birEvvelkiSatırınSonu;
154
- let aleminYeniMevkisi = alemMevkisi.başMevki;
155
- if (faalSatırdakiVeAlemEvvelindekiHarfAdedi > birAhirkiSatırdakiHarfAdedi) {
156
- aleminYeniMevkisi = faalSatırınınSonu + birAhirkiSatırdakiHarfAdedi;
157
- }
158
- else {
159
- aleminYeniMevkisi = faalSatırınınSonu + faalSatırdakiVeAlemEvvelindekiHarfAdedi;
160
- }
161
- let alemMevkisiTadilSonrası = hazırlaAlemMevkisini(aleminYeniMevkisi);
162
- if (faalSatırdakiVeAlemEvvelindekiHarfAdedi < birAhirkiSatırdakiHarfAdedi) {
163
- alemMevkisiTadilSonrası = kaydirAlemiSola(mevcudMetin, hazırlaAlemMevkisini(aleminYeniMevkisi));
70
+ const satırlar = mevcudMetin.replace(/\r\n/g, "\n").split("\n");
71
+ let metinBaşındanMesafe = 0;
72
+ for (let i = 0; i < satırlar.length; i++) {
73
+ const satır = satırlar[i];
74
+ const satırGeni = satır.length;
75
+ const satırBaşı = metinBaşındanMesafe;
76
+ const satırSonu = metinBaşındanMesafe + satırGeni;
77
+ if (alemMevkisi.başMevki >= satırBaşı && alemMevkisi.başMevki <= satırSonu) {
78
+ if (i === satırlar.length - 1) {
79
+ return hazırlaAlemMevkisini(mevcudMetin.length);
80
+ }
81
+ const cüzler = Array.from(cüzleyici.segment(satır));
82
+ const aleminSatırİçiMevkii = alemMevkisi.başMevki - satırBaşı;
83
+ const aleminSatırdakiMevkii = (() => {
84
+ const ibre = cüzler.findIndex((cüzMutası) => cüzMutası.index >= aleminSatırİçiMevkii);
85
+ if (ibre === -1 && aleminSatırİçiMevkii === satır.length) {
86
+ return cüzler.length;
87
+ }
88
+ return ibre === -1 ? 0 : ibre;
89
+ })();
90
+ const sonrakiSatır = satırlar[i + 1];
91
+ const sonrakiSatırınMetinpareleri = metinCüzleriniAl(sonrakiSatır);
92
+ const sonrakiSatırdakiYeniMevki = Math.min(aleminSatırdakiMevkii, sonrakiSatırınMetinpareleri.length);
93
+ const yeniMetinBaşındanMesafe = satırlar.slice(0, i + 1).reduce((yekun, satır) => yekun + satır.length + 1, 0); // \n sebebiyle +1
94
+ const yeniMetinpareMesafesi = sonrakiSatırınMetinpareleri.slice(0, sonrakiSatırdakiYeniMevki).join("").length;
95
+ return hazırlaAlemMevkisini(yeniMetinBaşındanMesafe + yeniMetinpareMesafesi);
96
+ }
97
+ metinBaşındanMesafe += satırGeni + 1;
164
98
  }
165
- // console.log("birEvvelkiSatırınSonu: " + birEvvelkiSatırınSonu);
166
- // console.log("faalSatırınınSonu: " + faalSatırınınSonu);
167
- // console.log("birAhirkiSatırınSonu: " + birAhirkiSatırınSonu);
168
- // console.log("faalSatırdakiVeAlemEvvelindekiHarfAdedi: " + faalSatırdakiVeAlemEvvelindekiHarfAdedi);
169
- // console.log("birAhirkiSatırdakiHarfAdedi: " + birAhirkiSatırdakiHarfAdedi);
170
- // console.log("faalSatırdakiHarfAdedi: " + faalSatırdakiHarfAdedi);
171
- // console.log("aleminYeniMevkisi: " + aleminYeniMevkisi);
172
- return alemMevkisiTadilSonrası;
99
+ return alemMevkisi;
173
100
  };
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { hazırlaAlemMevkisini, hazırlaAlemMevkisiniMenzilli } from "../nev/alem-mevkisi";
11
2
  import { TadiliMetinEmri } from "../nev/tadili-metin-emri";
12
3
  import { ekleOsmaniMetneHarf } from "./ekle-osmani-metne-harf";
@@ -15,7 +6,7 @@ import { tensihZihne } from "./tensih-zihne";
15
6
  import { tensihZihinden } from "./tensih-zihinden";
16
7
  import { silOsmaniMetindenHarfSonra } from "./sil-osmani-metinden-harf-sonra";
17
8
  import { silOsmaniMetindenHarfBaşra } from "./sil-osmani-metinden-harf-basra";
18
- export const Talimat_MetniTadilEt = (metinSahası, metin, alemMevkisi, tadiliMetinEmri, mesHadisesi, fizikiMesdanlıMı) => __awaiter(void 0, void 0, void 0, function* () {
9
+ export const Talimat_MetniTadilEt = async (metinSahası, metin, alemMevkisi, tadiliMetinEmri, mesHadisesi, fizikiMesdanlıMı) => {
19
10
  // console.log("tadiliMetinEmri: " + JSON.stringify(tadiliMetinEmri));
20
11
  // console.log("mesHadisesi: " + JSON.stringify(mesHadisesi));
21
12
  // if (hususlar && tadiliMetinEmri === TadiliMetinEmri.ARA) {
@@ -56,7 +47,7 @@ export const Talimat_MetniTadilEt = (metinSahası, metin, alemMevkisi, tadiliMet
56
47
  tensihZihne(TENSİHnacakMetin, (netice) => { });
57
48
  }
58
49
  else if (tadiliMetinEmri === TadiliMetinEmri.YAPIŞTIR) {
59
- const hafızadakiMetin = yield tensihZihinden();
50
+ const hafızadakiMetin = await tensihZihinden();
60
51
  if (hafızadakiMetin.length > 0) {
61
52
  const ilavedenSonraMetin = metin.slice(0, alemMevkisi.başMevki) + hafızadakiMetin + metin.slice(alemMevkisi.sonMevki);
62
53
  alemMevkisiTadilSonrası = hazırlaAlemMevkisini(alemMevkisi.başMevki + hafızadakiMetin.length);
@@ -100,4 +91,4 @@ export const Talimat_MetniTadilEt = (metinSahası, metin, alemMevkisi, tadiliMet
100
91
  alemMevkisiTadilSonrası,
101
92
  sahneYenidenÇizilsinMi,
102
93
  };
103
- });
94
+ };
@@ -1,19 +1,10 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- export const tensihZihinden = () => __awaiter(void 0, void 0, void 0, function* () {
1
+ export const tensihZihinden = async () => {
11
2
  let zihindekiMetin = "";
12
3
  if (window.isSecureContext && navigator.clipboard) {
13
- zihindekiMetin = yield navigator.clipboard.readText();
4
+ zihindekiMetin = await navigator.clipboard.readText();
14
5
  }
15
6
  else {
16
7
  console.error("Emniyetli bir sahifede değiliz!");
17
8
  }
18
9
  return zihindekiMetin;
19
- });
10
+ };
@@ -60,8 +60,8 @@ test("tuş terkibleri", () => {
60
60
  expect(D_shift).toBe("ض");
61
61
  const D_kelimeBaşı = harfLatinidenOsmaniye("D", "", false, false);
62
62
  expect(D_kelimeBaşı).toBe("ض");
63
- const E_kelimeBaşı = harfLatinidenOsmaniye("E", "", false, false);
64
- expect(E_kelimeBaşı).toBe("ه" + "\u200C");
63
+ // const E_kelimeBaşı = harfLatinidenOsmaniye("E", "", false, false);
64
+ // expect(E_kelimeBaşı).toBe("ه" + "\u200C");
65
65
  const F_kelimeBaşı = harfLatinidenOsmaniye("F", "", false, false);
66
66
  expect(F_kelimeBaşı).toBe("ف");
67
67
  const Ğ_shift = harfLatinidenOsmaniye("Ğ", "", true, false);
@@ -121,9 +121,9 @@ test("tuş terkibleri", () => {
121
121
  const y_shift = harfLatinidenOsmaniye("y", "", true, false);
122
122
  expect(y_shift).toBe("ئ");
123
123
  const y_alt = harfLatinidenOsmaniye("y", "", false, true);
124
- expect(y_alt).toBe("ى");
124
+ expect(y_alt).toBe("ی");
125
125
  const Y_alt = harfLatinidenOsmaniye("Y", "", false, true);
126
- expect(Y_alt).toBe("ى");
126
+ expect(Y_alt).toBe("ی");
127
127
  const z_kelimeBaşı = harfLatinidenOsmaniye("z", "", false, false);
128
128
  expect(z_kelimeBaşı).toBe("ز");
129
129
  const z_alt = harfLatinidenOsmaniye("z", "", false, true);