cable_ready 5.0.3 → 5.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 77c9ebacb73173f6208a3695b3f9305c70a87620216fc9441d92cc29fb2199af
4
- data.tar.gz: c41f703f59647be24df6a357f91e0cb848da7a16d31701714f1a648ec1991f6c
3
+ metadata.gz: 2bfdb61c248f1ee53c44e4075c76c592526577edb8b77c917bd356d43bfbe4da
4
+ data.tar.gz: 2b8278d08827c1904d96e31c4f3ca5557371cb535fda0d9381a887c24f0a0cc0
5
5
  SHA512:
6
- metadata.gz: e741e3a8d4c500ed4ca9dc1a09590f373911f5bd87986e2a9de9fb8d461da06d65fb86d8b940a4007da79d38cb352907a2c09aefd642f2a808d9d511e7d6f230
7
- data.tar.gz: 4a6b2d908138c58afb074642bf8e27c6f685eeace3ad2b43d182e31b61440fb251e059e7aa7cb508179e8c39c050f892e066f9c7d2c7516460284fda1d66bf87
6
+ metadata.gz: 0ca0ef3387fbf32a119fec3ea98f7b763c40e8fc45f2f76887e7d8bbff2c7b444cee0e6f3d1d46acace498a934fe797376ab084fb51c41d5d40f8805c4467080
7
+ data.tar.gz: 179cd66c5df25fcb6dd96cd5f432ff52304c49b0a35817fc589c7c64eb4ace74787fd0f3540b780e63122e52bc1f02cd367e872136248d0d2b4c723bb93a8c6f
data/Gemfile.lock CHANGED
@@ -1,10 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cable_ready (5.0.2)
4
+ cable_ready (5.0.5)
5
5
  actionpack (>= 5.2)
6
6
  actionview (>= 5.2)
7
7
  activesupport (>= 5.2)
8
+ observer (~> 0.1)
8
9
  railties (>= 5.2)
9
10
  thread-local (>= 1.1.0)
10
11
 
@@ -95,6 +96,7 @@ GEM
95
96
  marcel (1.0.2)
96
97
  method_source (1.0.0)
97
98
  mini_mime (1.1.2)
99
+ mini_portile2 (2.8.8)
98
100
  minitest (5.17.0)
99
101
  mocha (2.0.2)
100
102
  ruby2_keywords (>= 0.0.5)
@@ -107,13 +109,14 @@ GEM
107
109
  timeout
108
110
  net-smtp (0.3.3)
109
111
  net-protocol
110
- nio4r (2.5.8)
111
- nokogiri (1.14.3-arm64-darwin)
112
+ nio4r (2.7.4)
113
+ nokogiri (1.17.2-arm64-darwin)
112
114
  racc (~> 1.4)
113
- nokogiri (1.14.3-x86_64-darwin)
115
+ nokogiri (1.17.2-x86_64-darwin)
114
116
  racc (~> 1.4)
115
- nokogiri (1.14.3-x86_64-linux)
117
+ nokogiri (1.17.2-x86_64-linux)
116
118
  racc (~> 1.4)
119
+ observer (0.1.2)
117
120
  parallel (1.22.1)
118
121
  parser (3.2.1.0)
119
122
  ast (~> 2.4.1)
@@ -122,7 +125,7 @@ GEM
122
125
  method_source (~> 1.0)
123
126
  pry-nav (1.0.0)
124
127
  pry (>= 0.9.10, < 0.15)
125
- racc (1.6.2)
128
+ racc (1.8.1)
126
129
  rack (2.2.6.4)
127
130
  rack-test (2.0.2)
128
131
  rack (>= 1.3)
@@ -180,9 +183,8 @@ GEM
180
183
  actionpack (>= 5.2)
181
184
  activesupport (>= 5.2)
182
185
  sprockets (>= 3.0.0)
183
- sqlite3 (1.6.0-arm64-darwin)
184
- sqlite3 (1.6.0-x86_64-darwin)
185
- sqlite3 (1.6.0-x86_64-linux)
186
+ sqlite3 (1.6.0)
187
+ mini_portile2 (~> 2.8.0)
186
188
  standard (1.19.1)
187
189
  language_server-protocol (~> 3.17.0.2)
188
190
  rubocop (= 1.39.0)
@@ -204,6 +206,7 @@ PLATFORMS
204
206
  arm64-darwin-22
205
207
  x86_64-darwin-19
206
208
  x86_64-darwin-22
209
+ x86_64-darwin-23
207
210
  x86_64-linux
208
211
 
209
212
  DEPENDENCIES
@@ -2,7 +2,7 @@ import morphdom from "morphdom";
2
2
 
3
3
  var name = "cable_ready";
4
4
 
5
- var version = "5.0.3";
5
+ var version = "5.0.6";
6
6
 
