Sha256: 06c856b93770f97cba9cb6c8cceaa7a7f44c0b501e94ab157d650b372203bb0f

Contents?: true

Size: 1015 Bytes

Versions: 24

Compression:

Stored size: 1015 Bytes

Contents

import { createConsumer } from 'https://esm.sh/v96/@rails/actioncable@7.0.4/es2022/actioncable.js'

export default socketPath => {
  const uid = (Date.now() + ((Math.random() * 100) | 0)).toString()
  const consumer = createConsumer(`${socketPath}?uid=${uid}`)

  consumer.subscriptions.create('Proscenium::ReloadChannel', {
    received: debounce(() => {
      console.log('[Proscenium] Files changed; reloading...')
      location.reload()
    }, 200, true),

    connected() {
      console.log('[Proscenium] Auto-reload websocket connected')
    },

    disconnected() {
      console.log('[Proscenium] Auto-reload websocket disconnected')
    }
  })
}

function debounce(func, wait, immediate) {
  let timeout

  return function () {
    const args = arguments

    const later = () => {
      timeout = null
      !immediate && func.apply(this, args)
    }

    const callNow = immediate && !timeout
    clearTimeout(timeout)
    timeout = setTimeout(later, wait)

    callNow && func.apply(this, args)
  }
}

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
proscenium-0.6.0-arm64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.6.0-x86_64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.6.0-x86_64-linux lib/proscenium/runtime/auto_reload.js
proscenium-0.5.1-arm64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.5.1-x86_64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.5.1-x86_64-linux lib/proscenium/runtime/auto_reload.js
proscenium-0.5.0-arm64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.5.0-x86_64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.5.0-x86_64-linux lib/proscenium/runtime/auto_reload.js
proscenium-0.4.2-arm64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.4.2-x86_64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.4.2-x86_64-linux lib/proscenium/runtime/auto_reload.js
proscenium-0.4.1-arm64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.4.1-x86_64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.4.1-x86_64-linux lib/proscenium/runtime/auto_reload.js
proscenium-0.4.0-arm64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.4.0-x86_64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.4.0-x86_64-linux lib/proscenium/runtime/auto_reload.js
proscenium-0.3.0-arm64-darwin lib/proscenium/runtime/auto_reload.js
proscenium-0.3.0-x86_64-darwin lib/proscenium/runtime/auto_reload.js