react-grid-layout 1.2.4 → 1.3.2

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.
Files changed (52) hide show
  1. package/.babelrc.js +3 -2
  2. package/.eslintignore +3 -0
  3. package/.flowconfig +1 -3
  4. package/.prettierignore +1 -0
  5. package/CHANGELOG.md +371 -236
  6. package/README.md +122 -62
  7. package/build/GridItem.js +12 -12
  8. package/build/ReactGridLayout.js +306 -325
  9. package/build/ReactGridLayoutPropTypes.js +11 -5
  10. package/build/ResponsiveReactGridLayout.js +16 -10
  11. package/build/calculateUtils.js +8 -8
  12. package/build/components/WidthProvider.js +11 -9
  13. package/build/fastRGLPropsEqual.js +1 -1
  14. package/build/responsiveUtils.js +1 -1
  15. package/build/utils.js +48 -53
  16. package/coverage/clover.xml +761 -0
  17. package/coverage/coverage-final.json +15 -0
  18. package/coverage/lcov-report/base.css +224 -0
  19. package/coverage/lcov-report/block-navigation.js +87 -0
  20. package/coverage/lcov-report/favicon.png +0 -0
  21. package/coverage/lcov-report/prettify.css +1 -0
  22. package/coverage/lcov-report/prettify.js +2 -0
  23. package/coverage/lcov-report/react-grid-layout/index-dev.js.html +104 -0
  24. package/coverage/lcov-report/react-grid-layout/lib/GridItem.jsx.html +2099 -0
  25. package/coverage/lcov-report/react-grid-layout/lib/ReactGridLayout.jsx.html +2453 -0
  26. package/coverage/lcov-report/react-grid-layout/lib/ReactGridLayoutPropTypes.js.html +833 -0
  27. package/coverage/lcov-report/react-grid-layout/lib/ResponsiveReactGridLayout.jsx.html +1133 -0
  28. package/coverage/lcov-report/react-grid-layout/lib/calculateUtils.js.html +557 -0
  29. package/coverage/lcov-report/react-grid-layout/lib/components/WidthProvider.jsx.html +410 -0
  30. package/coverage/lcov-report/react-grid-layout/lib/fastRGLPropsEqual.js.html +224 -0
  31. package/coverage/lcov-report/react-grid-layout/lib/responsiveUtils.js.html +440 -0
  32. package/coverage/lcov-report/react-grid-layout/lib/utils.js.html +2456 -0
  33. package/coverage/lcov-report/react-grid-layout/test/examples/0-showcase.jsx.html +521 -0
  34. package/coverage/lcov-report/react-grid-layout/test/examples/1-basic.jsx.html +284 -0
  35. package/coverage/lcov-report/react-grid-layout/test/examples/15-drag-from-outside.jsx.html +506 -0
  36. package/coverage/lcov-report/react-grid-layout/test/util/deepFreeze.js.html +248 -0
  37. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  38. package/coverage/lcov-report/sorter.js +196 -0
  39. package/coverage/lcov.info +1584 -0
  40. package/dist/react-grid-layout.min.js +1 -2
  41. package/dist/react-grid-layout.min.js.map +1 -1
  42. package/index.js +4 -2
  43. package/lib/GridItem.jsx +15 -10
  44. package/lib/ReactGridLayout.jsx +101 -62
  45. package/lib/ReactGridLayoutPropTypes.js +38 -17
  46. package/lib/ResponsiveReactGridLayout.jsx +7 -1
  47. package/lib/components/WidthProvider.jsx +2 -2
  48. package/lib/utils.js +45 -40
  49. package/package.json +48 -34
  50. package/.husky/pre-commit +0 -6
  51. package/.travis.yml +0 -9
  52. package/dist/react-grid-layout.min.js.LICENSE.txt +0 -5
