mesdan 1.0.0
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/LICENSE.txt +21 -0
- package/README.md +42 -0
- package/package.json +46 -0
- package/teshir/aletler/harf-buyuk-mu.d.ts +2 -0
- package/teshir/aletler/harf-buyuk-mu.d.ts.map +1 -0
- package/teshir/aletler/harf-buyuk-mu.js +5 -0
- package/teshir/aletler/harf-kelime-basinda-mi.d.ts +2 -0
- package/teshir/aletler/harf-kelime-basinda-mi.d.ts.map +1 -0
- package/teshir/aletler/harf-kelime-basinda-mi.js +18 -0
- package/teshir/aletler/harf-kucuk-mu.d.ts +2 -0
- package/teshir/aletler/harf-kucuk-mu.d.ts.map +1 -0
- package/teshir/aletler/harf-kucuk-mu.js +5 -0
- package/teshir/aletler/harf-tedkiki.d.ts +6 -0
- package/teshir/aletler/harf-tedkiki.d.ts.map +1 -0
- package/teshir/aletler/harf-tedkiki.js +69 -0
- package/teshir/aletler/tebdil-alem-mevkisini.d.ts +3 -0
- package/teshir/aletler/tebdil-alem-mevkisini.d.ts.map +1 -0
- package/teshir/aletler/tebdil-alem-mevkisini.js +20 -0
- package/teshir/index.d.ts +2 -0
- package/teshir/index.d.ts.map +1 -0
- package/teshir/index.js +1 -0
- package/teshir/kanca/use-mesdan.d.ts +16 -0
- package/teshir/kanca/use-mesdan.d.ts.map +1 -0
- package/teshir/kanca/use-mesdan.js +218 -0
- package/teshir/nev/alem-mevkisi.d.ts +8 -0
- package/teshir/nev/alem-mevkisi.d.ts.map +1 -0
- package/teshir/nev/alem-mevkisi.js +9 -0
- package/teshir/nev/kelam-unsuru.d.ts +20 -0
- package/teshir/nev/kelam-unsuru.d.ts.map +1 -0
- package/teshir/nev/kelam-unsuru.js +15 -0
- package/teshir/nev/mes-hadisesi.d.ts +7 -0
- package/teshir/nev/mes-hadisesi.d.ts.map +1 -0
- package/teshir/nev/mes-hadisesi.js +1 -0
- package/teshir/nev/netice-metni-tadil-et.d.ts +7 -0
- package/teshir/nev/netice-metni-tadil-et.d.ts.map +1 -0
- package/teshir/nev/netice-metni-tadil-et.js +1 -0
- package/teshir/nev/netice-osmani-harf-tadili.d.ts +5 -0
- package/teshir/nev/netice-osmani-harf-tadili.d.ts.map +1 -0
- package/teshir/nev/netice-osmani-harf-tadili.js +1 -0
- package/teshir/nev/tadili-metin-emri.d.ts +15 -0
- package/teshir/nev/tadili-metin-emri.d.ts.map +1 -0
- package/teshir/nev/tadili-metin-emri.js +16 -0
- package/teshir/nuve/ekle-osmani-metne-harf.d.ts +5 -0
- package/teshir/nuve/ekle-osmani-metne-harf.d.ts.map +1 -0
- package/teshir/nuve/ekle-osmani-metne-harf.js +111 -0
- package/teshir/nuve/harf-latiniden-osmaniye.d.ts +2 -0
- package/teshir/nuve/harf-latiniden-osmaniye.d.ts.map +1 -0
- package/teshir/nuve/harf-latiniden-osmaniye.js +358 -0
- package/teshir/nuve/kaydir-alemi.d.ts +6 -0
- package/teshir/nuve/kaydir-alemi.d.ts.map +1 -0
- package/teshir/nuve/kaydir-alemi.js +173 -0
- package/teshir/nuve/sil-osmani-metinden-harf-basra.d.ts +4 -0
- package/teshir/nuve/sil-osmani-metinden-harf-basra.d.ts.map +1 -0
- package/teshir/nuve/sil-osmani-metinden-harf-basra.js +45 -0
- package/teshir/nuve/sil-osmani-metinden-harf-sonra.d.ts +4 -0
- package/teshir/nuve/sil-osmani-metinden-harf-sonra.d.ts.map +1 -0
- package/teshir/nuve/sil-osmani-metinden-harf-sonra.js +57 -0
- package/teshir/nuve/tadil-et-metni.d.ts +6 -0
- package/teshir/nuve/tadil-et-metni.d.ts.map +1 -0
- package/teshir/nuve/tadil-et-metni.js +103 -0
- package/teshir/nuve/tensih-zihinden.d.ts +2 -0
- package/teshir/nuve/tensih-zihinden.d.ts.map +1 -0
- package/teshir/nuve/tensih-zihinden.js +19 -0
- package/teshir/nuve/tensih-zihne.d.ts +2 -0
- package/teshir/nuve/tensih-zihne.d.ts.map +1 -0
- package/teshir/nuve/tensih-zihne.js +16 -0
- package/teshir/tedkik/harf-latiniden-osmaniye.tedkik.d.ts +2 -0
- package/teshir/tedkik/harf-latiniden-osmaniye.tedkik.d.ts.map +1 -0
- package/teshir/tedkik/harf-latiniden-osmaniye.tedkik.js +137 -0
package/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 KadimElifba
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Osmani membasının gayesi nedir?
|
|
2
|
+
|
|
3
|
+
Latin harflerinin bulunduğu mesdanla Osmanlı Türkçesi yazabilmek için hazırlanmıştır.
|
|
4
|
+
Mesdandan basılan harfin yerine Osmanî dengini yazar.
|
|
5
|
+
|
|
6
|
+
## Nasıl Kullanılır?
|
|
7
|
+
|
|
8
|
+
Bu memba **React** ile hazırlanan sahifelerde kullanılmak için geliştirilmiştir.
|
|
9
|
+
Sırası ile aşağıdaki adımları takip edelim:
|
|
10
|
+
|
|
11
|
+
Membayı tarhımıza dahil edelim:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
npm install mesdan
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**useMesdan** kancasını unsura dahil edelim:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
const [kelime, metinSahasıİması] = useMesdan<HTMLInputElement>({
|
|
21
|
+
ibtidaiKelime: "",
|
|
22
|
+
tekSatırMı: true,
|
|
23
|
+
});
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Bu kanca **[kelime, metinSahasıİması]** dizisini cevaben iletir.
|
|
27
|
+
**metinSahasıİması**, **input** unsurunun **ref** hususiyetine tanıtılmalıdır.
|
|
28
|
+
Bu sayede **useMesdan** **input** sahası seçiliyken basılan harfleri dinleyecek ve işbu harfleri
|
|
29
|
+
Osmanî denkleri ile değiştirecektir. Osmani Elifba ile yazılmış **kelime** evvelki dizi ile
|
|
30
|
+
kancaldan alınmıştı. **input** sahasının **value** kısmına işbu **kelime** tanıtılmalıdır.
|
|
31
|
+
İlaveten, **onChange** dinleyicisi de aşağıdaki gibi hazır edilmelidir.
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
<input
|
|
35
|
+
ref={metinSahasıİması}
|
|
36
|
+
dir="rtl"
|
|
37
|
+
type="text"
|
|
38
|
+
placeholder="كلمه"
|
|
39
|
+
value={kelime}
|
|
40
|
+
onChange={hadise => { }}
|
|
41
|
+
/>
|
|
42
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mesdan",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Latinî mesdan ile Osmanî metin yazmak için hazırlanmış bir alettir.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"osmanlıca",
|
|
7
|
+
"türkçe",
|
|
8
|
+
"türki",
|
|
9
|
+
"osmani",
|
|
10
|
+
"turkish",
|
|
11
|
+
"elifba",
|
|
12
|
+
"keyboard",
|
|
13
|
+
"tercüme",
|
|
14
|
+
"ottoman",
|
|
15
|
+
"latini"
|
|
16
|
+
],
|
|
17
|
+
"type": "module",
|
|
18
|
+
"main": "teshir/index.js",
|
|
19
|
+
"types": "teshir/index.d.ts",
|
|
20
|
+
"scripts": {
|
|
21
|
+
"öninşa": "rm -rf teshir",
|
|
22
|
+
"inşa": "npm run öninşa && tsc -p .",
|
|
23
|
+
"tecrübe": "tsx watch memba/index.ts",
|
|
24
|
+
"tedkik": "jest"
|
|
25
|
+
},
|
|
26
|
+
"author": "KadimElifba",
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/jest": "^29.5.12",
|
|
30
|
+
"@types/react": "^19.0.8",
|
|
31
|
+
"@types/react-dom": "^19.0.3",
|
|
32
|
+
"jest": "^29.7.0",
|
|
33
|
+
"prettier": "^3.3.1",
|
|
34
|
+
"react": "^19.0.0",
|
|
35
|
+
"react-dom": "^19.0.0",
|
|
36
|
+
"ts-jest": "^29.1.2",
|
|
37
|
+
"tsx": "^4.7.1",
|
|
38
|
+
"typescript": "^5.3.3"
|
|
39
|
+
},
|
|
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"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harf-kelime-basinda-mi.d.ts","sourceRoot":"","sources":["../../memba/aletler/harf-kelime-basinda-mi.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,WAmBlD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function harfKelimeBaşındaMı(sonHarf) {
|
|
2
|
+
if (sonHarf === " " ||
|
|
3
|
+
sonHarf === "(" ||
|
|
4
|
+
sonHarf === "{" ||
|
|
5
|
+
sonHarf === "[" ||
|
|
6
|
+
sonHarf === "\n" ||
|
|
7
|
+
sonHarf === "\r" ||
|
|
8
|
+
sonHarf === "\r\n" ||
|
|
9
|
+
sonHarf === "." ||
|
|
10
|
+
sonHarf === "،" ||
|
|
11
|
+
sonHarf === "؛" ||
|
|
12
|
+
sonHarf === "؟" ||
|
|
13
|
+
sonHarf === '"' ||
|
|
14
|
+
sonHarf === "") {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function harekeMi(harf: string): boolean;
|
|
2
|
+
export declare function tenvinMi(harf: string): boolean;
|
|
3
|
+
export declare function şeddeMi(harf: string): boolean;
|
|
4
|
+
export declare function kesmeMi(harf: string): boolean;
|
|
5
|
+
export declare function gayriİşaretlerdenMi(harf: string): boolean;
|
|
6
|
+
//# sourceMappingURL=harf-tedkiki.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harf-tedkiki.d.ts","sourceRoot":"","sources":["../../memba/aletler/harf-tedkiki.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,WAKpC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,WAKpC;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,WAKnC;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,WAKnC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,WAK/C"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export function harekeMi(harf) {
|
|
2
|
+
if (harekeler.includes(harf)) {
|
|
3
|
+
return true;
|
|
4
|
+
}
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
export function tenvinMi(harf) {
|
|
8
|
+
if (tenvinler.includes(harf)) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
export function şeddeMi(harf) {
|
|
14
|
+
if (şeddeler.includes(harf)) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
export function kesmeMi(harf) {
|
|
20
|
+
if (harf.endsWith("\u200C")) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
export function gayriİşaretlerdenMi(harf) {
|
|
26
|
+
if (gayriİşaretler.includes(harf)) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
const şeddeler = [
|
|
32
|
+
"\u064E" + "\u0651", // Fetha + Şedde
|
|
33
|
+
"\u0650" + "\u0651", // Kesra + Şedde
|
|
34
|
+
"\u064F" + "\u0651", // Damme + Şedde
|
|
35
|
+
];
|
|
36
|
+
const harekeler = [
|
|
37
|
+
"\u064E", // Fetha
|
|
38
|
+
"\u0650", // Kesra
|
|
39
|
+
"\u064F", // Damme
|
|
40
|
+
"\u0652", // Sukun
|
|
41
|
+
"\u0651", // Şedde Yalnız
|
|
42
|
+
];
|
|
43
|
+
const tenvinler = [
|
|
44
|
+
"\u064B", // Fetha Tenvin
|
|
45
|
+
"\u064D", // Kesra Tenvin
|
|
46
|
+
"\u064C", // Damme Tenvin
|
|
47
|
+
];
|
|
48
|
+
const gayriİşaretler = [
|
|
49
|
+
"\u0653", // Med
|
|
50
|
+
"\u0670", // Elif Üst
|
|
51
|
+
"\u0656", // Elif Alt
|
|
52
|
+
"\u0654", // Hemze Üst
|
|
53
|
+
"\u0655", // Hemze Alt
|
|
54
|
+
];
|
|
55
|
+
const işaretler = [
|
|
56
|
+
"\u0653", // Med
|
|
57
|
+
"\u064E", // Fetha
|
|
58
|
+
"\u0650", // Kesra
|
|
59
|
+
"\u064F", // Damme
|
|
60
|
+
"\u0652", // Sukun
|
|
61
|
+
"\u0651", // Şedde
|
|
62
|
+
"\u064D", // Kesra Tenvin
|
|
63
|
+
"\u064B", // Fetha Tenvin
|
|
64
|
+
"\u064C", // Damme Tenvin
|
|
65
|
+
"\u0670", // Elif Üst
|
|
66
|
+
"\u0656", // Elif Alt
|
|
67
|
+
"\u0654", // Hemze Üst
|
|
68
|
+
"\u0655", // Hemze Alt
|
|
69
|
+
];
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function tebdilAlemMevkisini(metinSahası: HTMLTextAreaElement | HTMLInputElement, mevki: number, celbiNazar?: boolean): void;
|
|
2
|
+
export declare function tebdilAlemMevkisiniMenzilIle(metinSahası: HTMLTextAreaElement | HTMLInputElement, başMevki: number, sonMevki: number, celbiNazar?: boolean): void;
|
|
3
|
+
//# sourceMappingURL=tebdil-alem-mevkisini.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tebdil-alem-mevkisini.d.ts","sourceRoot":"","sources":["../../memba/aletler/tebdil-alem-mevkisini.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,mBAAmB,GAAG,gBAAgB,EACnD,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,OAAe,QAW5B;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,mBAAmB,GAAG,gBAAgB,EACnD,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,OAAe,QAW5B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function tebdilAlemMevkisini(metinSahası, mevki, celbiNazar = false) {
|
|
2
|
+
if (celbiNazar) {
|
|
3
|
+
metinSahası.focus();
|
|
4
|
+
}
|
|
5
|
+
// Suni mesdanlerde erkenden çalıştığı için tesiri olmuyordu, geçiktirmemiz lazım
|
|
6
|
+
// https://stackoverflow.com/questions/11723420/chrome-setselectionrange-not-work-in-oninput-handler
|
|
7
|
+
window.setTimeout(function () {
|
|
8
|
+
metinSahası.setSelectionRange(mevki, mevki);
|
|
9
|
+
}, 0);
|
|
10
|
+
}
|
|
11
|
+
export function tebdilAlemMevkisiniMenzilIle(metinSahası, başMevki, sonMevki, celbiNazar = false) {
|
|
12
|
+
if (celbiNazar) {
|
|
13
|
+
metinSahası.focus();
|
|
14
|
+
}
|
|
15
|
+
// Suni mesdanlerde erkenden çalıştığı için tesiri olmuyordu, geçiktirmemiz lazım
|
|
16
|
+
// https://stackoverflow.com/questions/11723420/chrome-setselectionrange-not-work-in-oninput-handler
|
|
17
|
+
window.setTimeout(function () {
|
|
18
|
+
metinSahası.setSelectionRange(başMevki, sonMevki);
|
|
19
|
+
}, 0);
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../memba/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC"}
|
package/teshir/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useMesdan } from "./kanca/use-mesdan";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RefObject } from "react";
|
|
2
|
+
type MesdanHususları = {
|
|
3
|
+
ibtidaiMetin: string;
|
|
4
|
+
tekSatırMı: boolean;
|
|
5
|
+
latiniMi: boolean;
|
|
6
|
+
aramaTalepEdilince?: () => void;
|
|
7
|
+
};
|
|
8
|
+
type MesdanCevabı<T> = [
|
|
9
|
+
metin: string,
|
|
10
|
+
metinSahasıİması: RefObject<T | null>,
|
|
11
|
+
tebdilMetin: (yeniMetin: string) => void,
|
|
12
|
+
tebdilLatiniAramaMı: (latiniMi: boolean) => void
|
|
13
|
+
];
|
|
14
|
+
export declare const useMesdan: <T>({ ibtidaiMetin, tekSatırMı, latiniMi, aramaTalepEdilince, }: MesdanHususları) => MesdanCevabı<T>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=use-mesdan.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,218 @@
|
|
|
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
|
+
import { useEffect, useRef, useState } from "react";
|
|
11
|
+
import { harfBüyükMü } from "../aletler/harf-buyuk-mu";
|
|
12
|
+
import { tebdilAlemMevkisiniMenzilIle } from "../aletler/tebdil-alem-mevkisini";
|
|
13
|
+
import { hazırlaAlemMevkisini, hazırlaAlemMevkisiniMenzilli } from "../nev/alem-mevkisi";
|
|
14
|
+
import { TadiliMetinEmri } from "../nev/tadili-metin-emri";
|
|
15
|
+
import { Talimat_MetniTadilEt } from "../nuve/tadil-et-metni";
|
|
16
|
+
export const useMesdan = ({ ibtidaiMetin = "", tekSatırMı, latiniMi = false, aramaTalepEdilince, }) => {
|
|
17
|
+
const [yenilemeİbresi, tebdilYenilemeİbresi] = useState(0);
|
|
18
|
+
const [metin, tebdilMetin] = useState(ibtidaiMetin);
|
|
19
|
+
const metinSahasıİması = useRef(null);
|
|
20
|
+
const alemMevkisiİması = useRef(hazırlaAlemMevkisini(ibtidaiMetin.length));
|
|
21
|
+
// const harekeTuşlarıFaalMi = useRef<boolean>(false);
|
|
22
|
+
const tebdilLatiniAramaMı = (_latiniMi) => {
|
|
23
|
+
latiniMi = _latiniMi;
|
|
24
|
+
};
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (latiniMi)
|
|
27
|
+
return;
|
|
28
|
+
let metinSahası = metinSahasıİması.current;
|
|
29
|
+
if (!metinSahası)
|
|
30
|
+
return;
|
|
31
|
+
metinSahası.setAttribute("spellcheck", "false");
|
|
32
|
+
metinSahası.setAttribute("autocorrect", "off");
|
|
33
|
+
metinSahası.setAttribute("autocapitalize", "off");
|
|
34
|
+
metinSahası.setAttribute("autocomplete", "off");
|
|
35
|
+
if (tekSatırMı) {
|
|
36
|
+
metinSahası.setAttribute("enterkeyhint", "done");
|
|
37
|
+
// metinSahası.setAttribute("type", "search");
|
|
38
|
+
}
|
|
39
|
+
// Sahne hazır olduktan sonra alemin mevkilenmesi için
|
|
40
|
+
tebdilAlemMevkisiniMenzilIle(metinSahası, alemMevkisiİması.current.başMevki, alemMevkisiİması.current.sonMevki, true);
|
|
41
|
+
let alemMevkisiBaşı = metinSahası.selectionStart || 0;
|
|
42
|
+
let alemMevkisiSonu = metinSahası.selectionEnd || 0;
|
|
43
|
+
const tuşaBasılıncaFizikiMesdan = (hadise) => __awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
+
// console.log("tuşaBasılıncaFizikiMesdan > keydown");
|
|
45
|
+
hadise.preventDefault();
|
|
46
|
+
hadise.stopPropagation();
|
|
47
|
+
// console.log("Hadise> Key: -" + hadise.key + "-");
|
|
48
|
+
// console.log("Hadise> Code: -" + hadise.code + "-");
|
|
49
|
+
const metin = metinSahası.value;
|
|
50
|
+
alemMevkisiBaşı = metinSahası.selectionStart || 0;
|
|
51
|
+
alemMevkisiSonu = metinSahası.selectionEnd || 0;
|
|
52
|
+
const alemMevkisi = hazırlaAlemMevkisiniMenzilli(alemMevkisiBaşı, alemMevkisiSonu);
|
|
53
|
+
const mesHadisesi = {
|
|
54
|
+
latiniHarf: hadise.key,
|
|
55
|
+
shiftBasılıMı: hadise.shiftKey,
|
|
56
|
+
altBasılıMı: hadise.altKey,
|
|
57
|
+
capsLockBasılıMı: harfBüyükMü(hadise.key),
|
|
58
|
+
};
|
|
59
|
+
// arama 1.2.0 kademesinde hazır değildi, sonradan hazırladım
|
|
60
|
+
let tadiliMetinEmri = TadiliMetinEmri.EKLE;
|
|
61
|
+
if (tekSatırMı && hadise.key === "Enter") {
|
|
62
|
+
tadiliMetinEmri = TadiliMetinEmri.ARA;
|
|
63
|
+
if (aramaTalepEdilince) {
|
|
64
|
+
aramaTalepEdilince();
|
|
65
|
+
}
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
else if (!tekSatırMı && hadise.key === "Enter") {
|
|
69
|
+
tadiliMetinEmri = TadiliMetinEmri.EKLE;
|
|
70
|
+
mesHadisesi.latiniHarf = "\n";
|
|
71
|
+
}
|
|
72
|
+
else if (hadise.key === "Delete") {
|
|
73
|
+
tadiliMetinEmri = TadiliMetinEmri.SİL_AHİRDEN;
|
|
74
|
+
}
|
|
75
|
+
else if (hadise.key === "Backspace") {
|
|
76
|
+
tadiliMetinEmri = TadiliMetinEmri.SİL_EVVELDEN;
|
|
77
|
+
}
|
|
78
|
+
else if (hadise.key === "ArrowRight") {
|
|
79
|
+
tadiliMetinEmri = TadiliMetinEmri.ALEM_SAĞA;
|
|
80
|
+
}
|
|
81
|
+
else if (hadise.key === "ArrowLeft") {
|
|
82
|
+
tadiliMetinEmri = TadiliMetinEmri.ALEM_SOLA;
|
|
83
|
+
}
|
|
84
|
+
else if (hadise.key === "ArrowUp") {
|
|
85
|
+
tadiliMetinEmri = TadiliMetinEmri.ALEM_YUKARI;
|
|
86
|
+
}
|
|
87
|
+
else if (hadise.key === "ArrowDown") {
|
|
88
|
+
tadiliMetinEmri = TadiliMetinEmri.ALEM_AŞAĞI;
|
|
89
|
+
}
|
|
90
|
+
else if (hadise.ctrlKey) {
|
|
91
|
+
if (hadise.key.toLowerCase() === "c") {
|
|
92
|
+
tadiliMetinEmri = TadiliMetinEmri.TENSİH;
|
|
93
|
+
}
|
|
94
|
+
else if (hadise.key.toLowerCase() === "x") {
|
|
95
|
+
tadiliMetinEmri = TadiliMetinEmri.KES;
|
|
96
|
+
}
|
|
97
|
+
else if (hadise.key.toLowerCase() === "v") {
|
|
98
|
+
tadiliMetinEmri = TadiliMetinEmri.YAPIŞTIR;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
tadiliMetinEmri = TadiliMetinEmri.BOŞ;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else if (hadise.key === "Shift") {
|
|
105
|
+
tadiliMetinEmri = TadiliMetinEmri.BOŞ;
|
|
106
|
+
}
|
|
107
|
+
else if (hadise.key === "Alt") {
|
|
108
|
+
tadiliMetinEmri = TadiliMetinEmri.BOŞ;
|
|
109
|
+
}
|
|
110
|
+
else if (hadise.key === "AltGraph") {
|
|
111
|
+
tadiliMetinEmri = TadiliMetinEmri.BOŞ;
|
|
112
|
+
}
|
|
113
|
+
else if (hadise.key === "Meta") {
|
|
114
|
+
tadiliMetinEmri = TadiliMetinEmri.BOŞ;
|
|
115
|
+
}
|
|
116
|
+
else if (hadise.key === "Tab") {
|
|
117
|
+
tadiliMetinEmri = TadiliMetinEmri.BOŞ;
|
|
118
|
+
}
|
|
119
|
+
else if (hadise.key === "CapsLock") {
|
|
120
|
+
tadiliMetinEmri = TadiliMetinEmri.BOŞ;
|
|
121
|
+
}
|
|
122
|
+
else if (hadise.key === "Dead") {
|
|
123
|
+
tadiliMetinEmri = TadiliMetinEmri.BOŞ;
|
|
124
|
+
}
|
|
125
|
+
const netice = yield Talimat_MetniTadilEt(metinSahası, metin, alemMevkisi, tadiliMetinEmri, mesHadisesi, true);
|
|
126
|
+
// console.log("netice: " + JSON.stringify(netice));
|
|
127
|
+
alemMevkisiİması.current = netice.alemMevkisiTadilSonrası;
|
|
128
|
+
tebdilMetin(netice.metinTadilSonrası);
|
|
129
|
+
// Alemin sağa, sola, aşağı ve yukarı hareketi için lazım
|
|
130
|
+
tebdilAlemMevkisiniMenzilIle(metinSahası, netice.alemMevkisiTadilSonrası.başMevki, netice.alemMevkisiTadilSonrası.sonMevki, true);
|
|
131
|
+
if (netice.sahneYenidenÇizilsinMi) {
|
|
132
|
+
tebdilYenilemeİbresi((ibre) => ibre + 1);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
const tuşaBasılıncaSuniMesdan = (hadise) => __awaiter(void 0, void 0, void 0, function* () {
|
|
136
|
+
// console.log("tuşaBasılıncaSuniMesdan > input");
|
|
137
|
+
hadise.preventDefault(); // Here event.preventDefault doesn't stop user from typing
|
|
138
|
+
hadise.stopPropagation();
|
|
139
|
+
const metinHadisesi = hadise;
|
|
140
|
+
let harf = "";
|
|
141
|
+
if (metinHadisesi.data !== null) {
|
|
142
|
+
harf = metinHadisesi.data;
|
|
143
|
+
}
|
|
144
|
+
// console.log("Hadise> data: -" + harf + "- -" + harf.slice(-1) + "-");
|
|
145
|
+
// console.log("Hadise> inputType: -" + metinHadisesi.inputType + "-");
|
|
146
|
+
const mesHadisesi = {
|
|
147
|
+
// latiniHarf: harf,
|
|
148
|
+
latiniHarf: harf.replace(". ", " "),
|
|
149
|
+
// latiniHarf: harf.slice(-1),
|
|
150
|
+
shiftBasılıMı: false,
|
|
151
|
+
altBasılıMı: false,
|
|
152
|
+
capsLockBasılıMı: harfBüyükMü(harf),
|
|
153
|
+
};
|
|
154
|
+
let tadiliMetinEmri = TadiliMetinEmri.EKLE; // insertText
|
|
155
|
+
if (tekSatırMı && metinHadisesi.inputType === "Enter") {
|
|
156
|
+
tadiliMetinEmri = TadiliMetinEmri.ARA;
|
|
157
|
+
}
|
|
158
|
+
else if (!tekSatırMı && metinHadisesi.inputType === "insertLineBreak") {
|
|
159
|
+
mesHadisesi.latiniHarf = "\n";
|
|
160
|
+
tadiliMetinEmri = TadiliMetinEmri.EKLE;
|
|
161
|
+
}
|
|
162
|
+
else if (metinHadisesi.inputType === "deleteContentBackward") {
|
|
163
|
+
tadiliMetinEmri = TadiliMetinEmri.SİL_EVVELDEN;
|
|
164
|
+
}
|
|
165
|
+
else if (metinHadisesi.inputType === "deleteByCut") {
|
|
166
|
+
tadiliMetinEmri = TadiliMetinEmri.KES;
|
|
167
|
+
}
|
|
168
|
+
else if (metinHadisesi.inputType === "insertFromPaste") {
|
|
169
|
+
tadiliMetinEmri = TadiliMetinEmri.YAPIŞTIR;
|
|
170
|
+
}
|
|
171
|
+
const metin = metinSahası.value;
|
|
172
|
+
const alemMevkisi = hazırlaAlemMevkisiniMenzilli(alemMevkisiBaşı, alemMevkisiSonu);
|
|
173
|
+
const netice = yield Talimat_MetniTadilEt(metinSahası, metin, alemMevkisi, tadiliMetinEmri, mesHadisesi, false);
|
|
174
|
+
alemMevkisiİması.current = netice.alemMevkisiTadilSonrası;
|
|
175
|
+
tebdilMetin(netice.metinTadilSonrası);
|
|
176
|
+
if (netice.sahneYenidenÇizilsinMi) {
|
|
177
|
+
tebdilYenilemeİbresi((ibre) => ibre + 1);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
const tuşaBasılıncaEvveliSuniMesdan = (hadise) => {
|
|
181
|
+
// console.log("tuşaBasılıncaEvveliSuniMesdan > beforeinput");
|
|
182
|
+
alemMevkisiBaşı = metinSahası.selectionStart || 0;
|
|
183
|
+
alemMevkisiSonu = metinSahası.selectionEnd || 0;
|
|
184
|
+
};
|
|
185
|
+
const metinYapıştırmaTalebinde = (hadise) => __awaiter(void 0, void 0, void 0, function* () {
|
|
186
|
+
hadise.preventDefault();
|
|
187
|
+
const mesHadisesi = {
|
|
188
|
+
latiniHarf: "",
|
|
189
|
+
shiftBasılıMı: false,
|
|
190
|
+
altBasılıMı: false,
|
|
191
|
+
capsLockBasılıMı: false,
|
|
192
|
+
};
|
|
193
|
+
alemMevkisiBaşı = metinSahası.selectionStart || 0;
|
|
194
|
+
alemMevkisiSonu = metinSahası.selectionEnd || 0;
|
|
195
|
+
const metin = metinSahası.value;
|
|
196
|
+
const alemMevkisi = hazırlaAlemMevkisiniMenzilli(alemMevkisiBaşı, alemMevkisiSonu);
|
|
197
|
+
const tadiliMetinEmri = TadiliMetinEmri.YAPIŞTIR;
|
|
198
|
+
const netice = yield Talimat_MetniTadilEt(metinSahası, metin, alemMevkisi, tadiliMetinEmri, mesHadisesi, true);
|
|
199
|
+
alemMevkisiİması.current = netice.alemMevkisiTadilSonrası;
|
|
200
|
+
tebdilMetin(netice.metinTadilSonrası);
|
|
201
|
+
});
|
|
202
|
+
if (window.matchMedia("(pointer: coarse)").matches) {
|
|
203
|
+
metinSahası.addEventListener("beforeinput", tuşaBasılıncaEvveliSuniMesdan, false);
|
|
204
|
+
metinSahası.addEventListener("input", tuşaBasılıncaSuniMesdan, false);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
metinSahası.addEventListener("keydown", tuşaBasılıncaFizikiMesdan, false);
|
|
208
|
+
metinSahası.addEventListener("paste", metinYapıştırmaTalebinde, false);
|
|
209
|
+
}
|
|
210
|
+
return () => {
|
|
211
|
+
metinSahası.removeEventListener("keydown", tuşaBasılıncaFizikiMesdan);
|
|
212
|
+
metinSahası.removeEventListener("beforeinput", tuşaBasılıncaEvveliSuniMesdan);
|
|
213
|
+
metinSahası.removeEventListener("input", tuşaBasılıncaSuniMesdan);
|
|
214
|
+
metinSahası.removeEventListener("paste", tuşaBasılıncaSuniMesdan);
|
|
215
|
+
};
|
|
216
|
+
}, [metin, yenilemeİbresi, metinSahasıİması.current, latiniMi]);
|
|
217
|
+
return [metin, metinSahasıİması, tebdilMetin, tebdilLatiniAramaMı];
|
|
218
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type AlemMevkisi = {
|
|
2
|
+
başMevki: number;
|
|
3
|
+
sonMevki: number;
|
|
4
|
+
};
|
|
5
|
+
export declare function alAleminİlkHalini(): AlemMevkisi;
|
|
6
|
+
export declare function hazırlaAlemMevkisini(mevki: number): AlemMevkisi;
|
|
7
|
+
export declare function hazırlaAlemMevkisiniMenzilli(baş: number, son: number): AlemMevkisi;
|
|
8
|
+
//# sourceMappingURL=alem-mevkisi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alem-mevkisi.d.ts","sourceRoot":"","sources":["../../memba/nev/alem-mevkisi.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAE/D;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAElF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function alAleminİlkHalini() {
|
|
2
|
+
return { başMevki: 0, sonMevki: 0 };
|
|
3
|
+
}
|
|
4
|
+
export function hazırlaAlemMevkisini(mevki) {
|
|
5
|
+
return { başMevki: mevki, sonMevki: mevki };
|
|
6
|
+
}
|
|
7
|
+
export function hazırlaAlemMevkisiniMenzilli(baş, son) {
|
|
8
|
+
return { başMevki: baş, sonMevki: son };
|
|
9
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare enum Hareke {
|
|
2
|
+
BOŞ = "HAREKE_BO\u015E",
|
|
3
|
+
FETHA = "HAREKE_FETHA",
|
|
4
|
+
KESRA = "HAREKE_KESRA",
|
|
5
|
+
DAMME = "HAREKE_DAMME",
|
|
6
|
+
SÜKUN = "HAREKE_S\u00DCKUN"
|
|
7
|
+
}
|
|
8
|
+
export declare enum Tenvin {
|
|
9
|
+
BOŞ = "TENV\u0130N_BO\u015E",
|
|
10
|
+
FETHA = "TENV\u0130N_FETHA",
|
|
11
|
+
KESRA = "TENV\u0130N_KESRA",
|
|
12
|
+
DAMME = "TENV\u0130N_DAMME"
|
|
13
|
+
}
|
|
14
|
+
export type KelamUnsuru = {
|
|
15
|
+
harf: string;
|
|
16
|
+
şedde: boolean;
|
|
17
|
+
hareke: Hareke;
|
|
18
|
+
tenvin: Tenvin;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=kelam-unsuru.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kelam-unsuru.d.ts","sourceRoot":"","sources":["../../memba/nev/kelam-unsuru.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM;IAChB,GAAG,oBAAe;IAClB,KAAK,iBAAiB;IACtB,KAAK,iBAAiB;IACtB,KAAK,iBAAiB;IACtB,KAAK,sBAAiB;CACvB;AAED,oBAAY,MAAM;IAChB,GAAG,yBAAe;IAClB,KAAK,sBAAiB;IACtB,KAAK,sBAAiB;IACtB,KAAK,sBAAiB;CACvB;AAgBD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export var Hareke;
|
|
2
|
+
(function (Hareke) {
|
|
3
|
+
Hareke["BO\u015E"] = "HAREKE_BO\u015E";
|
|
4
|
+
Hareke["FETHA"] = "HAREKE_FETHA";
|
|
5
|
+
Hareke["KESRA"] = "HAREKE_KESRA";
|
|
6
|
+
Hareke["DAMME"] = "HAREKE_DAMME";
|
|
7
|
+
Hareke["S\u00DCKUN"] = "HAREKE_S\u00DCKUN";
|
|
8
|
+
})(Hareke || (Hareke = {}));
|
|
9
|
+
export var Tenvin;
|
|
10
|
+
(function (Tenvin) {
|
|
11
|
+
Tenvin["BO\u015E"] = "TENV\u0130N_BO\u015E";
|
|
12
|
+
Tenvin["FETHA"] = "TENV\u0130N_FETHA";
|
|
13
|
+
Tenvin["KESRA"] = "TENV\u0130N_KESRA";
|
|
14
|
+
Tenvin["DAMME"] = "TENV\u0130N_DAMME";
|
|
15
|
+
})(Tenvin || (Tenvin = {}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mes-hadisesi.d.ts","sourceRoot":"","sources":["../../memba/nev/mes-hadisesi.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"netice-metni-tadil-et.d.ts","sourceRoot":"","sources":["../../memba/nev/netice-metni-tadil-et.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,WAAW,CAAC;IACrC,sBAAsB,EAAE,OAAO,CAAC;CACjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"netice-osmani-harf-tadili.d.ts","sourceRoot":"","sources":["../../memba/nev/netice-osmani-harf-tadili.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|