@blocknote/core 0.46.1 → 0.47.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.
Files changed (56) hide show
  1. package/dist/{BlockNoteSchema-DsMVJZv4.js → BlockNoteSchema-1r-ln0Q0.js} +2 -2
  2. package/dist/{BlockNoteSchema-DsMVJZv4.js.map → BlockNoteSchema-1r-ln0Q0.js.map} +1 -1
  3. package/dist/{BlockNoteSchema-qt4Czo0-.cjs → BlockNoteSchema-DT4bdXj5.cjs} +2 -2
  4. package/dist/{BlockNoteSchema-qt4Czo0-.cjs.map → BlockNoteSchema-DT4bdXj5.cjs.map} +1 -1
  5. package/dist/{TrailingNode-C-Kyrtf1.js → TrailingNode-DZag-Nvu.js} +476 -464
  6. package/dist/TrailingNode-DZag-Nvu.js.map +1 -0
  7. package/dist/TrailingNode-tesI8f7N.cjs +2 -0
  8. package/dist/TrailingNode-tesI8f7N.cjs.map +1 -0
  9. package/dist/blocknote.cjs +4 -4
  10. package/dist/blocknote.cjs.map +1 -1
  11. package/dist/blocknote.js +1264 -1165
  12. package/dist/blocknote.js.map +1 -1
  13. package/dist/blocks.cjs +1 -1
  14. package/dist/blocks.js +2 -2
  15. package/dist/{defaultBlocks-CXOCngjC.js → defaultBlocks-BSOEW3GR.js} +33 -29
  16. package/dist/defaultBlocks-BSOEW3GR.js.map +1 -0
  17. package/dist/defaultBlocks-D049Pbme.cjs +6 -0
  18. package/dist/defaultBlocks-D049Pbme.cjs.map +1 -0
  19. package/dist/extensions.cjs +1 -1
  20. package/dist/extensions.js +3 -3
  21. package/dist/locales.cjs +1 -1
  22. package/dist/locales.cjs.map +1 -1
  23. package/dist/locales.js +813 -28
  24. package/dist/locales.js.map +1 -1
  25. package/dist/style.css +1 -1
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/dist/webpack-stats.json +1 -1
  28. package/package.json +1 -1
  29. package/src/api/exporters/html/internalHTMLSerializer.ts +146 -2
  30. package/src/api/exporters/html/util/serializeBlocksExternalHTML.ts +3 -0
  31. package/src/blocks/Code/block.ts +12 -8
  32. package/src/blocks/ListItem/CheckListItem/block.test.ts +61 -0
  33. package/src/blocks/ListItem/CheckListItem/block.ts +4 -0
  34. package/src/editor/Block.css +7 -3
  35. package/src/editor/editor.css +1 -0
  36. package/src/editor/transformPasted.ts +69 -0
  37. package/src/extensions/NodeSelectionKeyboard/NodeSelectionKeyboard.ts +1 -0
  38. package/src/extensions/SideMenu/SideMenu.ts +44 -0
  39. package/src/extensions/TableHandles/TableHandles.ts +6 -2
  40. package/src/extensions/tiptap-extensions/KeyboardShortcuts/KeyboardShortcutsExtension.ts +37 -11
  41. package/src/i18n/locales/fa.ts +390 -0
  42. package/src/i18n/locales/index.ts +2 -0
  43. package/src/i18n/locales/uz.ts +421 -0
  44. package/src/schema/blocks/createSpec.ts +4 -2
  45. package/src/schema/blocks/types.ts +9 -0
  46. package/types/src/blocks/ListItem/CheckListItem/block.test.d.ts +1 -0
  47. package/types/src/i18n/locales/fa.d.ts +320 -0
  48. package/types/src/i18n/locales/index.d.ts +2 -0
  49. package/types/src/i18n/locales/uz.d.ts +2 -0
  50. package/types/src/schema/blocks/types.d.ts +9 -3
  51. package/dist/TrailingNode-C-Kyrtf1.js.map +0 -1
  52. package/dist/TrailingNode-W7GJVng5.cjs +0 -2
  53. package/dist/TrailingNode-W7GJVng5.cjs.map +0 -1
  54. package/dist/defaultBlocks-CXOCngjC.js.map +0 -1
  55. package/dist/defaultBlocks-IsUGVZIq.cjs +0 -6
  56. package/dist/defaultBlocks-IsUGVZIq.cjs.map +0 -1
