turbo_reflex 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,111 +0,0 @@
1
- import './frame_sources'
2
- import Security from './security'
3
- import LifecycleEvents from './lifecycle_events'
4
- import {
5
- findClosestReflex,
6
- findClosestFrame,
7
- findFrameId,
8
- findFrame,
9
- findFrameSrc,
10
- buildAttributePayload
11
- } from './elements'
12
- import {
13
- registerEventListener,
14
- registerEvent,
15
- registeredEvents,
16
- isRegisteredEvent,
17
- logRegisteredEvents
18
- } from './event_registry'
19
-
20
- // fires before making a turbo HTTP request
21
- addEventListener('turbo:before-fetch-request', event => {
22
- const frame = event.target
23
- const { turboReflexActive } = frame.dataset
24
- if (!turboReflexActive) return
25
- const { fetchOptions } = event.detail
26
- fetchOptions.headers['Turbo-Reflex'] = Security.token
27
- })
28
-
29
- function buildURL (urlString) {
30
- const a = document.createElement('a')
31
- a.href = urlString
32
- return new URL(a)
33
- }
34
-
35
- function invokeFormReflex (form, payload = {}) {
36
- payload.token = Security.token
37
- const input = document.createElement('input')
38
- input.type = 'hidden'
39
- input.name = 'turbo_reflex'
40
- input.value = JSON.stringify(payload)
41
- form.appendChild(input)
42
- }
43
-
44
- function invokeReflex (event) {
45
- let element, frameId, frame, frameSrc
46
- try {
47
- element = findClosestReflex(event.target)
48
- if (!element) return
49
-
50
- if (!isRegisteredEvent(event.type, element.tagName)) return
51
-
52
- LifecycleEvents.dispatch(LifecycleEvents.beforeStart, element, { element })
53
-
54
- frameId = findFrameId(element)
55
- if (!frameId) return
56
-
57
- frame = findFrame(frameId)
58
- if (!frame) return
59
-
60
- frameSrc = findFrameSrc(frame)
61
- if (!frameSrc) return
62
-
63
- const payload = {
64
- frameId: frameId,
65
- element: buildAttributePayload(element)
66
- }
67
-
68
- LifecycleEvents.dispatch(LifecycleEvents.start, element, {
69
- element,
70
- frameId,
71
- frame,
72
- frameSrc,
73
- payload
74
- })
75
- frame.dataset.turboReflexActive = true
76
- frame.dataset.turboReflexElementId = element.id
77
-
78
- if (element.tagName.toLowerCase() === 'form')
79
- return invokeFormReflex(element, payload)
80
-
81
- event.preventDefault()
82
- const frameURL = buildURL(frameSrc)
83
- frameURL.searchParams.set('turbo_reflex', JSON.stringify(payload))
84
- frame.src = frameURL.toString()
85
- } catch (error) {
86
- console.error(
87
- `TurboReflex encountered an unexpected error!`,
88
- { element, frameId, frame, frameSrc, target: event.target },
89
- error
90
- )
91
- LifecycleEvents.dispatch(LifecycleEvents.error, element || document, {
92
- element,
93
- frameId,
94
- frame,
95
- frameSrc,
96
- error
97
- })
98
- }
99
- }
100
-
101
- // wire things up and setup default events
102
- registerEventListener(invokeReflex)
103
- registerEvent('change', ['input', 'select', 'textarea'])
104
- registerEvent('submit', ['form'])
105
- registerEvent('click', ['*'])
106
-
107
- export default {
108
- registerEvent,
109
- logRegisteredEvents,
110
- logLifecycleEventNames: LifecycleEvents.logEventNames
111
- }
data/config/routes.rb DELETED
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Rails.application.routes.draw do
4
- match "turbo_reflex", to: "turbo_reflex/turbo_reflexes#show", via: :all, as: :turbo_reflex
5
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TurboReflex
4
- class ResponseNotRenderedError < StandardError
5
- end
6
- end