uikit 3.11.2-dev.c2430c233 → 3.11.2-dev.c7ed3c19b

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 (154) hide show
  1. package/.eslintrc.json +4 -49
  2. package/.prettierignore +14 -0
  3. package/.prettierrc.json +13 -0
  4. package/.webstorm.js +3 -3
  5. package/CHANGELOG.md +5 -0
  6. package/build/.eslintrc.json +1 -3
  7. package/build/build.js +26 -28
  8. package/build/icons.js +7 -11
  9. package/build/less.js +48 -36
  10. package/build/package.json +2 -2
  11. package/build/prefix.js +21 -18
  12. package/build/publishDev.js +6 -8
  13. package/build/release.js +20 -17
  14. package/build/scope.js +21 -11
  15. package/build/scss.js +72 -39
  16. package/build/util.js +71 -62
  17. package/build/wrapper/icons.js +0 -2
  18. package/dist/css/uikit-core-rtl.css +1 -1
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +1 -1
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +1 -1
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +1 -1
  25. package/dist/css/uikit.min.css +1 -1
  26. package/dist/js/components/countdown.js +88 -133
  27. package/dist/js/components/countdown.min.js +1 -1
  28. package/dist/js/components/filter.js +409 -438
  29. package/dist/js/components/filter.min.js +1 -1
  30. package/dist/js/components/lightbox-panel.js +1116 -1305
  31. package/dist/js/components/lightbox-panel.min.js +1 -1
  32. package/dist/js/components/lightbox.js +1164 -1383
  33. package/dist/js/components/lightbox.min.js +1 -1
  34. package/dist/js/components/notification.js +94 -114
  35. package/dist/js/components/notification.min.js +1 -1
  36. package/dist/js/components/parallax.js +294 -345
  37. package/dist/js/components/parallax.min.js +1 -1
  38. package/dist/js/components/slider-parallax.js +292 -344
  39. package/dist/js/components/slider-parallax.min.js +1 -1
  40. package/dist/js/components/slider.js +727 -850
  41. package/dist/js/components/slider.min.js +1 -1
  42. package/dist/js/components/slideshow-parallax.js +292 -344
  43. package/dist/js/components/slideshow-parallax.min.js +1 -1
  44. package/dist/js/components/slideshow.js +615 -799
  45. package/dist/js/components/slideshow.min.js +1 -1
  46. package/dist/js/components/sortable.js +588 -619
  47. package/dist/js/components/sortable.min.js +1 -1
  48. package/dist/js/components/tooltip.js +324 -356
  49. package/dist/js/components/tooltip.min.js +1 -1
  50. package/dist/js/components/upload.js +155 -167
  51. package/dist/js/components/upload.min.js +1 -1
  52. package/dist/js/uikit-core.js +5356 -6705
  53. package/dist/js/uikit-core.min.js +1 -1
  54. package/dist/js/uikit-icons.js +7 -9
  55. package/dist/js/uikit-icons.min.js +1 -1
  56. package/dist/js/uikit.js +8116 -9909
  57. package/dist/js/uikit.min.js +1 -1
  58. package/jsconfig.json +1 -1
  59. package/package.json +64 -60
  60. package/src/js/api/boot.js +25 -32
  61. package/src/js/api/component.js +23 -27
  62. package/src/js/api/global.js +6 -12
  63. package/src/js/api/hooks.js +13 -32
  64. package/src/js/api/instance.js +7 -15
  65. package/src/js/api/state.js +65 -82
  66. package/src/js/components/countdown.js +24 -50
  67. package/src/js/components/filter.js +71 -66
  68. package/src/js/components/index.js +13 -13
  69. package/src/js/components/internal/lightbox-animations.js +11 -23
  70. package/src/js/components/internal/slider-transitioner.js +66 -45
  71. package/src/js/components/internal/slideshow-animations.js +42 -61
  72. package/src/js/components/lightbox-panel.js +135 -109
  73. package/src/js/components/lightbox.js +18 -39
  74. package/src/js/components/notification.js +49 -43
  75. package/src/js/components/parallax.js +16 -30
  76. package/src/js/components/slider-parallax.js +13 -23
  77. package/src/js/components/slider.js +75 -64
  78. package/src/js/components/slideshow-parallax.js +1 -1
  79. package/src/js/components/slideshow.js +8 -13
  80. package/src/js/components/sortable.js +125 -106
  81. package/src/js/components/tooltip.js +41 -31
  82. package/src/js/components/upload.js +52 -63
  83. package/src/js/core/accordion.js +53 -48
  84. package/src/js/core/alert.js +10 -17
  85. package/src/js/core/core.js +74 -53
  86. package/src/js/core/cover.js +11 -15
  87. package/src/js/core/drop.js +106 -92
  88. package/src/js/core/form-custom.js +20 -25
  89. package/src/js/core/gif.js +3 -7
  90. package/src/js/core/grid.js +57 -58
  91. package/src/js/core/height-match.js +16 -29
  92. package/src/js/core/height-viewport.js +28 -35
  93. package/src/js/core/icon.js +38 -50
  94. package/src/js/core/img.js +59 -58
  95. package/src/js/core/index.js +39 -39
  96. package/src/js/core/leader.js +9 -18
  97. package/src/js/core/margin.js +21 -37
  98. package/src/js/core/modal.js +50 -36
  99. package/src/js/core/nav.js +2 -4
  100. package/src/js/core/navbar.js +112 -88
  101. package/src/js/core/offcanvas.js +49 -53
  102. package/src/js/core/overflow-auto.js +13 -17
  103. package/src/js/core/responsive.js +14 -12
  104. package/src/js/core/scroll.js +10 -20
  105. package/src/js/core/scrollspy-nav.js +34 -31
  106. package/src/js/core/scrollspy.js +37 -54
  107. package/src/js/core/sticky.js +130 -91
  108. package/src/js/core/svg.js +60 -79
  109. package/src/js/core/switcher.js +47 -46
  110. package/src/js/core/tab.js +7 -10
  111. package/src/js/core/toggle.js +64 -66
  112. package/src/js/core/video.js +11 -22
  113. package/src/js/mixin/animate.js +19 -20
  114. package/src/js/mixin/class.js +2 -4
  115. package/src/js/mixin/container.js +7 -11
  116. package/src/js/mixin/internal/animate-fade.js +73 -30
  117. package/src/js/mixin/internal/animate-slide.js +61 -41
  118. package/src/js/mixin/internal/slideshow-animations.js +7 -14
  119. package/src/js/mixin/internal/slideshow-transitioner.js +10 -17
  120. package/src/js/mixin/media.js +5 -10
  121. package/src/js/mixin/modal.js +89 -66
  122. package/src/js/mixin/parallax.js +53 -48
  123. package/src/js/mixin/position.js +26 -20
  124. package/src/js/mixin/slider-autoplay.js +12 -21
  125. package/src/js/mixin/slider-drag.js +64 -65
  126. package/src/js/mixin/slider-nav.js +26 -35
  127. package/src/js/mixin/slider-reactive.js +2 -8
  128. package/src/js/mixin/slider.js +51 -50
  129. package/src/js/mixin/slideshow.js +13 -19
  130. package/src/js/mixin/togglable.js +90 -63
  131. package/src/js/uikit-core.js +2 -4
  132. package/src/js/uikit.js +2 -4
  133. package/src/js/util/ajax.js +27 -43
  134. package/src/js/util/animation.js +82 -75
  135. package/src/js/util/attr.js +17 -21
  136. package/src/js/util/class.js +14 -52
  137. package/src/js/util/dimensions.js +56 -43
  138. package/src/js/util/dom.js +40 -73
  139. package/src/js/util/env.js +7 -12
  140. package/src/js/util/event.js +60 -59
  141. package/src/js/util/fastdom.js +1 -6
  142. package/src/js/util/filter.js +17 -34
  143. package/src/js/util/index.js +0 -1
  144. package/src/js/util/lang.js +79 -119
  145. package/src/js/util/mouse.js +19 -17
  146. package/src/js/util/options.js +44 -49
  147. package/src/js/util/player.js +40 -36
  148. package/src/js/util/position.js +54 -46
  149. package/src/js/util/selector.js +34 -49
  150. package/src/js/util/style.js +36 -46
  151. package/src/js/util/viewport.js +75 -64
  152. package/tests/js/index.js +114 -85
  153. package/src/js/mixin/flex-bug.js +0 -56
  154. package/src/js/util/promise.js +0 -191
