turbo_reflex 0.0.23 → 0.0.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +13 -12
- data/README.md +2 -1
- data/lib/turbo_reflex/attribute_set.rb +39 -0
- data/lib/turbo_reflex/base.rb +6 -14
- data/lib/turbo_reflex/state.rb +2 -2
- data/lib/turbo_reflex/state_manager.rb +1 -1
- data/lib/turbo_reflex/version.rb +1 -1
- data/package.json +1 -1
- data/tags +2118 -531
- data/yarn.lock +135 -135
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c28abca449b5630362e4a5926b270c4c8075a1ef989434c0899355d96390b388
|
4
|
+
data.tar.gz: 6a767145f9a32ab240feac42051f0d2be4c4d395202641b4e8caaf3cabe9c242
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36568b96f6cfd94e119adec06a2624c12a042447cdbbd5973de82ed8b629135a30ef033f23384da49084fa76a76a3ccc5422e3e0ec5267269cba693f7fcbce1d
|
7
|
+
data.tar.gz: 58efc30fb5c49b605b76a5d8998cd6f6d69b4288bad4d3a3b5b1085e26236f0162e282be402e34837e1e33ec78f405cb2cb5034279ee8bf9cb6fdd70a157c02c
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
turbo_reflex (0.0.
|
4
|
+
turbo_reflex (0.0.25)
|
5
5
|
rails (>= 6.1)
|
6
6
|
turbo-rails (>= 1.1)
|
7
7
|
turbo_ready (>= 0.1)
|
@@ -94,11 +94,11 @@ GEM
|
|
94
94
|
coderay (1.1.3)
|
95
95
|
concurrent-ruby (1.1.10)
|
96
96
|
crass (1.0.6)
|
97
|
-
cuprite (0.14.
|
97
|
+
cuprite (0.14.3)
|
98
98
|
capybara (~> 3.0)
|
99
|
-
ferrum (~> 0.
|
99
|
+
ferrum (~> 0.13.0)
|
100
100
|
erubi (1.11.0)
|
101
|
-
ferrum (0.
|
101
|
+
ferrum (0.13)
|
102
102
|
addressable (~> 2.5)
|
103
103
|
concurrent-ruby (~> 1.1)
|
104
104
|
webrick (~> 1.7)
|
@@ -193,19 +193,19 @@ GEM
|
|
193
193
|
regexp_parser (2.6.0)
|
194
194
|
rexml (3.2.5)
|
195
195
|
rouge (4.0.0)
|
196
|
-
rubocop (1.
|
196
|
+
rubocop (1.39.0)
|
197
197
|
json (~> 2.3)
|
198
198
|
parallel (~> 1.10)
|
199
199
|
parser (>= 3.1.2.1)
|
200
200
|
rainbow (>= 2.2.2, < 4.0)
|
201
201
|
regexp_parser (>= 1.8, < 3.0)
|
202
202
|
rexml (>= 3.2.5, < 4.0)
|
203
|
-
rubocop-ast (>= 1.
|
203
|
+
rubocop-ast (>= 1.23.0, < 2.0)
|
204
204
|
ruby-progressbar (~> 1.7)
|
205
205
|
unicode-display_width (>= 1.4.0, < 3.0)
|
206
206
|
rubocop-ast (1.23.0)
|
207
207
|
parser (>= 3.1.1.0)
|
208
|
-
rubocop-performance (1.
|
208
|
+
rubocop-performance (1.15.0)
|
209
209
|
rubocop (>= 1.7.0, < 2.0)
|
210
210
|
rubocop-ast (>= 0.4.0)
|
211
211
|
ruby-progressbar (1.11.0)
|
@@ -222,15 +222,16 @@ GEM
|
|
222
222
|
actionpack (>= 5.2)
|
223
223
|
activesupport (>= 5.2)
|
224
224
|
sprockets (>= 3.0.0)
|
225
|
+
sqlite3 (1.5.3-aarch64-linux)
|
225
226
|
sqlite3 (1.5.3-arm64-darwin)
|
226
|
-
standard (1.
|
227
|
-
rubocop (= 1.
|
228
|
-
rubocop-performance (= 1.
|
227
|
+
standard (1.18.0)
|
228
|
+
rubocop (= 1.39.0)
|
229
|
+
rubocop-performance (= 1.15.0)
|
229
230
|
standardrb (1.0.1)
|
230
231
|
standard
|
231
|
-
tailwindcss-rails (2.0.
|
232
|
+
tailwindcss-rails (2.0.21-aarch64-linux)
|
232
233
|
railties (>= 6.0.0)
|
233
|
-
tailwindcss-rails (2.0.
|
234
|
+
tailwindcss-rails (2.0.21-arm64-darwin)
|
234
235
|
railties (>= 6.0.0)
|
235
236
|
thor (1.2.1)
|
236
237
|
timeout (0.3.0)
|
data/README.md
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
</h1>
|
9
9
|
<p align="center">
|
10
10
|
<a href="http://blog.codinghorror.com/the-best-code-is-no-code-at-all/">
|
11
|
-
<img alt="Lines of Code" src="https://img.shields.io/badge/loc-
|
11
|
+
<img alt="Lines of Code" src="https://img.shields.io/badge/loc-1228-47d299.svg" />
|
12
12
|
</a>
|
13
13
|
<a href="https://codeclimate.com/github/hopsoft/turbo_reflex/maintainability">
|
14
14
|
<img src="https://api.codeclimate.com/v1/badges/fe1162a742fe83a4fdfd/maintainability" />
|
@@ -112,6 +112,7 @@ TurboReflex is a lightweight Turbo Frame extension... which means that reactivit
|
|
112
112
|
- [rails](https://rubygems.org/gems/rails) `>=6.1`
|
113
113
|
- [turbo-rails](https://rubygems.org/gems/turbo-rails) `>=1.1`
|
114
114
|
- [@hotwired/turbo-rails](https://yarnpkg.com/package/@hotwired/turbo-rails) `>=7.1`
|
115
|
+
- [ruby](https://github.com/ruby/ruby) `>=2.7`
|
115
116
|
|
116
117
|
## Setup
|
117
118
|
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class TurboReflex::AttributeSet
|
4
|
+
def initialize(prefix, attributes: {})
|
5
|
+
prefix = prefix.to_s
|
6
|
+
attrs = attributes.to_h.transform_values(&:to_s)
|
7
|
+
|
8
|
+
attrs.each do |key, value|
|
9
|
+
key = key.to_s.strip
|
10
|
+
|
11
|
+
next unless key.start_with?(prefix)
|
12
|
+
|
13
|
+
name = key.parameterize.underscore.delete_prefix("#{prefix}_")
|
14
|
+
value = value.to_i if value.to_s.match?(/\A\d+\z/)
|
15
|
+
value = value == "true" if value.is_a?(String) && value.match?(/\A(true|false)\z/i)
|
16
|
+
instance_variable_set "@#{name}", value
|
17
|
+
|
18
|
+
next if orig_respond_to_missing?(name, false)
|
19
|
+
|
20
|
+
self.class.define_method(name) { instance_variable_get :"@#{name}" }
|
21
|
+
self.class.define_method("#{name}?") { public_send(name).present? }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def respond_to?(name, include_all = false)
|
26
|
+
respond_to_missing? name, include_all
|
27
|
+
end
|
28
|
+
|
29
|
+
alias_method :orig_respond_to_missing?, :respond_to_missing?
|
30
|
+
|
31
|
+
def respond_to_missing?(name, include_all)
|
32
|
+
true
|
33
|
+
end
|
34
|
+
|
35
|
+
def method_missing(name, *args)
|
36
|
+
return false if name.end_with?("?")
|
37
|
+
nil
|
38
|
+
end
|
39
|
+
end
|
data/lib/turbo_reflex/base.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative "attribute_set"
|
4
|
+
|
3
5
|
# TurboReflex base superclass.
|
4
6
|
# All TurboReflex classes should inherit from this class.
|
5
7
|
#
|
@@ -99,20 +101,10 @@ class TurboReflex::Base
|
|
99
101
|
def element
|
100
102
|
@element ||= begin
|
101
103
|
attributes = params[:element_attributes]
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
memo[:dataset][key[5..].parameterize.underscore.to_sym] = attributes[key]
|
107
|
-
elsif key.start_with?("aria_")
|
108
|
-
memo[:aria][key[5..].parameterize.underscore.to_sym] = attributes[key]
|
109
|
-
else
|
110
|
-
memo[key.parameterize.underscore.to_sym] = attributes[key]
|
111
|
-
end
|
112
|
-
end
|
113
|
-
attrs[:aria] = OpenStruct.new(attrs[:aria])
|
114
|
-
attrs[:dataset] = OpenStruct.new(attrs[:dataset])
|
115
|
-
OpenStruct.new attrs
|
104
|
+
OpenStruct.new attributes.merge(
|
105
|
+
aria: TurboReflex::AttributeSet.new(:aria, attributes: attributes),
|
106
|
+
dataset: TurboReflex::AttributeSet.new(:data, attributes: attributes)
|
107
|
+
)
|
116
108
|
end
|
117
109
|
end
|
118
110
|
|
data/lib/turbo_reflex/state.rb
CHANGED
@@ -92,13 +92,13 @@ class TurboReflex::State
|
|
92
92
|
return if internal_keys.blank?
|
93
93
|
return if internal_data.blank?
|
94
94
|
|
95
|
-
percentage = max_bytesize > 0 ? ordinal_payload.bytesize / max_bytesize.to_f : 0
|
95
|
+
percentage = (max_bytesize > 0) ? ordinal_payload.bytesize / max_bytesize.to_f : 0
|
96
96
|
while percentage > 1
|
97
97
|
keys_to_keep = internal_keys.slice((internal_keys.length - (internal_keys.length / percentage).floor)..-1)
|
98
98
|
keys_to_remove = internal_keys - keys_to_keep
|
99
99
|
@internal_keys = keys_to_keep
|
100
100
|
keys_to_remove.each { |key| internal_data.delete key }
|
101
|
-
percentage = max_bytesize > 0 ? ordinal_payload.bytesize / max_bytesize.to_f : 0
|
101
|
+
percentage = (max_bytesize > 0) ? ordinal_payload.bytesize / max_bytesize.to_f : 0
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
@@ -135,7 +135,7 @@ class TurboReflex::StateManager
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def write_cookie
|
138
|
-
return unless changed?
|
138
|
+
return unless changed? || cookie.blank?
|
139
139
|
cookies.signed["turbo_reflex.state"] = {value: ordinal_payload, path: "/", expires: 1.day.from_now}
|
140
140
|
changes_applied
|
141
141
|
rescue => error
|
data/lib/turbo_reflex/version.rb
CHANGED
data/package.json
CHANGED