export const RED_REGEX = /red|rgb\(255,\s*0,\s*0\)/
export const GREEN_REGEX = /green|rgb\(0,\s*255,\s*0\)/
export const BLUE_REGEX = /blue|rgb\(0,\s*0,\s*255\)/
export function getStockScrollbarWidths(direction) {
let el = $('
')
.css({
position: 'absolute',
top: -1000,
left: 0,
border: 0,
padding: 0,
overflow: 'scroll',
direction: direction || 'ltr',
})
.appendTo('body')
let elRect = el[0].getBoundingClientRect()
let innerEl = el.children()
let innerElRect = innerEl[0].getBoundingClientRect()
let girths = {
left: innerElRect.left - elRect.left,
right: elRect.left + elRect.width - innerElRect.left,
top: innerElRect.top - elRect.top,
bottom: elRect.top + elRect.height - innerElRect.top,
}
el.remove()
return girths
}
export function filterVisibleEls(els) {
return els.filter((el) => {
let $el = $(el)
return $el.is(':visible') && $el.css('visibility') !== 'hidden'
})
}
// TODO: make sure these matchers are loaded globally first
beforeEach(() => {
jasmine.addMatchers({
toHaveScrollbars() {
return {
compare(actual) {
let elm = $(actual)
let result = {
pass: elm[0].scrollWidth - 1 > elm[0].clientWidth || // -1 !!!
elm[0].scrollHeight - 1 > elm[0].clientHeight, // -1 !!!
}
// !!! - IE was reporting a scrollWidth/scrollHeight 1 pixel taller than what it was :(
return result
},
}
},
})
})