@yurikilian/lex4 0.2.2 → 0.3.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/README.md +2 -3
- package/dist/components/DocumentView.d.ts.map +1 -1
- package/dist/components/PageView.d.ts.map +1 -1
- package/dist/context/document-provider.d.ts.map +1 -1
- package/dist/engine/overflow.d.ts +2 -0
- package/dist/engine/overflow.d.ts.map +1 -1
- package/dist/hooks/use-pagination.d.ts.map +1 -1
- package/dist/i18n/defaults.d.ts.map +1 -1
- package/dist/i18n/pt-BR.d.ts.map +1 -1
- package/dist/i18n/types.d.ts +36 -0
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/lex4-editor.cjs +670 -271
- package/dist/lex4-editor.cjs.map +1 -1
- package/dist/lex4-editor.js +673 -274
- package/dist/lex4-editor.js.map +1 -1
- package/dist/lexical/plugins/history-capture-plugin.d.ts.map +1 -1
- package/dist/lexical/plugins/overflow-plugin.d.ts.map +1 -1
- package/dist/lexical/utils/mid-block-split.d.ts +34 -0
- package/dist/lexical/utils/mid-block-split.d.ts.map +1 -0
- package/dist/style.css +212 -816
- package/dist/utils/editor-state-utils.d.ts +10 -0
- package/dist/utils/editor-state-utils.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ A paginated document editor built as a **reusable React library** on top of [Met
|
|
|
29
29
|
## ✨ Features
|
|
30
30
|
|
|
31
31
|
- **True A4 pagination** — every page is exactly 794 × 1123 CSS pixels (210 mm × 297 mm at 96 DPI)
|
|
32
|
-
- **Automatic content flow** — overflow splits at block boundaries
|
|
32
|
+
- **Automatic content flow** — overflow splits at block boundaries with mid-block splitting for oversized paragraphs and lists
|
|
33
33
|
- **Rich text formatting** — bold, italic, underline, strikethrough, alignment, lists, indentation
|
|
34
34
|
- **Headers & footers** — global toggle with per-page editable regions and page counters
|
|
35
35
|
- **Multiple font families** — Inter, Arial, Times New Roman, Courier New, Georgia, Verdana and more
|
|
@@ -446,7 +446,7 @@ interface Lex4Extension {
|
|
|
446
446
|
- Header and footer regions **never** overlap body content
|
|
447
447
|
- Overflow always creates **full A4 pages**, never partial pages
|
|
448
448
|
- At least **one page** always exists — the document is never empty
|
|
449
|
-
-
|
|
449
|
+
- Oversized blocks are **automatically split** across pages (mid-block splitting)
|
|
450
450
|
|
|
451
451
|
## 📁 Project Structure
|
|
452
452
|
|
|
@@ -582,7 +582,6 @@ To deploy manually, trigger the workflow from the Actions tab.
|
|
|
582
582
|
|
|
583
583
|
| Limitation | Details |
|
|
584
584
|
|------------|---------|
|
|
585
|
-
| **No mid-block splitting** | Blocks (paragraphs, list items) move whole between pages. A single block larger than a page body will overflow visually. |
|
|
586
585
|
| **Heuristic initial pagination** | Block heights are estimated at 24px per line until the first render. `ResizeObserver` corrects this on mount. |
|
|
587
586
|
| **No collaborative editing** | The document model is designed for single-user editing. Real-time collaboration (e.g. CRDT/OT) is out of scope. |
|
|
588
587
|
| **No table support** | Tables are not supported as block types. |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentView.d.ts","sourceRoot":"","sources":["../../src/components/DocumentView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DocumentView.d.ts","sourceRoot":"","sources":["../../src/components/DocumentView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAYvE;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAiShC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageView.d.ts","sourceRoot":"","sources":["../../src/components/PageView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"PageView.d.ts","sourceRoot":"","sources":["../../src/components/PageView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAO3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1F,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkG3C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-provider.d.ts","sourceRoot":"","sources":["../../src/context/document-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwE,MAAM,OAAO,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"document-provider.d.ts","sourceRoot":"","sources":["../../src/context/document-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwE,MAAM,OAAO,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAuBtD,UAAU,qBAAqB;IAC7B,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAqPD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAga5D,CAAC"}
|
|
@@ -5,6 +5,8 @@ export interface OverflowResult {
|
|
|
5
5
|
fittingBlocks: BlockMeasurement[];
|
|
6
6
|
overflowingBlocks: BlockMeasurement[];
|
|
7
7
|
remainingHeight: number;
|
|
8
|
+
/** True when the first (or only) block alone exceeds maxBodyHeight */
|
|
9
|
+
singleBlockOverflow: boolean;
|
|
8
10
|
}
|
|
9
11
|
/**
|
|
10
12
|
* Detects which blocks fit within a page's body height and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overflow.d.ts","sourceRoot":"","sources":["../../src/engine/overflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"overflow.d.ts","sourceRoot":"","sources":["../../src/engine/overflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,gBAAgB,EAAE,EAC1B,aAAa,EAAE,MAAM,GACpB,cAAc,CA0BhB;AAED,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,gBAAgB,EAAE,CAAC;IACnC,uBAAuB,EAAE,gBAAgB,EAAE,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,gBAAgB,EAAE,GACjC,eAAe,CAkBjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-pagination.d.ts","sourceRoot":"","sources":["../../src/hooks/use-pagination.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"use-pagination.d.ts","sourceRoot":"","sources":["../../src/hooks/use-pagination.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AASlE,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,mBAAmB,CAAC;AAGjE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;oCA2C1B,MAAM;qCA+IN,MAAM;;EAgJrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/i18n/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/i18n/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,oBAAoB,EAAE,gBAqHlC,CAAC"}
|
package/dist/i18n/pt-BR.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pt-BR.d.ts","sourceRoot":"","sources":["../../src/i18n/pt-BR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"pt-BR.d.ts","sourceRoot":"","sources":["../../src/i18n/pt-BR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,kBAAkB,EAAE,gBAqHhC,CAAC"}
|
package/dist/i18n/types.d.ts
CHANGED
|
@@ -78,11 +78,47 @@ export interface Lex4Translations {
|
|
|
78
78
|
body: {
|
|
79
79
|
placeholder: string;
|
|
80
80
|
};
|
|
81
|
+
/** Use {{current}} for current page, {{total}} for total pages */
|
|
82
|
+
pageCounter: {
|
|
83
|
+
format: string;
|
|
84
|
+
};
|
|
85
|
+
/** Region names used in history labels */
|
|
86
|
+
regions: {
|
|
87
|
+
body: string;
|
|
88
|
+
header: string;
|
|
89
|
+
footer: string;
|
|
90
|
+
document: string;
|
|
91
|
+
toolbar: string;
|
|
92
|
+
overflow: string;
|
|
93
|
+
history: string;
|
|
94
|
+
/** Use {{page}} for the page number */
|
|
95
|
+
page: string;
|
|
96
|
+
};
|
|
81
97
|
headerFooter: {
|
|
82
98
|
label: string;
|
|
83
99
|
};
|
|
84
100
|
sidebar: {
|
|
85
101
|
close: string;
|
|
86
102
|
};
|
|
103
|
+
/** History entry labels for editor actions (used in HistoryCapturePlugin & describeAction) */
|
|
104
|
+
historyLabels: {
|
|
105
|
+
typedText: string;
|
|
106
|
+
pastedContent: string;
|
|
107
|
+
insertedLineBreak: string;
|
|
108
|
+
deletedBackward: string;
|
|
109
|
+
deletedForward: string;
|
|
110
|
+
formattedText: string;
|
|
111
|
+
formattedParagraph: string;
|
|
112
|
+
editedBody: string;
|
|
113
|
+
editedHeader: string;
|
|
114
|
+
editedFooter: string;
|
|
115
|
+
clearedDocumentBody: string;
|
|
116
|
+
resizedHeader: string;
|
|
117
|
+
resizedFooter: string;
|
|
118
|
+
addedPage: string;
|
|
119
|
+
removedPage: string;
|
|
120
|
+
documentReflow: string;
|
|
121
|
+
updatedDocument: string;
|
|
122
|
+
};
|
|
87
123
|
}
|
|
88
124
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/i18n/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE;YACP,qBAAqB,EAAE,MAAM,CAAC;YAC9B,sBAAsB,EAAE,MAAM,CAAC;YAC/B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,aAAa,EAAE,MAAM,CAAC;YACtB,aAAa,EAAE,MAAM,CAAC;YACtB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,sCAAsC;YACtC,cAAc,EAAE,MAAM,CAAC;YACvB,WAAW,EAAE,MAAM,CAAC;YACpB,aAAa,EAAE,MAAM,CAAC;YACtB,gBAAgB,EAAE,MAAM,CAAC;YACzB,oBAAoB,EAAE,MAAM,CAAC;YAC7B,WAAW,EAAE,MAAM,CAAC;YACpB,aAAa,EAAE,MAAM,CAAC;YACtB,YAAY,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,MAAM,CAAC;YACtB,oBAAoB,EAAE,MAAM,CAAC;YAC7B,kBAAkB,EAAE,MAAM,CAAC;YAC3B,eAAe,EAAE,MAAM,CAAC;YACxB,gBAAgB,EAAE,MAAM,CAAC;YACzB,sCAAsC;YACtC,WAAW,EAAE,MAAM,CAAC;YACpB,iCAAiC;YACjC,eAAe,EAAE,MAAM,CAAC;SACzB,CAAC;KACH,CAAC;IAEF,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,0DAA0D;QAC1D,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,uCAAuC;QACvC,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,IAAI,EAAE;QACJ,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"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"}
|