@sametalmdr/word-editor 0.2.0-alpha → 0.3.0-alpha
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/CHANGELOG.md +108 -70
- package/LICENSE +21 -21
- package/README.md +286 -247
- package/dist/canvas/box-clipboard.js +238 -238
- package/dist/canvas/box-selection.js +80 -80
- package/dist/canvas/canvas-editor.js +502 -502
- package/dist/canvas/controller.js +717 -717
- package/dist/canvas/geometry.js +131 -131
- package/dist/canvas/gesture.d.ts +0 -1
- package/dist/canvas/gesture.js +289 -289
- package/dist/canvas/handles.js +212 -212
- package/dist/canvas/menu.js +82 -82
- package/dist/canvas/mode-controller.js +81 -81
- package/dist/canvas/nudge.js +108 -108
- package/dist/canvas/overlay.js +149 -149
- package/dist/canvas/snap.js +132 -132
- package/dist/canvas/viewport.js +112 -112
- package/dist/canvas/z-order.js +171 -171
- package/dist/commands/alignment.js +150 -150
- package/dist/commands/box.js +272 -272
- package/dist/commands/clipboard.js +93 -93
- package/dist/commands/graphemes.js +112 -112
- package/dist/commands/marks.js +153 -153
- package/dist/commands/paragraph-props.js +176 -176
- package/dist/commands/size.js +368 -368
- package/dist/commands/text.js +291 -291
- package/dist/docx.d.ts +1 -0
- package/dist/docx.js +15 -13
- package/dist/editor/editing-host.js +434 -434
- package/dist/element.js +41 -41
- package/dist/fonts/OFL-Carlito.txt +94 -0
- package/dist/fonts/calibri-metrics.d.ts +27 -0
- package/dist/fonts/calibri-metrics.js +88 -0
- package/dist/history/history.js +433 -433
- package/dist/index.js +63 -63
- package/dist/input/beforeinput.js +224 -224
- package/dist/input/clipboard.js +107 -107
- package/dist/input/composition.js +341 -341
- package/dist/input/keymap.js +54 -54
- package/dist/io/ooxml/custgeom.js +72 -72
- package/dist/io/ooxml/drawingml.js +232 -232
- package/dist/io/ooxml/edits.js +67 -67
- package/dist/io/ooxml/export-splice.js +880 -880
- package/dist/io/ooxml/export.js +365 -365
- package/dist/io/ooxml/fill.d.ts +93 -8
- package/dist/io/ooxml/fill.js +618 -562
- package/dist/io/ooxml/fit.d.ts +252 -0
- package/dist/io/ooxml/fit.js +598 -0
- package/dist/io/ooxml/import-gate.js +200 -200
- package/dist/io/ooxml/import.js +691 -691
- package/dist/io/ooxml/inflate.js +126 -126
- package/dist/io/ooxml/media.js +87 -87
- package/dist/io/ooxml/ns.d.ts +2 -0
- package/dist/io/ooxml/ns.js +26 -21
- package/dist/io/ooxml/numbering.js +290 -290
- package/dist/io/ooxml/opc-write.js +171 -171
- package/dist/io/ooxml/provenance.js +93 -93
- package/dist/io/ooxml/recipe.js +708 -708
- package/dist/io/ooxml/relationships.js +59 -59
- package/dist/io/ooxml/run-fonts.d.ts +89 -0
- package/dist/io/ooxml/run-fonts.js +378 -0
- package/dist/io/ooxml/slots.d.ts +4 -0
- package/dist/io/ooxml/slots.js +582 -581
- package/dist/io/ooxml/styles-resolve.js +257 -257
- package/dist/io/ooxml/units.js +43 -43
- package/dist/io/ooxml/value.js +120 -120
- package/dist/io/ooxml/xml-scan.js +616 -616
- package/dist/io/ooxml/zip-container.js +228 -228
- package/dist/io/ooxml/zip-reject.js +106 -106
- package/dist/measure/placement.js +83 -83
- package/dist/measure/report.js +75 -75
- package/dist/model/ids.js +70 -70
- package/dist/model/normalize.js +146 -146
- package/dist/model/position.js +283 -283
- package/dist/model/transaction.js +209 -209
- package/dist/platform/capabilities.js +25 -25
- package/dist/react/index.js +21 -21
- package/dist/selection/controller.js +315 -315
- package/dist/selection/dom-map.js +334 -334
- package/dist/state/editor-state.js +109 -109
- package/dist/styles.css +66 -66
- package/package.json +94 -93
package/CHANGELOG.md
CHANGED
|
@@ -1,70 +1,108 @@
|
|
|
1
|
-
# Değişiklik günlüğü
|
|
2
|
-
|
|
3
|
-
## 0.
|
|
4
|
-
|
|
5
|
-
### Eklenenler
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
(`templates
|
|
28
|
-
`
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
|
|
1
|
+
# Değişiklik günlüğü
|
|
2
|
+
|
|
3
|
+
## 0.3.0-alpha — 2026-10-26 (yayını sahip yapar)
|
|
4
|
+
|
|
5
|
+
### Eklenenler
|
|
6
|
+
|
|
7
|
+
- **`checkFit(bytes, data, {expectedTags?, multiline?, capacity?})`** — `/docx`'ten
|
|
8
|
+
([ADR-0042](./docs/adr/0042-dom-free-fit-check.md)).
|
|
9
|
+
- **Ne yapar:** doldurmadan önce her değerin satırını şablonun kendi kutusuyla karşılaştırır. Tarayıcı
|
|
10
|
+
gerekmez.
|
|
11
|
+
- **Durumlar:** `fits`, `overflows`, `unknown` ya da `empty`; en dar satırın genişliği, yeri ve payı (pt).
|
|
12
|
+
`unknown`'ın nedeni kapalı bir listeden gelir.
|
|
13
|
+
- **Doğrulama:** `fillTemplate`'in reddettiğini aynı `TemplateError` ile reddeder; hiçbir şey yazmaz.
|
|
14
|
+
Rapor değer taşımaz.
|
|
15
|
+
- **Çok satırlı değer** `capacity` ister. Bağlama manifesti onu `fit` bloğunda taşır:
|
|
16
|
+
`checkFit(b, d, {...m.options, ...m.fit})`.
|
|
17
|
+
- **Word'e karşı:** masaüstü 16'da ön kayıtlı kapıyla sınandı (FR4-WORD-FIT2). 210 satırın hepsi
|
|
18
|
+
`checkFit`'in dediği gibi dizildi: KR09'un bütün kutuları bandın iki yanında, ayrıca 14 kalibrasyon dalı.
|
|
19
|
+
- **Calibri genişlik tablosu** — `dist/fonts/calibri-metrics.js`.
|
|
20
|
+
- Carlito 1.104'ten (SIL OFL-1.1, ayrılmış ad "Carlito"); lisans metni yanında
|
|
21
|
+
(`dist/fonts/OFL-Carlito.txt`).
|
|
22
|
+
- Yalnız Calibri 6.23 ile eşit olduğu 344 kod noktası, dört kesim. Tabloda olmayan karakter `unknown`
|
|
23
|
+
(örneğin ₺).
|
|
24
|
+
|
|
25
|
+
### Değişenler
|
|
26
|
+
|
|
27
|
+
- Bağlama manifesti (repo içi, `templates/`) `fit: {capacity}` kazandı. `fillTemplate` ve `validateTemplate`
|
|
28
|
+
`capacity`'yi bilinmeyen seçenek saymayı sürdürür.
|
|
29
|
+
|
|
30
|
+
### Bilinen sınırlar
|
|
31
|
+
|
|
32
|
+
- **Yalnız Calibri** (tablo) ve yalnız sınanan kutu ve paragraf biçimleri ölçülür; geri kalanı `unknown`.
|
|
33
|
+
Başka Calibri yapıları (Mac, Word web) ve `compatibilityMode` 15 doğrulanmadı (ADR-0042 DOĞRULANMALI).
|
|
34
|
+
- **Çok satırlı değerde** taşan bir satırın kaç satır alacağını tarayıcı söyler (FR4b). Kapasitenin
|
|
35
|
+
sığabileceği durumda sonuç `unknown(WRAPS)`.
|
|
36
|
+
- **Word'de sınanmayan dallar `unknown`:** sondaki boşlukların belirlediği satır (`TRAILING_SPACE`, U+0020
|
|
37
|
+
dahil), iç boşluklu kutuda ya da sola dayalı olmayan satırda sekme (`TAB_INSET`, `TAB_ALIGNMENT`), şablonda
|
|
38
|
+
olmayan paragraf stili (`STYLE_MISSING`), `xml:space` korunmayan kenar boşluğu (`WHITESPACE_UNPRESERVED`).
|
|
39
|
+
KR09'un örneklerinde hiçbiri yok (0 `unknown`).
|
|
40
|
+
|
|
41
|
+
## 0.2.0-alpha — 2026-10-26 (yayınlandı)
|
|
42
|
+
|
|
43
|
+
### Eklenenler
|
|
44
|
+
|
|
45
|
+
- **Çok satırlı değer** ([ADR-0039](./docs/adr/0039-multi-line-values.md)) —
|
|
46
|
+
`fillTemplate(bytes, data, {expectedTags?, multiline?})` ve
|
|
47
|
+
`validateTemplate(bytes, {expectedTags, multiline?})`. `multiline`'ın adlandırdığı etikette LF bir
|
|
48
|
+
satır sonudur: satırlar etiketin kendi run'ında, aralarında `w:br`; run'ın biçimi her satırda.
|
|
49
|
+
Okuma-geri `w:t` + `w:br` dizisini karşılaştırır. Şablonda olmayan ad `UNKNOWN_MULTILINE_TAG`.
|
|
50
|
+
Word'de (masaüstü 16) KR09'un iki uzun kutusunda ölçüldü: Calibri 8,5 pt'de 3 ve 2 satır sığıyor,
|
|
51
|
+
fazlası kırpılıyor.
|
|
52
|
+
|
|
53
|
+
### Değişenler
|
|
54
|
+
|
|
55
|
+
- Satır sonu kuralı: tek satırlı etikette LF de, her etikette CR, CRLF, U+2028 ve U+2029 eskisi gibi
|
|
56
|
+
`VALUE_LINE_BREAK`. Motor değeri normalleştirmez.
|
|
57
|
+
|
|
58
|
+
### Bilinen sınırlar
|
|
59
|
+
|
|
60
|
+
- `importDocx` `w:br`'yi okumuyor: çok satırlı bir değer editörde tek satıra birleşir; düzenlenip
|
|
61
|
+
export edilirse satır sonları kaybolur (FR4).
|
|
62
|
+
- Kutuya sığmayan değer Word'de sessizce kırpılır; sığma denetimi bugün çağıranın işi (FR4).
|
|
63
|
+
|
|
64
|
+
Paketin dışında (repo içi, `files`'a girmez): şablon tarifleri, bağlama manifesti ve alan kaydı v0
|
|
65
|
+
(`templates/`, ADR-0040/0041) — PeriKont'un KR09 şablonu bunlarla üretilir. Şablonun kendisi
|
|
66
|
+
`templates/kr09/KR09-template.docx`'te commit'li.
|
|
67
|
+
|
|
68
|
+
## 0.1.0-alpha — 2026-10-17 (yayını sahip yapar)
|
|
69
|
+
|
|
70
|
+
İlk açık alfa. Editörün kendi yüzeyi (`.`, `./element`, `./react`) değişmedi ve 1.0
|
|
71
|
+
öncesi.
|
|
72
|
+
|
|
73
|
+
### Eklenenler
|
|
74
|
+
|
|
75
|
+
- **`/docx` alt yolu** — DOM'suz; Node'da ve Deno'da (ör. Supabase Edge Functions) sınandı,
|
|
76
|
+
tarayıcı için de yazıldı (Chrome 152'de yalnız incelendi). Hiçbir ağ isteği atmaz.
|
|
77
|
+
- `fillTemplate(bytes, data, {expectedTags?})` — bir `.docx` şablonunun `{etiket}`lerini
|
|
78
|
+
doldurur. `{bytes, documentXml, report}` döndürür.
|
|
79
|
+
- `inspectTemplate(bytes)` — şablondaki etiketler (kutunun `wp:docPr` kimliği ve sayfasıyla),
|
|
80
|
+
doldurmayı durduracak sorunlar ve uyarılar. Şablon sorununda atmaz.
|
|
81
|
+
- `validateTemplate(bytes, {expectedTags})` — bağlama listesini tam küme olarak denetler.
|
|
82
|
+
- `TemplateError` — `problems` dizisi; her sorunun `code`'u sözleşmedir.
|
|
83
|
+
- `ENGINE_VERSION`.
|
|
84
|
+
- `importDocx`, `exportDocx` — editörün kendi IO'su; şekilleri alfa boyunca kararsız.
|
|
85
|
+
|
|
86
|
+
### Doldurma kuralları (ADR-0037, ADR-0038)
|
|
87
|
+
|
|
88
|
+
- Etiket bir `w:t`'nin metninin tamamıdır: `{firma_adi}`, ad `[a-z][a-z0-9_]*`.
|
|
89
|
+
- Etiketler yalnız metin kutularında (`mc:AlternateContent`). Kutunun iki kopyası
|
|
90
|
+
(`mc:Choice` ve `mc:Fallback`) birlikte yazılır; önceden yapısal olarak eşit değillerse
|
|
91
|
+
reddedilir, sonra eşitlikleri yeniden denetlenir.
|
|
92
|
+
- Eksik anahtar doldurmayı durdurur; eksiklerin hepsi tek hatada raporlanır. `null`, `""` ve
|
|
93
|
+
yalnız boşluktan oluşan değer **boştur**: serbesttir, `report.empty`'de listelenir.
|
|
94
|
+
- Değer string olmalı. Satır sonu, sekme ve XML'in kabul etmediği karakterler reddedilir.
|
|
95
|
+
- Rapor, sorunlar ve hata mesajları hiçbir değeri taşımaz.
|
|
96
|
+
- Yalnız `word/document.xml` yeniden yazılır; başka her parçanın baytları aynen kopyalanır.
|
|
97
|
+
|
|
98
|
+
### Bilinen sınırlar
|
|
99
|
+
|
|
100
|
+
- Yalnız ana belge doldurulur. Üst/alt bilgi, dipnot, son not, yorum, grafik ya da
|
|
101
|
+
`docProps` metnindeki bir parantez hata verir.
|
|
102
|
+
- Döngü (`{#…}`), koşul, görsel (`{%…}`), bölünmüş etiket, gövde paragrafındaki etiket yok.
|
|
103
|
+
- Çok satırlı değer yok (satır sonu reddedilir); politika FR3'te.
|
|
104
|
+
- Sıkıştırılmış `.docx` baytları çalışma ortamına göre değişir; ortamlar arasında
|
|
105
|
+
karşılaştırmayı `documentXml`'in özetiyle yapın.
|
|
106
|
+
- Gereken platform API'leri: `TextEncoder`/`TextDecoder` ve
|
|
107
|
+
`CompressionStream`/`DecompressionStream("deflate-raw")` — Node 20.12+ ya da 21.2+, Deno,
|
|
108
|
+
güncel tarayıcılar. Sınanan: Node 24.13.1, Deno 2.1.4.
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Samet Alemdaroğlu
|
|
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.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Samet Alemdaroğlu
|
|
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.
|