Skip to content

Commit 27f19c4

Browse files
committed
Release v2.0.1
1 parent 1904405 commit 27f19c4

File tree

8 files changed

+113
-49
lines changed

8 files changed

+113
-49
lines changed

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file, starting fr
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [2.0.1] - 2023-02-14
8+
9+
### Changed
10+
11+
- Auto delink if backspacing inside auto-linked URL. This means if you make a
12+
mistake and backspace, you don't end up accidentally fixing the text but
13+
leaving the link to the wrong URL.
14+
15+
### Fixed
16+
17+
- Fix duplicate CSS created when replacing styles
18+
- Support browsers without Selection#setBaseAndExtent API. This includes some
19+
older Firefox versions.
20+
721
## [2.0.0] - 2023-01-23
822

923
### Added

dist/squire-raw.js

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,12 @@
338338
if (!child || isLeaf(child)) {
339339
if (startOffset) {
340340
child = startContainer.childNodes[startOffset - 1];
341+
let prev = child.previousSibling;
342+
while (child instanceof Text && !child.length && prev && prev instanceof Text) {
343+
child.remove();
344+
child = prev;
345+
continue;
346+
}
341347
if (child instanceof Text) {
342348
startContainer = child;
343349
startOffset = child.data.length;
@@ -695,12 +701,16 @@
695701
newTreeBottom.appendChild(el);
696702
}
697703
newTreeBottom = el;
698-
node.style.setProperty(attr, css);
704+
node.style.removeProperty(attr);
699705
}
700706
}
701707
if (newTreeTop && newTreeBottom) {
702708
newTreeBottom.appendChild(empty(node));
703-
node.appendChild(newTreeTop);
709+
if (node.style.cssText) {
710+
node.appendChild(newTreeTop);
711+
} else {
712+
replaceWith(node, newTreeTop);
713+
}
704714
}
705715
return newTreeBottom || node;
706716
};
@@ -1703,10 +1713,20 @@
17031713
self._updatePath(range, true);
17041714
}
17051715
} else {
1706-
self.setSelection(range);
1707-
setTimeout(() => {
1708-
afterDelete(self);
1709-
}, 0);
1716+
moveRangeBoundariesDownTree(range);
1717+
const text = range.startContainer;
1718+
const offset = range.startOffset;
1719+
const a = text.parentNode;
1720+
if (text instanceof Text && a instanceof HTMLAnchorElement && offset && a.href.includes(text.data)) {
1721+
text.deleteData(offset - 1, 1);
1722+
self.setSelection(range);
1723+
self.removeLink();
1724+
} else {
1725+
self.setSelection(range);
1726+
setTimeout(() => {
1727+
afterDelete(self);
1728+
}, 0);
1729+
}
17101730
}
17111731
};
17121732

@@ -2473,12 +2493,17 @@
24732493
} else {
24742494
const selection = window.getSelection();
24752495
if (selection) {
2476-
selection.setBaseAndExtent(
2477-
range.startContainer,
2478-
range.startOffset,
2479-
range.endContainer,
2480-
range.endOffset
2481-
);
2496+
if ("setBaseAndExtent" in Selection.prototype) {
2497+
selection.setBaseAndExtent(
2498+
range.startContainer,
2499+
range.startOffset,
2500+
range.endContainer,
2501+
range.endOffset
2502+
);
2503+
} else {
2504+
selection.removeAllRanges();
2505+
selection.addRange(range);
2506+
}
24822507
}
24832508
}
24842509
return this;

dist/squire-raw.mjs

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,12 @@ var moveRangeBoundariesDownTree = (range) => {
340340
if (!child || isLeaf(child)) {
341341
if (startOffset) {
342342
child = startContainer.childNodes[startOffset - 1];
343+
let prev = child.previousSibling;
344+
while (child instanceof Text && !child.length && prev && prev instanceof Text) {
345+
child.remove();
346+
child = prev;
347+
continue;
348+
}
343349
if (child instanceof Text) {
344350
startContainer = child;
345351
startOffset = child.data.length;
@@ -697,12 +703,16 @@ var replaceStyles = (node, _, config) => {
697703
newTreeBottom.appendChild(el);
698704
}
699705
newTreeBottom = el;
700-
node.style.setProperty(attr, css);
706+
node.style.removeProperty(attr);
701707
}
702708
}
703709
if (newTreeTop && newTreeBottom) {
704710
newTreeBottom.appendChild(empty(node));
705-
node.appendChild(newTreeTop);
711+
if (node.style.cssText) {
712+
node.appendChild(newTreeTop);
713+
} else {
714+
replaceWith(node, newTreeTop);
715+
}
706716
}
707717
return newTreeBottom || node;
708718
};
@@ -1705,10 +1715,20 @@ var Backspace = (self, event, range) => {
17051715
self._updatePath(range, true);
17061716
}
17071717
} else {
1708-
self.setSelection(range);
1709-
setTimeout(() => {
1710-
afterDelete(self);
1711-
}, 0);
1718+
moveRangeBoundariesDownTree(range);
1719+
const text = range.startContainer;
1720+
const offset = range.startOffset;
1721+
const a = text.parentNode;
1722+
if (text instanceof Text && a instanceof HTMLAnchorElement && offset && a.href.includes(text.data)) {
1723+
text.deleteData(offset - 1, 1);
1724+
self.setSelection(range);
1725+
self.removeLink();
1726+
} else {
1727+
self.setSelection(range);
1728+
setTimeout(() => {
1729+
afterDelete(self);
1730+
}, 0);
1731+
}
17121732
}
17131733
};
17141734

@@ -2436,12 +2456,17 @@ var Squire = class {
24362456
} else {
24372457
const selection = window.getSelection();
24382458
if (selection) {
2439-
selection.setBaseAndExtent(
2440-
range.startContainer,
2441-
range.startOffset,
2442-
range.endContainer,
2443-
range.endOffset
2444-
);
2459+
if ("setBaseAndExtent" in Selection.prototype) {
2460+
selection.setBaseAndExtent(
2461+
range.startContainer,
2462+
range.startOffset,
2463+
range.endContainer,
2464+
range.endOffset
2465+
);
2466+
} else {
2467+
selection.removeAllRanges();
2468+
selection.addRange(range);
2469+
}
24452470
}
24462471
}
24472472
return this;

0 commit comments

Comments
 (0)