@thangph2146/nextjs-editor 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/README.md +75 -0
- package/dist/editor-theme.css +388 -0
- package/dist/index.cjs +33415 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +326 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +15 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +33719 -0
- package/dist/index.js.map +1 -0
- package/package.json +80 -0
package/dist/index.css
ADDED
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
/* src/components/editor/themes/editor-theme.css */
|
|
2
|
+
.EditorTheme__code {
|
|
3
|
+
background-color: transparent;
|
|
4
|
+
font-family:
|
|
5
|
+
Menlo,
|
|
6
|
+
Consolas,
|
|
7
|
+
Monaco,
|
|
8
|
+
monospace;
|
|
9
|
+
display: block;
|
|
10
|
+
padding: 8px 8px 8px 52px;
|
|
11
|
+
line-height: 1.53;
|
|
12
|
+
font-size: 13px;
|
|
13
|
+
margin: 0;
|
|
14
|
+
margin-top: 8px;
|
|
15
|
+
margin-bottom: 8px;
|
|
16
|
+
overflow-x: auto;
|
|
17
|
+
border: 1px solid #ccc;
|
|
18
|
+
position: relative;
|
|
19
|
+
border-radius: 8px;
|
|
20
|
+
tab-size: 2;
|
|
21
|
+
}
|
|
22
|
+
.EditorTheme__code:before {
|
|
23
|
+
content: attr(data-gutter);
|
|
24
|
+
position: absolute;
|
|
25
|
+
background-color: transparent;
|
|
26
|
+
border-right: 1px solid #ccc;
|
|
27
|
+
left: 0;
|
|
28
|
+
top: 0;
|
|
29
|
+
padding: 8px;
|
|
30
|
+
color: #777;
|
|
31
|
+
white-space: pre-wrap;
|
|
32
|
+
text-align: right;
|
|
33
|
+
min-width: 25px;
|
|
34
|
+
}
|
|
35
|
+
.EditorTheme__table {
|
|
36
|
+
border-collapse: collapse;
|
|
37
|
+
border-spacing: 0;
|
|
38
|
+
overflow-y: scroll;
|
|
39
|
+
overflow-x: scroll;
|
|
40
|
+
table-layout: auto;
|
|
41
|
+
width: 100%;
|
|
42
|
+
margin: 0px 0px 30px 0px;
|
|
43
|
+
}
|
|
44
|
+
.EditorTheme__tableCell,
|
|
45
|
+
.EditorTheme__tableCellHeader {
|
|
46
|
+
min-width: 0;
|
|
47
|
+
word-wrap: break-word;
|
|
48
|
+
overflow-wrap: break-word;
|
|
49
|
+
white-space: normal;
|
|
50
|
+
}
|
|
51
|
+
.EditorTheme__table tr > td:first-child,
|
|
52
|
+
.EditorTheme__table tr > th:first-child {
|
|
53
|
+
width: 3rem;
|
|
54
|
+
max-width: 3rem;
|
|
55
|
+
}
|
|
56
|
+
.EditorTheme__tokenComment {
|
|
57
|
+
color: slategray;
|
|
58
|
+
}
|
|
59
|
+
.EditorTheme__tokenPunctuation {
|
|
60
|
+
color: #999;
|
|
61
|
+
}
|
|
62
|
+
.EditorTheme__tokenProperty {
|
|
63
|
+
color: #905;
|
|
64
|
+
}
|
|
65
|
+
.EditorTheme__tokenSelector {
|
|
66
|
+
color: #690;
|
|
67
|
+
}
|
|
68
|
+
.EditorTheme__tokenOperator {
|
|
69
|
+
color: #9a6e3a;
|
|
70
|
+
}
|
|
71
|
+
.EditorTheme__tokenAttr {
|
|
72
|
+
color: #07a;
|
|
73
|
+
}
|
|
74
|
+
.EditorTheme__tokenVariable {
|
|
75
|
+
color: #e90;
|
|
76
|
+
}
|
|
77
|
+
.EditorTheme__tokenFunction {
|
|
78
|
+
color: #dd4a68;
|
|
79
|
+
}
|
|
80
|
+
.Collapsible__container {
|
|
81
|
+
background-color: var(--background);
|
|
82
|
+
border: 1px solid #ccc;
|
|
83
|
+
border-radius: 0.5rem;
|
|
84
|
+
margin-bottom: 0.5rem;
|
|
85
|
+
}
|
|
86
|
+
.Collapsible__title {
|
|
87
|
+
padding: 0.25rem;
|
|
88
|
+
padding-left: 1rem;
|
|
89
|
+
position: relative;
|
|
90
|
+
font-weight: bold;
|
|
91
|
+
outline: none;
|
|
92
|
+
cursor: pointer;
|
|
93
|
+
list-style-type: disclosure-closed;
|
|
94
|
+
list-style-position: inside;
|
|
95
|
+
}
|
|
96
|
+
.Collapsible__title p {
|
|
97
|
+
display: inline-flex;
|
|
98
|
+
}
|
|
99
|
+
.Collapsible__title::marker {
|
|
100
|
+
color: lightgray;
|
|
101
|
+
}
|
|
102
|
+
.ContentEditable__root ul[data-list-color],
|
|
103
|
+
.ContentEditable__root ol[data-list-color] {
|
|
104
|
+
list-style-color: var(--list-marker-color, currentColor);
|
|
105
|
+
}
|
|
106
|
+
.ContentEditable__root ul[data-list-color] li::marker,
|
|
107
|
+
.ContentEditable__root ol[data-list-color] li::marker {
|
|
108
|
+
color: var(--list-marker-color, currentColor);
|
|
109
|
+
}
|
|
110
|
+
.Collapsible__container[open] > .Collapsible__title {
|
|
111
|
+
list-style-type: disclosure-open;
|
|
112
|
+
}
|
|
113
|
+
[data-lexical-layout-container=true] {
|
|
114
|
+
display: grid;
|
|
115
|
+
width: 100%;
|
|
116
|
+
max-width: 100%;
|
|
117
|
+
box-sizing: border-box;
|
|
118
|
+
grid-template-columns: 1fr;
|
|
119
|
+
}
|
|
120
|
+
@media (min-width: 400px) {
|
|
121
|
+
[data-lexical-layout-container=true] {
|
|
122
|
+
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
[data-lexical-layout-item=true],
|
|
126
|
+
div.border.border-dashed {
|
|
127
|
+
min-width: 0;
|
|
128
|
+
width: 100%;
|
|
129
|
+
max-width: 100%;
|
|
130
|
+
box-sizing: border-box;
|
|
131
|
+
overflow: hidden;
|
|
132
|
+
}
|
|
133
|
+
.ContentEditable__root.editor-readonly [data-lexical-layout-item=true],
|
|
134
|
+
.ContentEditable__root.editor-readonly div.border.border-dashed,
|
|
135
|
+
.ContentEditable__root.editor-readonly div[class*=border-dashed],
|
|
136
|
+
.ContentEditable__root[data-editor-readonly=true] [data-lexical-layout-item=true],
|
|
137
|
+
.ContentEditable__root[data-editor-readonly=true] div.border.border-dashed,
|
|
138
|
+
.ContentEditable__root[data-editor-readonly=true] div[class*=border-dashed],
|
|
139
|
+
.ContentEditable__root[contenteditable=false] [data-lexical-layout-item=true],
|
|
140
|
+
.ContentEditable__root[contenteditable=false] div.border.border-dashed,
|
|
141
|
+
.ContentEditable__root[contenteditable=false] div[class*=border-dashed],
|
|
142
|
+
.ContentEditable__root[aria-readonly=true] [data-lexical-layout-item=true],
|
|
143
|
+
.ContentEditable__root[aria-readonly=true] div.border.border-dashed,
|
|
144
|
+
.ContentEditable__root[aria-readonly=true] div[class*=border-dashed] {
|
|
145
|
+
border: none;
|
|
146
|
+
padding: 0;
|
|
147
|
+
}
|
|
148
|
+
[data-lexical-layout-item=true] img,
|
|
149
|
+
div.border.border-dashed img {
|
|
150
|
+
max-width: 100%;
|
|
151
|
+
width: 100%;
|
|
152
|
+
height: auto;
|
|
153
|
+
object-fit: contain;
|
|
154
|
+
display: inline-block;
|
|
155
|
+
}
|
|
156
|
+
[data-lexical-layout-item=true] p[style*="text-align: left"],
|
|
157
|
+
div.border.border-dashed p[style*="text-align: left"] {
|
|
158
|
+
text-align: left;
|
|
159
|
+
}
|
|
160
|
+
[data-lexical-layout-item=true] p[style*="text-align: center"],
|
|
161
|
+
div.border.border-dashed p[style*="text-align: center"] {
|
|
162
|
+
text-align: center;
|
|
163
|
+
}
|
|
164
|
+
[data-lexical-layout-item=true] p[style*="text-align: right"],
|
|
165
|
+
div.border.border-dashed p[style*="text-align: right"] {
|
|
166
|
+
text-align: right;
|
|
167
|
+
}
|
|
168
|
+
[data-lexical-layout-item=true] p[style*="text-align: left"] .editor-image,
|
|
169
|
+
div.border.border-dashed p[style*="text-align: left"] .editor-image {
|
|
170
|
+
margin-left: 0;
|
|
171
|
+
margin-right: auto;
|
|
172
|
+
}
|
|
173
|
+
[data-lexical-layout-item=true] p[style*="text-align: center"] .editor-image,
|
|
174
|
+
div.border.border-dashed p[style*="text-align: center"] .editor-image {
|
|
175
|
+
margin-left: auto;
|
|
176
|
+
margin-right: auto;
|
|
177
|
+
}
|
|
178
|
+
[data-lexical-layout-item=true] p[style*="text-align: right"] .editor-image,
|
|
179
|
+
div.border.border-dashed p[style*="text-align: right"] .editor-image {
|
|
180
|
+
margin-left: auto;
|
|
181
|
+
margin-right: 0;
|
|
182
|
+
}
|
|
183
|
+
[data-lexical-layout-item=true] *,
|
|
184
|
+
div.border.border-dashed * {
|
|
185
|
+
max-width: 100%;
|
|
186
|
+
}
|
|
187
|
+
[data-lexical-layout-item=true] .editor-image,
|
|
188
|
+
div.border.border-dashed .editor-image {
|
|
189
|
+
max-width: 100%;
|
|
190
|
+
width: 100%;
|
|
191
|
+
display: inline-block;
|
|
192
|
+
}
|
|
193
|
+
[data-lexical-layout-item=true] .editor-image > div,
|
|
194
|
+
div.border.border-dashed .editor-image > div {
|
|
195
|
+
max-width: 100%;
|
|
196
|
+
width: 100%;
|
|
197
|
+
display: block;
|
|
198
|
+
}
|
|
199
|
+
[data-lexical-layout-item=true] .editor-image img,
|
|
200
|
+
div.border.border-dashed .editor-image img {
|
|
201
|
+
max-width: 100%;
|
|
202
|
+
width: 100%;
|
|
203
|
+
height: auto;
|
|
204
|
+
object-fit: contain;
|
|
205
|
+
}
|
|
206
|
+
.ContentEditable__root img {
|
|
207
|
+
max-width: 100%;
|
|
208
|
+
height: auto;
|
|
209
|
+
}
|
|
210
|
+
.ContentEditable__root .editor-image .editor-image__sized,
|
|
211
|
+
.ContentEditable__root .editor-image .editor-image__sized img {
|
|
212
|
+
max-width: 100%;
|
|
213
|
+
width: 100%;
|
|
214
|
+
height: auto;
|
|
215
|
+
box-sizing: border-box;
|
|
216
|
+
}
|
|
217
|
+
.ContentEditable__root .editor-image,
|
|
218
|
+
.ContentEditable__root .editor-image > div {
|
|
219
|
+
max-width: 100%;
|
|
220
|
+
}
|
|
221
|
+
.ContentEditable__root iframe {
|
|
222
|
+
max-width: 100%;
|
|
223
|
+
width: 100%;
|
|
224
|
+
}
|
|
225
|
+
[data-lexical-decorator=true] > div.user-select-none {
|
|
226
|
+
display: block;
|
|
227
|
+
width: 100%;
|
|
228
|
+
max-width: 100%;
|
|
229
|
+
margin-left: auto;
|
|
230
|
+
margin-right: auto;
|
|
231
|
+
overflow: visible;
|
|
232
|
+
box-sizing: border-box;
|
|
233
|
+
}
|
|
234
|
+
[data-lexical-decorator=true] > div.user-select-none > .relative:not(.editor-embed-frame) {
|
|
235
|
+
display: block;
|
|
236
|
+
width: 100%;
|
|
237
|
+
max-width: 100%;
|
|
238
|
+
height: auto;
|
|
239
|
+
margin-left: auto;
|
|
240
|
+
margin-right: auto;
|
|
241
|
+
box-sizing: border-box;
|
|
242
|
+
}
|
|
243
|
+
[data-lexical-decorator=true] > div.user-select-none iframe,
|
|
244
|
+
[data-lexical-decorator=true] > div.user-select-none video,
|
|
245
|
+
[data-lexical-decorator=true] > div.user-select-none embed {
|
|
246
|
+
width: 100%;
|
|
247
|
+
height: 100%;
|
|
248
|
+
display: block;
|
|
249
|
+
margin-left: auto;
|
|
250
|
+
margin-right: auto;
|
|
251
|
+
}
|
|
252
|
+
.ContentEditable__root [data-lexical-decorator=true] > div.user-select-none {
|
|
253
|
+
width: 100%;
|
|
254
|
+
max-width: 100%;
|
|
255
|
+
}
|
|
256
|
+
.ContentEditable__root [data-lexical-decorator=true] > div.user-select-none > .relative.inline-block:not(.editor-embed-frame) {
|
|
257
|
+
width: 100%;
|
|
258
|
+
max-width: 100%;
|
|
259
|
+
height: auto;
|
|
260
|
+
display: block;
|
|
261
|
+
}
|
|
262
|
+
[data-lexical-decorator=true] > div.user-select-none > .editor-embed-frame,
|
|
263
|
+
.ContentEditable__root [data-lexical-decorator=true] > div.user-select-none > .relative.editor-embed-frame {
|
|
264
|
+
display: inline-block;
|
|
265
|
+
max-width: 100%;
|
|
266
|
+
margin-left: 0;
|
|
267
|
+
margin-right: 0;
|
|
268
|
+
box-sizing: border-box;
|
|
269
|
+
vertical-align: top;
|
|
270
|
+
}
|
|
271
|
+
.editor-embed-frame {
|
|
272
|
+
position: relative;
|
|
273
|
+
box-sizing: border-box;
|
|
274
|
+
min-width: 0;
|
|
275
|
+
vertical-align: top;
|
|
276
|
+
line-height: 0;
|
|
277
|
+
height: auto;
|
|
278
|
+
}
|
|
279
|
+
.editor-embed-frame--full {
|
|
280
|
+
display: block;
|
|
281
|
+
width: 100%;
|
|
282
|
+
}
|
|
283
|
+
.editor-embed-frame--inline {
|
|
284
|
+
display: inline-block;
|
|
285
|
+
}
|
|
286
|
+
.editor-embed-frame--inline {
|
|
287
|
+
max-width: 100%;
|
|
288
|
+
}
|
|
289
|
+
[data-lexical-align=left] .editor-embed-frame--inline,
|
|
290
|
+
[data-lexical-align=start] .editor-embed-frame--inline {
|
|
291
|
+
margin-left: 0;
|
|
292
|
+
margin-right: auto;
|
|
293
|
+
}
|
|
294
|
+
[data-lexical-align=center] .editor-embed-frame--inline {
|
|
295
|
+
margin-left: auto;
|
|
296
|
+
margin-right: auto;
|
|
297
|
+
}
|
|
298
|
+
[data-lexical-align=right] .editor-embed-frame--inline,
|
|
299
|
+
[data-lexical-align=end] .editor-embed-frame--inline {
|
|
300
|
+
margin-left: auto;
|
|
301
|
+
margin-right: 0;
|
|
302
|
+
}
|
|
303
|
+
.editor-embed-frame iframe {
|
|
304
|
+
position: absolute;
|
|
305
|
+
inset: 0;
|
|
306
|
+
width: 100%;
|
|
307
|
+
height: 100%;
|
|
308
|
+
}
|
|
309
|
+
#editor-x .ContentEditable__root[contenteditable=false],
|
|
310
|
+
#editor-x .ContentEditable__root[aria-readonly=true] {
|
|
311
|
+
border: none;
|
|
312
|
+
}
|
|
313
|
+
#editor-x .ContentEditable__root {
|
|
314
|
+
max-width: 100%;
|
|
315
|
+
min-width: 0;
|
|
316
|
+
}
|
|
317
|
+
#editor-x .ContentEditable__root .editor-image,
|
|
318
|
+
#editor-x .ContentEditable__root .editor-image > div,
|
|
319
|
+
#editor-x .ContentEditable__root .editor-image .editor-image__sized,
|
|
320
|
+
#editor-x .ContentEditable__root .editor-image .editor-image__sized img {
|
|
321
|
+
max-width: 100%;
|
|
322
|
+
width: 100%;
|
|
323
|
+
height: auto;
|
|
324
|
+
box-sizing: border-box;
|
|
325
|
+
}
|
|
326
|
+
/*# sourceMappingURL=index.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/editor/themes/editor-theme.css"],"sourcesContent":[".EditorTheme__code {\r\n background-color: transparent;\r\n font-family: Menlo, Consolas, Monaco, monospace;\r\n display: block;\r\n padding: 8px 8px 8px 52px;\r\n line-height: 1.53;\r\n font-size: 13px;\r\n margin: 0;\r\n margin-top: 8px;\r\n margin-bottom: 8px;\r\n overflow-x: auto;\r\n border: 1px solid #ccc;\r\n position: relative;\r\n border-radius: 8px;\r\n tab-size: 2;\r\n}\r\n.EditorTheme__code:before {\r\n content: attr(data-gutter);\r\n position: absolute;\r\n background-color: transparent;\r\n border-right: 1px solid #ccc;\r\n left: 0;\r\n top: 0;\r\n padding: 8px;\r\n color: #777;\r\n white-space: pre-wrap;\r\n text-align: right;\r\n min-width: 25px;\r\n}\r\n.EditorTheme__table {\r\n border-collapse: collapse;\r\n border-spacing: 0;\r\n overflow-y: scroll;\r\n overflow-x: scroll;\r\n table-layout: auto; /* auto để width trên td/th được tôn trọng, cột \"TT\" không bị kéo 243px */\r\n width: 100%;\r\n margin: 0px 0px 30px 0px;\r\n}\r\n\r\n/* Cho phép cột tôn trọng width đã chỉnh (resize), không bị kéo về min từ theme/class khác */\r\n.EditorTheme__tableCell,\r\n.EditorTheme__tableCellHeader {\r\n min-width: 0 ;\r\n word-wrap: break-word;\r\n overflow-wrap: break-word;\r\n white-space: normal;\r\n}\r\n\r\n/* Cột đầu tiên (thứ tự, \"TT\") mặc định hẹp; resize vẫn ghi đè qua inline style */\r\n.EditorTheme__table tr > td:first-child,\r\n.EditorTheme__table tr > th:first-child {\r\n width: 3rem;\r\n max-width: 3rem;\r\n}\r\n.EditorTheme__tokenComment {\r\n color: slategray;\r\n}\r\n.EditorTheme__tokenPunctuation {\r\n color: #999;\r\n}\r\n.EditorTheme__tokenProperty {\r\n color: #905;\r\n}\r\n.EditorTheme__tokenSelector {\r\n color: #690;\r\n}\r\n.EditorTheme__tokenOperator {\r\n color: #9a6e3a;\r\n}\r\n.EditorTheme__tokenAttr {\r\n color: #07a;\r\n}\r\n.EditorTheme__tokenVariable {\r\n color: #e90;\r\n}\r\n.EditorTheme__tokenFunction {\r\n color: #dd4a68;\r\n}\r\n\r\n.Collapsible__container {\r\n background-color: var(--background);\r\n border: 1px solid #ccc;\r\n border-radius: 0.5rem;\r\n margin-bottom: 0.5rem;\r\n}\r\n\r\n.Collapsible__title{\r\n padding: 0.25rem;\r\n padding-left: 1rem;\r\n position: relative;\r\n font-weight: bold;\r\n outline: none;\r\n cursor: pointer;\r\n list-style-type: disclosure-closed;\r\n list-style-position: inside;\r\n}\r\n\r\n.Collapsible__title p{\r\n display: inline-flex;\r\n}\r\n.Collapsible__title::marker{\r\n color: lightgray;\r\n}\r\n\r\n/* Màu bullet/số list khi dùng \"Đổi màu list\" (data-list-color + --list-marker-color do plugin set) */\r\n.ContentEditable__root ul[data-list-color],\r\n.ContentEditable__root ol[data-list-color] {\r\n list-style-color: var(--list-marker-color, currentColor) ;\r\n}\r\n.ContentEditable__root ul[data-list-color] li::marker,\r\n.ContentEditable__root ol[data-list-color] li::marker {\r\n color: var(--list-marker-color, currentColor) ;\r\n}\r\n.Collapsible__container[open] >.Collapsible__title {\r\n list-style-type: disclosure-open;\r\n}\r\n\r\n/* Layout Container Styles */\r\n[data-lexical-layout-container=\"true\"] {\r\n display: grid ;\r\n width: 100% ;\r\n max-width: 100% ;\r\n box-sizing: border-box ;\r\n /* Responsive grid: single column by default */\r\n grid-template-columns: 1fr ;\r\n}\r\n\r\n/* Auto-fit columns with min 400px when container is wide enough */\r\n@media (min-width: 400px) {\r\n [data-lexical-layout-container=\"true\"] {\r\n grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)) ;\r\n }\r\n}\r\n\r\n/* Layout Item Styles - Ensure items don't overflow */\r\n[data-lexical-layout-item=\"true\"],\r\ndiv.border.border-dashed {\r\n min-width: 0 ;\r\n width: 100% ;\r\n max-width: 100% ;\r\n box-sizing: border-box ;\r\n overflow: hidden ;\r\n}\r\n\r\n/* Hide border and padding when editor is read-only - dùng selector đủ mạnh thay vì !important */\r\n.ContentEditable__root.editor-readonly [data-lexical-layout-item=\"true\"],\r\n.ContentEditable__root.editor-readonly div.border.border-dashed,\r\n.ContentEditable__root.editor-readonly div[class*=\"border-dashed\"],\r\n.ContentEditable__root[data-editor-readonly=\"true\"] [data-lexical-layout-item=\"true\"],\r\n.ContentEditable__root[data-editor-readonly=\"true\"] div.border.border-dashed,\r\n.ContentEditable__root[data-editor-readonly=\"true\"] div[class*=\"border-dashed\"],\r\n.ContentEditable__root[contenteditable=\"false\"] [data-lexical-layout-item=\"true\"],\r\n.ContentEditable__root[contenteditable=\"false\"] div.border.border-dashed,\r\n.ContentEditable__root[contenteditable=\"false\"] div[class*=\"border-dashed\"],\r\n.ContentEditable__root[aria-readonly=\"true\"] [data-lexical-layout-item=\"true\"],\r\n.ContentEditable__root[aria-readonly=\"true\"] div.border.border-dashed,\r\n.ContentEditable__root[aria-readonly=\"true\"] div[class*=\"border-dashed\"] {\r\n border: none;\r\n padding: 0;\r\n}\r\n\r\n/* Ensure images inside layout items are responsive and respect text-align */\r\n[data-lexical-layout-item=\"true\"] img,\r\ndiv.border.border-dashed img {\r\n max-width: 100% ;\r\n width: 100% ;\r\n height: auto ;\r\n object-fit: contain ;\r\n display: inline-block ;\r\n}\r\n\r\n/* Support text-align for images in layout items */\r\n[data-lexical-layout-item=\"true\"] p[style*=\"text-align: left\"],\r\ndiv.border.border-dashed p[style*=\"text-align: left\"] {\r\n text-align: left ;\r\n}\r\n\r\n[data-lexical-layout-item=\"true\"] p[style*=\"text-align: center\"],\r\ndiv.border.border-dashed p[style*=\"text-align: center\"] {\r\n text-align: center ;\r\n}\r\n\r\n[data-lexical-layout-item=\"true\"] p[style*=\"text-align: right\"],\r\ndiv.border.border-dashed p[style*=\"text-align: right\"] {\r\n text-align: right ;\r\n}\r\n\r\n/* Ensure image wrapper respects parent text-align */\r\n[data-lexical-layout-item=\"true\"] p[style*=\"text-align: left\"] .editor-image,\r\ndiv.border.border-dashed p[style*=\"text-align: left\"] .editor-image {\r\n margin-left: 0 ;\r\n margin-right: auto ;\r\n}\r\n\r\n[data-lexical-layout-item=\"true\"] p[style*=\"text-align: center\"] .editor-image,\r\ndiv.border.border-dashed p[style*=\"text-align: center\"] .editor-image {\r\n margin-left: auto ;\r\n margin-right: auto ;\r\n}\r\n\r\n[data-lexical-layout-item=\"true\"] p[style*=\"text-align: right\"] .editor-image,\r\ndiv.border.border-dashed p[style*=\"text-align: right\"] .editor-image {\r\n margin-left: auto ;\r\n margin-right: 0 ;\r\n}\r\n\r\n/* Ensure all content inside layout items scales properly */\r\n[data-lexical-layout-item=\"true\"] *,\r\ndiv.border.border-dashed * {\r\n max-width: 100% ;\r\n}\r\n\r\n/* Ensure image wrapper scales */\r\n[data-lexical-layout-item=\"true\"] .editor-image,\r\ndiv.border.border-dashed .editor-image {\r\n max-width: 100% ;\r\n width: 100% ;\r\n display: inline-block ;\r\n}\r\n\r\n[data-lexical-layout-item=\"true\"] .editor-image > div,\r\ndiv.border.border-dashed .editor-image > div {\r\n max-width: 100% ;\r\n width: 100% ;\r\n display: block ;\r\n}\r\n\r\n/* Force images to respect container width */\r\n[data-lexical-layout-item=\"true\"] .editor-image img,\r\ndiv.border.border-dashed .editor-image img {\r\n max-width: 100% ;\r\n width: 100% ;\r\n height: auto ;\r\n object-fit: contain ;\r\n}\r\n\r\n/* Generic responsive media inside editor content */\r\n.ContentEditable__root img {\r\n max-width: 100% ;\r\n height: auto ;\r\n}\r\n\r\n/* Wrapper và ảnh có kích thước tường minh: ép luôn trong khung, responsive */\r\n.ContentEditable__root .editor-image .editor-image__sized,\r\n.ContentEditable__root .editor-image .editor-image__sized img {\r\n max-width: 100% ;\r\n width: 100% ;\r\n height: auto ;\r\n box-sizing: border-box ;\r\n}\r\n\r\n.ContentEditable__root .editor-image,\r\n.ContentEditable__root .editor-image > div {\r\n max-width: 100% ;\r\n}\r\n\r\n.ContentEditable__root iframe {\r\n max-width: 100% ;\r\n width: 100% ;\r\n}\r\n\r\n/* Embed wrappers (BlockWithAlignableContents base class) */\r\n[data-lexical-decorator=\"true\"] > div.user-select-none {\r\n display: block ;\r\n width: 100% ;\r\n max-width: 100% ;\r\n margin-left: auto ;\r\n margin-right: auto ;\r\n overflow: visible ;\r\n box-sizing: border-box ;\r\n}\r\n\r\n[data-lexical-decorator=\"true\"] > div.user-select-none > .relative:not(.editor-embed-frame) {\r\n display: block ;\r\n width: 100% ;\r\n max-width: 100% ;\r\n height: auto ;\r\n margin-left: auto ;\r\n margin-right: auto ;\r\n box-sizing: border-box ;\r\n}\r\n\r\n[data-lexical-decorator=\"true\"] > div.user-select-none iframe,\r\n[data-lexical-decorator=\"true\"] > div.user-select-none video,\r\n[data-lexical-decorator=\"true\"] > div.user-select-none embed {\r\n width: 100% ;\r\n height: 100% ;\r\n display: block;\r\n margin-left: auto;\r\n margin-right: auto;\r\n}\r\n\r\n.ContentEditable__root [data-lexical-decorator=\"true\"] > div.user-select-none {\r\n width: 100% ;\r\n max-width: 100% ;\r\n}\r\n\r\n.ContentEditable__root\r\n [data-lexical-decorator=\"true\"]\r\n > div.user-select-none\r\n > .relative.inline-block:not(.editor-embed-frame) {\r\n width: 100% ;\r\n max-width: 100% ;\r\n height: auto ;\r\n display: block ;\r\n}\r\n\r\n/* Responsive overrides for resizable embed frames (e.g., YouTube) */\r\n[data-lexical-decorator=\"true\"] > div.user-select-none > .editor-embed-frame,\r\n.ContentEditable__root\r\n [data-lexical-decorator=\"true\"]\r\n > div.user-select-none\r\n > .relative.editor-embed-frame {\r\n display: inline-block ;\r\n max-width: 100% ;\r\n margin-left: 0 ;\r\n margin-right: 0 ;\r\n box-sizing: border-box ;\r\n vertical-align: top;\r\n}\r\n\r\n.editor-embed-frame {\r\n position: relative;\r\n box-sizing: border-box;\r\n min-width: 0;\r\n vertical-align: top;\r\n line-height: 0;\r\n height: auto;\r\n}\r\n\r\n.editor-embed-frame--full {\r\n display: block ;\r\n width: 100% ;\r\n}\r\n\r\n.editor-embed-frame--inline {\r\n display: inline-block ;\r\n}\r\n\r\n.editor-embed-frame--inline {\r\n max-width: 100%;\r\n}\r\n\r\n[data-lexical-align=\"left\"] .editor-embed-frame--inline,\r\n[data-lexical-align=\"start\"] .editor-embed-frame--inline {\r\n margin-left: 0 ;\r\n margin-right: auto ;\r\n}\r\n\r\n[data-lexical-align=\"center\"] .editor-embed-frame--inline {\r\n margin-left: auto ;\r\n margin-right: auto ;\r\n}\r\n\r\n[data-lexical-align=\"right\"] .editor-embed-frame--inline,\r\n[data-lexical-align=\"end\"] .editor-embed-frame--inline {\r\n margin-left: auto ;\r\n margin-right: 0 ;\r\n}\r\n\r\n.editor-embed-frame iframe {\r\n position: absolute;\r\n inset: 0;\r\n width: 100% ;\r\n height: 100% ;\r\n}\r\n\r\n/* Remove border for readonly editor surface */\r\n#editor-x .ContentEditable__root[contenteditable=\"false\"],\r\n#editor-x .ContentEditable__root[aria-readonly=\"true\"] {\r\n border: none ;\r\n}\r\n\r\n/* Admin editor: ép ảnh và wrapper luôn responsive trong #editor-x */\r\n#editor-x .ContentEditable__root {\r\n max-width: 100% ;\r\n min-width: 0 ;\r\n}\r\n\r\n#editor-x .ContentEditable__root .editor-image,\r\n#editor-x .ContentEditable__root .editor-image > div,\r\n#editor-x .ContentEditable__root .editor-image .editor-image__sized,\r\n#editor-x .ContentEditable__root .editor-image .editor-image__sized img {\r\n max-width: 100% ;\r\n width: 100% ;\r\n height: auto ;\r\n box-sizing: border-box ;\r\n}\r\n"],"mappings":"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","names":[]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { EditorState, SerializedEditorState } from 'lexical';
|
|
3
|
+
export { EditorState, SerializedEditorState } from 'lexical';
|
|
4
|
+
|
|
5
|
+
declare function Editor({ editorState, editorSerializedState, onChange, onSerializedChange, readOnly, }: {
|
|
6
|
+
editorState?: EditorState;
|
|
7
|
+
editorSerializedState?: SerializedEditorState;
|
|
8
|
+
onChange?: (editorState: EditorState) => void;
|
|
9
|
+
onSerializedChange?: (editorSerializedState: SerializedEditorState) => void;
|
|
10
|
+
readOnly?: boolean;
|
|
11
|
+
}): react_jsx_runtime.JSX.Element;
|
|
12
|
+
|
|
13
|
+
declare const editorThemePath = "./editor-theme.css";
|
|
14
|
+
|
|
15
|
+
export { Editor, editorThemePath };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { EditorState, SerializedEditorState } from 'lexical';
|
|
3
|
+
export { EditorState, SerializedEditorState } from 'lexical';
|
|
4
|
+
|
|
5
|
+
declare function Editor({ editorState, editorSerializedState, onChange, onSerializedChange, readOnly, }: {
|
|
6
|
+
editorState?: EditorState;
|
|
7
|
+
editorSerializedState?: SerializedEditorState;
|
|
8
|
+
onChange?: (editorState: EditorState) => void;
|
|
9
|
+
onSerializedChange?: (editorSerializedState: SerializedEditorState) => void;
|
|
10
|
+
readOnly?: boolean;
|
|
11
|
+
}): react_jsx_runtime.JSX.Element;
|
|
12
|
+
|
|
13
|
+
declare const editorThemePath = "./editor-theme.css";
|
|
14
|
+
|
|
15
|
+
export { Editor, editorThemePath };
|