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 +17 -9
- package/teshir/aletler/harf-buyuk-mu.d.ts.map +1 -1
- package/teshir/aletler/harf-buyuk-mu.js +1 -2
- package/teshir/aletler/harf-kucuk-mu.d.ts.map +1 -1
- package/teshir/aletler/harf-kucuk-mu.js +1 -2
- package/teshir/kanca/use-mesdan.d.ts +1 -1
- package/teshir/kanca/use-mesdan.d.ts.map +1 -1
- package/teshir/kanca/use-mesdan.js +9 -18
- package/teshir/nuve/harf-latiniden-osmaniye.js +17 -17
- package/teshir/nuve/kaydir-alemi.d.ts.map +1 -1
- package/teshir/nuve/kaydir-alemi.js +86 -159
- package/teshir/nuve/tadil-et-metni.js +3 -12
- package/teshir/nuve/tensih-zihinden.js +3 -12
- package/teshir/tedkik/harf-latiniden-osmaniye.tedkik.js +4 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mesdan",
|
|
3
|
-
"version": "1.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": "
|
|
42
|
-
"@types/react-dom": "
|
|
43
|
-
"react": "
|
|
44
|
-
"react-dom": "
|
|
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,
|
|
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.
|
|
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,
|
|
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.
|
|
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
|
}
|
|
@@ -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;
|
|
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) =>
|
|
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 =
|
|
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) =>
|
|
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 =
|
|
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) =>
|
|
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 =
|
|
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 "
|
|
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 "ؤ"; //
|
|
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":"
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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 (
|
|
38
|
-
|
|
13
|
+
else if (cüzler[i].index > index) {
|
|
14
|
+
return cüzler[i - 1]?.index ?? 0;
|
|
39
15
|
}
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
45
|
-
|
|
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
|
|
49
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
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
|
-
|
|
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ı) =>
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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);
|