prosemirror-view 1.33.10 → 1.33.11
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/CHANGELOG.md +8 -0
- package/dist/index.cjs +5 -11
- package/dist/index.js +6 -11
- package/package.json +1 -1
- package/src/input.ts +4 -3
- package/src/selection.ts +1 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## 1.33.11 (2024-08-19)
|
|
2
|
+
|
|
3
|
+
### Bug fixes
|
|
4
|
+
|
|
5
|
+
Delete the selection on composition start when on a mark boundary to force Chrome to apply the correct style to the composition.
|
|
6
|
+
|
|
7
|
+
When the browser starts a composition and the selection spans across blocks, start by clearing it to make sure the composed text node lands in a valid position.
|
|
8
|
+
|
|
1
9
|
## 1.33.10 (2024-08-13)
|
|
2
10
|
|
|
3
11
|
### Bug fixes
|
package/dist/index.cjs
CHANGED
|
@@ -2219,13 +2219,7 @@ function selectCursorWrapper(view) {
|
|
|
2219
2219
|
var node = view.cursorWrapper.dom,
|
|
2220
2220
|
img = node.nodeName == "IMG";
|
|
2221
2221
|
if (img) range.setStart(node.parentNode, domIndex(node) + 1);else range.setStart(node, 0);
|
|
2222
|
-
|
|
2223
|
-
if (sel.empty) {
|
|
2224
|
-
range.collapse(true);
|
|
2225
|
-
} else {
|
|
2226
|
-
var end = view.domAtPos(sel.to);
|
|
2227
|
-
range.setEnd(end.node, end.offset);
|
|
2228
|
-
}
|
|
2222
|
+
range.collapse(true);
|
|
2229
2223
|
domSel.removeAllRanges();
|
|
2230
2224
|
domSel.addRange(range);
|
|
2231
2225
|
if (!img && !view.state.selection.visible && ie && ie_version <= 11) {
|
|
@@ -3205,7 +3199,7 @@ editHandlers.compositionstart = editHandlers.compositionupdate = function (view)
|
|
|
3205
3199
|
endComposition(view, true);
|
|
3206
3200
|
view.markCursor = null;
|
|
3207
3201
|
} else {
|
|
3208
|
-
endComposition(view);
|
|
3202
|
+
endComposition(view, !state.selection.empty);
|
|
3209
3203
|
if (gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {
|
|
3210
3204
|
var sel = view.domSelectionRange();
|
|
3211
3205
|
for (var node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {
|
|
@@ -3276,13 +3270,13 @@ function timestampFromCustomEvent() {
|
|
|
3276
3270
|
return event.timeStamp;
|
|
3277
3271
|
}
|
|
3278
3272
|
function endComposition(view) {
|
|
3279
|
-
var
|
|
3273
|
+
var restarting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
3280
3274
|
if (android && view.domObserver.flushingSoon >= 0) return;
|
|
3281
3275
|
view.domObserver.forceFlush();
|
|
3282
3276
|
clearComposition(view);
|
|
3283
|
-
if (
|
|
3277
|
+
if (restarting || view.docView && view.docView.dirty) {
|
|
3284
3278
|
var sel = selectionFromDOM(view);
|
|
3285
|
-
if (sel && !sel.eq(view.state.selection)) view.dispatch(view.state.tr.setSelection(sel));else view.updateState(view.state);
|
|
3279
|
+
if (sel && !sel.eq(view.state.selection)) view.dispatch(view.state.tr.setSelection(sel));else if ((view.markCursor || restarting) && !view.state.selection.empty) view.dispatch(view.state.tr.deleteSelection());else view.updateState(view.state);
|
|
3286
3280
|
return true;
|
|
3287
3281
|
}
|
|
3288
3282
|
return false;
|
package/dist/index.js
CHANGED
|
@@ -2290,14 +2290,7 @@ function selectCursorWrapper(view) {
|
|
|
2290
2290
|
range.setStart(node.parentNode, domIndex(node) + 1);
|
|
2291
2291
|
else
|
|
2292
2292
|
range.setStart(node, 0);
|
|
2293
|
-
|
|
2294
|
-
if (sel.empty) {
|
|
2295
|
-
range.collapse(true);
|
|
2296
|
-
}
|
|
2297
|
-
else {
|
|
2298
|
-
let end = view.domAtPos(sel.to);
|
|
2299
|
-
range.setEnd(end.node, end.offset);
|
|
2300
|
-
}
|
|
2293
|
+
range.collapse(true);
|
|
2301
2294
|
domSel.removeAllRanges();
|
|
2302
2295
|
domSel.addRange(range);
|
|
2303
2296
|
// Kludge to kill 'control selection' in IE11 when selecting an
|
|
@@ -3419,7 +3412,7 @@ editHandlers.compositionstart = editHandlers.compositionupdate = view => {
|
|
|
3419
3412
|
view.markCursor = null;
|
|
3420
3413
|
}
|
|
3421
3414
|
else {
|
|
3422
|
-
endComposition(view);
|
|
3415
|
+
endComposition(view, !state.selection.empty);
|
|
3423
3416
|
// In firefox, if the cursor is after but outside a marked node,
|
|
3424
3417
|
// the inserted text won't inherit the marks. So this moves it
|
|
3425
3418
|
// inside if necessary.
|
|
@@ -3500,15 +3493,17 @@ function timestampFromCustomEvent() {
|
|
|
3500
3493
|
/**
|
|
3501
3494
|
@internal
|
|
3502
3495
|
*/
|
|
3503
|
-
function endComposition(view,
|
|
3496
|
+
function endComposition(view, restarting = false) {
|
|
3504
3497
|
if (android && view.domObserver.flushingSoon >= 0)
|
|
3505
3498
|
return;
|
|
3506
3499
|
view.domObserver.forceFlush();
|
|
3507
3500
|
clearComposition(view);
|
|
3508
|
-
if (
|
|
3501
|
+
if (restarting || view.docView && view.docView.dirty) {
|
|
3509
3502
|
let sel = selectionFromDOM(view);
|
|
3510
3503
|
if (sel && !sel.eq(view.state.selection))
|
|
3511
3504
|
view.dispatch(view.state.tr.setSelection(sel));
|
|
3505
|
+
else if ((view.markCursor || restarting) && !view.state.selection.empty)
|
|
3506
|
+
view.dispatch(view.state.tr.deleteSelection());
|
|
3512
3507
|
else
|
|
3513
3508
|
view.updateState(view.state);
|
|
3514
3509
|
return true;
|
package/package.json
CHANGED
package/src/input.ts
CHANGED
|
@@ -463,7 +463,7 @@ editHandlers.compositionstart = editHandlers.compositionupdate = view => {
|
|
|
463
463
|
endComposition(view, true)
|
|
464
464
|
view.markCursor = null
|
|
465
465
|
} else {
|
|
466
|
-
endComposition(view)
|
|
466
|
+
endComposition(view, !state.selection.empty)
|
|
467
467
|
// In firefox, if the cursor is after but outside a marked node,
|
|
468
468
|
// the inserted text won't inherit the marks. So this moves it
|
|
469
469
|
// inside if necessary.
|
|
@@ -539,13 +539,14 @@ function timestampFromCustomEvent() {
|
|
|
539
539
|
}
|
|
540
540
|
|
|
541
541
|
/// @internal
|
|
542
|
-
export function endComposition(view: EditorView,
|
|
542
|
+
export function endComposition(view: EditorView, restarting = false) {
|
|
543
543
|
if (browser.android && view.domObserver.flushingSoon >= 0) return
|
|
544
544
|
view.domObserver.forceFlush()
|
|
545
545
|
clearComposition(view)
|
|
546
|
-
if (
|
|
546
|
+
if (restarting || view.docView && view.docView.dirty) {
|
|
547
547
|
let sel = selectionFromDOM(view)
|
|
548
548
|
if (sel && !sel.eq(view.state.selection)) view.dispatch(view.state.tr.setSelection(sel))
|
|
549
|
+
else if ((view.markCursor || restarting) && !view.state.selection.empty) view.dispatch(view.state.tr.deleteSelection())
|
|
549
550
|
else view.updateState(view.state)
|
|
550
551
|
return true
|
|
551
552
|
}
|
package/src/selection.ts
CHANGED
|
@@ -140,13 +140,7 @@ function selectCursorWrapper(view: EditorView) {
|
|
|
140
140
|
let node = view.cursorWrapper!.dom, img = node.nodeName == "IMG"
|
|
141
141
|
if (img) range.setStart(node.parentNode!, domIndex(node) + 1)
|
|
142
142
|
else range.setStart(node, 0)
|
|
143
|
-
|
|
144
|
-
if (sel.empty) {
|
|
145
|
-
range.collapse(true)
|
|
146
|
-
} else {
|
|
147
|
-
let end = view.domAtPos(sel.to)
|
|
148
|
-
range.setEnd(end.node, end.offset)
|
|
149
|
-
}
|
|
143
|
+
range.collapse(true)
|
|
150
144
|
domSel.removeAllRanges()
|
|
151
145
|
domSel.addRange(range)
|
|
152
146
|
// Kludge to kill 'control selection' in IE11 when selecting an
|