import { isFunction } from './fns' export function matchesSelectorToParentElements (el, selector, baseNode) { let node = el const matchesSelectorFunc = [ 'matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector' ].find(func => isFunction(node[func])) if (!isFunction(node[matchesSelectorFunc])) return false do { if (node[matchesSelectorFunc](selector)) return true if (node === baseNode) return false node = node.parentNode } while (node) return false } export function getComputedSize ($el) { const style = window.getComputedStyle($el) return [ parseFloat(style.getPropertyValue('width'), 10), parseFloat(style.getPropertyValue('height'), 10) ] } export function addEvent (el, event, handler) { if (!el) { return } if (el.attachEvent) { el.attachEvent('on' + event, handler) } else if (el.addEventListener) { el.addEventListener(event, handler, true) } else { el['on' + event] = handler } } export function removeEvent (el, event, handler) { if (!el) { return } if (el.detachEvent) { el.detachEvent('on' + event, handler) } else if (el.removeEventListener) { el.removeEventListener(event, handler, true) } else { el['on' + event] = null } }