@eventuras/scribo 0.8.2 → 0.10.7

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.
Files changed (164) hide show
  1. package/dist/App.d.ts +11 -0
  2. package/dist/App.d.ts.map +1 -0
  3. package/dist/MarkdownEditor.d.ts +18 -0
  4. package/dist/MarkdownEditor.d.ts.map +1 -0
  5. package/dist/MarkdownEditor2.js +111 -0
  6. package/dist/MarkdownEditor2.js.map +1 -0
  7. package/dist/MarkdownInput.d.ts +27 -0
  8. package/dist/MarkdownInput.d.ts.map +1 -0
  9. package/dist/MarkdownInput.js +57 -0
  10. package/dist/MarkdownInput.js.map +1 -0
  11. package/dist/callout.js +5 -0
  12. package/dist/context/SharedHistoryContext.d.ts +11 -0
  13. package/dist/context/SharedHistoryContext.d.ts.map +1 -0
  14. package/dist/context/SharedHistoryContext.js +12 -0
  15. package/dist/context/SharedHistoryContext.js.map +1 -0
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/main.d.ts +5 -0
  19. package/dist/main.d.ts.map +1 -0
  20. package/dist/main.js +4 -0
  21. package/dist/nodes/EditorNodes.d.ts +4 -0
  22. package/dist/nodes/EditorNodes.d.ts.map +1 -0
  23. package/dist/nodes/EditorNodes.js +39 -0
  24. package/dist/nodes/EditorNodes.js.map +1 -0
  25. package/dist/nodes/callout/CalloutComponent.d.ts +6 -0
  26. package/dist/nodes/callout/CalloutComponent.d.ts.map +1 -0
  27. package/dist/nodes/callout/CalloutComponent.js +53 -0
  28. package/dist/nodes/callout/CalloutComponent.js.map +1 -0
  29. package/dist/nodes/callout/CalloutNode.d.ts +27 -0
  30. package/dist/nodes/callout/CalloutNode.d.ts.map +1 -0
  31. package/dist/nodes/callout/CalloutNode.js +153 -0
  32. package/dist/nodes/callout/CalloutNode.js.map +1 -0
  33. package/dist/nodes/callout/CalloutTransformer.d.ts +3 -0
  34. package/dist/nodes/callout/CalloutTransformer.d.ts.map +1 -0
  35. package/dist/nodes/callout/CalloutTransformer.js +48 -0
  36. package/dist/nodes/callout/CalloutTransformer.js.map +1 -0
  37. package/dist/nodes/callout/calloutPlugin.d.ts +3 -0
  38. package/dist/nodes/callout/calloutPlugin.d.ts.map +1 -0
  39. package/dist/nodes/callout/calloutPlugin.js +34 -0
  40. package/dist/nodes/callout/calloutPlugin.js.map +1 -0
  41. package/dist/nodes/callout/index.d.ts +6 -0
  42. package/dist/nodes/callout/index.d.ts.map +1 -0
  43. package/dist/nodes/schedule/ScheduleItemComponent.d.ts +9 -0
  44. package/dist/nodes/schedule/ScheduleItemComponent.d.ts.map +1 -0
  45. package/dist/nodes/schedule/ScheduleItemComponent.js +167 -0
  46. package/dist/nodes/schedule/ScheduleItemComponent.js.map +1 -0
  47. package/dist/nodes/schedule/ScheduleItemNode.d.ts +31 -0
  48. package/dist/nodes/schedule/ScheduleItemNode.d.ts.map +1 -0
  49. package/dist/nodes/schedule/ScheduleItemNode.js +94 -0
  50. package/dist/nodes/schedule/ScheduleItemNode.js.map +1 -0
  51. package/dist/nodes/schedule/ScheduleTransformer.d.ts +22 -0
  52. package/dist/nodes/schedule/ScheduleTransformer.d.ts.map +1 -0
  53. package/dist/nodes/schedule/ScheduleTransformer.js +60 -0
  54. package/dist/nodes/schedule/ScheduleTransformer.js.map +1 -0
  55. package/dist/nodes/schedule/index.d.ts +5 -0
  56. package/dist/nodes/schedule/index.d.ts.map +1 -0
  57. package/dist/nodes/schedule/schedulePlugin.d.ts +3 -0
  58. package/dist/nodes/schedule/schedulePlugin.d.ts.map +1 -0
  59. package/dist/nodes/schedule/schedulePlugin.js +33 -0
  60. package/dist/nodes/schedule/schedulePlugin.js.map +1 -0
  61. package/dist/plugins/AutoLinkPlugin.d.ts +3 -0
  62. package/dist/plugins/AutoLinkPlugin.d.ts.map +1 -0
  63. package/dist/plugins/AutoLinkPlugin.js +22 -0
  64. package/dist/plugins/AutoLinkPlugin.js.map +1 -0
  65. package/dist/plugins/FloatingLinkEditorPlugin.d.ts +7 -0
  66. package/dist/plugins/FloatingLinkEditorPlugin.d.ts.map +1 -0
  67. package/dist/plugins/FloatingLinkEditorPlugin2.js +302 -0
  68. package/dist/plugins/FloatingLinkEditorPlugin2.js.map +1 -0
  69. package/dist/plugins/HistoryPlugin.d.ts +26 -0
  70. package/dist/plugins/HistoryPlugin.d.ts.map +1 -0
  71. package/dist/plugins/LinkPlugin.d.ts +3 -0
  72. package/dist/plugins/LinkPlugin.d.ts.map +1 -0
  73. package/dist/plugins/LinkPlugin.js +18 -0
  74. package/dist/plugins/LinkPlugin.js.map +1 -0
  75. package/dist/plugins/ToolbarPlugin.d.ts +7 -0
  76. package/dist/plugins/ToolbarPlugin.d.ts.map +1 -0
  77. package/dist/plugins/ToolbarPlugin.js +372 -0
  78. package/dist/plugins/ToolbarPlugin.js.map +1 -0
  79. package/dist/schedule.js +4 -0
  80. package/dist/scribo.css +1977 -0
  81. package/dist/themes/EditorTheme.d.ts +4 -0
  82. package/dist/themes/EditorTheme.d.ts.map +1 -0
  83. package/dist/themes/EditorTheme2.js +107 -0
  84. package/dist/themes/EditorTheme2.js.map +1 -0
  85. package/dist/types.d.ts +26 -0
  86. package/dist/types.d.ts.map +1 -0
  87. package/dist/ui/ContentEditable.d.ts +6 -0
  88. package/dist/ui/ContentEditable.d.ts.map +1 -0
  89. package/dist/ui/ContentEditable2.js +14 -0
  90. package/dist/ui/ContentEditable2.js.map +1 -0
  91. package/dist/ui/DropDown.d.ts +18 -0
  92. package/dist/ui/DropDown.d.ts.map +1 -0
  93. package/dist/ui/DropDown.js +162 -0
  94. package/dist/ui/DropDown.js.map +1 -0
  95. package/dist/ui/Placeholder.d.ts +6 -0
  96. package/dist/ui/Placeholder.d.ts.map +1 -0
  97. package/dist/ui/Placeholder2.js +13 -0
  98. package/dist/ui/Placeholder2.js.map +1 -0
  99. package/dist/utils/environment.d.ts +24 -0
  100. package/dist/utils/environment.d.ts.map +1 -0
  101. package/dist/utils/environment.js +20 -0
  102. package/dist/utils/environment.js.map +1 -0
  103. package/dist/utils/getSelectedNode.d.ts +3 -0
  104. package/dist/utils/getSelectedNode.d.ts.map +1 -0
  105. package/dist/utils/getSelectedNode.js +23 -0
  106. package/dist/utils/getSelectedNode.js.map +1 -0
  107. package/dist/utils/setFloatingElemPosition.d.ts +2 -0
  108. package/dist/utils/setFloatingElemPosition.d.ts.map +1 -0
  109. package/dist/utils/setFloatingElemPositionForLinkEditor.d.ts +2 -0
  110. package/dist/utils/setFloatingElemPositionForLinkEditor.d.ts.map +1 -0
  111. package/dist/utils/setFloatingElemPositionForLinkEditor.js +33 -0
  112. package/dist/utils/setFloatingElemPositionForLinkEditor.js.map +1 -0
  113. package/dist/utils/url.d.ts +11 -0
  114. package/dist/utils/url.d.ts.map +1 -0
  115. package/dist/utils/url.js +33 -0
  116. package/dist/utils/url.js.map +1 -0
  117. package/dist/vite.svg +1 -0
  118. package/package.json +57 -39
  119. package/src/MarkdownEditor.css +130 -27
  120. package/src/MarkdownEditor.tsx +82 -31
  121. package/src/MarkdownInput.tsx +9 -10
  122. package/src/context/SharedHistoryContext.tsx +8 -16
  123. package/src/main.tsx +3 -3
  124. package/src/nodes/EditorNodes.ts +10 -10
  125. package/src/nodes/callout/Callout.css +94 -0
  126. package/src/nodes/callout/CalloutComponent.tsx +61 -0
  127. package/src/nodes/callout/CalloutNode.ts +197 -0
  128. package/src/nodes/callout/CalloutTransformer.ts +87 -0
  129. package/src/nodes/callout/calloutPlugin.ts +37 -0
  130. package/src/nodes/callout/index.ts +5 -0
  131. package/src/nodes/schedule/ScheduleItem.css +140 -0
  132. package/src/nodes/schedule/ScheduleItemComponent.tsx +195 -0
  133. package/src/nodes/schedule/ScheduleItemNode.ts +135 -0
  134. package/src/nodes/schedule/ScheduleTransformer.ts +80 -0
  135. package/src/nodes/schedule/index.ts +4 -0
  136. package/src/nodes/schedule/schedulePlugin.ts +33 -0
  137. package/src/plugins/AutoLinkPlugin.tsx +5 -10
  138. package/src/plugins/FloatingLinkEditorPlugin.tsx +42 -66
  139. package/src/plugins/HistoryPlugin.tsx +20 -30
  140. package/src/plugins/LinkPlugin.tsx +2 -3
  141. package/src/plugins/ToolbarPlugin.tsx +129 -141
  142. package/src/themes/EditorTheme.css +82 -62
  143. package/src/themes/EditorTheme.ts +89 -90
  144. package/src/types.ts +27 -0
  145. package/src/ui/ContentEditable.tsx +5 -5
  146. package/src/ui/DropDown.tsx +23 -41
  147. package/src/ui/Placeholder.tsx +21 -21
  148. package/src/utils/environment.ts +6 -12
  149. package/src/utils/getSelectedNode.ts +3 -5
  150. package/src/utils/setFloatingElemPosition.ts +2 -5
  151. package/src/utils/setFloatingElemPositionForLinkEditor.ts +1 -1
  152. package/src/utils/url.ts +4 -10
  153. package/tsconfig.json +8 -0
  154. package/CHANGELOG.md +0 -59
  155. package/README.md +0 -126
  156. package/RELEASE.md +0 -102
  157. package/eslint.config.js +0 -4
  158. package/src/App.css +0 -35
  159. package/src/App.tsx +0 -42
  160. package/src/index.tsx +0 -13
  161. package/tsconfig.node.json +0 -11
  162. package/vite.config.site.ts +0 -19
  163. package/vite.config.ts +0 -33
  164. /package/{src → dist}/vite-env.d.ts +0 -0
