| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // Node.closest() polyfill
- if ('Element' in window && !Element.prototype.closest) {
- Element.prototype.closest = function(this: any, s) {
- const matches = (this.document || this.ownerDocument).querySelectorAll(s);
- let el = this;
- let i;
- // eslint-disable-next-line
- do {
- i = matches.length;
- // eslint-disable-next-line
- while (--i >= 0 && matches.item(i) !== el) {}
- el = el.parentElement;
- } while (i < 0 && el);
- return el;
- };
- }
- export function getPreviousCousin(node, selector) {
- let sibling = node.parentElement.previousSibling;
- let el;
- while (sibling) {
- el = sibling.querySelector(selector);
- if (el) {
- return el;
- }
- sibling = sibling.previousSibling;
- }
- return undefined;
- }
- export function getNextCharacter(global = window) {
- const selection = global.getSelection();
- if (!selection.anchorNode) {
- return null;
- }
- const range = selection.getRangeAt(0);
- const text = selection.anchorNode.textContent;
- const offset = range.startOffset;
- return text.substr(offset, 1);
- }
|