happo 2.0.7 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 43b95ce6006d5d5246bca90fe6fafc4069d8455b
4
- data.tar.gz: ccf5377c3bdde8d7c5d26f62cb20ed8528003856
3
+ metadata.gz: 6ab62af6f8c5cba90963fcca9ffa73576b2f161f
4
+ data.tar.gz: c12b3dcee9e5f6c0935333494214b693faa09258
5
5
  SHA512:
6
- metadata.gz: cd127962736543218ba0358f0d237f45e72847432301711f48390aa7a8b12327c9bb8f622b4f2ca296de4b25cbb2f8eec62050eec659909fac67b896cdf4c190
7
- data.tar.gz: 5611ae5b5f23aab6fa0ae94e729641b4a316684acd209384830aebef1d1452945c72012dd2bd64d360bd27228b4d3d43367092315e5dba93183541ab73e8fa84
6
+ metadata.gz: 743c15567f974688f373a3e1d114509013c1f357b803b00273cfb39691462e6d5a5b072ceb2f87c138fcec4a0b408efe0e4eba674587c69e4874aa066e2f07aa
7
+ data.tar.gz: 56d4de2b0e53e73ed4cd85823d6641be136537b354feb9edf500be578289d9a718e0d493f4c5f4fe76fc7d64c3a4ff4ebaae0811e25b43e7a36ebb40f4c3787f
@@ -153,6 +153,50 @@ window.happo = {
153
153
  }
154
154
  },
155
155
 
156
+ // This function takes a node and a box object that we will mutate.
157
+ getFullRectRecursive: function(node, box) {
158
+ var rect = node.getBoundingClientRect();
159
+
160
+ box.bottom = Math.max(box.bottom, rect.bottom);
161
+ box.left = Math.min(box.left, rect.left);
162
+ box.right = Math.max(box.right, rect.right);
163
+ box.top = Math.min(box.top, rect.top);
164
+
165
+ for (var i = 0; i < node.children.length; i++) {
166
+ getFullRectRecursive(node.children[i], box);
167
+ }
168
+ },
169
+
170
+ // This function gets the full size of the given node, including all
171
+ // descendent nodes. This allows us to ensure that the screenshot includes
172
+ // absolutely positioned elements. It is important that this is fast, since we
173
+ // may be iterating over a high number of nodes.
174
+ getFullRect: function(node) {
175
+ var rect = node.getBoundingClientRect();
176
+
177
+ // Set up the initial object that we will mutate in our recursive function.
178
+ var box = {
179
+ bottom: rect.bottom,
180
+ left: rect.left,
181
+ right: rect.right,
182
+ top: rect.top,
183
+ };
184
+
185
+ // If there are any children, we want to iterate over them recursively,
186
+ // mutating our box object along the way to expand to include all descendent
187
+ // nodes.
188
+ for (var i = 0; i < node.children.length; i++) {
189
+ getFullRectRecursive(node.children[i], box);
190
+ }
191
+
192
+ // Do width and height calculations at the end, to avoid having to do them
193
+ // for every node.
194
+ box.width = box.right - box.left;
195
+ box.height = box.bottom - box.top;
196
+
197
+ return box;
198
+ },
199
+
156
200
  processElem: function(currentExample, elem) {
157
201
  try {
158
202
  this.currentRenderedElement = elem;
@@ -166,14 +210,9 @@ window.happo = {
166
210
  left: 0,
167
211
  };
168
212
  } else {
169
- // We use elem.getBoundingClientRect() instead of offsetTop and its ilk
170
- // because elem.getBoundingClientRect() is more accurate and it also
171
- // takes CSS transformations and other things of that nature into
172
- // account whereas offsetTop and company do not.
173
- //
174
213
  // Note that this method returns floats, so we need to round those off
175
214
  // to integers before returning.
176
- rect = elem.getBoundingClientRect();
215
+ rect = this.getFullRect(elem);
177
216
  }
178
217
 
179
218
  return {
data/lib/happo/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # Defines the gem version.
2
2
  module Happo
3
- VERSION = '2.0.7'
3
+ VERSION = '2.1.0'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: happo
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.7
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henric Trotzig
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-08-05 00:00:00.000000000 Z
12
+ date: 2016-08-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chunky_png