turbo_reflex 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -3
- data/README.md +1 -6
- data/app/assets/builds/turbo_reflex.js +1 -1
- data/app/assets/builds/turbo_reflex.js.map +4 -4
- data/app/controllers/concerns/turbo_reflex/controller.rb +12 -108
- data/app/javascript/activity.js +20 -0
- data/app/javascript/delegates.js +27 -0
- data/app/javascript/drivers/form.js +12 -0
- data/app/javascript/drivers/frame.js +11 -0
- data/app/javascript/drivers/index.js +63 -0
- data/app/javascript/drivers/window.js +70 -0
- data/app/javascript/elements.js +29 -50
- data/app/javascript/index.js +72 -0
- data/app/javascript/lifecycle.js +40 -0
- data/app/javascript/logger.js +34 -0
- data/app/javascript/schema.js +6 -0
- data/app/javascript/turbo.js +24 -0
- data/app/javascript/urls.js +9 -0
- data/app/javascript/uuids.js +10 -0
- data/lib/turbo_reflex/base.rb +59 -9
- data/lib/turbo_reflex/engine.rb +2 -10
- data/lib/turbo_reflex/runner.rb +199 -0
- data/lib/turbo_reflex/version.rb +1 -1
- data/package.json +5 -4
- data/turbo_reflex.gemspec +1 -0
- data/yarn.lock +146 -155
- metadata +30 -11
- data/app/controllers/turbo_reflex/turbo_reflexes_controller.rb +0 -12
- data/app/helpers/turbo_reflex/turbo_reflex_helper.rb +0 -9
- data/app/javascript/event_registry.js +0 -34
- data/app/javascript/frame_sources.js +0 -28
- data/app/javascript/lifecycle_events.js +0 -24
- data/app/javascript/security.js +0 -7
- data/app/javascript/turbo_reflex.js +0 -111
- data/config/routes.rb +0 -5
- data/lib/turbo_reflex/errors.rb +0 -6
@@ -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