From 0c9f2822e9727cc03b715b7574cdf076bead4400 Mon Sep 17 00:00:00 2001 From: Dominik Freier Date: Fri, 26 Jan 2024 15:14:49 +0100 Subject: [PATCH] fix(safari): use cloned Range in RangeContainer --- src/range-container.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/range-container.js b/src/range-container.js index 20fdc83..185aaf4 100644 --- a/src/range-container.js +++ b/src/range-container.js @@ -15,7 +15,10 @@ export default class RangeContainer { this.host = editableHost && editableHost.jquery ? editableHost[0] : editableHost - this.range = range + // Safari 17 seems to modify the range instance on the fly which breaks later comparisons. + // We clone the range at the time of the RangeContainer creation. + // https://developer.apple.com/documentation/safari-release-notes/safari-17-release-notes#New-Features + this.range = range?.cloneRange() this.isAnythingSelected = (range !== undefined) this.isCursor = (this.isAnythingSelected && range.collapsed) this.isSelection = (this.isAnythingSelected && !this.isCursor)