phlex-reactive 0.14.3 → 0.15.0
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/CHANGELOG.md +107 -0
- data/README.md +258 -5
- data/app/controllers/phlex/reactive/actions_controller.rb +28 -18
- data/app/javascript/phlex/reactive/core.js +7 -1
- data/app/javascript/phlex/reactive/core.min.js +6 -2
- data/app/javascript/phlex/reactive/core.min.js.map +4 -4
- data/app/javascript/phlex/reactive/early.js +28 -9
- data/app/javascript/phlex/reactive/early.min.js +2 -2
- data/app/javascript/phlex/reactive/early.min.js.map +3 -3
- data/app/javascript/phlex/reactive/features/bindings.js +188 -107
- data/app/javascript/phlex/reactive/features/bindings.min.js +2 -2
- data/app/javascript/phlex/reactive/features/bindings.min.js.map +3 -3
- data/app/javascript/phlex/reactive/features/form.js +75 -46
- data/app/javascript/phlex/reactive/features/form.min.js +2 -2
- data/app/javascript/phlex/reactive/features/form.min.js.map +3 -3
- data/app/javascript/phlex/reactive/features/persist.js +12 -3
- data/app/javascript/phlex/reactive/features/persist.min.js +2 -2
- data/app/javascript/phlex/reactive/features/persist.min.js.map +3 -3
- data/app/javascript/phlex/reactive/features/presence.js +205 -0
- data/app/javascript/phlex/reactive/features/presence.min.js +4 -0
- data/app/javascript/phlex/reactive/features/presence.min.js.map +10 -0
- data/app/javascript/phlex/reactive/features/sortable.js +463 -0
- data/app/javascript/phlex/reactive/features/sortable.min.js +4 -0
- data/app/javascript/phlex/reactive/features/sortable.min.js.map +10 -0
- data/app/javascript/phlex/reactive/inspect.js +5 -1
- data/app/javascript/phlex/reactive/inspect.min.js +2 -2
- data/app/javascript/phlex/reactive/inspect.min.js.map +3 -3
- data/app/javascript/phlex/reactive/reactive_controller.js +5 -1
- data/app/javascript/phlex/reactive/reactive_controller.min.js +6 -2
- data/app/javascript/phlex/reactive/reactive_controller.min.js.map +10 -8
- data/app/javascript/phlex/reactive/runtime.js +286 -18
- data/lib/phlex/reactive/component/dsl.rb +5 -0
- data/lib/phlex/reactive/component/editable.rb +78 -0
- data/lib/phlex/reactive/component/helpers.rb +81 -8
- data/lib/phlex/reactive/component/presence_declaration.rb +118 -0
- data/lib/phlex/reactive/component/registry.rb +3 -1
- data/lib/phlex/reactive/component/sortable.rb +212 -0
- data/lib/phlex/reactive/component.rb +1 -0
- data/lib/phlex/reactive/defer.rb +5 -0
- data/lib/phlex/reactive/engine.rb +9 -4
- data/lib/phlex/reactive/js.rb +24 -0
- data/lib/phlex/reactive/presence/component_methods.rb +130 -0
- data/lib/phlex/reactive/presence/roster.rb +90 -0
- data/lib/phlex/reactive/presence/transport.rb +154 -0
- data/lib/phlex/reactive/presence.rb +162 -0
- data/lib/phlex/reactive/presence_render_job.rb +26 -0
- data/lib/phlex/reactive/shortcut.rb +105 -0
- data/lib/phlex/reactive/streamable.rb +7 -3
- data/lib/phlex/reactive/version.rb +1 -1
- data/lib/phlex/reactive.rb +10 -0
- metadata +16 -1
|
@@ -37,10 +37,13 @@ module Phlex
|
|
|
37
37
|
# Focus ops steal focus in every subscriber's tab (issue #96); submit
|
|
38
38
|
# (issue #226) would force-submit every subscriber's form; paste_into
|
|
39
39
|
# (issue #228) would read every subscriber's clipboard; check_group
|
|
40
|
-
# (issue #342) would tick or clear every subscriber's selection
|
|
40
|
+
# (issue #342) would tick or clear every subscriber's selection; presence
|
|
41
|
+
# (issue #358) would write every subscriber's presence state. They
|
|
41
42
|
# belong to the actor's own reply (reply.js) or gesture (on_client / a
|
|
42
43
|
# reducer's $ops), never a broadcast. Names mirror Phlex::Reactive::JS's verbs.
|
|
43
|
-
BROADCAST_REFUSED_OPS = %w[
|
|
44
|
+
BROADCAST_REFUSED_OPS = %w[
|
|
45
|
+
focus focus_first submit paste_into persist_state persist_clear check_group presence
|
|
46
|
+
].freeze
|
|
44
47
|
|
|
45
48
|
# The broadcast_to verb kwargs (issue #185) → their Turbo stream action.
|
|
46
49
|
# SELF-TARGETING verbs derive the target from the component's #id (require a
|
|
@@ -193,7 +196,8 @@ module Phlex
|
|
|
193
196
|
"broadcast_to(js:) refuses actor-only op(s) #{refused.join(", ")} — broadcasting focus " \
|
|
194
197
|
"steals it in every subscriber's tab; broadcasting submit force-submits every " \
|
|
195
198
|
"subscriber's form; broadcasting paste_into reads every subscriber's clipboard; " \
|
|
196
|
-
"broadcasting check_group ticks or clears every subscriber's selection
|
|
199
|
+
"broadcasting check_group ticks or clears every subscriber's selection; " \
|
|
200
|
+
"broadcasting presence writes every subscriber's presence state. " \
|
|
197
201
|
"These are actor concerns (reply.js / on_client / $ops)."
|
|
198
202
|
end
|
|
199
203
|
|
data/lib/phlex/reactive.rb
CHANGED
|
@@ -66,6 +66,12 @@ module Phlex
|
|
|
66
66
|
# authorization method / mark_authorized! / declare skip_verify_authorized).
|
|
67
67
|
class AuthorizationNotVerified < Error; end
|
|
68
68
|
|
|
69
|
+
# Raised when a feature needs a transport capability the app does not have
|
|
70
|
+
# (issue #358: reactive_presence without a pgbus that keys presence by
|
|
71
|
+
# connection). Loud at first render, with the requirement in the message —
|
|
72
|
+
# there is no degraded mode to fall back to.
|
|
73
|
+
class ConfigurationError < Error; end
|
|
74
|
+
|
|
69
75
|
# Purpose string bound into every identity token's signature so a token
|
|
70
76
|
# minted for phlex-reactive can't be replayed against another verifier use.
|
|
71
77
|
IDENTITY_PURPOSE = "phlex-reactive/identity"
|
|
@@ -1283,6 +1289,10 @@ loader.do_not_eager_load("#{__dir__}/reactive/engine.rb")
|
|
|
1283
1289
|
# boot. The constant autoloads on first reference, which only happens behind
|
|
1284
1290
|
# Phlex::Reactive.defer_push_capable? (that gate requires ActiveJob::Base).
|
|
1285
1291
|
loader.do_not_eager_load("#{__dir__}/reactive/deferred_render_job.rb")
|
|
1292
|
+
# The presence roster's render job (issue #358), for the same reason: it is
|
|
1293
|
+
# only referenced behind Phlex::Reactive::Presence.capable? (which requires
|
|
1294
|
+
# ActiveJob::Base).
|
|
1295
|
+
loader.do_not_eager_load("#{__dir__}/reactive/presence_render_job.rb")
|
|
1286
1296
|
loader.setup
|
|
1287
1297
|
|
|
1288
1298
|
require "phlex/reactive/engine" if defined?(Rails::Engine)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: phlex-reactive
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.15.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mikael Henriksson
|
|
@@ -158,6 +158,12 @@ files:
|
|
|
158
158
|
- app/javascript/phlex/reactive/features/persist.js
|
|
159
159
|
- app/javascript/phlex/reactive/features/persist.min.js
|
|
160
160
|
- app/javascript/phlex/reactive/features/persist.min.js.map
|
|
161
|
+
- app/javascript/phlex/reactive/features/presence.js
|
|
162
|
+
- app/javascript/phlex/reactive/features/presence.min.js
|
|
163
|
+
- app/javascript/phlex/reactive/features/presence.min.js.map
|
|
164
|
+
- app/javascript/phlex/reactive/features/sortable.js
|
|
165
|
+
- app/javascript/phlex/reactive/features/sortable.min.js
|
|
166
|
+
- app/javascript/phlex/reactive/features/sortable.min.js.map
|
|
161
167
|
- app/javascript/phlex/reactive/inspect.js
|
|
162
168
|
- app/javascript/phlex/reactive/inspect.min.js
|
|
163
169
|
- app/javascript/phlex/reactive/inspect.min.js.map
|
|
@@ -188,11 +194,14 @@ files:
|
|
|
188
194
|
- lib/phlex/reactive/collections.rb
|
|
189
195
|
- lib/phlex/reactive/component.rb
|
|
190
196
|
- lib/phlex/reactive/component/dsl.rb
|
|
197
|
+
- lib/phlex/reactive/component/editable.rb
|
|
191
198
|
- lib/phlex/reactive/component/helpers.rb
|
|
192
199
|
- lib/phlex/reactive/component/identity.rb
|
|
193
200
|
- lib/phlex/reactive/component/lazy.rb
|
|
201
|
+
- lib/phlex/reactive/component/presence_declaration.rb
|
|
194
202
|
- lib/phlex/reactive/component/registry.rb
|
|
195
203
|
- lib/phlex/reactive/component/selection.rb
|
|
204
|
+
- lib/phlex/reactive/component/sortable.rb
|
|
196
205
|
- lib/phlex/reactive/defer.rb
|
|
197
206
|
- lib/phlex/reactive/deferred_render_job.rb
|
|
198
207
|
- lib/phlex/reactive/doctor.rb
|
|
@@ -217,10 +226,16 @@ files:
|
|
|
217
226
|
- lib/phlex/reactive/param_schema.rb
|
|
218
227
|
- lib/phlex/reactive/pending.rb
|
|
219
228
|
- lib/phlex/reactive/pending/markup.rb
|
|
229
|
+
- lib/phlex/reactive/presence.rb
|
|
230
|
+
- lib/phlex/reactive/presence/component_methods.rb
|
|
231
|
+
- lib/phlex/reactive/presence/roster.rb
|
|
232
|
+
- lib/phlex/reactive/presence/transport.rb
|
|
233
|
+
- lib/phlex/reactive/presence_render_job.rb
|
|
220
234
|
- lib/phlex/reactive/reply.rb
|
|
221
235
|
- lib/phlex/reactive/response.rb
|
|
222
236
|
- lib/phlex/reactive/settle.rb
|
|
223
237
|
- lib/phlex/reactive/settles.rb
|
|
238
|
+
- lib/phlex/reactive/shortcut.rb
|
|
224
239
|
- lib/phlex/reactive/show_conditions.rb
|
|
225
240
|
- lib/phlex/reactive/stream.rb
|
|
226
241
|
- lib/phlex/reactive/streamable.rb
|