@@ -296,9 +296,13 @@ export class TableHandlesView implements PluginView {
296
296
  event.clientX >= tableRect.right - 1 &&
297
297
  event.clientX < tableRect.right + 20;
298
298
 
299
- // without this check, we'd also hide draghandles when hovering over them
300
299
  const hideHandles =
301
- event.clientX > tableRect.right || event.clientY > tableRect.bottom;
300
+ // always hide handles when the actively hovered table changed
301
+ this.state?.block.id !== tableBlock.id ||
302
+ // make sure we don't hide existing handles (keep col / row index) when
303
+ // we're hovering just above or to the right of a table
304
+ event.clientX > tableRect.right ||
305
+ event.clientY > tableRect.bottom;
302
306
 
303
307
  this.state = {
304
308
  ...this.state!,
@@ -184,6 +184,14 @@ export const KeyboardShortcutsExtension = Extension.create<{
184
184
 
185
185
  let chainedCommands = chain();
186
186
 
187
+ // Moves the children of the current block to the previous one.
188
+ if (blockInfo.childContainer) {
189
+ chainedCommands.insertContentAt(
190
+ blockInfo.bnBlock.afterPos,
191
+ blockInfo.childContainer?.node.content,
192
+ );
193
+ }
194
+
187
195
  if (
188
196
  prevBlockInfo.blockContent.node.type.spec.content ===
189
197
  "tableRow+"
@@ -209,8 +217,7 @@ export const KeyboardShortcutsExtension = Extension.create<{
209
217
  );
210
218
  } else {
211
219
  const blockContentStartPos =
212
- prevBlockInfo.blockContent.afterPos -
213
- prevBlockInfo.blockContent.node.nodeSize;
220
+ prevBlockInfo.blockContent.afterPos - 1;
214
221
 
215
222
  chainedCommands =
216
223
  chainedCommands.setTextSelection(blockContentStartPos);
@@ -413,7 +420,7 @@ export const KeyboardShortcutsExtension = Extension.create<{
413
420
  // Creates a new block and moves the selection to it if the current one is empty, while the selection is also
414
421
  // empty & at the start of the block.
415
422
  () =>
416
- commands.command(({ state, dispatch }) => {
423
+ commands.command(({ state, dispatch, tr }) => {
417
424
  const blockInfo = getBlockInfoFromSelection(state);
418
425
  if (!blockInfo.isBlockContainer) {
419
426
  return false;
@@ -431,15 +438,34 @@ export const KeyboardShortcutsExtension = Extension.create<{
431
438
  const newBlockContentPos = newBlockInsertionPos + 2;
432
439
 
433
440
  if (dispatch) {
434
- const newBlock =
435
- state.schema.nodes["blockContainer"].createAndFill()!;
436
-
437
- state.tr
438
- .insert(newBlockInsertionPos, newBlock)
441
+ // Creates a new block with the children of the current block,
442
+ // if it has any.
443
+ const newBlock = state.schema.nodes[
444
+ "blockContainer"
445
+ ].createAndFill(
446
+ undefined,
447
+ [
448
+ state.schema.nodes["paragraph"].createAndFill() ||
449
+ undefined,
450
+ blockInfo.childContainer?.node,
451
+ ].filter((node) => node !== undefined),
452
+ )!;
453
+
454
+ // Inserts the new block and moves the selection to it.
455
+ tr.insert(newBlockInsertionPos, newBlock)
456
+ .setSelection(
457
+ new TextSelection(tr.doc.resolve(newBlockContentPos)),
458
+ )
439
459
  .scrollIntoView();
440
- state.tr.setSelection(
441
- new TextSelection(state.doc.resolve(newBlockContentPos)),
442
- );
460
+
461
+ // Deletes old block's children, as they have been moved to
462
+ // the new one.
463
+ if (blockInfo.childContainer) {
464
+ tr.delete(
465
+ blockInfo.childContainer.beforePos,
466
+ blockInfo.childContainer.afterPos,
467
+ );
468
+ }
443
469
  }
444
470
 
445
471
  return true;
@@ -0,0 +1,390 @@
1
+ export const fa = {
2
+ slash_menu: {
3
+ heading: {
4
+ title: "عنوان ۱",
5
+ subtext: "عنوان سطح اول",
6
+ aliases: ["عنوان", "تیتر", "عنوان۱", "تیتر۱"],
7
+ group: "عنوان‌ها",
8
+ },
9
+ heading_2: {
10
+ title: "عنوان ۲",
11
+ subtext: "عنوان بخش اصلی",
12
+ aliases: ["عنوان۲", "تیتر۲", "زیرعنوان"],
13
+ group: "عنوان‌ها",
14
+ },
15
+ heading_3: {
16
+ title: "عنوان ۳",
17
+ subtext: "عنوان زیربخش و گروه",
18
+ aliases: ["عنوان۳", "تیتر۳", "زیرتیتر"],
19
+ group: "عنوان‌ها",
20
+ },
21
+ heading_4: {
22
+ title: "عنوان ۴",
23
+ subtext: "عنوان زیربخش فرعی",
24
+ aliases: ["عنوان۴", "تیتر۴"],
25
+ group: "زیرعنوان‌ها",
26
+ },
27
+ heading_5: {
28
+ title: "عنوان ۵",
29
+ subtext: "عنوان زیربخش کوچک",
30
+ aliases: ["عنوان۵", "تیتر۵"],
31
+ group: "زیرعنوان‌ها",
32
+ },
33
+ heading_6: {
34
+ title: "عنوان ۶",
35
+ subtext: "عنوان پایین‌ترین سطح",
36
+ aliases: ["عنوان۶", "تیتر۶"],
37
+ group: "زیرعنوان‌ها",
38
+ },
39
+ toggle_heading: {
40
+ title: "عنوان تاشو ۱",
41
+ subtext: "عنوان سطح اول با قابلیت تغییر وضعیت",
42
+ aliases: ["عنوان تاشو", "تیتر تاشو", "عنوان۱ تاشو"],
43
+ group: "زیرعنوان‌ها",
44
+ },
45
+ toggle_heading_2: {
46
+ title: "عنوان تاشو ۲",
47
+ subtext: "عنوان بخش اصلی با قابلیت تغییر وضعیت",
48
+ aliases: ["عنوان۲ تاشو", "تیتر۲ تاشو"],
49
+ group: "زیرعنوان‌ها",
50
+ },
51
+ toggle_heading_3: {
52
+ title: "عنوان تاشو ۳",
53
+ subtext: "عنوان زیربخش و گروه با قابلیت تغییر وضعیت",
54
+ aliases: ["عنوان۳ تاشو", "تیتر۳ تاشو"],
55
+ group: "زیرعنوان‌ها",
56
+ },
57
+ quote: {
58
+ title: "نقل قول",
59
+ subtext: "نقل قول یا گزیده",
60
+ aliases: ["نقل قول", "کوت"],
61
+ group: "بلوک‌های پایه",
62
+ },
63
+ toggle_list: {
64
+ title: "فهرست تاشو",
65
+ subtext: "فهرست با زیرمجموعه‌های پنهان‌شونده",
66
+ aliases: ["فهرست تاشو", "فهرست تاشو"],
67
+ group: "بلوک‌های پایه",
68
+ },
69
+ numbered_list: {
70
+ title: "فهرست شماره‌دار",
71
+ subtext: "فهرست با آیتم‌های مرتب",
72
+ aliases: ["فهرست شماره دار", "فهرست عددی", "فهرست شماره دار"],
73
+ group: "بلوک‌های پایه",
74
+ },
75
+ bullet_list: {
76
+ title: "فهرست نشان‌دار",
77
+ subtext: "فهرست با آیتم‌های نامرتب",
78
+ aliases: ["فهرست", "فهرست نشان دار", "فهرست گلوله ای", "فهرست"],
79
+ group: "بلوک‌های پایه",
80
+ },
81
+ check_list: {
82
+ title: "بازینه",
83
+ subtext: "فهرست با جعبه انتخاب",
84
+ aliases: ["چک لیست", "لیست انجام کار", "لیست تیک دار","بازینه"],
85
+ group: "بلوک‌های پایه",
86
+ },
87
+ paragraph: {
88
+ title: "پاراگراف",
89
+ subtext: "بدنه سند شما",
90
+ aliases: ["پاراگراف", "متن", "بند"],
91
+ group: "بلوک‌های پایه",
92
+ },
93
+ code_block: {
94
+ title: "بلوک کد",
95
+ subtext: "بلوک کد با برجسته‌سازی نحو",
96
+ aliases: ["کد", "بلوک کد", "برنامه"],
97
+ group: "بلوک‌های پایه",
98
+ },
99
+ page_break: {
100
+ title: "جداساز صفحه",
101
+ subtext: "جداکننده صفحه",
102
+ aliases: ["شکست صفحه", "صفحه جدید", "جداکننده"],
103
+ group: "بلوک‌های پایه",
104
+ },
105
+ table: {
106
+ title: "جدول",
107
+ subtext: "جدول با سلول‌های قابل ویرایش",
108
+ aliases: ["جدول"],
109
+ group: "پیشرفته",
110
+ },
111
+ image: {
112
+ title: "تصویر",
113
+ subtext: "تصویر با قابلیت تغییر اندازه و زیرنویس",
114
+ aliases: [
115
+ "تصویر",
116
+ "عکس",
117
+ "آپلود تصویر",
118
+ "مدیا",
119
+ "لینک عکس",
120
+ ],
121
+ group: "رسانه",
122
+ },
123
+ video: {
124
+ title: "ویدیو",
125
+ subtext: "ویدیو با قابلیت تغییر اندازه و زیرنویس",
126
+ aliases: [
127
+ "ویدیو",
128
+ "فیلم",
129
+ "آپلود ویدیو",
130
+ "مدیا",
131
+ ],
132
+ group: "رسانه",
133
+ },
134
+ audio: {
135
+ title: "صوتی",
136
+ subtext: "فایل صوتی جاسازی شده با زیرنویس",
137
+ aliases: [
138
+ "صوتی",
139
+ "صدا",
140
+ "آهنگ",
141
+ "موسیقی",
142
+ "آپلود صدا",
143
+ ],
144
+ group: "رسانه",
145
+ },
146
+ file: {
147
+ title: "فایل",
148
+ subtext: "فایل جاسازی شده",
149
+ aliases: ["فایل", "پرونده", "آپلود"],
150
+ group: "رسانه",
151
+ },
152
+ emoji: {
153
+ title: "شکلک",
154
+ subtext: "جستجو و درج شکلک",
155
+ aliases: ["ایموجی", "شکلک"],
156
+ group: "دیگر",
157
+ },
158
+ divider: {
159
+ title: "خط جداکننده",
160
+ subtext: "جداسازی بصری بلوک‌ها",
161
+ aliases: ["خط", "جداکننده", "خط افقی"],
162
+ group: "بلوک‌های پایه",
163
+ },
164
+ },
165
+ placeholders: {
166
+ default: "متن وارد کنید یا برای دیدن دستورات '/' را تایپ کنید",
167
+ heading: "عنوان",
168
+ toggleListItem: "تاشو",
169
+ bulletListItem: "فهرست",
170
+ numberedListItem: "فهرست",
171
+ checkListItem: "فهرست",
172
+ emptyDocument: undefined,
173
+ new_comment: "یک دیدگاه بنویسید...",
174
+ edit_comment: "ویرایش دیدگاه...",
175
+ comment_reply: "افزودن دیدگاه...",
176
+ } as Record<string | "default" | "emptyDocument", string | undefined>,
177
+ file_blocks: {
178
+ add_button_text: {
179
+ image: "افزودن تصویر",
180
+ video: "افزودن ویدیو",
181
+ audio: "افزودن صوت",
182
+ file: "افزودن فایل",
183
+ } as Record<string, string>,
184
+ },
185
+ toggle_blocks: {
186
+ add_block_button: "تاشوی خالی. برای افزودن بلوک کلیک کنید.",
187
+ },
188
+ // from react package:
189
+ side_menu: {
190
+ add_block_label: "افزودن بلوک",
191
+ drag_handle_label: "باز کردن منوی بلوک",
192
+ },
193
+ drag_handle: {
194
+ delete_menuitem: "حذف",
195
+ colors_menuitem: "رنگ‌ها",
196
+ header_row_menuitem: "ردیف سرآیند",
197
+ header_column_menuitem: "ستون سرآیند",
198
+ },
199
+ table_handle: {
200
+ delete_column_menuitem: "حذف ستون",
201
+ delete_row_menuitem: "حذف ردیف",
202
+ add_left_menuitem: "افزودن ستون در چپ",
203
+ add_right_menuitem: "افزودن ستون در راست",
204
+ add_above_menuitem: "افزودن ردیف در بالا",
205
+ add_below_menuitem: "افزودن ردیف در پایین",
206
+ split_cell_menuitem: "تقسیم سلول",
207
+ merge_cells_menuitem: "ادغام سلول‌ها",
208
+ background_color_menuitem: "رنگ پس‌زمینه",
209
+ },
210
+ suggestion_menu: {
211
+ no_items_title: "موردی یافت نشد",
212
+ },
213
+ color_picker: {
214
+ text_title: "متن",
215
+ background_title: "پس‌زمینه",
216
+ colors: {
217
+ default: "پیش‌فرض",
218
+ gray: "خاکستری",
219
+ brown: "قهوه‌ای",
220
+ red: "قرمز",
221
+ orange: "نارنجی",
222
+ yellow: "زرد",
223
+ green: "سبز",
224
+ blue: "آبی",
225
+ purple: "بنفش",
226
+ pink: "صورتی",
227
+ },
228
+ },
229
+
230
+ formatting_toolbar: {
231
+ bold: {
232
+ tooltip: "پررنگ",
233
+ secondary_tooltip: "Mod+B",
234
+ },
235
+ italic: {
236
+ tooltip: "کج",
237
+ secondary_tooltip: "Mod+I",
238
+ },
239
+ underline: {
240
+ tooltip: "زیرخط",
241
+ secondary_tooltip: "Mod+U",
242
+ },
243
+ strike: {
244
+ tooltip: "خط‌خوردگی",
245
+ secondary_tooltip: "Mod+Shift+S",
246
+ },
247
+ code: {
248
+ tooltip: "کد",
249
+ secondary_tooltip: "",
250
+ },
251
+ colors: {
252
+ tooltip: "رنگ‌ها",
253
+ },
254
+ link: {
255
+ tooltip: "ایجاد لینک",
256
+ secondary_tooltip: "Mod+K",
257
+ },
258
+ file_caption: {
259
+ tooltip: "ویرایش زیرنویس",
260
+ input_placeholder: "ویرایش زیرنویس",
261
+ },
262
+ file_replace: {
263
+ tooltip: {
264
+ image: "جایگزینی تصویر",
265
+ video: "جایگزینی ویدیو",
266
+ audio: "جایگزینی صوت",
267
+ file: "جایگزینی فایل",
268
+ } as Record<string, string>,
269
+ },
270
+ file_rename: {
271
+ tooltip: {
272
+ image: "تغییر نام تصویر",
273
+ video: "تغییر نام ویدیو",
274
+ audio: "تغییر نام صوت",
275
+ file: "تغییر نام فایل",
276
+ } as Record<string, string>,
277
+ input_placeholder: {
278
+ image: "تغییر نام تصویر",
279
+ video: "تغییر نام ویدیو",
280
+ audio: "تغییر نام صوت",
281
+ file: "تغییر نام فایل",
282
+ } as Record<string, string>,
283
+ },
284
+ file_download: {
285
+ tooltip: {
286
+ image: "دانلود تصویر",
287
+ video: "دانلود ویدیو",
288
+ audio: "دانلود صوت",
289
+ file: "دانلود فایل",
290
+ } as Record<string, string>,
291
+ },
292
+ file_delete: {
293
+ tooltip: {
294
+ image: "حذف تصویر",
295
+ video: "حذف ویدیو",
296
+ audio: "حذف صوت",
297
+ file: "حذف فایل",
298
+ } as Record<string, string>,
299
+ },
300
+ file_preview_toggle: {
301
+ tooltip: "تغییر وضعیت پیش‌نمایش",
302
+ },
303
+ nest: {
304
+ tooltip: "تودرتو کردن بلوک",
305
+ secondary_tooltip: "Tab",
306
+ },
307
+ unnest: {
308
+ tooltip: "خارج کردن بلوک از حالت تودرتو",
309
+ secondary_tooltip: "Shift+Tab",
310
+ },
311
+ align_left: {
312
+ tooltip: "تراز متن چپ",
313
+ },
314
+ align_center: {
315
+ tooltip: "تراز متن وسط",
316
+ },
317
+ align_right: {
318
+ tooltip: "تراز متن راست",
319
+ },
320
+ align_justify: {
321
+ tooltip: "تراز متن دوطرفه",
322
+ },
323
+ table_cell_merge: {
324
+ tooltip: "ادغام سلول‌ها",
325
+ },
326
+ comment: {
327
+ tooltip: "افزودن دیدگاه",
328
+ },
329
+ },
330
+ file_panel: {
331
+ upload: {
332
+ title: "بارگزاری",
333
+ file_placeholder: {
334
+ image: "بارگزاری تصویر",
335
+ video: "بارگزاری ویدیو",
336
+ audio: "بارگزاری صوت",
337
+ file: "بارگزاری فایل",
338
+ } as Record<string, string>,
339
+ upload_error: "خطا: بارگزاری ناموفق بود",
340
+ },
341
+ embed: {
342
+ title: "جاسازی",
343
+ embed_button: {
344
+ image: "جاسازی تصویر",
345
+ video: "جاسازی ویدیو",
346
+ audio: "جاسازی صوت",
347
+ file: "جاسازی فایل",
348
+ } as Record<string, string>,
349
+ url_placeholder: "وارد کردن آدرس",
350
+ },
351
+ },
352
+ link_toolbar: {
353
+ delete: {
354
+ tooltip: "حذف لینک",
355
+ },
356
+ edit: {
357
+ text: "ویرایش لینک",
358
+ tooltip: "ویرایش",
359
+ },
360
+ open: {
361
+ tooltip: "باز کردن در تب جدید",
362
+ },
363
+ form: {
364
+ title_placeholder: "ویرایش عنوان",
365
+ url_placeholder: "ویرایش آدرس",
366
+ },
367
+ },
368
+ comments: {
369
+ edited: "ویرایش شده",
370
+ save_button_text: "ذخیره",
371
+ cancel_button_text: "لغو",
372
+ actions: {
373
+ add_reaction: "افزودن واکنش",
374
+ resolve: "حل کردن",
375
+ edit_comment: "ویرایش دیدگاه",
376
+ delete_comment: "حذف دیدگاه",
377
+ more_actions: "اقدامات بیشتر",
378
+ },
379
+ reactions: {
380
+ reacted_by: "واکنش داده شده توسط",
381
+ },
382
+ sidebar: {
383
+ marked_as_resolved: "به عنوان حل شده علامت‌گذاری شد",
384
+ more_replies: (count: number) => `${count} پاسخ دیگر`,
385
+ },
386
+ },
387
+ generic: {
388
+ ctrl_shortcut: "Ctrl",
389
+ },
390
+ };
@@ -2,6 +2,7 @@ export * from "./ar.js";
2
2
  export * from "./de.js";
3
3
  export * from "./en.js";
4
4
  export * from "./es.js";
5
+ export * from "./fa.js";
5
6
  export * from "./fr.js";
6
7
  export * from "./he.js";
7
8
  export * from "./hr.js";
@@ -19,3 +20,4 @@ export * from "./uk.js";
19
20
  export * from "./vi.js";
20
21
  export * from "./zh.js";
21
22
  export * from "./zh-tw.js";
23
+ export * from "./uz.js";