Sha256: 23f72e4dcd9efd5e20a02020640f539c122b5fa49f7035ff2a478a60f58d9ee9

Contents?: true

Size: 1.19 KB

Versions: 20

Compression:

Stored size: 1.19 KB

Contents

export function Concerns(Base, ...mixins) {
  return mixins.reduce((accumulator, current) => current(accumulator), Base)
}

export function visible(target) {
  return !(target.hidden || target.closest("[hidden]"))
}

export function wrapAroundAccess(array, index) {
  const first = 0
  const last = array.length - 1

  if (index < first) return array[last]
  if (index > last) return array[first]
  return array[index]
}

export function applyFilter(query, { matching }) {
  return (target) => {
    if (query) {
      const value = target.getAttribute(matching) || ""
      const match = value.toLowerCase().includes(query.toLowerCase())

      target.hidden = !match
    } else {
      target.hidden = false
    }
  }
}

export function cancel(event) {
  event.stopPropagation()
  event.preventDefault()
}

export function startsWith(string, substring) {
  return string.toLowerCase().startsWith(substring.toLowerCase())
}

export function nextFrame() {
  return new Promise(requestAnimationFrame)
}

export function debounce(fn, delay = 150) {
  let timeoutId = null

  return (...args) => {
    const callback = () => fn.apply(this, args)
    clearTimeout(timeoutId)
    timeoutId = setTimeout(callback, delay)
  }
}

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
hotwire_combobox-0.1.32 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.31 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.30 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.29 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.28 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.27 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.25 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.24 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.23 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.22 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.21 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.20 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.19 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.18 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.17 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.16 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.15 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.14 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.13 app/assets/javascripts/helpers.js
hotwire_combobox-0.1.12 app/assets/javascripts/helpers.js