Sha256: 9446c45f4e2ed8effa51b114aec92ad205dbbe00469893aa7db2c49e02dcd25d

Contents?: true

Size: 979 Bytes

Versions: 6

Compression:

Stored size: 979 Bytes

Contents

import morphdom from "morphdom"
import { createConsumer } from "@rails/actioncable"
import { initializeActions } from "../actions/initialize-actions.ts"
import { initializeInputs } from "../inputs/initialize-inputs.ts"
const consumer = createConsumer()

export const claptonChannel = consumer.subscriptions.create("Clapton::ClaptonChannel", {
  connected() {
    window.actionCableConnected = true;
  },

  disconnected() {},

  async received(response) {
    const { data, errors } = response;
    const component = document.querySelector(`[data-id="${data.component.id}"]`)
    const module = await import(`${data.component.name}`);
    const instance = new module[data.component.name](data.state, data.component.id, errors);
    morphdom(component, instance.renderWrapper, {
      onBeforeElUpdated: (_fromEl, toEl) => {
        toEl.setAttribute("data-set-event-handler", "true");
        return true;
      }
    });

    initializeInputs();
    initializeActions();
  }
})

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
clapton-0.0.23 lib/clapton/javascripts/src/channel/clapton-channel.js
clapton-0.0.22 lib/clapton/javascripts/src/channel/clapton-channel.js
clapton-0.0.21 lib/clapton/javascripts/src/channel/clapton-channel.js
clapton-0.0.20 lib/clapton/javascripts/src/channel/clapton-channel.js
clapton-0.0.19 lib/clapton/javascripts/src/channel/clapton-channel.js
clapton-0.0.18 lib/clapton/javascripts/src/channel/clapton-channel.js