@@ -0,0 +1,557 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for react-grid-layout/lib/calculateUtils.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">react-grid-layout/lib</a> calculateUtils.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">94.11% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>32/34</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">90% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>9/10</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>6/6</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">93.93% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>31/33</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
224
+ <span class="cline-any cline-neutral">&nbsp;</span>
225
+ <span class="cline-any cline-neutral">&nbsp;</span>
226
+ <span class="cline-any cline-neutral">&nbsp;</span>
227
+ <span class="cline-any cline-neutral">&nbsp;</span>
228
+ <span class="cline-any cline-neutral">&nbsp;</span>
229
+ <span class="cline-any cline-neutral">&nbsp;</span>
230
+ <span class="cline-any cline-neutral">&nbsp;</span>
231
+ <span class="cline-any cline-neutral">&nbsp;</span>
232
+ <span class="cline-any cline-neutral">&nbsp;</span>
233
+ <span class="cline-any cline-neutral">&nbsp;</span>
234
+ <span class="cline-any cline-neutral">&nbsp;</span>
235
+ <span class="cline-any cline-neutral">&nbsp;</span>
236
+ <span class="cline-any cline-neutral">&nbsp;</span>
237
+ <span class="cline-any cline-yes">2156x</span>
238
+ <span class="cline-any cline-yes">2156x</span>
239
+ <span class="cline-any cline-neutral">&nbsp;</span>
240
+ <span class="cline-any cline-neutral">&nbsp;</span>
241
+ <span class="cline-any cline-neutral">&nbsp;</span>
242
+ <span class="cline-any cline-neutral">&nbsp;</span>
243
+ <span class="cline-any cline-neutral">&nbsp;</span>
244
+ <span class="cline-any cline-neutral">&nbsp;</span>
245
+ <span class="cline-any cline-neutral">&nbsp;</span>
246
+ <span class="cline-any cline-neutral">&nbsp;</span>
247
+ <span class="cline-any cline-neutral">&nbsp;</span>
248
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-neutral">&nbsp;</span>
250
+ <span class="cline-any cline-neutral">&nbsp;</span>
251
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-neutral">&nbsp;</span>
253
+ <span class="cline-any cline-yes">4276x</span>
254
+ <span class="cline-any cline-yes">3430x</span>
255
+ <span class="cline-any cline-neutral">&nbsp;</span>
256
+ <span class="cline-any cline-neutral">&nbsp;</span>
257
+ <span class="cline-any cline-neutral">&nbsp;</span>
258
+ <span class="cline-any cline-neutral">&nbsp;</span>
259
+ <span class="cline-any cline-neutral">&nbsp;</span>
260
+ <span class="cline-any cline-neutral">&nbsp;</span>
261
+ <span class="cline-any cline-neutral">&nbsp;</span>
262
+ <span class="cline-any cline-neutral">&nbsp;</span>
263
+ <span class="cline-any cline-neutral">&nbsp;</span>
264
+ <span class="cline-any cline-neutral">&nbsp;</span>
265
+ <span class="cline-any cline-neutral">&nbsp;</span>
266
+ <span class="cline-any cline-neutral">&nbsp;</span>
267
+ <span class="cline-any cline-neutral">&nbsp;</span>
268
+ <span class="cline-any cline-neutral">&nbsp;</span>
269
+ <span class="cline-any cline-neutral">&nbsp;</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</span>
272
+ <span class="cline-any cline-neutral">&nbsp;</span>
273
+ <span class="cline-any cline-neutral">&nbsp;</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-neutral">&nbsp;</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-yes">2137x</span>
278
+ <span class="cline-any cline-yes">2137x</span>
279
+ <span class="cline-any cline-yes">2137x</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-yes">2137x</span>
283
+ <span class="cline-any cline-no">&nbsp;</span>
284
+ <span class="cline-any cline-no">&nbsp;</span>
285
+ <span class="cline-any cline-neutral">&nbsp;</span>
286
+ <span class="cline-any cline-neutral">&nbsp;</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-yes">2137x</span>
289
+ <span class="cline-any cline-yes">2137x</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
291
+ <span class="cline-any cline-neutral">&nbsp;</span>
292
+ <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-yes">2137x</span>
294
+ <span class="cline-any cline-yes">14x</span>
295
+ <span class="cline-any cline-yes">14x</span>
296
+ <span class="cline-any cline-neutral">&nbsp;</span>
297
+ <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-neutral">&nbsp;</span>
299
+ <span class="cline-any cline-yes">2123x</span>
300
+ <span class="cline-any cline-yes">2123x</span>
301
+ <span class="cline-any cline-neutral">&nbsp;</span>
302
+ <span class="cline-any cline-neutral">&nbsp;</span>
303
+ <span class="cline-any cline-yes">2137x</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-neutral">&nbsp;</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-neutral">&nbsp;</span>
309
+ <span class="cline-any cline-neutral">&nbsp;</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-neutral">&nbsp;</span>
312
+ <span class="cline-any cline-neutral">&nbsp;</span>
313
+ <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-neutral">&nbsp;</span>
315
+ <span class="cline-any cline-neutral">&nbsp;</span>
316
+ <span class="cline-any cline-neutral">&nbsp;</span>
317
+ <span class="cline-any cline-neutral">&nbsp;</span>
318
+ <span class="cline-any cline-neutral">&nbsp;</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-neutral">&nbsp;</span>
322
+ <span class="cline-any cline-yes">11x</span>
323
+ <span class="cline-any cline-yes">11x</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-neutral">&nbsp;</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span>
329
+ <span class="cline-any cline-neutral">&nbsp;</span>
330
+ <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-yes">11x</span>
333
+ <span class="cline-any cline-yes">11x</span>
334
+ <span class="cline-any cline-neutral">&nbsp;</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-yes">11x</span>
337
+ <span class="cline-any cline-yes">11x</span>
338
+ <span class="cline-any cline-yes">11x</span>
339
+ <span class="cline-any cline-neutral">&nbsp;</span>
340
+ <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
+ <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-neutral">&nbsp;</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-yes">3x</span>
358
+ <span class="cline-any cline-yes">3x</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-yes">3x</span>
364
+ <span class="cline-any cline-yes">3x</span>
365
+ <span class="cline-any cline-neutral">&nbsp;</span>
366
+ <span class="cline-any cline-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-yes">3x</span>
368
+ <span class="cline-any cline-yes">3x</span>
369
+ <span class="cline-any cline-yes">3x</span>
370
+ <span class="cline-any cline-neutral">&nbsp;</span>
371
+ <span class="cline-any cline-neutral">&nbsp;</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-yes">30x</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// @flow
381
+ import type { Position } from "./utils";
382
+ &nbsp;
383
+ export type PositionParams = {
384
+ margin: [number, number],
385
+ containerPadding: [number, number],
386
+ containerWidth: number,
387
+ cols: number,
388
+ rowHeight: number,
389
+ maxRows: number
390
+ };
391
+ &nbsp;
392
+ // Helper for generating column width
393
+ export function calcGridColWidth(positionParams: PositionParams): number {
394
+ const { margin, containerPadding, containerWidth, cols } = positionParams;
395
+ return (
396
+ (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols
397
+ );
398
+ }
399
+ &nbsp;
400
+ // This can either be called:
401
+ // calcGridItemWHPx(w, colWidth, margin[0])
402
+ // or
403
+ // calcGridItemWHPx(h, rowHeight, margin[1])
404
+ export function calcGridItemWHPx(
405
+ gridUnits: number,
406
+ colOrRowSize: number,
407
+ marginPx: number
408
+ ): number {
409
+ // 0 * Infinity === NaN, which causes problems with resize contraints
410
+ if (!Number.isFinite(gridUnits)) return gridUnits;
411
+ return Math.round(
412
+ colOrRowSize * gridUnits + Math.max(0, gridUnits - 1) * marginPx
413
+ );
414
+ }
415
+ &nbsp;
416
+ /**
417
+ * Return position on the page given an x, y, w, h.
418
+ * left, top, width, height are all in pixels.
419
+ * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations.
420
+ * @param {Number} x X coordinate in grid units.
421
+ * @param {Number} y Y coordinate in grid units.
422
+ * @param {Number} w W coordinate in grid units.
423
+ * @param {Number} h H coordinate in grid units.
424
+ * @return {Position} Object containing coords.
425
+ */
426
+ export function calcGridItemPosition(
427
+ positionParams: PositionParams,
428
+ x: number,
429
+ y: number,
430
+ w: number,
431
+ h: number,
432
+ state: ?Object
433
+ ): Position {
434
+ const { margin, containerPadding, rowHeight } = positionParams;
435
+ const colWidth = calcGridColWidth(positionParams);
436
+ const out = {};
437
+ &nbsp;
438
+ // If resizing, use the exact width and height as returned from resizing callbacks.
439
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (state &amp;&amp; state.resizing) {
440
+ <span class="cstat-no" title="statement not covered" > out.width = Math.round(state.resizing.width);</span>
441
+ <span class="cstat-no" title="statement not covered" > out.height = Math.round(state.resizing.height);</span>
442
+ }
443
+ // Otherwise, calculate from grid units.
444
+ else {
445
+ out.width = calcGridItemWHPx(w, colWidth, margin[0]);
446
+ out.height = calcGridItemWHPx(h, rowHeight, margin[1]);
447
+ }
448
+ &nbsp;
449
+ // If dragging, use the exact width and height as returned from dragging callbacks.
450
+ if (state &amp;&amp; state.dragging) {
451
+ out.top = Math.round(state.dragging.top);
452
+ out.left = Math.round(state.dragging.left);
453
+ }
454
+ // Otherwise, calculate from grid units.
455
+ else {
456
+ out.top = Math.round((rowHeight + margin[1]) * y + containerPadding[1]);
457
+ out.left = Math.round((colWidth + margin[0]) * x + containerPadding[0]);
458
+ }
459
+ &nbsp;
460
+ return out;
461
+ }
462
+ &nbsp;
463
+ /**
464
+ * Translate x and y coordinates from pixels to grid units.
465
+ * @param {PositionParams} positionParams Parameters of grid needed for coordinates calculations.
466
+ * @param {Number} top Top position (relative to parent) in pixels.
467
+ * @param {Number} left Left position (relative to parent) in pixels.
468
+ * @param {Number} w W coordinate in grid units.
469
+ * @param {Number} h H coordinate in grid units.
470
+ * @return {Object} x and y in grid units.
471
+ */
472
+ export function calcXY(
473
+ positionParams: PositionParams,
474
+ top: number,
475
+ left: number,
476
+ w: number,
477
+ h: number
478
+ ): { x: number, y: number } {
479
+ const { margin, cols, rowHeight, maxRows } = positionParams;
480
+ const colWidth = calcGridColWidth(positionParams);
481
+ &nbsp;
482
+ // left = colWidth * x + margin * (x + 1)
483
+ // l = cx + m(x+1)
484
+ // l = cx + mx + m
485
+ // l - m = cx + mx
486
+ // l - m = x(c + m)
487
+ // (l - m) / (c + m) = x
488
+ // x = (left - margin) / (coldWidth + margin)
489
+ let x = Math.round((left - margin[0]) / (colWidth + margin[0]));
490
+ let y = Math.round((top - margin[1]) / (rowHeight + margin[1]));
491
+ &nbsp;
492
+ // Capping
493
+ x = clamp(x, 0, cols - w);
494
+ y = clamp(y, 0, maxRows - h);
495
+ return { x, y };
496
+ }
497
+ &nbsp;
498
+ /**
499
+ * Given a height and width in pixel values, calculate grid units.
500
+ * @param {PositionParams} positionParams Parameters of grid needed for coordinates calcluations.
501
+ * @param {Number} height Height in pixels.
502
+ * @param {Number} width Width in pixels.
503
+ * @param {Number} x X coordinate in grid units.
504
+ * @param {Number} y Y coordinate in grid units.
505
+ * @return {Object} w, h as grid units.
506
+ */
507
+ export function calcWH(
508
+ positionParams: PositionParams,
509
+ width: number,
510
+ height: number,
511
+ x: number,
512
+ y: number
513
+ ): { w: number, h: number } {
514
+ const { margin, maxRows, cols, rowHeight } = positionParams;
515
+ const colWidth = calcGridColWidth(positionParams);
516
+ &nbsp;
517
+ // width = colWidth * w - (margin * (w - 1))
518
+ // ...
519
+ // w = (width + margin) / (colWidth + margin)
520
+ let w = Math.round((width + margin[0]) / (colWidth + margin[0]));
521
+ let h = Math.round((height + margin[1]) / (rowHeight + margin[1]));
522
+ &nbsp;
523
+ // Capping
524
+ w = clamp(w, 0, cols - x);
525
+ h = clamp(h, 0, maxRows - y);
526
+ return { w, h };
527
+ }
528
+ &nbsp;
529
+ // Similar to _.clamp
530
+ export function clamp(
531
+ num: number,
532
+ lowerBound: number,
533
+ upperBound: number
534
+ ): number {
535
+ return Math.max(Math.min(num, upperBound), lowerBound);
536
+ }
537
+ &nbsp;</pre></td></tr></table></pre>
538
+
539
+ <div class='push'></div><!-- for sticky footer -->
540
+ </div><!-- /wrapper -->
541
+ <div class='footer quiet pad2 space-top1 center small'>
542
+ Code coverage generated by
543
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener">istanbul</a>
544
+ at Mon Jan 24 2022 09:12:15 GMT-0500 (Eastern Standard Time)
545
+ </div>
546
+ </div>
547
+ <script src="../../prettify.js"></script>
548
+ <script>
549
+ window.onload = function () {
550
+ prettyPrint();
551
+ };
552
+ </script>
553
+ <script src="../../sorter.js"></script>
554
+ <script src="../../block-navigation.js"></script>
555
+ </body>
556
+ </html>
557
+