7
7
  var description = "CableReady helps you create great real-time user experiences by making it simple to trigger client-side DOM changes from server-side Ruby.";
8
8
 
@@ -48,19 +48,19 @@ var dependencies = {
48
48
  };
49
49
 
50
50
  var devDependencies = {
51
- "@open-wc/testing": "^3.1.7",
52
- "@rollup/plugin-json": "^6.0.0",
53
- "@rollup/plugin-node-resolve": "^15.0.1",
54
- "@rollup/plugin-terser": "^0.4.0",
55
- "@web/dev-server-esbuild": "^0.3.3",
56
- "@web/dev-server-rollup": "^0.3.21",
57
- "@web/test-runner": "^0.15.1",
51
+ "@open-wc/testing": "^4.0.0",
52
+ "@rollup/plugin-json": "^6.1.0",
53
+ "@rollup/plugin-node-resolve": "^15.3.0",
54
+ "@rollup/plugin-terser": "^0.4.4",
55
+ "@web/dev-server-esbuild": "^1.0.3",
56
+ "@web/dev-server-rollup": "^0.6.4",
57
+ "@web/test-runner": "^0.19.0",
58
58
  "prettier-standard": "^16.4.1",
59
- rollup: "^3.19.1",
60
- sinon: "^15.0.2",
61
- vite: "^4.1.4",
62
- vitepress: "^1.0.0-beta.1",
63
- "vitepress-plugin-search": "^1.0.4-alpha.19"
59
+ rollup: "^4.25.0",
60
+ sinon: "^19.0.2",
61
+ vite: "^5.4.10",
62
+ vitepress: "^1.5.0",
63
+ "vitepress-plugin-search": "^1.0.4-alpha.22"
64
64
  };
65
65
 