@@ -6,20 +6,20 @@
6
6
  *
7
7
  *
8
8
  */
9
- .PlaygroundEditorTheme__ltr {
9
+ .EditorTheme__ltr {
10
10
  text-align: left;
11
11
  }
12
12
 
13
- .PlaygroundEditorTheme__rtl {
13
+ .EditorTheme__rtl {
14
14
  text-align: right;
15
15
  }
16
16
 
17
- .PlaygroundEditorTheme__paragraph {
17
+ .EditorTheme__paragraph {
18
18
  margin: 0;
19
19
  position: relative;
20
20
  }
21
21
 
22
- .PlaygroundEditorTheme__quote {
22
+ .EditorTheme__quote {
23
23
  margin: 0;
24
24
  margin-left: 20px;
25
25
  margin-bottom: 10px;
@@ -31,7 +31,7 @@
31
31
  padding-left: 16px;
32
32
  }
33
33
 
34
- .PlaygroundEditorTheme__h1 {
34
+ .EditorTheme__h1 {
35
35
  font-size: 32px;
36
36
  line-height: 1.3;
37
37
  padding-top: 2rem;
@@ -41,7 +41,12 @@
41
41
  margin: 0;
42
42
  }
43
43
 
44
- .PlaygroundEditorTheme__h2 {
44
+ [data-theme="dark"] .EditorTheme__h1,
45
+ [data-color-scheme="dark"] .EditorTheme__h1 {
46
+ color: #ffffff;
47
+ }
48
+
49
+ .EditorTheme__h2 {
45
50
  font-size: 24px;
46
51
  color: #406280;
47
52
  padding-top: 2rem;
@@ -50,7 +55,12 @@
50
55
  margin: 0;
51
56
  }
52
57
 
53
- .PlaygroundEditorTheme__h3 {
58
+ [data-theme="dark"] .EditorTheme__h2,
59
+ [data-color-scheme="dark"] .EditorTheme__h2 {
60
+ color: #ffffff;
61
+ }
62
+
63
+ .EditorTheme__h3 {
54
64
  font-size: 24px;
55
65
  color: #406280;
56
66
  padding-top: 2rem;
@@ -59,7 +69,12 @@
59
69
  margin: 0;
60
70
  }
61
71
 
62
- .PlaygroundEditorTheme__h4 {
72
+ [data-theme="dark"] .EditorTheme__h3,
73
+ [data-color-scheme="dark"] .EditorTheme__h3 {
74
+ color: #ffffff;
75
+ }
76
+
77
+ .EditorTheme__h4 {
63
78
  font-size: 16px;
64
79
  color: #406280;
65
80
  padding-top: 1.5rem;
@@ -68,63 +83,68 @@
68
83
  margin: 0;
69
84
  }
70
85
 
71
- .PlaygroundEditorTheme__indent {
86
+ [data-theme="dark"] .EditorTheme__h4,
87
+ [data-color-scheme="dark"] .EditorTheme__h4 {
88
+ color: #ffffff;
89
+ }
90
+
91
+ .EditorTheme__indent {
72
92
  --lexical-indent-base-value: 40px;
73
93
  }
74
94
 
75
- .PlaygroundEditorTheme__textBold {
95
+ .EditorTheme__textBold {
76
96
  font-weight: bold;
77
97
  }
78
98
 
79
- .PlaygroundEditorTheme__textItalic {
99
+ .EditorTheme__textItalic {
80
100
  font-style: italic;
81
101
  }
82
102
 
83
- .PlaygroundEditorTheme__textUnderline {
103
+ .EditorTheme__textUnderline {
84
104
  text-decoration: underline;
85
105
  }
86
106
 
87
- .PlaygroundEditorTheme__textStrikethrough {
107
+ .EditorTheme__textStrikethrough {
88
108
  text-decoration: line-through;
89
109
  }
90
110
 
91
- .PlaygroundEditorTheme__textUnderlineStrikethrough {
111
+ .EditorTheme__textUnderlineStrikethrough {
92
112
  text-decoration: underline line-through;
93
113
  }
94
114
 
95
- .PlaygroundEditorTheme__textSubscript {
115
+ .EditorTheme__textSubscript {
96
116
  font-size: 0.8em;
97
117
  vertical-align: sub !important;
98
118
  }
99
119
 
100
- .PlaygroundEditorTheme__textSuperscript {
120
+ .EditorTheme__textSuperscript {
101
121
  font-size: 0.8em;
102
122
  vertical-align: super;
103
123
  }
104
124
 
105
- .PlaygroundEditorTheme__textCode {
125
+ .EditorTheme__textCode {
106
126
  background-color: rgb(240, 242, 245);
107
127
  padding: 1px 0.25rem;
108
128
  font-family: Menlo, Consolas, Monaco, monospace;
109
129
  font-size: 94%;
110
130
  }
111
131
 
112
- .PlaygroundEditorTheme__hashtag {
132
+ .EditorTheme__hashtag {
113
133
  background-color: rgba(88, 144, 255, 0.15);
114
134
  border-bottom: 1px solid rgba(88, 144, 255, 0.3);
115
135
  }
116
136
 
117
- .PlaygroundEditorTheme__link {
137
+ .EditorTheme__link {
118
138
  color: rgb(33, 111, 219);
119
139
  text-decoration: none;
120
140
  }
121
141
 
122
- .PlaygroundEditorTheme__link:hover {
142
+ .EditorTheme__link:hover {
123
143
  text-decoration: underline;
124
144
  cursor: pointer;
125
145
  }
126
146
 
127
- .PlaygroundEditorTheme__code {
147
+ .EditorTheme__code {
128
148
  background-color: rgb(240, 242, 245);
129
149
  font-family: Menlo, Consolas, Monaco, monospace;
130
150
  display: block;
@@ -139,7 +159,7 @@
139
159
  tab-size: 2;
140
160
  }
141
161
 
142
- .PlaygroundEditorTheme__code:before {
162
+ .EditorTheme__code:before {
143
163
  content: attr(data-gutter);
144
164
  position: absolute;
145
165
  background-color: #eee;
@@ -147,63 +167,63 @@
147
167
  top: 0;
148
168
  border-right: 1px solid #ccc;
149
169
  padding: 8px;
150
- color: #777;
170
+ color: #696969;
151
171
  white-space: pre-wrap;
152
172
  text-align: right;
153
173
  min-width: 25px;
154
174
  }
155
175
 
156
- .PlaygroundEditorTheme__characterLimit {
176
+ .EditorTheme__characterLimit {
157
177
  display: inline;
158
178
  background-color: #ffbbbb !important;
159
179
  }
160
180
 
161
- .PlaygroundEditorTheme__ol1 {
181
+ .EditorTheme__ol1 {
162
182
  padding: 0;
163
183
  margin: 0;
164
184
  list-style-position: inside;
165
185
  }
166
186
 
167
- .PlaygroundEditorTheme__ol2 {
187
+ .EditorTheme__ol2 {
168
188
  padding: 0;
169
189
  margin: 0;
170
190
  list-style-type: upper-alpha;
171
191
  list-style-position: inside;
172
192
  }
173
193
 
174
- .PlaygroundEditorTheme__ol3 {
194
+ .EditorTheme__ol3 {
175
195
  padding: 0;
176
196
  margin: 0;
177
197
  list-style-type: lower-alpha;
178
198
  list-style-position: inside;
179
199
  }
180
200
 
181
- .PlaygroundEditorTheme__ol4 {
201
+ .EditorTheme__ol4 {
182
202
  padding: 0;
183
203
  margin: 0;
184
204
  list-style-type: upper-roman;
185
205
  list-style-position: inside;
186
206
  }
187
207
 
188
- .PlaygroundEditorTheme__ol5 {
208
+ .EditorTheme__ol5 {
189
209
  padding: 0;
190
210
  margin: 0;
191
211
  list-style-type: lower-roman;
192
212
  list-style-position: inside;
193
213
  }
194
214
 
195
- .PlaygroundEditorTheme__ul {
215
+ .EditorTheme__ul {
196
216
  padding: 0;
197
217
  margin: 0;
198
218
  list-style-position: inside;
199
219
  }
200
220
 
201
- .PlaygroundEditorTheme__listItem {
221
+ .EditorTheme__listItem {
202
222
  margin: 0 32px;
203
223
  }
204
224
 
205
- .PlaygroundEditorTheme__listItemChecked,
206
- .PlaygroundEditorTheme__listItemUnchecked {
225
+ .EditorTheme__listItemChecked,
226
+ .EditorTheme__listItemUnchecked {
207
227
  position: relative;
208
228
  margin-left: 8px;
209
229
  margin-right: 8px;
@@ -213,12 +233,12 @@
213
233
  outline: none;
214
234
  }
215
235
 
216
- .PlaygroundEditorTheme__listItemChecked {
236
+ .EditorTheme__listItemChecked {
217
237
  text-decoration: line-through;
218
238
  }
219
239
 
220
- .PlaygroundEditorTheme__listItemUnchecked:before,
221
- .PlaygroundEditorTheme__listItemChecked:before {
240
+ .EditorTheme__listItemUnchecked:before,
241
+ .EditorTheme__listItemChecked:before {
222
242
  content: "";
223
243
  width: 16px;
224
244
  height: 16px;
@@ -230,31 +250,31 @@
230
250
  position: absolute;
231
251
  }
232
252
 
233
- .PlaygroundEditorTheme__listItemUnchecked[dir="rtl"]:before,
234
- .PlaygroundEditorTheme__listItemChecked[dir="rtl"]:before {
253
+ .EditorTheme__listItemUnchecked[dir="rtl"]:before,
254
+ .EditorTheme__listItemChecked[dir="rtl"]:before {
235
255
  left: auto;
236
256
  right: 0;
237
257
  }
238
258
 
239
- .PlaygroundEditorTheme__listItemUnchecked:focus:before,
240
- .PlaygroundEditorTheme__listItemChecked:focus:before {
259
+ .EditorTheme__listItemUnchecked:focus:before,
260
+ .EditorTheme__listItemChecked:focus:before {
241
261
  box-shadow: 0 0 0 2px #a6cdfe;
242
262
  border-radius: 2px;
243
263
  }
244
264
 
245
- .PlaygroundEditorTheme__listItemUnchecked:before {
265
+ .EditorTheme__listItemUnchecked:before {
246
266
  border: 1px solid #999;
247
267
  border-radius: 2px;
248
268
  }
249
269
 
250
- .PlaygroundEditorTheme__listItemChecked:before {
270
+ .EditorTheme__listItemChecked:before {
251
271
  border: 1px solid rgb(61, 135, 245);
252
272
  border-radius: 2px;
253
273
  background-color: #3d87f5;
254
274
  background-repeat: no-repeat;
255
275
  }
256
276
 
257
- .PlaygroundEditorTheme__listItemChecked:after {
277
+ .EditorTheme__listItemChecked:after {
258
278
  content: "";
259
279
  cursor: pointer;
260
280
  border-color: #fff;
@@ -270,83 +290,83 @@
270
290
  border-width: 0 2px 2px 0;
271
291
  }
272
292
 
273
- .PlaygroundEditorTheme__nestedListItem {
293
+ .EditorTheme__nestedListItem {
274
294
  list-style-type: none;
275
295
  }
276
296
 
277
- .PlaygroundEditorTheme__nestedListItem:before,
278
- .PlaygroundEditorTheme__nestedListItem:after {
297
+ .EditorTheme__nestedListItem:before,
298
+ .EditorTheme__nestedListItem:after {
279
299
  display: none;
280
300
  }
281
301
 
282
- .PlaygroundEditorTheme__tokenComment {
302
+ .EditorTheme__tokenComment {
283
303
  color: slategray;
284
304
  }
285
305
 
286
- .PlaygroundEditorTheme__tokenPunctuation {
306
+ .EditorTheme__tokenPunctuation {
287
307
  color: #999;
288
308
  }
289
309
 
290
- .PlaygroundEditorTheme__tokenProperty {
310
+ .EditorTheme__tokenProperty {
291
311
  color: #905;
292
312
  }
293
313
 
294
- .PlaygroundEditorTheme__tokenSelector {
314
+ .EditorTheme__tokenSelector {
295
315
  color: #690;
296
316
  }
297
317
 
298
- .PlaygroundEditorTheme__tokenOperator {
318
+ .EditorTheme__tokenOperator {
299
319
  color: #9a6e3a;
300
320
  }
301
321
 
302
- .PlaygroundEditorTheme__tokenAttr {
322
+ .EditorTheme__tokenAttr {
303
323
  color: #07a;
304
324
  }
305
325
 
306
- .PlaygroundEditorTheme__tokenVariable {
326
+ .EditorTheme__tokenVariable {
307
327
  color: #e90;
308
328
  }
309
329
 
310
- .PlaygroundEditorTheme__tokenFunction {
330
+ .EditorTheme__tokenFunction {
311
331
  color: #dd4a68;
312
332
  }
313
333
 
314
- .PlaygroundEditorTheme__mark {
334
+ .EditorTheme__mark {
315
335
  background: rgba(255, 212, 0, 0.14);
316
336
  border-bottom: 2px solid rgba(255, 212, 0, 0.3);
317
337
  padding-bottom: 2px;
318
338
  }
319
339
 
320
- .PlaygroundEditorTheme__markOverlap {
340
+ .EditorTheme__markOverlap {
321
341
  background: rgba(255, 212, 0, 0.3);
322
342
  border-bottom: 2px solid rgba(255, 212, 0, 0.7);
323
343
  }
324
344
 
325
- .PlaygroundEditorTheme__mark.selected {
345
+ .EditorTheme__mark.selected {
326
346
  background: rgba(255, 212, 0, 0.5);
327
347
  border-bottom: 2px solid rgba(255, 212, 0, 1);
328
348
  }
329
349
 
330
- .PlaygroundEditorTheme__markOverlap.selected {
350
+ .EditorTheme__markOverlap.selected {
331
351
  background: rgba(255, 212, 0, 0.7);
332
352
  border-bottom: 2px solid rgba(255, 212, 0, 0.7);
333
353
  }
334
354
 
335
- .PlaygroundEditorTheme__embedBlock {
355
+ .EditorTheme__embedBlock {
336
356
  user-select: none;
337
357
  }
338
358
 
339
- .PlaygroundEditorTheme__embedBlockFocus {
359
+ .EditorTheme__embedBlockFocus {
340
360
  outline: 2px solid rgb(60, 132, 244);
341
361
  }
342
362
 
343
- .PlaygroundEditorTheme__layoutContaner {
363
+ .EditorTheme__layoutContaner {
344
364
  display: grid;
345
365
  gap: 10px;
346
366
  margin: 10px 0;
347
367
  }
348
368
 
349
- .PlaygroundEditorTheme__layoutItem {
369
+ .EditorTheme__layoutItem {
350
370
  border: 1px dashed #ddd;
351
371
  padding: 8px 16px;
352
372
  }
@@ -6,112 +6,111 @@
6
6
  *
7
7
  */
8
8
 
9
- import "./EditorTheme.css";
9
+ import './EditorTheme.css';
10
10
 
11
- import type { EditorThemeClasses } from "lexical";
11
+ import type { EditorThemeClasses } from 'lexical';
12
12
 
13
13
  const theme: EditorThemeClasses = {
14
- blockCursor: "PlaygroundEditorTheme__blockCursor",
15
- characterLimit: "PlaygroundEditorTheme__characterLimit",
16
- code: "PlaygroundEditorTheme__code",
14
+ blockCursor: 'EditorTheme__blockCursor',
15
+ characterLimit: 'EditorTheme__characterLimit',
16
+ code: 'EditorTheme__code',
17
17
  codeHighlight: {
18
- atrule: "PlaygroundEditorTheme__tokenAttr",
19
- attr: "PlaygroundEditorTheme__tokenAttr",
20
- boolean: "PlaygroundEditorTheme__tokenProperty",
21
- builtin: "PlaygroundEditorTheme__tokenSelector",
22
- cdata: "PlaygroundEditorTheme__tokenComment",
23
- char: "PlaygroundEditorTheme__tokenSelector",
24
- class: "PlaygroundEditorTheme__tokenFunction",
25
- "class-name": "PlaygroundEditorTheme__tokenFunction",
26
- comment: "PlaygroundEditorTheme__tokenComment",
27
- constant: "PlaygroundEditorTheme__tokenProperty",
28
- deleted: "PlaygroundEditorTheme__tokenProperty",
29
- doctype: "PlaygroundEditorTheme__tokenComment",
30
- entity: "PlaygroundEditorTheme__tokenOperator",
31
- function: "PlaygroundEditorTheme__tokenFunction",
32
- important: "PlaygroundEditorTheme__tokenVariable",
33
- inserted: "PlaygroundEditorTheme__tokenSelector",
34
- keyword: "PlaygroundEditorTheme__tokenAttr",
35
- namespace: "PlaygroundEditorTheme__tokenVariable",
36
- number: "PlaygroundEditorTheme__tokenProperty",
37
- operator: "PlaygroundEditorTheme__tokenOperator",
38
- prolog: "PlaygroundEditorTheme__tokenComment",
39
- property: "PlaygroundEditorTheme__tokenProperty",
40
- punctuation: "PlaygroundEditorTheme__tokenPunctuation",
41
- regex: "PlaygroundEditorTheme__tokenVariable",
42
- selector: "PlaygroundEditorTheme__tokenSelector",
43
- string: "PlaygroundEditorTheme__tokenSelector",
44
- symbol: "PlaygroundEditorTheme__tokenProperty",
45
- tag: "PlaygroundEditorTheme__tokenProperty",
46
- url: "PlaygroundEditorTheme__tokenOperator",
47
- variable: "PlaygroundEditorTheme__tokenVariable",
18
+ atrule: 'EditorTheme__tokenAttr',
19
+ attr: 'EditorTheme__tokenAttr',
20
+ boolean: 'EditorTheme__tokenProperty',
21
+ builtin: 'EditorTheme__tokenSelector',
22
+ cdata: 'EditorTheme__tokenComment',
23
+ char: 'EditorTheme__tokenSelector',
24
+ class: 'EditorTheme__tokenFunction',
25
+ 'class-name': 'EditorTheme__tokenFunction',
26
+ comment: 'EditorTheme__tokenComment',
27
+ constant: 'EditorTheme__tokenProperty',
28
+ deleted: 'EditorTheme__tokenProperty',
29
+ doctype: 'EditorTheme__tokenComment',
30
+ entity: 'EditorTheme__tokenOperator',
31
+ function: 'EditorTheme__tokenFunction',
32
+ important: 'EditorTheme__tokenVariable',
33
+ inserted: 'EditorTheme__tokenSelector',
34
+ keyword: 'EditorTheme__tokenAttr',
35
+ namespace: 'EditorTheme__tokenVariable',
36
+ number: 'EditorTheme__tokenProperty',
37
+ operator: 'EditorTheme__tokenOperator',
38
+ prolog: 'EditorTheme__tokenComment',
39
+ property: 'EditorTheme__tokenProperty',
40
+ punctuation: 'EditorTheme__tokenPunctuation',
41
+ regex: 'EditorTheme__tokenVariable',
42
+ selector: 'EditorTheme__tokenSelector',
43
+ string: 'EditorTheme__tokenSelector',
44
+ symbol: 'EditorTheme__tokenProperty',
45
+ tag: 'EditorTheme__tokenProperty',
46
+ url: 'EditorTheme__tokenOperator',
47
+ variable: 'EditorTheme__tokenVariable',
48
48
  },
49
49
  embedBlock: {
50
- base: "PlaygroundEditorTheme__embedBlock",
51
- focus: "PlaygroundEditorTheme__embedBlockFocus",
50
+ base: 'EditorTheme__embedBlock',
51
+ focus: 'EditorTheme__embedBlockFocus',
52
52
  },
53
- hashtag: "PlaygroundEditorTheme__hashtag",
53
+ hashtag: 'EditorTheme__hashtag',
54
54
  heading: {
55
- h1: "PlaygroundEditorTheme__h1",
56
- h2: "PlaygroundEditorTheme__h2",
57
- h3: "PlaygroundEditorTheme__h3",
58
- h4: "PlaygroundEditorTheme__h4",
59
- h5: "PlaygroundEditorTheme__h5",
60
- h6: "PlaygroundEditorTheme__h6",
55
+ h1: 'EditorTheme__h1',
56
+ h2: 'EditorTheme__h2',
57
+ h3: 'EditorTheme__h3',
58
+ h4: 'EditorTheme__h4',
59
+ h5: 'EditorTheme__h5',
60
+ h6: 'EditorTheme__h6',
61
61
  },
62
- image: "editor-image",
63
- indent: "PlaygroundEditorTheme__indent",
64
- inlineImage: "inline-editor-image",
65
- layoutContainer: "PlaygroundEditorTheme__layoutContaner",
66
- layoutItem: "PlaygroundEditorTheme__layoutItem",
67
- link: "PlaygroundEditorTheme__link",
62
+ image: 'editor-image',
63
+ indent: 'EditorTheme__indent',
64
+ inlineImage: 'inline-editor-image',
65
+ layoutContainer: 'EditorTheme__layoutContaner',
66
+ layoutItem: 'EditorTheme__layoutItem',
67
+ link: 'EditorTheme__link',
68
68
  list: {
69
- listitem: "PlaygroundEditorTheme__listItem",
70
- listitemChecked: "PlaygroundEditorTheme__listItemChecked",
71
- listitemUnchecked: "PlaygroundEditorTheme__listItemUnchecked",
69
+ listitem: 'EditorTheme__listItem',
70
+ listitemChecked: 'EditorTheme__listItemChecked',
71
+ listitemUnchecked: 'EditorTheme__listItemUnchecked',
72
72
  nested: {
73
- listitem: "PlaygroundEditorTheme__nestedListItem",
73
+ listitem: 'EditorTheme__nestedListItem',
74
74
  },
75
75
  olDepth: [
76
- "PlaygroundEditorTheme__ol1",
77
- "PlaygroundEditorTheme__ol2",
78
- "PlaygroundEditorTheme__ol3",
79
- "PlaygroundEditorTheme__ol4",
80
- "PlaygroundEditorTheme__ol5",
76
+ 'EditorTheme__ol1',
77
+ 'EditorTheme__ol2',
78
+ 'EditorTheme__ol3',
79
+ 'EditorTheme__ol4',
80
+ 'EditorTheme__ol5',
81
81
  ],
82
- ul: "PlaygroundEditorTheme__ul",
82
+ ul: 'EditorTheme__ul',
83
83
  },
84
- ltr: "PlaygroundEditorTheme__ltr",
85
- mark: "PlaygroundEditorTheme__mark",
86
- markOverlap: "PlaygroundEditorTheme__markOverlap",
87
- paragraph: "PlaygroundEditorTheme__paragraph",
88
- quote: "PlaygroundEditorTheme__quote",
89
- rtl: "PlaygroundEditorTheme__rtl",
90
- table: "PlaygroundEditorTheme__table",
91
- tableAddColumns: "PlaygroundEditorTheme__tableAddColumns",
92
- tableAddRows: "PlaygroundEditorTheme__tableAddRows",
93
- tableCell: "PlaygroundEditorTheme__tableCell",
94
- tableCellActionButton: "PlaygroundEditorTheme__tableCellActionButton",
95
- tableCellActionButtonContainer:
96
- "PlaygroundEditorTheme__tableCellActionButtonContainer",
97
- tableCellEditing: "PlaygroundEditorTheme__tableCellEditing",
98
- tableCellHeader: "PlaygroundEditorTheme__tableCellHeader",
99
- tableCellPrimarySelected: "PlaygroundEditorTheme__tableCellPrimarySelected",
100
- tableCellResizer: "PlaygroundEditorTheme__tableCellResizer",
101
- tableCellSelected: "PlaygroundEditorTheme__tableCellSelected",
102
- tableCellSortedIndicator: "PlaygroundEditorTheme__tableCellSortedIndicator",
103
- tableResizeRuler: "PlaygroundEditorTheme__tableCellResizeRuler",
104
- tableSelected: "PlaygroundEditorTheme__tableSelected",
105
- tableSelection: "PlaygroundEditorTheme__tableSelection",
84
+ ltr: 'EditorTheme__ltr',
85
+ mark: 'EditorTheme__mark',
86
+ markOverlap: 'EditorTheme__markOverlap',
87
+ paragraph: 'EditorTheme__paragraph',
88
+ quote: 'EditorTheme__quote',
89
+ rtl: 'EditorTheme__rtl',
90
+ table: 'EditorTheme__table',
91
+ tableAddColumns: 'EditorTheme__tableAddColumns',
92
+ tableAddRows: 'EditorTheme__tableAddRows',
93
+ tableCell: 'EditorTheme__tableCell',
94
+ tableCellActionButton: 'EditorTheme__tableCellActionButton',
95
+ tableCellActionButtonContainer: 'EditorTheme__tableCellActionButtonContainer',
96
+ tableCellEditing: 'EditorTheme__tableCellEditing',
97
+ tableCellHeader: 'EditorTheme__tableCellHeader',
98
+ tableCellPrimarySelected: 'EditorTheme__tableCellPrimarySelected',
99
+ tableCellResizer: 'EditorTheme__tableCellResizer',
100
+ tableCellSelected: 'EditorTheme__tableCellSelected',
101
+ tableCellSortedIndicator: 'EditorTheme__tableCellSortedIndicator',
102
+ tableResizeRuler: 'EditorTheme__tableCellResizeRuler',
103
+ tableSelected: 'EditorTheme__tableSelected',
104
+ tableSelection: 'EditorTheme__tableSelection',
106
105
  text: {
107
- bold: "PlaygroundEditorTheme__textBold",
108
- code: "PlaygroundEditorTheme__textCode",
109
- italic: "PlaygroundEditorTheme__textItalic",
110
- strikethrough: "PlaygroundEditorTheme__textStrikethrough",
111
- subscript: "PlaygroundEditorTheme__textSubscript",
112
- superscript: "PlaygroundEditorTheme__textSuperscript",
113
- underline: "PlaygroundEditorTheme__textUnderline",
114
- underlineStrikethrough: "PlaygroundEditorTheme__textUnderlineStrikethrough",
106
+ bold: 'EditorTheme__textBold',
107
+ code: 'EditorTheme__textCode',
108
+ italic: 'EditorTheme__textItalic',
109
+ strikethrough: 'EditorTheme__textStrikethrough',
110
+ subscript: 'EditorTheme__textSubscript',
111
+ superscript: 'EditorTheme__textSuperscript',
112
+ underline: 'EditorTheme__textUnderline',
113
+ underlineStrikethrough: 'EditorTheme__textUnderlineStrikethrough',
115
114
  },
116
115
  };
117
116
 
package/src/types.ts ADDED
@@ -0,0 +1,27 @@
1
+ import type { Transformer } from '@lexical/markdown';
2
+ import type { Klass, LexicalNode } from 'lexical';
3
+ import type { ComponentType } from 'react';
4
+
5
+ export interface ScriboToolbarButton {
6
+ /** Unique key */
7
+ key: string;
8
+ /** Tooltip / aria-label */
9
+ label: string;
10
+ /** CSS class for the icon */
11
+ iconClass?: string;
12
+ /** Called when the button is clicked */
13
+ onSelect: (editor: import('lexical').LexicalEditor) => void;
14
+ }
15
+
16
+ export interface ScriboPlugin {
17
+ /** Unique name for the plugin */
18
+ name: string;
19
+ /** Lexical nodes to register */
20
+ nodes?: Klass<LexicalNode>[];
21
+ /** Markdown transformers (placed before built-in transformers) */
22
+ transformers?: Transformer[];
23
+ /** Buttons to add to the toolbar */
24
+ toolbarButtons?: ScriboToolbarButton[];
25
+ /** React components to render inside the LexicalComposer (must accept no props) */
26
+ editorPlugins?: ComponentType<object>[];
27
+ }
@@ -6,16 +6,16 @@
6
6
  *
7
7
  */
8
8
  import type { JSX } from 'react';
9
- import "./ContentEditable.css";
9
+ import './ContentEditable.css';
10
10
 
11
- import { ContentEditable } from "@lexical/react/LexicalContentEditable";
11
+ import { ContentEditable } from '@lexical/react/LexicalContentEditable';
12
12
 
13
13
  export default function LexicalContentEditable({
14
14
  className,
15
15
  id,
16
- }: {
16
+ }: Readonly<{
17
17
  className?: string;
18
18
  id?: string;
19
- }): JSX.Element {
20
- return <ContentEditable className={className || "ContentEditable__root"} id={id} />;
19
+ }>): JSX.Element {
20
+ return <ContentEditable className={className || 'ContentEditable__root'} id={id} />;
21
21
  }