import matches from 'dom101/matches' /* * Just like jQuery.append */ export function appendMany (el, children) { children.forEach(child => { el.appendChild(child) }) } /* * Just like jQuery.nextUntil */ export function nextUntil (el, selector) { const nextEl = el.nextSibling return nextUntilTick(nextEl, selector, []) } function nextUntilTick (el, selector, acc) { if (!el) return acc const isMatch = matches(el, selector) if (isMatch) return acc return nextUntilTick(el.nextSibling, selector, [ ...acc, el ]) } /* * Just like jQuery.before */ export function before (reference, newNode) { reference.parentNode.insertBefore(newNode, reference) } /* * Like jQuery.children('selector') */ export function findChildren (el, selector) { return [].slice.call(el.children) .filter(child => matches(child, selector)) } /** * Creates a div * @private * * @example * * createDiv({ class: 'foo' }) */ export function createDiv (props) { const d = document.createElement('div') Object.keys(props).forEach(key => { d.setAttribute(key, props[key]) }) return d }