66
66
  var packageInfo = {
@@ -822,7 +822,7 @@ var OperationStore = {
822
822
 
823
823
  let missingElement = "warn";
824
824
 
825
- var MissingElement$1 = {
825
+ var MissingElement = {
826
826
  get behavior() {
827
827
  return missingElement;
828
828
  },
@@ -832,7 +832,7 @@ var MissingElement$1 = {
832
832
  };
833
833
 
834
834
  const perform = (operations, options = {
835
- onMissingElement: MissingElement$1.behavior
835
+ onMissingElement: MissingElement.behavior
836
836
  }) => {
837
837
  const batches = {};
838
838
  operations.forEach((operation => {
@@ -891,7 +891,7 @@ const perform = (operations, options = {
891
891
  };
892
892
 
893
893
  const performAsync = (operations, options = {
894
- onMissingElement: MissingElement$1.behavior
894
+ onMissingElement: MissingElement.behavior
895
895
  }) => new Promise(((resolve, reject) => {
896
896
  try {
897
897
  resolve(perform(operations, options));
@@ -974,7 +974,7 @@ class StreamFromElement extends SubscribingElement {
974
974
  });
975
975
  }
976
976
  get onMissingElement() {
977
- const value = this.getAttribute("missing") || MissingElement$1.behavior;
977
+ const value = this.getAttribute("missing") || MissingElement.behavior;
978
978
  // stream_from does not support raising exceptions on missing elements because there's no way to catch them
979
979
  if ([ "warn", "ignore", "event" ].includes(value)) return value; else {
980
980
  console.warn("Invalid 'missing' attribute. Defaulting to 'warn'.");
@@ -1143,6 +1143,7 @@ class UpdatesForElement extends SubscribingElement {
1143
1143
  }
1144
1144
  }
1145
1145
  disconnectedCallback() {
1146
+ super.disconnectedCallback();
1146
1147
  if (this.observeAppearance) {
1147
1148
  this.appearanceObserver.stop();
1148
1149
  }
@@ -4,7 +4,7 @@
4
4
  })(this, (function(exports, morphdom) {
5
5
  "use strict";
6
6
  var name = "cable_ready";
7
- var version = "5.0.3";
7
+ var version = "5.0.6";
8
8
  var description = "CableReady helps you create great real-time user experiences by making it simple to trigger client-side DOM changes from server-side Ruby.";
9
9
  var keywords = [ "ruby", "rails", "websockets", "actioncable", "cable", "ssr", "stimulus_reflex", "client-side", "dom" ];
10
10
  var homepage = "https://cableready.stimulusreflex.com";
@@ -33,19 +33,19 @@
33
33
  morphdom: "2.6.1"
34
34
  };
35
35
  var devDependencies = {
36
- "@open-wc/testing": "^3.1.7",
37
- "@rollup/plugin-json": "^6.0.0",
38
- "@rollup/plugin-node-resolve": "^15.0.1",
39
- "@rollup/plugin-terser": "^0.4.0",
40
- "@web/dev-server-esbuild": "^0.3.3",
41
- "@web/dev-server-rollup": "^0.3.21",
42
- "@web/test-runner": "^0.15.1",
36
+ "@open-wc/testing": "^4.0.0",
37
+ "@rollup/plugin-json": "^6.1.0",
38
+ "@rollup/plugin-node-resolve": "^15.3.0",
39
+ "@rollup/plugin-terser": "^0.4.4",
40
+ "@web/dev-server-esbuild": "^1.0.3",
41
+ "@web/dev-server-rollup": "^0.6.4",
42
+ "@web/test-runner": "^0.19.0",
43
43
  "prettier-standard": "^16.4.1",
44
- rollup: "^3.19.1",
45
- sinon: "^15.0.2",
46
- vite: "^4.1.4",
47
- vitepress: "^1.0.0-beta.1",
48
- "vitepress-plugin-search": "^1.0.4-alpha.19"
44
+ rollup: "^4.25.0",
45
+ sinon: "^19.0.2",
46
+ vite: "^5.4.10",
47
+ vitepress: "^1.5.0",
48
+ "vitepress-plugin-search": "^1.0.4-alpha.22"
49
49
  };
50
50
  var packageInfo = {
51
51
  name: name,
@@ -761,7 +761,7 @@
761
761
  }
762
762
  };
763
763
  let missingElement = "warn";
764
- var MissingElement$1 = {
764
+ var MissingElement = {
765
765
  get behavior() {
766
766
  return missingElement;
767
767
  },
@@ -770,7 +770,7 @@
770
770
  }
771
771
  };
772
772
  const perform = (operations, options = {
773
- onMissingElement: MissingElement$1.behavior
773
+ onMissingElement: MissingElement.behavior
774
774
  }) => {
775
775
  const batches = {};
776
776
  operations.forEach((operation => {
@@ -828,7 +828,7 @@
828
828
  }));
829
829
  };
830
830
  const performAsync = (operations, options = {
831
- onMissingElement: MissingElement$1.behavior
831
+ onMissingElement: MissingElement.behavior
832
832
  }) => new Promise(((resolve, reject) => {
833
833
  try {
834
834
  resolve(perform(operations, options));
@@ -904,7 +904,7 @@
904
904
  });
905
905
  }
906
906
  get onMissingElement() {
907
- const value = this.getAttribute("missing") || MissingElement$1.behavior;
907
+ const value = this.getAttribute("missing") || MissingElement.behavior;
908
908
  // stream_from does not support raising exceptions on missing elements because there's no way to catch them
909
909
  if ([ "warn", "ignore", "event" ].includes(value)) return value; else {
910
910
  console.warn("Invalid 'missing' attribute. Defaulting to 'warn'.");
@@ -1062,6 +1062,7 @@
1062
1062
  }
1063
1063
  }
1064
1064
  disconnectedCallback() {
1065
+ super.disconnectedCallback();
1065
1066
  if (this.observeAppearance) {
1066
1067
  this.appearanceObserver.stop();
1067
1068
  }
data/cable_ready.gemspec CHANGED
@@ -28,6 +28,7 @@ Gem::Specification.new do |gem|
28
28
  gem.add_dependency "activesupport", rails_version
29
29
  gem.add_dependency "railties", rails_version
30
30
  gem.add_dependency "thread-local", ">= 1.1.0"
31
+ gem.add_dependency "observer", "~> 0.1"
31
32
 
32
33
  gem.add_development_dependency "magic_frozen_string_literal"
33
34
  gem.add_development_dependency "mocha"
@@ -27,7 +27,7 @@ module CableReady
27
27
  .select { |channel| channel.identifier.is_a?(String) }
28
28
  .tap do |channels|
29
29
  channels.each { |channel| @channels[channel.identifier].broadcast(clear: clear) }
30
- channels.each { |channel| @channels.except!(channel.identifier) if clear }
30
+ channels.each { |channel| clear_channel(channel) if clear }
31
31
  end
32
32
  end
33
33
 
@@ -37,8 +37,16 @@ module CableReady
37
37
  .reject { |channel| channel.identifier.is_a?(String) }
38
38
  .tap do |channels|
39
39
  channels.each { |channel| @channels[channel.identifier].broadcast_to(model, clear: clear) }
40
- channels.each { |channel| @channels.except!(channel.identifier) if clear }
40
+ channels.each { |channel| clear_channel(channel) if clear }
41
41
  end
42
42
  end
43
+
44
+ private
45
+
46
+ def clear_channel(channel)
47
+ @channels.except!(channel.identifier)
48
+ observer = CableReady.config.observers.find { |o| o.try(:identifier) == channel.identifier }
49
+ CableReady.config.delete_observer(observer) if observer
50
+ end
43
51
  end
44
52
  end