@blocknote/core 0.34.0 → 0.36.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/LICENSE +1 -1
- package/README.md +7 -25
- package/dist/blocknote.cjs +8 -8
- package/dist/blocknote.cjs.map +1 -1
- package/dist/blocknote.js +1164 -1082
- package/dist/blocknote.js.map +1 -1
- package/dist/{en-Dx9fwHD4.js → en-CvDoFvhc.js} +4 -1
- package/dist/en-CvDoFvhc.js.map +1 -0
- package/dist/{en-CsgPjHa4.cjs → en-ub2yVBX0.cjs} +2 -2
- package/dist/en-ub2yVBX0.cjs.map +1 -0
- package/dist/locales.cjs +1 -1
- package/dist/locales.cjs.map +1 -1
- package/dist/locales.js +62 -2
- package/dist/locales.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/webpack-stats.json +1 -1
- package/package.json +17 -17
- package/src/api/blockManipulation/commands/updateBlock/updateBlock.ts +132 -4
- package/src/api/clipboard/fromClipboard/handleFileInsertion.ts +12 -1
- package/src/api/clipboard/toClipboard/copyExtension.ts +2 -0
- package/src/api/nodeUtil.ts +5 -1
- package/src/blocks/ImageBlockContent/parseImageElement.ts +2 -1
- package/src/blocks/QuoteBlockContent/QuoteBlockContent.ts +23 -1
- package/src/blocks/ToggleWrapper/createToggleWrapper.ts +2 -1
- package/src/editor/BlockNoteEditor.ts +79 -29
- package/src/editor/editor.css +8 -17
- package/src/extensions/Collaboration/ForkYDocPlugin.ts +1 -1
- package/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts +57 -1
- package/src/extensions/SideMenu/SideMenuPlugin.ts +12 -23
- package/src/i18n/locales/ar.ts +3 -0
- package/src/i18n/locales/de.ts +4 -0
- package/src/i18n/locales/en.ts +3 -0
- package/src/i18n/locales/es.ts +3 -0
- package/src/i18n/locales/fr.ts +3 -0
- package/src/i18n/locales/he.ts +3 -0
- package/src/i18n/locales/hr.ts +3 -0
- package/src/i18n/locales/is.ts +3 -0
- package/src/i18n/locales/it.ts +3 -0
- package/src/i18n/locales/ja.ts +3 -0
- package/src/i18n/locales/ko.ts +4 -1
- package/src/i18n/locales/nl.ts +3 -0
- package/src/i18n/locales/no.ts +3 -0
- package/src/i18n/locales/pl.ts +4 -0
- package/src/i18n/locales/pt.ts +3 -0
- package/src/i18n/locales/ru.ts +3 -0
- package/src/i18n/locales/sk.ts +3 -0
- package/src/i18n/locales/uk.ts +3 -0
- package/src/i18n/locales/vi.ts +3 -0
- package/src/i18n/locales/zh-tw.ts +3 -0
- package/src/i18n/locales/zh.ts +3 -0
- package/types/src/api/blockManipulation/commands/updateBlock/updateBlock.d.ts +16 -3
- package/types/src/api/nodeUtil.d.ts +5 -1
- package/types/src/blocks/ImageBlockContent/parseImageElement.d.ts +1 -0
- package/types/src/editor/BlockNoteEditor.d.ts +79 -29
- package/types/src/i18n/locales/en.d.ts +3 -0
- package/types/src/i18n/locales/sk.d.ts +3 -0
- package/dist/en-CsgPjHa4.cjs.map +0 -1
- package/dist/en-Dx9fwHD4.js.map +0 -1
|
@@ -156,8 +156,11 @@ export type BlockNoteEditorOptions<
|
|
|
156
156
|
|
|
157
157
|
/**
|
|
158
158
|
* When enabled, allows for collaboration between multiple users.
|
|
159
|
+
* See [Real-time Collaboration](https://www.blocknotejs.org/docs/advanced/real-time-collaboration) for more info.
|
|
160
|
+
*
|
|
161
|
+
* @remarks `CollaborationOptions`
|
|
159
162
|
*/
|
|
160
|
-
collaboration
|
|
163
|
+
collaboration?: {
|
|
161
164
|
/**
|
|
162
165
|
* The Yjs XML fragment that's used for collaboration.
|
|
163
166
|
*/
|
|
@@ -191,7 +194,13 @@ export type BlockNoteEditorOptions<
|
|
|
191
194
|
*/
|
|
192
195
|
codeBlock?: CodeBlockOptions;
|
|
193
196
|
|
|
194
|
-
|
|
197
|
+
/**
|
|
198
|
+
* Configuration for the comments feature, requires a `threadStore`.
|
|
199
|
+
*
|
|
200
|
+
* See [Comments](https://www.blocknotejs.org/docs/features/collaboration/comments) for more info.
|
|
201
|
+
* @remarks `CommentsOptions`
|
|
202
|
+
*/
|
|
203
|
+
comments?: {
|
|
195
204
|
threadStore: ThreadStore;
|
|
196
205
|
};
|
|
197
206
|
|
|
@@ -200,25 +209,38 @@ export type BlockNoteEditorOptions<
|
|
|
200
209
|
*
|
|
201
210
|
* @default true
|
|
202
211
|
*/
|
|
203
|
-
defaultStyles
|
|
212
|
+
defaultStyles?: boolean;
|
|
204
213
|
|
|
205
214
|
/**
|
|
206
215
|
* A dictionary object containing translations for the editor.
|
|
216
|
+
*
|
|
217
|
+
* See [Localization / i18n](https://www.blocknotejs.org/docs/advanced/localization) for more info.
|
|
218
|
+
*
|
|
219
|
+
* @remarks `Dictionary` is a type that contains all the translations for the editor.
|
|
207
220
|
*/
|
|
208
221
|
dictionary?: Dictionary & Record<string, any>;
|
|
209
222
|
|
|
210
223
|
/**
|
|
211
224
|
* Disable internal extensions (based on keys / extension name)
|
|
225
|
+
*
|
|
226
|
+
* @note Advanced
|
|
212
227
|
*/
|
|
213
|
-
disableExtensions
|
|
228
|
+
disableExtensions?: string[];
|
|
214
229
|
|
|
215
230
|
/**
|
|
216
231
|
* An object containing attributes that should be added to HTML elements of the editor.
|
|
217
232
|
*
|
|
233
|
+
* See [Adding DOM Attributes](https://www.blocknotejs.org/docs/theming#adding-dom-attributes) for more info.
|
|
234
|
+
*
|
|
218
235
|
* @example { editor: { class: "my-editor-class" } }
|
|
236
|
+
* @remarks `Record<string, Record<string, string>>`
|
|
219
237
|
*/
|
|
220
|
-
domAttributes
|
|
238
|
+
domAttributes?: Partial<BlockNoteDOMAttributes>;
|
|
221
239
|
|
|
240
|
+
/**
|
|
241
|
+
* A replacement indicator to use when dragging and dropping blocks. Uses the [ProseMirror drop cursor](https://github.com/ProseMirror/prosemirror-dropcursor), or a modified version when [Column Blocks](https://www.blocknotejs.org/docs/document-structure#column-blocks) are enabled.
|
|
242
|
+
* @remarks `() => Plugin`
|
|
243
|
+
*/
|
|
222
244
|
dropCursor?: (opts: {
|
|
223
245
|
editor: BlockNoteEditor<
|
|
224
246
|
NoInfer<BSchema>,
|
|
@@ -243,9 +265,13 @@ export type BlockNoteEditorOptions<
|
|
|
243
265
|
};
|
|
244
266
|
|
|
245
267
|
/**
|
|
246
|
-
* The content that should be in the editor when it's created, represented as an array of
|
|
268
|
+
* The content that should be in the editor when it's created, represented as an array of {@link PartialBlock} objects.
|
|
269
|
+
*
|
|
270
|
+
* See [Partial Blocks](https://www.blocknotejs.org/docs/editor-api/manipulating-blocks#partial-blocks) for more info.
|
|
271
|
+
*
|
|
272
|
+
* @remarks `PartialBlock[]`
|
|
247
273
|
*/
|
|
248
|
-
initialContent
|
|
274
|
+
initialContent?: PartialBlock<
|
|
249
275
|
NoInfer<BSchema>,
|
|
250
276
|
NoInfer<ISchema>,
|
|
251
277
|
NoInfer<SSchema>
|
|
@@ -253,14 +279,19 @@ export type BlockNoteEditorOptions<
|
|
|
253
279
|
|
|
254
280
|
/**
|
|
255
281
|
* @deprecated, provide placeholders via dictionary instead
|
|
282
|
+
* @internal
|
|
256
283
|
*/
|
|
257
|
-
placeholders
|
|
284
|
+
placeholders?: Record<
|
|
258
285
|
string | "default" | "emptyDocument",
|
|
259
286
|
string | undefined
|
|
260
287
|
>;
|
|
261
288
|
|
|
262
289
|
/**
|
|
263
290
|
* Custom paste handler that can be used to override the default paste behavior.
|
|
291
|
+
*
|
|
292
|
+
* See [Paste Handling](https://www.blocknotejs.org/docs/advanced/paste-handling) for more info.
|
|
293
|
+
*
|
|
294
|
+
* @remarks `PasteHandler`
|
|
264
295
|
* @returns The function should return `true` if the paste event was handled, otherwise it should return `false` if it should be canceled or `undefined` if it should be handled by another handler.
|
|
265
296
|
*
|
|
266
297
|
* @example
|
|
@@ -297,10 +328,21 @@ export type BlockNoteEditorOptions<
|
|
|
297
328
|
* implementing custom protocols / schemes
|
|
298
329
|
* @returns The URL that's
|
|
299
330
|
*/
|
|
300
|
-
resolveFileUrl
|
|
331
|
+
resolveFileUrl?: (url: string) => Promise<string>;
|
|
301
332
|
|
|
302
|
-
|
|
333
|
+
/**
|
|
334
|
+
* Resolve user information for comments.
|
|
335
|
+
*
|
|
336
|
+
* See [Comments](https://www.blocknotejs.org/docs/features/collaboration/comments) for more info.
|
|
337
|
+
*/
|
|
338
|
+
resolveUsers?: (userIds: string[]) => Promise<User[]>;
|
|
303
339
|
|
|
340
|
+
/**
|
|
341
|
+
* The schema of the editor. The schema defines which Blocks, InlineContent, and Styles are available in the editor.
|
|
342
|
+
*
|
|
343
|
+
* See [Custom Schemas](https://www.blocknotejs.org/docs/custom-schemas) for more info.
|
|
344
|
+
* @remarks `BlockNoteSchema`
|
|
345
|
+
*/
|
|
304
346
|
schema: BlockNoteSchema<BSchema, ISchema, SSchema>;
|
|
305
347
|
|
|
306
348
|
/**
|
|
@@ -314,22 +356,19 @@ export type BlockNoteEditorOptions<
|
|
|
314
356
|
setIdAttribute?: boolean;
|
|
315
357
|
|
|
316
358
|
/**
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
first press `Escape` to close the toolbar, and can then indent multiple
|
|
322
|
-
blocks. Better for keyboard accessibility.
|
|
323
|
-
- `"prefer-indent"`: Regardless of whether toolbars are open, indent the
|
|
324
|
-
selection of blocks. In this case, it's not possible to navigate toolbars
|
|
325
|
-
with the keyboard.
|
|
326
|
-
|
|
327
|
-
@default "prefer-navigate-ui"
|
|
359
|
+
* Determines behavior when pressing Tab (or Shift-Tab) while multiple blocks are selected and a toolbar is open.
|
|
360
|
+
* - `"prefer-navigate-ui"`: Changes focus to the toolbar. User must press Escape to close toolbar before indenting blocks. Better for keyboard accessibility.
|
|
361
|
+
* - `"prefer-indent"`: Always indents selected blocks, regardless of toolbar state. Keyboard navigation of toolbars not possible.
|
|
362
|
+
* @default "prefer-navigate-ui"
|
|
328
363
|
*/
|
|
329
|
-
tabBehavior
|
|
364
|
+
tabBehavior?: "prefer-navigate-ui" | "prefer-indent";
|
|
330
365
|
|
|
331
366
|
/**
|
|
332
367
|
* Allows enabling / disabling features of tables.
|
|
368
|
+
*
|
|
369
|
+
* See [Tables](https://www.blocknotejs.org/docs/editor-basics/document-structure#tables) for more info.
|
|
370
|
+
*
|
|
371
|
+
* @remarks `TableConfig`
|
|
333
372
|
*/
|
|
334
373
|
tables?: {
|
|
335
374
|
/**
|
|
@@ -358,6 +397,11 @@ export type BlockNoteEditorOptions<
|
|
|
358
397
|
headers?: boolean;
|
|
359
398
|
};
|
|
360
399
|
|
|
400
|
+
/**
|
|
401
|
+
* An option which user can pass with `false` value to disable the automatic creation of a trailing new block on the next line when the user types or edits any block.
|
|
402
|
+
*
|
|
403
|
+
* @default true
|
|
404
|
+
*/
|
|
361
405
|
trailingBlock?: boolean;
|
|
362
406
|
|
|
363
407
|
/**
|
|
@@ -368,23 +412,26 @@ export type BlockNoteEditorOptions<
|
|
|
368
412
|
*
|
|
369
413
|
* @param file The file that should be uploaded.
|
|
370
414
|
* @returns The URL of the uploaded file OR an object containing props that should be set on the file block (such as an id)
|
|
415
|
+
* @remarks `(file: File) => Promise<UploadFileResult>`
|
|
371
416
|
*/
|
|
372
|
-
uploadFile
|
|
417
|
+
uploadFile?: (
|
|
373
418
|
file: File,
|
|
374
419
|
blockId?: string,
|
|
375
420
|
) => Promise<string | Record<string, any>>;
|
|
376
421
|
|
|
377
422
|
/**
|
|
378
423
|
* additional tiptap options, undocumented
|
|
424
|
+
* @internal
|
|
379
425
|
*/
|
|
380
|
-
_tiptapOptions
|
|
426
|
+
_tiptapOptions?: Partial<EditorOptions>;
|
|
381
427
|
|
|
382
428
|
/**
|
|
383
429
|
* (experimental) add extra extensions to the editor
|
|
384
430
|
*
|
|
385
431
|
* @deprecated, should use `extensions` instead
|
|
432
|
+
* @internal
|
|
386
433
|
*/
|
|
387
|
-
_extensions
|
|
434
|
+
_extensions?: Record<
|
|
388
435
|
string,
|
|
389
436
|
| { plugin: Plugin; priority?: number }
|
|
390
437
|
| ((editor: BlockNoteEditor<any, any, any>) => {
|
|
@@ -394,9 +441,11 @@ export type BlockNoteEditorOptions<
|
|
|
394
441
|
>;
|
|
395
442
|
|
|
396
443
|
/**
|
|
397
|
-
* Register
|
|
444
|
+
* Register extensions to the editor.
|
|
445
|
+
*
|
|
446
|
+
* @internal
|
|
398
447
|
*/
|
|
399
|
-
extensions
|
|
448
|
+
extensions?: Array<BlockNoteExtension | BlockNoteExtensionFactory>;
|
|
400
449
|
|
|
401
450
|
/**
|
|
402
451
|
* Boolean indicating whether the editor is in headless mode.
|
|
@@ -404,8 +453,9 @@ export type BlockNoteEditorOptions<
|
|
|
404
453
|
* but there's no underlying editor (UI) instantiated.
|
|
405
454
|
*
|
|
406
455
|
* You probably don't need to set this manually, but use the `server-util` package instead that uses this option internally
|
|
456
|
+
* @internal
|
|
407
457
|
*/
|
|
408
|
-
_headless
|
|
458
|
+
_headless?: boolean;
|
|
409
459
|
};
|
|
410
460
|
|
|
411
461
|
const blockNoteTipTapOptions = {
|
|
@@ -1600,7 +1650,7 @@ export class BlockNoteEditor<
|
|
|
1600
1650
|
/**
|
|
1601
1651
|
* Registers a callback which will be called before any change is applied to the editor, allowing you to cancel the change.
|
|
1602
1652
|
*/
|
|
1603
|
-
public
|
|
1653
|
+
public onBeforeChange(
|
|
1604
1654
|
/**
|
|
1605
1655
|
* If the callback returns `false`, the change will be canceled & not applied to the editor.
|
|
1606
1656
|
*/
|
package/src/editor/editor.css
CHANGED
|
@@ -148,25 +148,16 @@ Tippy popups that are appended to document.body directly
|
|
|
148
148
|
transition: all 0.2s;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
/* .tableWrapper {
|
|
152
|
-
padding
|
|
153
|
-
} */
|
|
154
|
-
|
|
155
151
|
.bn-editor [data-content-type="table"] .tableWrapper {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
min-width: calc(100% + 16px);
|
|
161
|
-
padding-bottom: 16px;
|
|
152
|
+
/* Size of + buttons to add rows/columns. */
|
|
153
|
+
--bn-table-widget-size: 22px;
|
|
154
|
+
/* Size of table handles, divided by 2 since half the element is in the cell. */
|
|
155
|
+
--bn-table-handle-size: calc(18px / 2);
|
|
162
156
|
overflow-y: hidden;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
/* top: -16px;
|
|
168
|
-
left: -16px; */
|
|
169
|
-
padding: 16px;
|
|
157
|
+
padding: var(--bn-table-handle-size) var(--bn-table-widget-size)
|
|
158
|
+
var(--bn-table-widget-size) var(--bn-table-handle-size);
|
|
159
|
+
position: relative;
|
|
160
|
+
width: 100%;
|
|
170
161
|
}
|
|
171
162
|
|
|
172
163
|
/* table related: */
|
|
@@ -101,7 +101,7 @@ export class ForkYDocPlugin extends BlockNoteExtension<{
|
|
|
101
101
|
return;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
const originalFragment = this.collaboration
|
|
104
|
+
const originalFragment = this.collaboration?.fragment;
|
|
105
105
|
|
|
106
106
|
if (!originalFragment) {
|
|
107
107
|
throw new Error("No fragment to fork from");
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { isNodeSelection, isTextSelection, posToDOMRect } from "@tiptap/core";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
EditorState,
|
|
4
|
+
Plugin,
|
|
5
|
+
PluginKey,
|
|
6
|
+
PluginView,
|
|
7
|
+
TextSelection,
|
|
8
|
+
} from "prosemirror-state";
|
|
3
9
|
import { EditorView } from "prosemirror-view";
|
|
4
10
|
|
|
5
11
|
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor.js";
|
|
@@ -198,6 +204,56 @@ export class FormattingToolbarView implements PluginView {
|
|
|
198
204
|
// e.g. the download file button, should still be accessible. Therefore,
|
|
199
205
|
// logic for hiding when the editor is non-editable is handled
|
|
200
206
|
// individually in each button.
|
|
207
|
+
const newReferencePos = this.getSelectionBoundingBox();
|
|
208
|
+
|
|
209
|
+
// Workaround to ensure the correct reference position when rendering
|
|
210
|
+
// React components. Without this, e.g. updating styles on React inline
|
|
211
|
+
// content causes the formatting toolbar to be in the wrong place. We
|
|
212
|
+
// know the component has not yet rendered if the reference position has
|
|
213
|
+
// zero dimensions.
|
|
214
|
+
if (
|
|
215
|
+
newReferencePos.x === 0 ||
|
|
216
|
+
newReferencePos.y === 0 ||
|
|
217
|
+
newReferencePos.height === 0
|
|
218
|
+
) {
|
|
219
|
+
// Updates the reference position again following the render.
|
|
220
|
+
queueMicrotask(() => {
|
|
221
|
+
const nextState = {
|
|
222
|
+
show: true,
|
|
223
|
+
referencePos: this.getSelectionBoundingBox(),
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
this.state = nextState;
|
|
227
|
+
this.emitUpdate();
|
|
228
|
+
|
|
229
|
+
// For some reason, while the selection doesn't actually change and
|
|
230
|
+
// remains correct, it visually appears to be collapsed. This forces
|
|
231
|
+
// a ProseMirror view update, which fixes the issue.
|
|
232
|
+
view.dispatch(
|
|
233
|
+
view.state.tr.setSelection(
|
|
234
|
+
TextSelection.create(
|
|
235
|
+
view.state.doc,
|
|
236
|
+
view.state.selection.from + 1,
|
|
237
|
+
view.state.selection.to,
|
|
238
|
+
),
|
|
239
|
+
),
|
|
240
|
+
);
|
|
241
|
+
// 2 separate `dispatch` calls are needed, else ProseMirror realizes
|
|
242
|
+
// that the transaction is a no-op and doesn't update the view.
|
|
243
|
+
view.dispatch(
|
|
244
|
+
view.state.tr.setSelection(
|
|
245
|
+
TextSelection.create(
|
|
246
|
+
view.state.doc,
|
|
247
|
+
view.state.selection.from - 1,
|
|
248
|
+
view.state.selection.to,
|
|
249
|
+
),
|
|
250
|
+
),
|
|
251
|
+
);
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
|
|
201
257
|
const nextState = {
|
|
202
258
|
show: true,
|
|
203
259
|
referencePos: this.getSelectionBoundingBox(),
|
|
@@ -242,21 +242,11 @@ export class SideMenuView<
|
|
|
242
242
|
|
|
243
243
|
this.hoveredBlock = block.node;
|
|
244
244
|
|
|
245
|
-
// Gets the block's content node, which lets to ignore child blocks when determining the block menu's position.
|
|
246
|
-
// TODO: needed?
|
|
247
|
-
const blockContent = block.node.firstChild as HTMLElement;
|
|
248
|
-
|
|
249
|
-
if (!blockContent) {
|
|
250
|
-
return;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
// TODO: needed?
|
|
254
|
-
|
|
255
245
|
// Shows or updates elements.
|
|
256
246
|
if (this.editor.isEditable) {
|
|
257
|
-
const blockContentBoundingBox =
|
|
247
|
+
const blockContentBoundingBox = block.node.getBoundingClientRect();
|
|
258
248
|
const column = block.node.closest("[data-node-type=column]");
|
|
259
|
-
this.
|
|
249
|
+
this.state = {
|
|
260
250
|
show: true,
|
|
261
251
|
referencePos: new DOMRect(
|
|
262
252
|
column
|
|
@@ -275,7 +265,8 @@ export class SideMenuView<
|
|
|
275
265
|
block: this.editor.getBlock(
|
|
276
266
|
this.hoveredBlock!.getAttribute("data-id")!,
|
|
277
267
|
)!,
|
|
278
|
-
}
|
|
268
|
+
};
|
|
269
|
+
this.updateState(this.state);
|
|
279
270
|
}
|
|
280
271
|
};
|
|
281
272
|
|
|
@@ -435,9 +426,9 @@ export class SideMenuView<
|
|
|
435
426
|
// We need to check if there is text content that is being dragged (select some text & just drag it)
|
|
436
427
|
const textContentIsBeingDragged =
|
|
437
428
|
!event.dataTransfer?.types.includes("blocknote/html") &&
|
|
438
|
-
|
|
429
|
+
!!this.pmView.dragging;
|
|
439
430
|
// This is the side menu drag from this plugin
|
|
440
|
-
const sideMenuIsBeingDragged =
|
|
431
|
+
const sideMenuIsBeingDragged = !!this.isDragOrigin;
|
|
441
432
|
// Tells us that the current editor instance has a drag ongoing (either text or side menu)
|
|
442
433
|
const isDragOrigin = textContentIsBeingDragged || sideMenuIsBeingDragged;
|
|
443
434
|
|
|
@@ -498,21 +489,19 @@ export class SideMenuView<
|
|
|
498
489
|
}
|
|
499
490
|
const { isDropPoint, isDropWithinEditorBounds, isDragOrigin } = context;
|
|
500
491
|
|
|
501
|
-
if (!isDropWithinEditorBounds) {
|
|
492
|
+
if (!isDropWithinEditorBounds && isDropPoint) {
|
|
502
493
|
// Any time that the drop event is outside of the editor bounds (but still close to an editor instance)
|
|
503
494
|
// We dispatch a synthetic event that is in the bounds of the editor instance, to have the correct drop point
|
|
504
495
|
this.dispatchSyntheticEvent(event);
|
|
505
496
|
}
|
|
506
497
|
|
|
507
|
-
if (isDropPoint && isDragOrigin) {
|
|
508
|
-
// The current instance is both the drop point and the drag origin
|
|
509
|
-
// no-op, normal drop handling will take over
|
|
510
|
-
return;
|
|
511
|
-
}
|
|
512
|
-
|
|
513
498
|
if (isDropPoint) {
|
|
514
|
-
// The current instance is the drop point
|
|
499
|
+
// The current instance is the drop point
|
|
515
500
|
|
|
501
|
+
if (this.pmView.dragging) {
|
|
502
|
+
// Do not collapse selection when text content is being dragged
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
516
505
|
// Because the editor selection is unrelated to the dragged content, we
|
|
517
506
|
// don't want PM to delete its content. Therefore, we collapse the
|
|
518
507
|
// selection.
|
package/src/i18n/locales/ar.ts
CHANGED
package/src/i18n/locales/de.ts
CHANGED
|
@@ -217,6 +217,10 @@ export const de: Dictionary = {
|
|
|
217
217
|
add_button_text: "Datei hinzufügen",
|
|
218
218
|
},
|
|
219
219
|
},
|
|
220
|
+
toggle_blocks: {
|
|
221
|
+
add_block_button:
|
|
222
|
+
"Leerer aufklappbarer Bereich. Klicken, um einen Block hinzuzufügen.",
|
|
223
|
+
},
|
|
220
224
|
side_menu: {
|
|
221
225
|
add_block_label: "Block hinzufügen",
|
|
222
226
|
drag_handle_label: "Blockmenü öffnen",
|
package/src/i18n/locales/en.ts
CHANGED
package/src/i18n/locales/es.ts
CHANGED
|
@@ -197,6 +197,9 @@ export const es: Dictionary = {
|
|
|
197
197
|
add_button_text: "Agregar archivo",
|
|
198
198
|
},
|
|
199
199
|
},
|
|
200
|
+
toggle_blocks: {
|
|
201
|
+
add_block_button: "Toggle vacío. Haz clic para añadir un bloque.",
|
|
202
|
+
},
|
|
200
203
|
side_menu: {
|
|
201
204
|
add_block_label: "Agregar bloque",
|
|
202
205
|
drag_handle_label: "Abrir menú de bloque",
|
package/src/i18n/locales/fr.ts
CHANGED
|
@@ -243,6 +243,9 @@ export const fr: Dictionary = {
|
|
|
243
243
|
add_button_text: "Ajouter un fichier",
|
|
244
244
|
},
|
|
245
245
|
},
|
|
246
|
+
toggle_blocks: {
|
|
247
|
+
add_block_button: "Toggle vide. Cliquez pour ajouter un bloc.",
|
|
248
|
+
},
|
|
246
249
|
// from react package:
|
|
247
250
|
side_menu: {
|
|
248
251
|
add_block_label: "Ajouter un bloc",
|
package/src/i18n/locales/he.ts
CHANGED
|
@@ -199,6 +199,9 @@ export const he: Dictionary = {
|
|
|
199
199
|
add_button_text: "הוסף קובץ",
|
|
200
200
|
},
|
|
201
201
|
},
|
|
202
|
+
toggle_blocks: {
|
|
203
|
+
add_block_button: "מתג ריק. לחץ כדי להוסיף בלוק.",
|
|
204
|
+
},
|
|
202
205
|
side_menu: {
|
|
203
206
|
add_block_label: "הוסף בלוק",
|
|
204
207
|
drag_handle_label: "פתח תפריט בלוק",
|
package/src/i18n/locales/hr.ts
CHANGED
|
@@ -210,6 +210,9 @@ export const hr: Dictionary = {
|
|
|
210
210
|
add_button_text: "Dodaj datoteku",
|
|
211
211
|
},
|
|
212
212
|
},
|
|
213
|
+
toggle_blocks: {
|
|
214
|
+
add_block_button: "Prazan sklopivi blok. Klikni da dodaš sadržaj.",
|
|
215
|
+
},
|
|
213
216
|
// from react package:
|
|
214
217
|
side_menu: {
|
|
215
218
|
add_block_label: "Dodaj blok",
|
package/src/i18n/locales/is.ts
CHANGED
|
@@ -211,6 +211,9 @@ export const is: Dictionary = {
|
|
|
211
211
|
add_button_text: "Bæta við skrá",
|
|
212
212
|
},
|
|
213
213
|
},
|
|
214
|
+
toggle_blocks: {
|
|
215
|
+
add_block_button: "Tóm fellilína. Smelltu til að bæta við blokk.",
|
|
216
|
+
},
|
|
214
217
|
side_menu: {
|
|
215
218
|
add_block_label: "Bæta við blokki",
|
|
216
219
|
drag_handle_label: "Opna blokkarvalmynd",
|
package/src/i18n/locales/it.ts
CHANGED
|
@@ -219,6 +219,9 @@ export const it: Dictionary = {
|
|
|
219
219
|
add_button_text: "Aggiungi file",
|
|
220
220
|
},
|
|
221
221
|
},
|
|
222
|
+
toggle_blocks: {
|
|
223
|
+
add_block_button: "Toggle vuoto. Clicca per aggiungere un blocco.",
|
|
224
|
+
},
|
|
222
225
|
// from react package:
|
|
223
226
|
side_menu: {
|
|
224
227
|
add_block_label: "Aggiungi blocco",
|
package/src/i18n/locales/ja.ts
CHANGED
package/src/i18n/locales/ko.ts
CHANGED
|
@@ -42,7 +42,7 @@ export const ko: Dictionary = {
|
|
|
42
42
|
title: "접을 수 있는 제목1",
|
|
43
43
|
subtext: "내용을 표시하거나 숨길 수 있는 섹션 제목(대)",
|
|
44
44
|
aliases: ["h", "제목1", "h1", "대제목", "접기", "토글"],
|
|
45
|
-
group: "
|
|
45
|
+
group: "소제목",
|
|
46
46
|
},
|
|
47
47
|
toggle_heading_2: {
|
|
48
48
|
title: "접을 수 있는 제목2",
|
|
@@ -210,6 +210,9 @@ export const ko: Dictionary = {
|
|
|
210
210
|
add_button_text: "파일 추가",
|
|
211
211
|
},
|
|
212
212
|
},
|
|
213
|
+
toggle_blocks: {
|
|
214
|
+
add_block_button: "비어 있는 토글입니다. 클릭하여 블록을 추가하세요.",
|
|
215
|
+
},
|
|
213
216
|
// from react package:
|
|
214
217
|
side_menu: {
|
|
215
218
|
add_block_label: "블록 추가",
|
package/src/i18n/locales/nl.ts
CHANGED
|
@@ -198,6 +198,9 @@ export const nl: Dictionary = {
|
|
|
198
198
|
add_button_text: "Bestand toevoegen",
|
|
199
199
|
},
|
|
200
200
|
},
|
|
201
|
+
toggle_blocks: {
|
|
202
|
+
add_block_button: "Lege uitklapper. Klik om een blok toe te voegen.",
|
|
203
|
+
},
|
|
201
204
|
// from react package:
|
|
202
205
|
side_menu: {
|
|
203
206
|
add_block_label: "Nieuw blok",
|
package/src/i18n/locales/no.ts
CHANGED
|
@@ -216,6 +216,9 @@ export const no: Dictionary = {
|
|
|
216
216
|
add_button_text: "Legg til fil",
|
|
217
217
|
},
|
|
218
218
|
},
|
|
219
|
+
toggle_blocks: {
|
|
220
|
+
add_block_button: "Tomt toggle. Klikk for å legge til en blokk.",
|
|
221
|
+
},
|
|
219
222
|
side_menu: {
|
|
220
223
|
add_block_label: "Legg til blokk",
|
|
221
224
|
drag_handle_label: "Åpne blokkmeny",
|
package/src/i18n/locales/pl.ts
CHANGED
|
@@ -188,6 +188,10 @@ export const pl: Dictionary = {
|
|
|
188
188
|
add_button_text: "Dodaj plik",
|
|
189
189
|
},
|
|
190
190
|
},
|
|
191
|
+
toggle_blocks: {
|
|
192
|
+
add_block_button:
|
|
193
|
+
"Brak bloków do rozwinięcia. Kliknij, aby dodać pierwszego.",
|
|
194
|
+
},
|
|
191
195
|
side_menu: {
|
|
192
196
|
add_block_label: "Dodaj blok",
|
|
193
197
|
drag_handle_label: "Otwórz menu bloków",
|
package/src/i18n/locales/pt.ts
CHANGED
|
@@ -189,6 +189,9 @@ export const pt: Dictionary = {
|
|
|
189
189
|
add_button_text: "Adicionar arquivo",
|
|
190
190
|
},
|
|
191
191
|
},
|
|
192
|
+
toggle_blocks: {
|
|
193
|
+
add_block_button: "Toggle vazio. Clique para adicionar um bloco.",
|
|
194
|
+
},
|
|
192
195
|
// from react package:
|
|
193
196
|
side_menu: {
|
|
194
197
|
add_block_label: "Adicionar bloco",
|
package/src/i18n/locales/ru.ts
CHANGED
|
@@ -240,6 +240,9 @@ export const ru: Dictionary = {
|
|
|
240
240
|
add_button_text: "Добавить файл",
|
|
241
241
|
},
|
|
242
242
|
},
|
|
243
|
+
toggle_blocks: {
|
|
244
|
+
add_block_button: "Пустой переключатель. Нажмите, чтобы добавить блок.",
|
|
245
|
+
},
|
|
243
246
|
// from react package:
|
|
244
247
|
side_menu: {
|
|
245
248
|
add_block_label: "Добавить блок",
|
package/src/i18n/locales/sk.ts
CHANGED
|
@@ -197,6 +197,9 @@ export const sk = {
|
|
|
197
197
|
add_button_text: "Pridať súbor",
|
|
198
198
|
},
|
|
199
199
|
},
|
|
200
|
+
toggle_blocks: {
|
|
201
|
+
add_block_button: "Prázdne prepínanie. Kliknite pre pridanie bloku.",
|
|
202
|
+
},
|
|
200
203
|
side_menu: {
|
|
201
204
|
add_block_label: "Pridať blok",
|
|
202
205
|
drag_handle_label: "Otvoriť menu bloku",
|
package/src/i18n/locales/uk.ts
CHANGED
|
@@ -222,6 +222,9 @@ export const uk: Dictionary = {
|
|
|
222
222
|
add_button_text: "Додати файл",
|
|
223
223
|
},
|
|
224
224
|
},
|
|
225
|
+
toggle_blocks: {
|
|
226
|
+
add_block_button: "Порожній перемикач. Натисніть, щоб додати блок.",
|
|
227
|
+
},
|
|
225
228
|
// from react package:
|
|
226
229
|
side_menu: {
|
|
227
230
|
add_block_label: "Додати блок",
|
package/src/i18n/locales/vi.ts
CHANGED
package/src/i18n/locales/zh.ts
CHANGED