@@ -1,7 +1,19 @@
1
- import {createEvent, css, Dimensions, escape, getImage, includes, isUndefined, queryAll, startsWith, toFloat, toPx, trigger} from 'uikit-util';
1
+ import {
2
+ createEvent,
3
+ css,
4
+ Dimensions,
5
+ escape,
6
+ getImage,
7
+ includes,
8
+ isUndefined,
9
+ queryAll,
10
+ startsWith,
11
+ toFloat,
12
+ toPx,
13
+ trigger,
14
+ } from 'uikit-util';
2
15
 
3
16
  export default {
4
-
5
17
  args: 'dataSrc',
6
18
 
7
19
  props: {
@@ -12,7 +24,7 @@ export default {
12
24
  height: Number,
13
25
  offsetTop: String,
14
26
  offsetLeft: String,
15
- target: String
27
+ target: String,
16
28
  },
17
29
 
18
30
  data: {
@@ -23,24 +35,23 @@ export default {
23
35
  height: false,
24
36
  offsetTop: '50vh',
25
37
  offsetLeft: '50vw',
26
- target: false
38
+ target: false,
27
39
  },
28
40
 
29
41
  computed: {
30
-
31
- cacheKey({dataSrc}) {
42
+ cacheKey({ dataSrc }) {
32
43
  return `${this.$name}.${dataSrc}`;
33
44
  },
34
45
 
35
- width({width, dataWidth}) {
46
+ width({ width, dataWidth }) {
36
47
  return width || dataWidth;
37
48
  },
38
49
 
39
- height({height, dataHeight}) {
50
+ height({ height, dataHeight }) {
40
51
  return height || dataHeight;
41
52
  },
42
53
 
43
- sizes({sizes, dataSizes}) {
54
+ sizes({ sizes, dataSizes }) {
44
55
  return sizes || dataSizes;
45
56
  },
46
57
 
@@ -49,29 +60,25 @@ export default {
49
60
  },
50
61
 
51
62
  target: {
52
-
53
- get({target}) {
63
+ get({ target }) {
54
64
  return [this.$el, ...queryAll(target, this.$el)];
55
65
  },
56
66
 
57
67
  watch() {
58
68
  this.observe();
59
- }
60
-
69
+ },
61
70
  },
62
71
 
63
- offsetTop({offsetTop}) {
72
+ offsetTop({ offsetTop }) {
64
73
  return toPx(offsetTop, 'height');
65
74
  },
66
75
 
67
- offsetLeft({offsetLeft}) {
76
+ offsetLeft({ offsetLeft }) {
68
77
  return toPx(offsetLeft, 'width');
69
- }
70
-
78
+ },
71
79
  },
72
80
 
73
81
  connected() {
74
-
75
82
  if (!window.IntersectionObserver) {
76
83
  setSrcAttrs(this.$el, this.dataSrc, this.dataSrcset, this.sizes);
77
84
  return;
@@ -84,11 +91,10 @@ export default {
84
91
  }
85
92
 
86
93
  this.observer = new IntersectionObserver(this.load, {
87
- rootMargin: `${this.offsetTop}px ${this.offsetLeft}px`
94
+ rootMargin: `${this.offsetTop}px ${this.offsetLeft}px`,
88
95
  });
89
96
 
90
97
  requestAnimationFrame(this.observe);
91
-
92
98
  },
93
99
 
94
100
  disconnected() {
@@ -96,9 +102,7 @@ export default {
96
102
  },
97
103
 
98
104
  update: {
99
-
100
- read({image}) {
101
-
105
+ read({ image }) {
102
106
  if (!this.observer) {
103
107
  return false;
104
108
  }
@@ -111,81 +115,78 @@ export default {
111
115
  return false;
112
116
  }
113
117
 
114
- image && image.then(img => img && img.currentSrc !== '' && setSrcAttrs(this.$el, currentSrc(img)));
115
-
118
+ image &&
119
+ image.then(
120
+ (img) => img && img.currentSrc !== '' && setSrcAttrs(this.$el, currentSrc(img))
121
+ );
116
122
  },
117
123
 
118
124
  write(data) {
119
-
120
125
  if (this.dataSrcset && window.devicePixelRatio !== 1) {
121
-
122
126
  const bgSize = css(this.$el, 'backgroundSize');
123
127
  if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === data.bgSize) {
124
128
  data.bgSize = getSourceSize(this.dataSrcset, this.sizes);
125
129
  css(this.$el, 'backgroundSize', `${data.bgSize}px`);
126
130
  }
127
-
128
131
  }
129
-
130
132
  },
131
133
 
132
- events: ['resize']
133
-
134
+ events: ['resize'],
134
135
  },
135
136
 
136
137
  methods: {
137
-
138
138
  load(entries) {
139
-
140
139
  // Old chromium based browsers (UC Browser) did not implement `isIntersecting`
141
- if (!entries.some(entry => isUndefined(entry.isIntersecting) || entry.isIntersecting)) {
140
+ if (
141
+ !entries.some((entry) => isUndefined(entry.isIntersecting) || entry.isIntersecting)
142
+ ) {
142
143
  return;
143
144
  }
144
145
 
145
- this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(img => {
146
-
147
- setSrcAttrs(this.$el, currentSrc(img), img.srcset, img.sizes);
148
- storage[this.cacheKey] = currentSrc(img);
149
- return img;
150
-
151
- }, e => trigger(this.$el, new e.constructor(e.type, e)));
146
+ this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(
147
+ (img) => {
148
+ setSrcAttrs(this.$el, currentSrc(img), img.srcset, img.sizes);
149
+ storage[this.cacheKey] = currentSrc(img);
150
+ return img;
151
+ },
152
+ (e) => trigger(this.$el, new e.constructor(e.type, e))
153
+ );
152
154
 
153
155
  this.observer.disconnect();
154
156
  },
155
157
 
156
158
  observe() {
157
159
  if (this._connected && !this._data.image) {
158
- this.target.forEach(el => this.observer.observe(el));
160
+ for (const el of this.target) {
161
+ this.observer.observe(el);
162
+ }
159
163
  }
160
- }
161
-
162
- }
163
-
164
+ },
165
+ },
164
166
  };
165
167
 
166
168
  function setSrcAttrs(el, src, srcset, sizes) {
167
-
168
169
  if (isImg(el)) {
169
170
  const set = (prop, val) => val && val !== el[prop] && (el[prop] = val);
170
171
  set('sizes', sizes);
171
172
  set('srcset', srcset);
172
173
  set('src', src);
173
174
  } else if (src) {
174
-
175
175
  const change = !includes(el.style.backgroundImage, src);
176
176
  if (change) {
177
177
  css(el, 'backgroundImage', `url(${escape(src)})`);
178
178
  trigger(el, createEvent('load', false));
179
179
  }
180
-
181
180
  }
182
-
183
181
  }
184
182
 
185
183
  function getPlaceholderImage(width, height, sizes) {
186
-
187
184
  if (sizes) {
188
- ({width, height} = Dimensions.ratio({width, height}, 'width', toPx(sizesToPixel(sizes))));
185
+ ({ width, height } = Dimensions.ratio(
186
+ { width, height },
187
+ 'width',
188
+ toPx(sizesToPixel(sizes))
189
+ ));
189
190
  }
190
191
 
191
192
  return `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}"></svg>`;
@@ -212,11 +213,11 @@ const additionRe = /[+-]?(\d+)/g;
212
213
  function evaluateSize(size) {
213
214
  return startsWith(size, 'calc')
214
215
  ? size
215
- .slice(5, -1)
216
- .replace(sizeRe, size => toPx(size))
217
- .replace(/ /g, '')
218
- .match(additionRe)
219
- .reduce((a, b) => a + +b, 0)
216
+ .slice(5, -1)
217
+ .replace(sizeRe, (size) => toPx(size))
218
+ .replace(/ /g, '')
219
+ .match(additionRe)
220
+ .reduce((a, b) => a + +b, 0)
220
221
  : size;
221
222
  }
222
223
 
@@ -225,7 +226,7 @@ function getSourceSize(srcset, sizes) {
225
226
  const srcSize = toPx(sizesToPixel(sizes));
226
227
  const descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort((a, b) => a - b);
227
228
 
228
- return descriptors.filter(size => size >= srcSize)[0] || descriptors.pop() || '';
229
+ return descriptors.filter((size) => size >= srcSize)[0] || descriptors.pop() || '';
229
230
  }
230
231
 
231
232
  function isImg(el) {
@@ -1,41 +1,41 @@
1
- export {default as Accordion} from './accordion';
2
- export {default as Alert} from './alert';
3
- export {default as Cover} from './cover';
4
- export {default as Drop, default as Dropdown} from './drop';
5
- export {default as FormCustom} from './form-custom';
6
- export {default as Gif} from './gif';
7
- export {default as Grid} from './grid';
8
- export {default as HeightMatch} from './height-match';
9
- export {default as HeightViewport} from './height-viewport';
10
- export {default as Icon} from './icon';
11
- export {default as Img} from './img';
12
- export {default as Leader} from './leader';
13
- export {default as Margin} from './margin';
14
- export {default as Modal} from './modal';
15
- export {default as Nav} from './nav';
16
- export {default as Navbar} from './navbar';
17
- export {default as Offcanvas} from './offcanvas';
18
- export {default as OverflowAuto} from './overflow-auto';
19
- export {default as Responsive} from './responsive';
20
- export {default as Scroll} from './scroll';
21
- export {default as Scrollspy} from './scrollspy';
22
- export {default as ScrollspyNav} from './scrollspy-nav';
23
- export {default as Sticky} from './sticky';
24
- export {default as Svg} from './svg';
25
- export {default as Switcher} from './switcher';
26
- export {default as Tab} from './tab';
27
- export {default as Toggle} from './toggle';
28
- export {default as Video} from './video';
1
+ export { default as Accordion } from './accordion';
2
+ export { default as Alert } from './alert';
3
+ export { default as Cover } from './cover';
4
+ export { default as Drop, default as Dropdown } from './drop';
5
+ export { default as FormCustom } from './form-custom';
6
+ export { default as Gif } from './gif';
7
+ export { default as Grid } from './grid';
8
+ export { default as HeightMatch } from './height-match';
9
+ export { default as HeightViewport } from './height-viewport';
10
+ export { default as Icon } from './icon';
11
+ export { default as Img } from './img';
12
+ export { default as Leader } from './leader';
13
+ export { default as Margin } from './margin';
14
+ export { default as Modal } from './modal';
15
+ export { default as Nav } from './nav';
16
+ export { default as Navbar } from './navbar';
17
+ export { default as Offcanvas } from './offcanvas';
18
+ export { default as OverflowAuto } from './overflow-auto';
19
+ export { default as Responsive } from './responsive';
20
+ export { default as Scroll } from './scroll';
21
+ export { default as Scrollspy } from './scrollspy';
22
+ export { default as ScrollspyNav } from './scrollspy-nav';
23
+ export { default as Sticky } from './sticky';
24
+ export { default as Svg } from './svg';
25
+ export { default as Switcher } from './switcher';
26
+ export { default as Tab } from './tab';
27
+ export { default as Toggle } from './toggle';
28
+ export { default as Video } from './video';
29
29
 
30
30
  // Icon components
31
- export {Close} from './icon';
32
- export {Spinner} from './icon';
33
- export {Slidenav as SlidenavNext} from './icon';
34
- export {Slidenav as SlidenavPrevious} from './icon';
35
- export {Search as SearchIcon} from './icon';
36
- export {IconComponent as Marker} from './icon';
37
- export {IconComponent as NavbarToggleIcon} from './icon';
38
- export {IconComponent as OverlayIcon} from './icon';
39
- export {IconComponent as PaginationNext} from './icon';
40
- export {IconComponent as PaginationPrevious} from './icon';
41
- export {IconComponent as Totop} from './icon';
31
+ export { Close } from './icon';
32
+ export { Spinner } from './icon';
33
+ export { Slidenav as SlidenavNext } from './icon';
34
+ export { Slidenav as SlidenavPrevious } from './icon';
35
+ export { Search as SearchIcon } from './icon';
36
+ export { IconComponent as Marker } from './icon';
37
+ export { IconComponent as NavbarToggleIcon } from './icon';
38
+ export { IconComponent as OverlayIcon } from './icon';
39
+ export { IconComponent as PaginationNext } from './icon';
40
+ export { IconComponent as PaginationPrevious } from './icon';
41
+ export { IconComponent as Totop } from './icon';
@@ -1,28 +1,25 @@
1
1
  import Class from '../mixin/class';
2
2
  import Media from '../mixin/media';
3
- import {attr, getCssVar, toggleClass, unwrap, wrapInner} from 'uikit-util';
3
+ import { attr, getCssVar, toggleClass, unwrap, wrapInner } from 'uikit-util';
4
4
 
5
5
  export default {
6
-
7
6
  mixins: [Class, Media],
8
7
 
9
8
  props: {
10
- fill: String
9
+ fill: String,
11
10
  },
12
11
 
13
12
  data: {
14
13
  fill: '',
15
14
  clsWrapper: 'uk-leader-fill',
16
15
  clsHide: 'uk-leader-hide',
17
- attrFill: 'data-fill'
16
+ attrFill: 'data-fill',
18
17
  },
19
18
 
20
19
  computed: {
21
-
22
- fill({fill}) {
20
+ fill({ fill }) {
23
21
  return fill || getCssVar('leader-fill-content');
24
- }
25
-
22
+ },
26
23
  },
27
24
 
28
25
  connected() {
@@ -34,9 +31,7 @@ export default {
34
31
  },
35
32
 
36
33
  update: {
37
-
38
- read({changed, width}) {
39
-
34
+ read({ changed, width }) {
40
35
  const prev = width;
41
36
 
42
37
  width = Math.floor(this.$el.offsetWidth / 2);
@@ -45,23 +40,19 @@ export default {
45
40
  width,
46
41
  fill: this.fill,
47
42
  changed: changed || prev !== width,
48
- hide: !this.matchMedia
43
+ hide: !this.matchMedia,
49
44
  };
50
45
  },
51
46
 
52
47
  write(data) {
53
-
54
48
  toggleClass(this.wrapper, this.clsHide, data.hide);
55
49
 
56
50
  if (data.changed) {
57
51
  data.changed = false;
58
52
  attr(this.wrapper, this.attrFill, new Array(data.width).join(data.fill));
59
53
  }
60
-
61
54
  },
62
55
 
63
- events: ['resize']
64
-
65
- }
66
-
56
+ events: ['resize'],
57
+ },
67
58
  };
@@ -1,42 +1,37 @@
1
- import {isRtl, isVisible, offsetPosition, toggleClass} from 'uikit-util';
1
+ import { isRtl, isVisible, offsetPosition, toggleClass } from 'uikit-util';
2
2
 
3
3
  export default {
4
-
5
4
  props: {
6
5
  margin: String,
7
- firstColumn: Boolean
6
+ firstColumn: Boolean,
8
7
  },
9
8
 
10
9
  data: {
11
10
  margin: 'uk-margin-small-top',
12
- firstColumn: 'uk-first-column'
11
+ firstColumn: 'uk-first-column',
13
12
  },
14
13
 
15
14
  update: {
16
-
17
15
  read() {
18
-
19
16
  const rows = getRows(this.$el.children);
20
17
 
21
18
  return {
22
19
  rows,
23
- columns: getColumns(rows)
20
+ columns: getColumns(rows),
24
21
  };
25
22
  },
26
23
 
27
- write({columns, rows}) {
28
- for (let i = 0; i < rows.length; i++) {
29
- for (let j = 0; j < rows[i].length; j++) {
30
- toggleClass(rows[i][j], this.margin, i !== 0);
31
- toggleClass(rows[i][j], this.firstColumn, !!~columns[0].indexOf(rows[i][j]));
24
+ write({ columns, rows }) {
25
+ for (const row of rows) {
26
+ for (const column of row) {
27
+ toggleClass(column, this.margin, rows[0] !== row);
28
+ toggleClass(column, this.firstColumn, !!~columns[0].indexOf(column));
32
29
  }
33
30
  }
34
31
  },
35
32
 
36
- events: ['resize']
37
-
38
- }
39
-
33
+ events: ['resize'],
34
+ },
40
35
  };
41
36
 
42
37
  export function getRows(items) {
@@ -44,38 +39,30 @@ export function getRows(items) {
44
39
  }
45
40
 
46
41
  function getColumns(rows) {
47
-
48
42
  const columns = [];
49
43
 
50
- for (let i = 0; i < rows.length; i++) {
51
- const sorted = sortBy(rows[i], 'left', 'right');
44
+ for (const row of rows) {
45
+ const sorted = sortBy(row, 'left', 'right');
52
46
  for (let j = 0; j < sorted.length; j++) {
53
- columns[j] = !columns[j] ? sorted[j] : columns[j].concat(sorted[j]);
47
+ columns[j] = columns[j] ? columns[j].concat(sorted[j]) : sorted[j];
54
48
  }
55
49
  }
56
50
 
57
- return isRtl
58
- ? columns.reverse()
59
- : columns;
51
+ return isRtl ? columns.reverse() : columns;
60
52
  }
61
53
 
62
54
  function sortBy(items, startProp, endProp) {
63
-
64
55
  const sorted = [[]];
65
56
 
66
- for (let i = 0; i < items.length; i++) {
67
-
68
- const el = items[i];
69
-
57
+ for (const el of items) {
70
58
  if (!isVisible(el)) {
71
59
  continue;
72
60
  }
73
61
 
74
62
  let dim = getOffset(el);
75
63
 
76
- for (let j = sorted.length - 1; j >= 0; j--) {
77
-
78
- const current = sorted[j];
64
+ for (let i = sorted.length - 1; i >= 0; i--) {
65
+ const current = sorted[i];
79
66
 
80
67
  if (!current[0]) {
81
68
  current.push(el);
@@ -100,21 +87,18 @@ function sortBy(items, startProp, endProp) {
100
87
  break;
101
88
  }
102
89
 
103
- if (j === 0) {
90
+ if (i === 0) {
104
91
  sorted.unshift([el]);
105
92
  break;
106
93
  }
107
-
108
94
  }
109
-
110
95
  }
111
96
 
112
97
  return sorted;
113
98
  }
114
99
 
115
100
  function getOffset(element, offset = false) {
116
-
117
- let {offsetTop, offsetLeft, offsetHeight, offsetWidth} = element;
101
+ let { offsetTop, offsetLeft, offsetHeight, offsetWidth } = element;
118
102
 
119
103
  if (offset) {
120
104
  [offsetTop, offsetLeft] = offsetPosition(element);
@@ -124,6 +108,6 @@ function getOffset(element, offset = false) {
124
108
  top: offsetTop,
125
109
  left: offsetLeft,
126
110
  bottom: offsetTop + offsetHeight,
127
- right: offsetLeft + offsetWidth
111
+ right: offsetLeft + offsetWidth,
128
112
  };
129
113
  }