uikit 3.25.20-dev.e4f47fc → 3.25.20

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 (201) hide show
  1. package/CHANGELOG.md +2 -33
  2. package/build/prefix.js +1 -1
  3. package/build/publishDev.js +1 -1
  4. package/build/scope.js +1 -1
  5. package/build/scss.js +1 -1
  6. package/dist/css/uikit-core-rtl.css +917 -1045
  7. package/dist/css/uikit-core-rtl.min.css +1 -1
  8. package/dist/css/uikit-core.css +917 -1045
  9. package/dist/css/uikit-core.min.css +1 -1
  10. package/dist/css/uikit-rtl.css +936 -1064
  11. package/dist/css/uikit-rtl.min.css +1 -1
  12. package/dist/css/uikit.css +936 -1064
  13. package/dist/css/uikit.min.css +1 -1
  14. package/dist/js/components/countdown.js +1 -1
  15. package/dist/js/components/countdown.min.js +1 -1
  16. package/dist/js/components/filter.js +1 -1
  17. package/dist/js/components/filter.min.js +1 -1
  18. package/dist/js/components/lightbox-panel.js +132 -133
  19. package/dist/js/components/lightbox-panel.min.js +1 -1
  20. package/dist/js/components/lightbox.js +133 -134
  21. package/dist/js/components/lightbox.min.js +1 -1
  22. package/dist/js/components/notification.js +1 -1
  23. package/dist/js/components/notification.min.js +1 -1
  24. package/dist/js/components/parallax.js +12 -8
  25. package/dist/js/components/parallax.min.js +1 -1
  26. package/dist/js/components/slider-parallax.js +12 -8
  27. package/dist/js/components/slider-parallax.min.js +1 -1
  28. package/dist/js/components/slider.js +25 -41
  29. package/dist/js/components/slider.min.js +1 -1
  30. package/dist/js/components/slideshow-parallax.js +12 -8
  31. package/dist/js/components/slideshow-parallax.min.js +1 -1
  32. package/dist/js/components/slideshow.js +102 -71
  33. package/dist/js/components/slideshow.min.js +1 -1
  34. package/dist/js/components/sortable.js +1 -1
  35. package/dist/js/components/sortable.min.js +1 -1
  36. package/dist/js/components/tooltip.js +19 -19
  37. package/dist/js/components/tooltip.min.js +1 -1
  38. package/dist/js/components/upload.js +1 -1
  39. package/dist/js/components/upload.min.js +1 -1
  40. package/dist/js/uikit-core.js +262 -752
  41. package/dist/js/uikit-core.min.js +1 -1
  42. package/dist/js/uikit-icons.js +1 -1
  43. package/dist/js/uikit-icons.min.js +1 -1
  44. package/dist/js/uikit.js +374 -627
  45. package/dist/js/uikit.min.js +1 -1
  46. package/package.json +1 -1
  47. package/src/js/api/component.js +3 -2
  48. package/src/js/api/observables.js +4 -2
  49. package/src/js/api/options.js +3 -6
  50. package/src/js/api/props.js +4 -1
  51. package/src/js/api/state.js +8 -7
  52. package/src/js/components/index.js +0 -1
  53. package/src/js/components/internal/lightbox-animations.js +26 -7
  54. package/src/js/components/internal/slideshow-animations.js +62 -15
  55. package/src/js/components/lightbox-panel.js +96 -121
  56. package/src/js/components/lightbox.js +8 -5
  57. package/src/js/components/tooltip.js +2 -4
  58. package/src/js/core/accordion.js +29 -78
  59. package/src/js/core/drop.js +4 -5
  60. package/src/js/core/dropnav.js +3 -3
  61. package/src/js/core/grid.js +19 -5
  62. package/src/js/core/height-match.js +2 -1
  63. package/src/js/core/margin.js +0 -3
  64. package/src/js/core/overflow-fade.js +5 -5
  65. package/src/js/core/sticky.js +1 -1
  66. package/src/js/core/switcher.js +44 -24
  67. package/src/js/core/video.js +15 -172
  68. package/src/js/mixin/internal/slideshow-animations.js +13 -5
  69. package/src/js/mixin/internal/slideshow-transitioner.js +2 -2
  70. package/src/js/mixin/modal.js +3 -4
  71. package/src/js/mixin/parallax.js +4 -1
  72. package/src/js/mixin/position.js +1 -1
  73. package/src/js/mixin/slider-nav.js +1 -1
  74. package/src/js/mixin/slider-parallax.js +38 -9
  75. package/src/js/mixin/togglable.js +14 -13
  76. package/src/js/util/attr.js +7 -7
  77. package/src/js/util/class.js +1 -1
  78. package/src/js/util/dom.js +4 -3
  79. package/src/js/util/lang.js +1 -1
  80. package/src/js/util/player.js +4 -4
  81. package/src/js/util/style.js +15 -10
  82. package/src/js/util/viewport.js +25 -22
  83. package/src/less/components/_import.less +1 -6
  84. package/src/less/components/base.less +1 -1
  85. package/src/less/components/button.less +1 -1
  86. package/src/less/components/form.less +5 -5
  87. package/src/less/components/grid.less +65 -58
  88. package/src/less/components/margin.less +124 -155
  89. package/src/less/components/nav.less +1 -1
  90. package/src/less/components/padding.less +9 -9
  91. package/src/less/components/text.less +0 -6
  92. package/src/less/components/utility.less +163 -0
  93. package/src/less/theme/_import.less +1 -5
  94. package/src/less/theme/utility.less +32 -0
  95. package/src/scss/components/_import.scss +1 -6
  96. package/src/scss/components/base.scss +1 -1
  97. package/src/scss/components/button.scss +1 -1
  98. package/src/scss/components/form.scss +5 -5
  99. package/src/scss/components/grid.scss +64 -57
  100. package/src/scss/components/margin.scss +124 -155
  101. package/src/scss/components/nav.scss +1 -1
  102. package/src/scss/components/padding.scss +9 -9
  103. package/src/scss/components/text.scss +0 -6
  104. package/src/scss/components/utility.scss +129 -0
  105. package/src/scss/mixins-theme.scss +33 -42
  106. package/src/scss/mixins.scss +30 -39
  107. package/src/scss/variables-theme.scss +14 -14
  108. package/src/scss/variables.scss +14 -14
  109. package/tests/accordion.html +10 -77
  110. package/tests/alert.html +1 -1
  111. package/tests/align.html +5 -5
  112. package/tests/animation.html +4 -4
  113. package/tests/article.html +7 -7
  114. package/tests/background.html +2 -2
  115. package/tests/badge.html +1 -1
  116. package/tests/base.html +3 -3
  117. package/tests/button.html +1 -1
  118. package/tests/card.html +15 -15
  119. package/tests/close.html +2 -2
  120. package/tests/comment.html +9 -9
  121. package/tests/container.html +2 -2
  122. package/tests/countdown.html +21 -21
  123. package/tests/cover.html +6 -6
  124. package/tests/description-list.html +1 -1
  125. package/tests/divider.html +3 -3
  126. package/tests/dotnav.html +1 -1
  127. package/tests/drop.html +7 -7
  128. package/tests/dropbar.html +5 -5
  129. package/tests/dropdown.html +1 -1
  130. package/tests/dropnav.html +18 -18
  131. package/tests/filter.html +3 -3
  132. package/tests/form.html +14 -14
  133. package/tests/grid.html +47 -41
  134. package/tests/heading.html +2 -2
  135. package/tests/height-viewport.html +4 -4
  136. package/tests/height.html +5 -5
  137. package/tests/icon.html +8 -8
  138. package/tests/image.html +6 -6
  139. package/tests/index.html +13 -13
  140. package/tests/js/index.js +1 -1
  141. package/tests/leader.html +5 -5
  142. package/tests/lightbox.html +14 -14
  143. package/tests/link.html +1 -1
  144. package/tests/list.html +4 -4
  145. package/tests/margin.html +7 -7
  146. package/tests/marker.html +3 -3
  147. package/tests/modal.html +4 -4
  148. package/tests/nav.html +5 -5
  149. package/tests/navbar.html +27 -27
  150. package/tests/notification.html +2 -2
  151. package/tests/offcanvas.html +12 -12
  152. package/tests/overlay.html +3 -3
  153. package/tests/padding.html +1 -1
  154. package/tests/pagination.html +3 -3
  155. package/tests/parallax.html +1 -1
  156. package/tests/position.html +6 -6
  157. package/tests/scrollspy.html +12 -12
  158. package/tests/search.html +5 -5
  159. package/tests/section.html +17 -17
  160. package/tests/slidenav.html +3 -3
  161. package/tests/slider.html +5 -5
  162. package/tests/slideshow.html +4 -34
  163. package/tests/sortable.html +15 -15
  164. package/tests/sticky-navbar.html +4 -4
  165. package/tests/sticky-parallax.html +3 -3
  166. package/tests/sticky.html +3 -3
  167. package/tests/svg.html +2 -3
  168. package/tests/switcher.html +6 -6
  169. package/tests/tab.html +4 -4
  170. package/tests/text.html +3 -3
  171. package/tests/tile.html +4 -4
  172. package/tests/toggle.html +1 -1
  173. package/tests/tooltip.html +3 -3
  174. package/tests/totop.html +2 -2
  175. package/tests/transition.html +1 -1
  176. package/tests/upload.html +5 -5
  177. package/tests/utility.html +116 -16
  178. package/tests/video.html +27 -227
  179. package/tests/visibility.html +4 -4
  180. package/tests/width.html +12 -12
  181. package/dist/js/components/marquee.js +0 -179
  182. package/dist/js/components/marquee.min.js +0 -1
  183. package/src/js/components/marquee.js +0 -123
  184. package/src/js/mixin/connect.js +0 -55
  185. package/src/js/mixin/scroll-driven.js +0 -57
  186. package/src/less/components/dropcap.less +0 -71
  187. package/src/less/components/floating-shadow.less +0 -66
  188. package/src/less/components/logo.less +0 -94
  189. package/src/less/components/marquee.less +0 -133
  190. package/src/less/theme/dropcap.less +0 -29
  191. package/src/less/theme/floating-shadow.less +0 -20
  192. package/src/less/theme/logo.less +0 -29
  193. package/src/less/theme/marquee.less +0 -14
  194. package/src/scss/components/dropcap.scss +0 -63
  195. package/src/scss/components/floating-shadow.scss +0 -63
  196. package/src/scss/components/logo.scss +0 -75
  197. package/src/scss/components/marquee.scss +0 -136
  198. package/tests/dropcap.html +0 -26
  199. package/tests/floating-shadow.html +0 -44
  200. package/tests/logo.html +0 -84
  201. package/tests/marquee.html +0 -617
package/dist/js/uikit.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.25.20-dev.e4f47fc | https://www.getuikit.com | (c) 2014 - 2026 YOOtheme | MIT License */
1
+ /*! UIkit 3.25.20 | https://www.getuikit.com | (c) 2014 - 2026 YOOtheme | MIT License */
2
2
 
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -134,7 +134,7 @@
134
134
  return array.filter(({ [prop]: check }) => seen.has(check) ? false : seen.add(check));
135
135
  }
136
136
  function pick(obj, props) {
137
- return Object.fromEntries(props.map((key) => [key, obj[key]]));
137
+ return props.reduce((res, prop) => ({ ...res, [prop]: obj[prop] }), {});
138
138
  }
139
139
  function clamp(number, min = 0, max = 1) {
140
140
  return Math.min(Math.max(toNumber(number) || 0, min), max);
@@ -230,7 +230,7 @@
230
230
  }
231
231
  }
232
232
  function toClasses(str) {
233
- return str ? isArray(str) ? str.flatMap(toClasses) : String(str).split(" ").filter(Boolean) : [];
233
+ return str ? isArray(str) ? str.map(toClasses).flat() : String(str).split(" ").filter(Boolean) : [];
234
234
  }
235
235
 
236
236
  function attr(element, name, value) {
@@ -243,12 +243,13 @@
243
243
  }
244
244
  if (isUndefined(value)) {
245
245
  return (_a = toNode(element)) == null ? void 0 : _a.getAttribute(name);
246
- }
247
- for (const el of toNodes(element)) {
248
- if (value === null) {
249
- removeAttr(el, name);
250
- } else {
251
- el.setAttribute(name, value);
246
+ } else {
247
+ for (const el of toNodes(element)) {
248
+ if (value === null) {
249
+ removeAttr(el, name);
250
+ } else {
251
+ el.setAttribute(name, value);
252
+ }
252
253
  }
253
254
  }
254
255
  }
@@ -588,14 +589,19 @@
588
589
  property = propName(property);
589
590
  if (isUndefined(value)) {
590
591
  return getComputedStyle(element2).getPropertyValue(property);
592
+ } else {
593
+ element2.style.setProperty(
594
+ property,
595
+ isNumeric(value) && !cssNumber[property] && !isCustomProperty(property) ? `${value}px` : value || isNumber(value) ? value : "",
596
+ priority
597
+ );
591
598
  }
592
- element2.style.setProperty(
593
- property,
594
- isNumeric(value) && !cssNumber[property] && !isCustomProperty(property) ? `${value}px` : value || isNumber(value) ? value : "",
595
- priority
596
- );
597
599
  } else if (isArray(property)) {
598
- return Object.fromEntries(property.map((prop) => [prop, css(element2, prop)]));
600
+ const props = {};
601
+ for (const prop of property) {
602
+ props[prop] = css(element2, prop);
603
+ }
604
+ return props;
599
605
  } else if (isObject(property)) {
600
606
  for (const prop in property) {
601
607
  css(element2, prop, property[prop], value);
@@ -779,9 +785,7 @@
779
785
  );
780
786
  }
781
787
  function unwrap(element) {
782
- for (const elementParent of new Set(toNodes(element).map(parent))) {
783
- elementParent.replaceWith(...elementParent.childNodes);
784
- }
788
+ toNodes(element).map(parent).filter((value, index, self) => self.indexOf(value) === index).forEach((parent2) => parent2.replaceWith(...parent2.childNodes));
785
789
  }
786
790
  const singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
787
791
  function fragment(html2) {
@@ -1143,12 +1147,12 @@
1143
1147
  return isTag(el, "iframe") && (isYoutube(el) || isVimeo(el));
1144
1148
  }
1145
1149
  function isYoutube(el) {
1146
- return /\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/.test(
1147
- el.src
1150
+ return !!el.src.match(
1151
+ /\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/
1148
1152
  );
1149
1153
  }
1150
1154
  function isVimeo(el) {
1151
- return /vimeo\.com\/video\/.*/.test(el.src);
1155
+ return !!el.src.match(/vimeo\.com\/video\/.*/);
1152
1156
  }
1153
1157
  async function call(el, cmd) {
1154
1158
  await enableApi(el);
@@ -1157,7 +1161,7 @@
1157
1161
  function post(el, cmd) {
1158
1162
  el.contentWindow.postMessage(JSON.stringify({ event: "command", ...cmd }), "*");
1159
1163
  }
1160
- const stateKey = /* @__PURE__ */ Symbol();
1164
+ const stateKey = "_ukPlayer";
1161
1165
  let counter = 0;
1162
1166
  function enableApi(el) {
1163
1167
  if (el[stateKey]) {
@@ -1188,16 +1192,17 @@
1188
1192
  if (!isVisible(element)) {
1189
1193
  return false;
1190
1194
  }
1191
- const rects = overflowParents(element).map((parent2) => {
1192
- const { top, left, bottom, right } = offsetViewport(parent2);
1193
- return {
1194
- top: top - offsetTop,
1195
- left: left - offsetLeft,
1196
- bottom: bottom + offsetTop,
1197
- right: right + offsetLeft
1198
- };
1199
- });
1200
- return intersectRect(...rects, offset(element));
1195
+ return intersectRect(
1196
+ ...overflowParents(element).map((parent2) => {
1197
+ const { top, left, bottom, right } = offsetViewport(parent2);
1198
+ return {
1199
+ top: top - offsetTop,
1200
+ left: left - offsetLeft,
1201
+ bottom: bottom + offsetTop,
1202
+ right: right + offsetLeft
1203
+ };
1204
+ }).concat(offset(element))
1205
+ );
1201
1206
  }
1202
1207
  function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {
1203
1208
  const parents2 = isVisible(element) ? scrollParents(element, false, ["hidden"]) : [];
@@ -1281,12 +1286,11 @@
1281
1286
  if (~fixedIndex) {
1282
1287
  ancestors = ancestors.slice(fixedIndex);
1283
1288
  }
1284
- return [
1285
- scrollEl,
1286
- ...ancestors.filter(
1289
+ return [scrollEl].concat(
1290
+ ancestors.filter(
1287
1291
  (parent2) => css(parent2, "overflow").split(" ").some((prop) => includes(["auto", "scroll", ...props], prop)) && (!scrollable || parent2.scrollHeight > offsetViewport(parent2).height)
1288
1292
  )
1289
- ].reverse();
1293
+ ).reverse();
1290
1294
  }
1291
1295
  function scrollParent(...args) {
1292
1296
  return scrollParents(...args)[0];
@@ -1868,14 +1872,11 @@
1868
1872
  function coerce$1(type, value) {
1869
1873
  if (type === Boolean) {
1870
1874
  return toBoolean(value);
1871
- }
1872
- if (type === Number) {
1875
+ } else if (type === Number) {
1873
1876
  return toNumber(value);
1874
- }
1875
- if (type === "list") {
1877
+ } else if (type === "list") {
1876
1878
  return toList(value);
1877
- }
1878
- if (type === Object && isString(value)) {
1879
+ } else if (type === Object && isString(value)) {
1879
1880
  return parseOptions(value);
1880
1881
  }
1881
1882
  return type ? type(value) : value;
@@ -1955,8 +1956,8 @@
1955
1956
  for (const el of toNodes(isFunction(targets) ? targets(this) : targets)) {
1956
1957
  $$('[loading="lazy"]', el).slice(0, preload - 1).forEach((el2) => removeAttr(el2, "loading"));
1957
1958
  }
1958
- for (const { target } of entries.filter(({ isIntersecting }) => isIntersecting)) {
1959
- observer.unobserve(target);
1959
+ for (const el of entries.filter(({ isIntersecting }) => isIntersecting).map(({ target }) => target)) {
1960
+ observer.unobserve(el);
1960
1961
  }
1961
1962
  },
1962
1963
  ...options
@@ -2025,12 +2026,10 @@
2025
2026
  var Margin = {
2026
2027
  props: {
2027
2028
  margin: String,
2028
- firstRow: Boolean,
2029
2029
  firstColumn: Boolean
2030
2030
  },
2031
2031
  data: {
2032
2032
  margin: "uk-margin-small-top",
2033
- firstRow: false,
2034
2033
  firstColumn: "uk-first-column"
2035
2034
  },
2036
2035
  observe: [
@@ -2070,7 +2069,6 @@
2070
2069
  for (const row of rows) {
2071
2070
  for (const el of row) {
2072
2071
  toggleClass(el, this.margin, rows[0] !== row);
2073
- toggleClass(el, this.firstRow, rows[0] === row);
2074
2072
  toggleClass(el, this.firstColumn, row[isRtl ? row.length - 1 : 0] === el);
2075
2073
  }
2076
2074
  }
@@ -2784,18 +2782,20 @@
2784
2782
  if (show) {
2785
2783
  _toggle(el, true);
2786
2784
  }
2787
- const prevProps = pick(el.style, [
2788
- "padding",
2789
- "border",
2790
- "width",
2791
- "height",
2792
- "minWidth",
2793
- "minHeight",
2794
- "overflowY",
2795
- "overflowX",
2796
- marginProp,
2797
- marginStartProp
2798
- ]);
2785
+ const prevProps = Object.fromEntries(
2786
+ [
2787
+ "padding",
2788
+ "border",
2789
+ "width",
2790
+ "height",
2791
+ "minWidth",
2792
+ "minHeight",
2793
+ "overflowY",
2794
+ "overflowX",
2795
+ marginProp,
2796
+ marginStartProp
2797
+ ].map((key) => [key, el.style[key]])
2798
+ );
2799
2799
  const dim = dimensions$1(el);
2800
2800
  const currentMargin = toFloat(css(el, marginProp));
2801
2801
  const marginStart = toFloat(css(el, marginStartProp));
@@ -3016,13 +3016,12 @@
3016
3016
  }
3017
3017
  }
3018
3018
  };
3019
- const rejectKey = /* @__PURE__ */ Symbol();
3020
3019
  function animate$1(el, show, { transitionElement, _toggle }) {
3021
3020
  return new Promise(
3022
3021
  (resolve, reject) => once(el, "show hide", () => {
3023
3022
  var _a;
3024
- (_a = el[rejectKey]) == null ? void 0 : _a.call(el);
3025
- el[rejectKey] = reject;
3023
+ (_a = el._reject) == null ? void 0 : _a.call(el);
3024
+ el._reject = reject;
3026
3025
  _toggle(el, show);
3027
3026
  const off = once(
3028
3027
  transitionElement,
@@ -3043,7 +3042,7 @@
3043
3042
  toMs(css(transitionElement, "transitionDuration"))
3044
3043
  );
3045
3044
  })
3046
- ).then(() => delete el[rejectKey]);
3045
+ ).then(() => delete el._reject);
3047
3046
  }
3048
3047
  function toMs(time) {
3049
3048
  return time ? endsWith(time, "ms") ? toFloat(time) : toFloat(time) * 1e3 : 0;
@@ -3093,11 +3092,18 @@
3093
3092
 
3094
3093
  var Animations$2 = {
3095
3094
  slide: {
3096
- percent: translated,
3097
- translate: (percent, dir) => [
3098
- { transform: translate(dir * -100 * percent) },
3099
- { transform: translate(dir * 100 * (1 - percent)) }
3100
- ]
3095
+ show(dir) {
3096
+ return [{ transform: translate(dir * -100) }, { transform: translate() }];
3097
+ },
3098
+ percent(current) {
3099
+ return translated(current);
3100
+ },
3101
+ translate(percent, dir) {
3102
+ return [
3103
+ { transform: translate(dir * -100 * percent) },
3104
+ { transform: translate(dir * 100 * (1 - percent)) }
3105
+ ];
3106
+ }
3101
3107
  }
3102
3108
  };
3103
3109
  function translated(el) {
@@ -3108,8 +3114,8 @@
3108
3114
  }
3109
3115
 
3110
3116
  function Transitioner$1(prev, next, dir, { animation, easing }) {
3111
- const { percent, translate } = animation;
3112
- const props = translate(1, dir);
3117
+ const { percent, translate, show = noop } = animation;
3118
+ const props = show(dir);
3113
3119
  const { promise, resolve } = withResolvers();
3114
3120
  return {
3115
3121
  dir,
@@ -3390,7 +3396,7 @@
3390
3396
  return Math.atan2(Math.abs(pos2.y - pos1.y), Math.abs(pos2.x - pos1.x)) * 180 / Math.PI;
3391
3397
  }
3392
3398
 
3393
- var VERSION = '3.25.20-dev.e4f47fc';
3399
+ var VERSION = '3.25.20';
3394
3400
 
3395
3401
  function initWatches(instance) {
3396
3402
  instance._watches = [];
@@ -3599,7 +3605,7 @@
3599
3605
  }
3600
3606
  const getAttributes = memoize((id, props) => {
3601
3607
  const attributes = Object.keys(props);
3602
- const filter = [...attributes, id].flatMap((key) => [hyphenate(key), `data-${hyphenate(key)}`]);
3608
+ const filter = attributes.concat(id).map((key) => [hyphenate(key), `data-${hyphenate(key)}`]).flat();
3603
3609
  return { attributes, filter };
3604
3610
  });
3605
3611
  function initPropsObserver(instance) {
@@ -3689,10 +3695,14 @@
3689
3695
  }
3690
3696
  function normalizeData({ data = {} }, { args = [], props = {} }) {
3691
3697
  if (isArray(data)) {
3692
- data = data.slice(0, args.length).reduce(
3693
- (data2, value, index) => assign(data2, isPlainObject(value) ? value : { [args[index]]: value }),
3694
- {}
3695
- );
3698
+ data = data.slice(0, args.length).reduce((data2, value, index) => {
3699
+ if (isPlainObject(value)) {
3700
+ assign(data2, value);
3701
+ } else {
3702
+ data2[args[index]] = value;
3703
+ }
3704
+ return data2;
3705
+ }, {});
3696
3706
  }
3697
3707
  for (const key in data) {
3698
3708
  if (isUndefined(data[key])) {
@@ -3740,10 +3750,11 @@
3740
3750
  function init(element2) {
3741
3751
  const instance = getComponent(element2, name);
3742
3752
  if (instance) {
3743
- if (!data) {
3753
+ if (data) {
3754
+ instance.$destroy();
3755
+ } else {
3744
3756
  return instance;
3745
3757
  }
3746
- instance.$destroy();
3747
3758
  }
3748
3759
  return new Component({ el: element2, data });
3749
3760
  }
@@ -3885,7 +3896,7 @@
3885
3896
  computed: {
3886
3897
  nav: ({ selNav }, $el) => $$(selNav, $el),
3887
3898
  navChildren() {
3888
- return this.nav.flatMap((nav) => children(nav));
3899
+ return this.nav.map((nav) => children(nav)).flat();
3889
3900
  },
3890
3901
  selNavItem: ({ attrItem }) => `[${attrItem}],[data-${attrItem}]`,
3891
3902
  navItems(_, $el) {
@@ -4242,35 +4253,75 @@
4242
4253
  var Animations$1 = {
4243
4254
  ...Animations$2,
4244
4255
  fade: {
4245
- percent: (current) => 1 - css(current, "opacity"),
4246
- translate: (percent) => [{ opacity: 1 - percent, zIndex: 0 }, { zIndex: -1 }]
4256
+ show() {
4257
+ return [{ opacity: 0, zIndex: 0 }, { zIndex: -1 }];
4258
+ },
4259
+ percent(current) {
4260
+ return 1 - css(current, "opacity");
4261
+ },
4262
+ translate(percent) {
4263
+ return [{ opacity: 1 - percent, zIndex: 0 }, { zIndex: -1 }];
4264
+ }
4247
4265
  },
4248
4266
  scale: {
4249
- percent: (current) => 1 - css(current, "opacity"),
4250
- translate: (percent) => [
4251
- { opacity: 1 - percent, transform: scale3d(1 + 0.5 * percent), zIndex: 0 },
4252
- { zIndex: -1 }
4253
- ]
4267
+ show() {
4268
+ return [{ opacity: 0, transform: scale3d(1 + 0.5), zIndex: 0 }, { zIndex: -1 }];
4269
+ },
4270
+ percent(current) {
4271
+ return 1 - css(current, "opacity");
4272
+ },
4273
+ translate(percent) {
4274
+ return [
4275
+ { opacity: 1 - percent, transform: scale3d(1 + 0.5 * percent), zIndex: 0 },
4276
+ { zIndex: -1 }
4277
+ ];
4278
+ }
4254
4279
  },
4255
4280
  pull: {
4256
- percent: (current, next, dir) => dir < 0 ? 1 - translated(next) : translated(current),
4257
- translate: (percent, dir) => dir < 0 ? [
4258
- { transform: translate(30 * percent), zIndex: -1 },
4259
- { transform: translate(-100 * (1 - percent)), zIndex: 0 }
4260
- ] : [
4261
- { transform: translate(-percent * 100), zIndex: 0 },
4262
- { transform: translate(30 * (1 - percent)), zIndex: -1 }
4263
- ]
4281
+ show(dir) {
4282
+ return dir < 0 ? [
4283
+ { transform: translate(30), zIndex: -1 },
4284
+ { transform: translate(), zIndex: 0 }
4285
+ ] : [
4286
+ { transform: translate(-100), zIndex: 0 },
4287
+ { transform: translate(), zIndex: -1 }
4288
+ ];
4289
+ },
4290
+ percent(current, next, dir) {
4291
+ return dir < 0 ? 1 - translated(next) : translated(current);
4292
+ },
4293
+ translate(percent, dir) {
4294
+ return dir < 0 ? [
4295
+ { transform: translate(30 * percent), zIndex: -1 },
4296
+ { transform: translate(-100 * (1 - percent)), zIndex: 0 }
4297
+ ] : [
4298
+ { transform: translate(-percent * 100), zIndex: 0 },
4299
+ { transform: translate(30 * (1 - percent)), zIndex: -1 }
4300
+ ];
4301
+ }
4264
4302
  },
4265
4303
  push: {
4266
- percent: (current, next, dir) => dir > 0 ? 1 - translated(next) : translated(current),
4267
- translate: (percent, dir) => dir < 0 ? [
4268
- { transform: translate(percent * 100), zIndex: 0 },
4269
- { transform: translate(-30 * (1 - percent)), zIndex: -1 }
4270
- ] : [
4271
- { transform: translate(-30 * percent), zIndex: -1 },
4272
- { transform: translate(100 * (1 - percent)), zIndex: 0 }
4273
- ]
4304
+ show(dir) {
4305
+ return dir < 0 ? [
4306
+ { transform: translate(100), zIndex: 0 },
4307
+ { transform: translate(), zIndex: -1 }
4308
+ ] : [
4309
+ { transform: translate(-30), zIndex: -1 },
4310
+ { transform: translate(), zIndex: 0 }
4311
+ ];
4312
+ },
4313
+ percent(current, next, dir) {
4314
+ return dir > 0 ? 1 - translated(next) : translated(current);
4315
+ },
4316
+ translate(percent, dir) {
4317
+ return dir < 0 ? [
4318
+ { transform: translate(percent * 100), zIndex: 0 },
4319
+ { transform: translate(-30 * (1 - percent)), zIndex: -1 }
4320
+ ] : [
4321
+ { transform: translate(-30 * percent), zIndex: -1 },
4322
+ { transform: translate(100 * (1 - percent)), zIndex: 0 }
4323
+ ];
4324
+ }
4274
4325
  }
4275
4326
  };
4276
4327
  function scale3d(value) {
@@ -4280,15 +4331,32 @@
4280
4331
  var Animations = {
4281
4332
  ...Animations$2,
4282
4333
  fade: {
4283
- percent: (current) => 1 - css(current, "opacity"),
4284
- translate: (percent) => [{ opacity: 1 - percent }, { opacity: percent }]
4334
+ show() {
4335
+ return [{ opacity: 0 }, { opacity: 1 }];
4336
+ },
4337
+ percent(current) {
4338
+ return 1 - css(current, "opacity");
4339
+ },
4340
+ translate(percent) {
4341
+ return [{ opacity: 1 - percent }, { opacity: percent }];
4342
+ }
4285
4343
  },
4286
4344
  scale: {
4287
- percent: (current) => 1 - css(current, "opacity"),
4288
- translate: (percent) => [
4289
- { opacity: 1 - percent, transform: scale3d(1 - 0.2 * percent) },
4290
- { opacity: percent, transform: scale3d(1 - 0.2 + 0.2 * percent) }
4291
- ]
4345
+ show() {
4346
+ return [
4347
+ { opacity: 0, transform: scale3d(1 - 0.2) },
4348
+ { opacity: 1, transform: scale3d(1) }
4349
+ ];
4350
+ },
4351
+ percent(current) {
4352
+ return 1 - css(current, "opacity");
4353
+ },
4354
+ translate(percent) {
4355
+ return [
4356
+ { opacity: 1 - percent, transform: scale3d(1 - 0.2 * percent) },
4357
+ { opacity: percent, transform: scale3d(1 - 0.2 + 0.2 * percent) }
4358
+ ];
4359
+ }
4292
4360
  }
4293
4361
  };
4294
4362
 
@@ -4471,22 +4539,81 @@
4471
4539
  if (!src) {
4472
4540
  return;
4473
4541
  }
4474
- try {
4475
- for (const loader of [
4476
- loadImage,
4477
- loadVideo,
4478
- loadIframe,
4479
- loadYouTube,
4480
- loadVimeo
4481
- ]) {
4482
- const content = await loader({ src, type, attrs, item, cmp: this });
4483
- if (content) {
4484
- this.setItem(item, content);
4485
- return;
4486
- }
4542
+ let matches2;
4543
+ const iframeAttrs = {
4544
+ allowfullscreen: "",
4545
+ style: "max-width: 100%; box-sizing: border-box;",
4546
+ "uk-responsive": "",
4547
+ "uk-video": Boolean(this.videoAutoplay)
4548
+ };
4549
+ if (type === "image" || isImage(src)) {
4550
+ const img = createEl("img");
4551
+ wrapInPicture(img, item.sources);
4552
+ attr(img, {
4553
+ src,
4554
+ ...pick(item, ["alt", "srcset", "sizes"]),
4555
+ ...attrs
4556
+ });
4557
+ on(img, "load", () => this.setItem(item, parent(img) || img));
4558
+ on(img, "error", () => this.setError(item));
4559
+ } else if (type === "video" || isVideo(src)) {
4560
+ const inline = this.videoAutoplay === "inline";
4561
+ const video = createEl("video", {
4562
+ src,
4563
+ playsinline: "",
4564
+ controls: inline ? null : "",
4565
+ loop: inline ? "" : null,
4566
+ muted: inline ? "" : null,
4567
+ poster: this.videoAutoplay ? null : item.poster,
4568
+ "uk-video": Boolean(this.videoAutoplay),
4569
+ ...attrs
4570
+ });
4571
+ on(video, "loadedmetadata", () => this.setItem(item, video));
4572
+ on(video, "error", () => this.setError(item));
4573
+ } else if (type === "iframe" || src.match(/\.(html|php)($|\?)/i)) {
4574
+ this.setItem(
4575
+ item,
4576
+ createEl("iframe", {
4577
+ src,
4578
+ allowfullscreen: "",
4579
+ class: "uk-lightbox-iframe",
4580
+ ...attrs
4581
+ })
4582
+ );
4583
+ } else if (matches2 = src.match(
4584
+ /\/\/(?:.*?youtube(-nocookie)?\..*?(?:[?&]v=|\/shorts\/)|youtu\.be\/)([\w-]{11})[&?]?(.*)?/
4585
+ )) {
4586
+ this.setItem(
4587
+ item,
4588
+ createEl("iframe", {
4589
+ src: `https://www.youtube${matches2[1] || ""}.com/embed/${matches2[2]}${matches2[3] ? `?${matches2[3]}` : ""}`,
4590
+ width: 1920,
4591
+ height: 1080,
4592
+ ...iframeAttrs,
4593
+ ...attrs
4594
+ })
4595
+ );
4596
+ } else if (matches2 = src.match(/\/\/.*?vimeo\.[a-z]+\/(\d+)[&?]?(.*)?/)) {
4597
+ try {
4598
+ const { height, width } = await (await fetch(
4599
+ `https://vimeo.com/api/oembed.json?maxwidth=1920&url=${encodeURI(
4600
+ src
4601
+ )}`,
4602
+ { credentials: "omit" }
4603
+ )).json();
4604
+ this.setItem(
4605
+ item,
4606
+ createEl("iframe", {
4607
+ src: `https://player.vimeo.com/video/${matches2[1]}${matches2[2] ? `?${matches2[2]}` : ""}`,
4608
+ width,
4609
+ height,
4610
+ ...iframeAttrs,
4611
+ ...attrs
4612
+ })
4613
+ );
4614
+ } catch {
4615
+ this.setError(item);
4487
4616
  }
4488
- } catch {
4489
- this.setError(item);
4490
4617
  }
4491
4618
  }
4492
4619
  },
@@ -4546,91 +4673,6 @@
4546
4673
  attr(el, attrs);
4547
4674
  return el;
4548
4675
  }
4549
- async function loadImage({ src, type, attrs, item }) {
4550
- if (type !== "image" && !isImage(src)) {
4551
- return;
4552
- }
4553
- const img = createEl("img");
4554
- wrapInPicture(img, item.sources);
4555
- attr(img, {
4556
- src,
4557
- ...pick(item, ["alt", "srcset", "sizes"]),
4558
- ...attrs
4559
- });
4560
- await img.decode();
4561
- return parent(img) || img;
4562
- }
4563
- function loadVideo({ src, type, attrs, item, cmp }) {
4564
- if (type !== "video" && !isVideo(src)) {
4565
- return;
4566
- }
4567
- const inline = cmp.videoAutoplay === "inline";
4568
- const video = createEl("video", {
4569
- src,
4570
- playsinline: "",
4571
- controls: inline ? null : "",
4572
- loop: inline ? "" : null,
4573
- muted: inline ? "" : null,
4574
- poster: cmp.videoAutoplay ? null : item.poster,
4575
- "uk-video": Boolean(cmp.videoAutoplay),
4576
- ...attrs
4577
- });
4578
- return new Promise((resolve, reject) => {
4579
- on(video, "loadedmetadata", () => resolve(video));
4580
- on(video, "error", reject);
4581
- });
4582
- }
4583
- function loadIframe({ src, type, attrs }) {
4584
- if (type !== "iframe" && !/\.(html|php)($|\?)/i.test(src)) {
4585
- return;
4586
- }
4587
- return createEl("iframe", {
4588
- src,
4589
- allowfullscreen: "",
4590
- class: "uk-lightbox-iframe",
4591
- ...attrs
4592
- });
4593
- }
4594
- function loadYouTube({ src, attrs, cmp }) {
4595
- const matches2 = src.match(
4596
- /\/\/(?:.*?youtube(-nocookie)?\..*?(?:[?&]v=|\/shorts\/)|youtu\.be\/)([\w-]{11})[&?]?(.*)?/
4597
- );
4598
- if (!matches2) {
4599
- return;
4600
- }
4601
- return createEl("iframe", {
4602
- src: `https://www.youtube${matches2[1] || ""}.com/embed/${matches2[2]}${matches2[3] ? `?${matches2[3]}` : ""}`,
4603
- width: 1920,
4604
- height: 1080,
4605
- ...getIframeAttrs(cmp),
4606
- ...attrs
4607
- });
4608
- }
4609
- async function loadVimeo({ src, attrs, cmp }) {
4610
- const matches2 = src.match(/\/\/.*?vimeo\.[a-z]+\/(\d+)[&?]?(.*)?/);
4611
- if (!matches2) {
4612
- return;
4613
- }
4614
- const { height, width } = await (await fetch(
4615
- `https://vimeo.com/api/oembed.json?maxwidth=1920&url=${encodeURIComponent(src)}`,
4616
- { credentials: "omit" }
4617
- )).json();
4618
- return createEl("iframe", {
4619
- src: `https://player.vimeo.com/video/${matches2[1]}${matches2[2] ? `?${matches2[2]}` : ""}`,
4620
- width,
4621
- height,
4622
- ...getIframeAttrs(cmp),
4623
- ...attrs
4624
- });
4625
- }
4626
- function getIframeAttrs(cmp) {
4627
- return {
4628
- allowfullscreen: "",
4629
- style: "max-width: 100%; box-sizing: border-box;",
4630
- "uk-responsive": "",
4631
- "uk-video": Boolean(cmp.videoAutoplay)
4632
- };
4633
- }
4634
4676
  function toThumbnavItem(item, videoAutoplay) {
4635
4677
  const el = item.poster || item.thumb && (item.type === "image" || isImage(item.thumb)) ? createEl("img", { src: item.poster || item.thumb, alt: "" }) : item.thumb && (item.type === "video" || isVideo(item.thumb)) ? createEl("video", {
4636
4678
  src: item.thumb,
@@ -4716,7 +4758,7 @@
4716
4758
  if (items[i].thumb) {
4717
4759
  continue;
4718
4760
  }
4719
- const parent = [...parents(toggle).reverse(), toggle].find(
4761
+ const parent = parents(toggle).reverse().concat(toggle).find(
4720
4762
  (parent2) => this.$el.contains(parent2) && (parent2 === toggle || $$(this.toggle, parent2).length === 1)
4721
4763
  );
4722
4764
  if (!parent) {
@@ -4739,94 +4781,6 @@
4739
4781
  return item;
4740
4782
  }
4741
4783
 
4742
- const hasAnimationApi = inBrowser && window.Animation;
4743
- var marquee = {
4744
- mixins: [Class],
4745
- props: {
4746
- velocity: Number,
4747
- start: Number,
4748
- reverse: Boolean,
4749
- pause: Boolean,
4750
- pauseVelocity: Number,
4751
- fadeSize: null
4752
- },
4753
- data: {
4754
- velocity: 25,
4755
- start: 0,
4756
- reverse: false,
4757
- pause: false,
4758
- pauseVelocity: 10,
4759
- selList: ".uk-marquee-items",
4760
- fadeSize: 0
4761
- },
4762
- computed: {
4763
- list: ({ selList }, $el) => $(selList, $el),
4764
- items() {
4765
- return children(this.list);
4766
- }
4767
- },
4768
- observe: [
4769
- resize({
4770
- target: ({ $el, items }) => [$el, ...items]
4771
- }),
4772
- intersection({
4773
- handler(entries) {
4774
- for (const entry of entries) {
4775
- entry.target.inert = !entry.isIntersecting;
4776
- }
4777
- },
4778
- target: ({ items }) => items,
4779
- args: { intersecting: false },
4780
- options: ({ $el }) => ({ root: $el })
4781
- })
4782
- ],
4783
- events: {
4784
- name: [pointerEnter, pointerLeave],
4785
- el: ({ $el }) => $el,
4786
- self: true,
4787
- filter: ({ pause }) => hasAnimationApi && pause,
4788
- handler(e) {
4789
- for (const el of this.items) {
4790
- for (const animation of el.getAnimations()) {
4791
- animation.playbackRate = e.type === pointerEnter ? this.pauseVelocity / this.velocity : 1;
4792
- }
4793
- }
4794
- }
4795
- },
4796
- update: {
4797
- write() {
4798
- const prefix = this.$options.id;
4799
- const items = this.items;
4800
- const vertical = hasClass(this.$el, `${prefix}-vertical`);
4801
- css(items, "offset", "none");
4802
- const dir = vertical ? ["top", "bottom"] : ["left", "right"];
4803
- if (!vertical && isRtl) {
4804
- dir.reverse();
4805
- }
4806
- const listStart = dimensions$1(this.list)[dir[0]];
4807
- const listEnd = Math[!vertical && isRtl ? "min" : "max"](
4808
- ...items.map((el) => dimensions$1(el)[dir[1]])
4809
- );
4810
- for (const el of items) {
4811
- const elEnd = dimensions$1(el)[dir[1]];
4812
- const line1 = listEnd - elEnd;
4813
- const line2 = elEnd - listStart;
4814
- const path = vertical ? `"M0 0 v${line1}M0 ${-line2} v${line2}"` : `"M0 0 h${line1}M${-line2} 0 h${line2}"`;
4815
- css(el, `--${prefix}-path`, path);
4816
- }
4817
- css(this.$el, {
4818
- [`--${prefix}-duration`]: `${Math.abs(listStart - listEnd) / this.velocity}s`,
4819
- [`--${prefix}-start`]: this.start,
4820
- [`--${prefix}-direction`]: this.reverse ? "reverse" : "normal",
4821
- "--uk-overflow-fade-size": this.fadeSize ? `${toPx(this.fadeSize, vertical ? "height" : "width", this.$el, true)}px` : ""
4822
- });
4823
- toggleClass(this.$el, `${prefix}-fade`, this.fadeSize);
4824
- css(items, "offset", "");
4825
- },
4826
- events: ["resize"]
4827
- }
4828
- };
4829
-
4830
4784
  var notification = {
4831
4785
  mixins: [Container],
4832
4786
  functional: true,
@@ -5259,7 +5213,10 @@
5259
5213
  return val;
5260
5214
  }
5261
5215
  function fillObject(keys2, value) {
5262
- return Object.fromEntries(keys2.map((prop) => [prop, value]));
5216
+ return keys2.reduce((data, prop) => {
5217
+ data[prop] = value;
5218
+ return data;
5219
+ }, {});
5263
5220
  }
5264
5221
  function ease(percent, easing) {
5265
5222
  return easing >= 0 ? Math.pow(percent, easing + 1) : 1 - Math.pow(1 - percent, 1 - easing);
@@ -5333,14 +5290,16 @@
5333
5290
  return el ? "offsetTop" in el ? el : getOffsetElement(parent(el)) : document.documentElement;
5334
5291
  }
5335
5292
 
5336
- var ScrollDriven = {
5293
+ var SliderParallax = {
5337
5294
  props: {
5295
+ parallax: Boolean,
5338
5296
  parallaxTarget: Boolean,
5339
5297
  parallaxStart: String,
5340
5298
  parallaxEnd: String,
5341
5299
  parallaxEasing: Number
5342
5300
  },
5343
5301
  data: {
5302
+ parallax: false,
5344
5303
  parallaxTarget: false,
5345
5304
  parallaxStart: 0,
5346
5305
  parallaxEnd: 0,
@@ -5354,48 +5313,26 @@
5354
5313
  scroll$1({ filter: ({ parallax }) => parallax })
5355
5314
  ],
5356
5315
  computed: {
5357
- parallaxTargetFallback: ($props, $el) => $el,
5358
5316
  parallaxTarget({ parallaxTarget }, $el) {
5359
- return parallaxTarget && query(parallaxTarget, $el) || this.parallaxTargetFallback;
5317
+ return parallaxTarget && query(parallaxTarget, $el) || this.list;
5360
5318
  }
5361
5319
  },
5362
5320
  update: {
5363
5321
  read() {
5364
5322
  if (!this.parallax) {
5365
- return;
5323
+ return false;
5366
5324
  }
5367
5325
  const target = this.parallaxTarget;
5368
5326
  if (!target) {
5369
- return;
5327
+ return false;
5370
5328
  }
5371
5329
  const start = toPx(this.parallaxStart, "height", target, true);
5372
5330
  const end = toPx(this.parallaxEnd, "height", target, true);
5373
5331
  const percent = ease(scrolledOver(target, start, end), this.parallaxEasing);
5374
- return { percent };
5332
+ return { parallax: this.getIndexAt(percent) };
5375
5333
  },
5376
- events: ["scroll", "resize"]
5377
- }
5378
- };
5379
-
5380
- var SliderParallax = {
5381
- mixins: [ScrollDriven],
5382
- props: {
5383
- parallax: Boolean
5384
- },
5385
- data: {
5386
- parallax: false
5387
- },
5388
- computed: {
5389
- parallaxTargetFallback() {
5390
- return this.list;
5391
- }
5392
- },
5393
- update: {
5394
- write({ percent }) {
5395
- if (!this.parallax) {
5396
- return;
5397
- }
5398
- const [prevIndex, slidePercent] = this.getIndexAt(percent);
5334
+ write({ parallax }) {
5335
+ const [prevIndex, slidePercent] = parallax;
5399
5336
  const nextIndex = this.getValidIndex(prevIndex + Math.ceil(slidePercent));
5400
5337
  const prev = this.slides[prevIndex];
5401
5338
  const next = this.slides[nextIndex];
@@ -6305,7 +6242,7 @@
6305
6242
  inset: false
6306
6243
  },
6307
6244
  connected() {
6308
- this.pos = [...this.$props.pos.split("-"), "center"].slice(0, 2);
6245
+ this.pos = this.$props.pos.split("-").concat("center").slice(0, 2);
6309
6246
  [this.dir, this.align] = this.pos;
6310
6247
  this.axis = includes(["top", "bottom"], this.dir) ? "y" : "x";
6311
6248
  },
@@ -6484,12 +6421,10 @@
6484
6421
  }
6485
6422
  function parseProps(options) {
6486
6423
  const { el, id, data: data$1 } = options;
6487
- return {
6488
- delay: data(el, "delay"),
6489
- title: data(el, "title"),
6424
+ return ["delay", "title"].reduce((obj, key) => ({ [key]: data(el, key), ...obj }), {
6490
6425
  ...parseOptions(data(el, id), ["title"]),
6491
6426
  ...data$1
6492
- };
6427
+ });
6493
6428
  }
6494
6429
 
6495
6430
  var upload = {
@@ -6708,7 +6643,6 @@
6708
6643
  Filter: filter,
6709
6644
  Lightbox: lightbox,
6710
6645
  LightboxPanel: LightboxPanel,
6711
- Marquee: marquee,
6712
6646
  Notification: notification,
6713
6647
  Parallax: parallax,
6714
6648
  Slider: slider,
@@ -6792,76 +6726,28 @@
6792
6726
  globalApi(App);
6793
6727
  instanceApi(App);
6794
6728
 
6795
- var Connect = {
6796
- mixins: [Togglable],
6797
- props: {
6798
- connect: String
6799
- },
6800
- data: {
6801
- connect: "",
6802
- cls: "uk-active"
6803
- },
6804
- computed: {
6805
- connects: {
6806
- get: ({ connect }, $el) => connect ? queryAll(connect, $el) : [],
6807
- observe: ({ connect }) => connect
6808
- },
6809
- connectChildren() {
6810
- return this.connects.flatMap((el) => children(el));
6811
- }
6812
- },
6813
- watch: {
6814
- connects(connects) {
6815
- for (const el of connects) {
6816
- if (isTag(el, "ul")) {
6817
- el.role = "presentation";
6818
- }
6819
- }
6820
- }
6821
- },
6822
- observe: lazyload({ targets: ({ connectChildren }) => connectChildren }),
6823
- methods: {
6824
- showConnects(index, animate) {
6825
- const toggle = async ({ children: children2 }) => {
6826
- const actives = toArray(children2).filter(
6827
- (child, i) => i !== index && hasClass(child, this.cls)
6828
- );
6829
- if (await this.toggleElement(actives, false, animate)) {
6830
- await this.toggleElement(children2[index], true, animate);
6831
- }
6832
- };
6833
- return Promise.all(this.connects.map(toggle));
6834
- }
6835
- }
6836
- };
6837
-
6838
6729
  var Accordion = {
6839
- mixins: [Class, Connect],
6730
+ mixins: [Class, Togglable],
6840
6731
  props: {
6732
+ animation: Boolean,
6841
6733
  targets: String,
6842
6734
  active: null,
6843
6735
  collapsible: Boolean,
6844
6736
  multiple: Boolean,
6845
6737
  toggle: String,
6846
6738
  content: String,
6847
- offset: Number,
6848
- switcherConnect: String
6739
+ offset: Number
6849
6740
  },
6850
6741
  data: {
6851
6742
  targets: "> *",
6852
6743
  active: false,
6853
- animation: [true],
6744
+ animation: true,
6854
6745
  collapsible: true,
6855
6746
  multiple: false,
6856
6747
  clsOpen: "uk-open",
6857
- cls: "uk-active",
6858
6748
  toggle: ".uk-accordion-title",
6859
6749
  content: ".uk-accordion-content",
6860
- offset: 0,
6861
- switcherConnect: ""
6862
- },
6863
- beforeConnect() {
6864
- this.connect = this.$props.connect = this.switcherConnect;
6750
+ offset: 0
6865
6751
  },
6866
6752
  computed: {
6867
6753
  items: ({ targets }, $el) => $$(targets, $el),
@@ -6885,12 +6771,6 @@
6885
6771
  this.toggle(active, false);
6886
6772
  }
6887
6773
  },
6888
- connectChildren() {
6889
- this.showConnects(
6890
- findIndex(this.items, (el) => hasClass(el, this.clsOpen)),
6891
- false
6892
- );
6893
- },
6894
6774
  toggles() {
6895
6775
  this.$emit();
6896
6776
  },
@@ -6941,66 +6821,43 @@
6941
6821
  continue;
6942
6822
  }
6943
6823
  toggle.id = generateId(this, toggle);
6824
+ content.id = generateId(this, content);
6944
6825
  const active = includes(activeItems, this.items[index2]);
6945
- attr(content, {
6946
- id: generateId(this, content),
6947
- role: "region",
6948
- "aria-labelledby": toggle.id
6949
- });
6950
- if (isTag(content, "ul")) {
6951
- attr(children(content), "role", "presentation");
6952
- }
6953
- const controls = [content.id];
6954
- for (const { children: children2 } of this.connects) {
6955
- const item = children2[index2];
6956
- if (!item) {
6957
- continue;
6958
- }
6959
- attr(item, {
6960
- id: generateId(this, item),
6961
- role: "tabpanel",
6962
- "aria-labelledby": toggle.id
6963
- });
6964
- controls.push(item.id);
6965
- }
6966
6826
  attr(toggle, {
6967
6827
  role: isTag(toggle, "a") ? "button" : null,
6968
- "aria-controls": controls.join(" "),
6828
+ "aria-controls": content.id,
6969
6829
  "aria-expanded": active,
6970
6830
  "aria-disabled": !this.collapsible && activeItems.length < 2 && active
6971
6831
  });
6832
+ attr(content, { role: "region", "aria-labelledby": toggle.id });
6833
+ if (isTag(content, "ul")) {
6834
+ attr(children(content), "role", "presentation");
6835
+ }
6972
6836
  }
6973
6837
  },
6974
6838
  methods: {
6975
- async toggle(item, animate) {
6976
- animate = animate !== false;
6977
- const next = getIndex(item, this.items);
6978
- item = this.items[next];
6839
+ toggle(item, animate) {
6840
+ item = this.items[getIndex(item, this.items)];
6979
6841
  let items = [item];
6980
6842
  const activeItems = filter$1(this.items, `.${this.clsOpen}`);
6981
- const isActive = includes(activeItems, item);
6982
- if (isActive && !this.collapsible && activeItems.length < 2) {
6983
- return;
6984
- }
6985
- if (!isActive && !this.multiple) {
6986
- items.push(...activeItems);
6987
- }
6988
- const toggle = (el) => this.toggleElement(el, !includes(activeItems, el), (el2, show) => {
6989
- toggleClass(el2, this.clsOpen, show);
6990
- if (!animate || !this.hasAnimation) {
6991
- hide($(this.content, el2), !show);
6992
- return;
6993
- }
6994
- return transition(el2, show, this);
6995
- });
6996
- const hideIndex = () => {
6997
- const index2 = findIndex(children(this.connects[0]), (el) => hasClass(el, this.cls));
6998
- return index2 === next ? findIndex(this.items, (i) => i !== item && includes(activeItems, i)) : index2;
6999
- };
7000
- return Promise.all([
7001
- ...items.map(toggle),
7002
- this.showConnects(isActive ? hideIndex() : next, animate)
7003
- ]);
6843
+ if (!this.multiple && !includes(activeItems, items[0])) {
6844
+ items = items.concat(activeItems);
6845
+ }
6846
+ if (!this.collapsible && activeItems.length < 2 && includes(activeItems, item)) {
6847
+ items = [];
6848
+ }
6849
+ return Promise.all(
6850
+ items.map(
6851
+ (el) => this.toggleElement(el, !includes(activeItems, el), (el2, show) => {
6852
+ toggleClass(el2, this.clsOpen, show);
6853
+ if (animate === false || !this.animation) {
6854
+ hide($(this.content, el2), !show);
6855
+ return;
6856
+ }
6857
+ return transition(el2, show, this);
6858
+ })
6859
+ )
6860
+ );
7004
6861
  }
7005
6862
  }
7006
6863
  };
@@ -7091,40 +6948,22 @@
7091
6948
  );
7092
6949
  }
7093
6950
 
7094
- const loopKey = /* @__PURE__ */ Symbol();
7095
6951
  var Video = {
7096
- mixins: [ScrollDriven],
7097
6952
  args: "autoplay",
7098
6953
  props: {
7099
6954
  automute: Boolean,
7100
6955
  autoplay: Boolean,
7101
6956
  restart: Boolean,
7102
- inviewMargin: String,
7103
- inviewQueued: Number,
7104
- hoverTarget: Boolean,
7105
- hoverRewind: Number,
7106
- reducedMotionTime: Number
6957
+ hoverTarget: Boolean
7107
6958
  },
7108
6959
  data: {
7109
6960
  automute: false,
7110
6961
  autoplay: true,
7111
6962
  restart: false,
7112
- inviewMargin: "0px",
7113
- inviewQueued: 0,
7114
- hoverTarget: false,
7115
- hoverRewind: 0,
7116
- reducedMotionTime: 0
6963
+ hoverTarget: false
7117
6964
  },
7118
6965
  beforeConnect() {
7119
6966
  const isVideo = isTag(this.$el, "video");
7120
- this.restart = isVideo && this.restart;
7121
- this.parallax = isVideo && this.autoplay === "parallax";
7122
- this.manualControl = ["hover", "parallax"].includes(this.autoplay);
7123
- this.inviewQueued = this.autoplay === "inview" && this.inviewQueued;
7124
- if (this.inviewQueued) {
7125
- this.$el[loopKey] = this.$el.loop;
7126
- this.$el.loop = false;
7127
- }
7128
6967
  if (this.autoplay === "inview" && isVideo && !hasAttr(this.$el, "preload")) {
7129
6968
  this.$el.preload = "none";
7130
6969
  }
@@ -7133,10 +6972,7 @@
7133
6972
  }
7134
6973
  if (this.autoplay === "hover") {
7135
6974
  if (isVideo) {
7136
- this.hoverTarget = query(this.hoverTarget, this.$el) || this.$el;
7137
- if (!isFocusable(this.hoverTarget)) {
7138
- this.hoverTarget.tabIndex = 0;
7139
- }
6975
+ this.$el.tabIndex = 0;
7140
6976
  } else {
7141
6977
  this.autoplay = true;
7142
6978
  }
@@ -7145,48 +6981,27 @@
7145
6981
  mute(this.$el);
7146
6982
  }
7147
6983
  },
7148
- disconnected() {
7149
- if (this.$el[loopKey]) {
7150
- this.$el.loop = true;
7151
- }
7152
- queue.delete(this.$el);
7153
- },
7154
6984
  events: [
7155
6985
  {
7156
6986
  name: `${pointerEnter} focusin`,
7157
- el: ({ hoverTarget }) => hoverTarget,
6987
+ el: ({ hoverTarget, $el }) => query(hoverTarget, $el) || $el,
7158
6988
  filter: ({ autoplay }) => autoplay === "hover",
7159
6989
  handler(e) {
7160
- var _a;
7161
- (_a = this._reverseAbort) == null ? void 0 : _a.abort();
7162
6990
  if (!isTouch(e) || !isPlaying(this.$el)) {
7163
- this.play();
6991
+ play(this.$el);
7164
6992
  } else {
7165
- this.pause();
6993
+ pauseHover(this.$el, this.restart);
7166
6994
  }
7167
6995
  }
7168
6996
  },
7169
6997
  {
7170
6998
  name: `${pointerLeave} focusout`,
7171
- el: ({ hoverTarget }) => hoverTarget,
6999
+ el: ({ hoverTarget, $el }) => query(hoverTarget, $el) || $el,
7172
7000
  filter: ({ autoplay }) => autoplay === "hover",
7173
7001
  handler(e) {
7174
- var _a;
7175
7002
  if (!isTouch(e)) {
7176
- (_a = this._reverseAbort) == null ? void 0 : _a.abort();
7177
- this.pause();
7178
- this._reverseAbort = playReverse(this.$el, this.hoverRewind);
7179
- }
7180
- }
7181
- },
7182
- {
7183
- name: "error pause ended",
7184
- filter: ({ inviewQueued }) => inviewQueued,
7185
- handler(e) {
7186
- if (e.type === "error" || e.type === "ended" && !this.$el[loopKey]) {
7187
- queue.delete(this.$el);
7003
+ pauseHover(this.$el, this.restart);
7188
7004
  }
7189
- playNextQueued();
7190
7005
  }
7191
7006
  }
7192
7007
  ],
@@ -7199,118 +7014,33 @@
7199
7014
  }
7200
7015
  }),
7201
7016
  intersection({
7202
- filter: ({ $el, manualControl }) => !manualControl && $el.preload !== "none",
7203
- handler([{ isIntersecting }]) {
7017
+ filter: ({ $el, autoplay }) => autoplay !== "hover" && $el.preload !== "none",
7018
+ handler([{ isIntersecting, target }]) {
7204
7019
  if (!document.fullscreenElement) {
7205
7020
  if (isIntersecting) {
7206
7021
  if (this.autoplay) {
7207
- this._autoplay();
7022
+ play(target);
7208
7023
  }
7209
7024
  } else {
7210
- this.pause();
7025
+ pauseHover(target, this.restart);
7211
7026
  }
7212
7027
  }
7213
7028
  },
7214
7029
  args: { intersecting: false },
7215
- options: ({ $el, autoplay, inviewMargin }) => ({
7216
- root: autoplay === "inview" ? null : parent($el).closest(":not(a)"),
7217
- rootMargin: autoplay === "inview" ? inviewMargin : "0px"
7030
+ options: ({ $el, autoplay }) => ({
7031
+ root: autoplay === "inview" ? null : parent($el).closest(":not(a)")
7218
7032
  })
7219
7033
  })
7220
- ],
7221
- update: {
7222
- write({ percent }) {
7223
- if (!this.parallax) {
7224
- return;
7225
- }
7226
- const { duration, seeking } = this.$el;
7227
- if (!isNaN(duration) && !seeking) {
7228
- this.$el.currentTime = percent * duration;
7229
- }
7230
- },
7231
- events: ["scroll", "resize"]
7232
- },
7233
- methods: {
7234
- _autoplay() {
7235
- if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
7236
- this.pause();
7237
- if (isTag(this.$el, "video")) {
7238
- this.$el.currentTime = this.reducedMotionTime;
7239
- }
7240
- } else {
7241
- this.play();
7242
- }
7243
- },
7244
- play() {
7245
- if (this.inviewQueued) {
7246
- queue.set(this.$el, this.inviewQueued);
7247
- playNextQueued();
7248
- } else {
7249
- play(this.$el);
7250
- }
7251
- },
7252
- pause() {
7253
- pause(this.$el);
7254
- queue.delete(this.$el);
7255
- if (this.restart) {
7256
- this.$el.currentTime = 0;
7257
- }
7258
- }
7259
- }
7034
+ ]
7260
7035
  };
7261
7036
  function isPlaying(videoEl) {
7262
7037
  return !videoEl.paused && !videoEl.ended;
7263
7038
  }
7264
- const queue = /* @__PURE__ */ new Map();
7265
- const played = /* @__PURE__ */ new WeakMap();
7266
- let frame;
7267
- async function playNextQueued() {
7268
- cancelAnimationFrame(frame);
7269
- await new Promise((resolve) => frame = requestAnimationFrame(resolve));
7270
- const getPlayed = (el) => {
7271
- var _a;
7272
- return (_a = played.get(el)) != null ? _a : 0;
7273
- };
7274
- const videos = shuffle(queue.keys()).sort((a, b) => getPlayed(a) - getPlayed(b));
7275
- for (const el of videos) {
7276
- const maxQueued = queue.get(el);
7277
- if (isPlaying(el) || videos.filter(isPlaying).length / queue.size >= maxQueued) {
7278
- continue;
7279
- }
7280
- played.set(el, getPlayed(el) + 1);
7281
- play(el);
7282
- }
7283
- }
7284
- function shuffle(array) {
7285
- array = [...array];
7286
- for (let i = array.length - 1; i > 0; i--) {
7287
- let j = Math.floor(Math.random() * (i + 1));
7288
- [array[i], array[j]] = [array[j], array[i]];
7039
+ function pauseHover(el, restart) {
7040
+ pause(el);
7041
+ if (restart && isTag(el, "video")) {
7042
+ el.currentTime = 0;
7289
7043
  }
7290
- return array;
7291
- }
7292
- function playReverse(el, playbackRate) {
7293
- const start = el.currentTime;
7294
- if (isNaN(start) || !playbackRate) {
7295
- return;
7296
- }
7297
- playbackRate *= Math.max(1, start / 10 + 0.5);
7298
- const controller = new AbortController();
7299
- const time = Date.now();
7300
- (function next() {
7301
- requestAnimationFrame(() => {
7302
- if (controller.signal.aborted) {
7303
- return;
7304
- }
7305
- if (!el.seeking) {
7306
- el.currentTime = Math.max(0, start - (Date.now() - time) * playbackRate / 1e3);
7307
- }
7308
- if (el.currentTime > 0) {
7309
- next();
7310
- }
7311
- });
7312
- })();
7313
- return controller;
7314
7044
  }
7315
7045
 
7316
7046
  var cover = {
@@ -7628,7 +7358,6 @@
7628
7358
  css(this.$el, this._style);
7629
7359
  this.$el.hidden = true;
7630
7360
  const viewports = this.target.map((target) => getViewport$1(this.$el, target));
7631
- const boundaryOffsets = this.boundary.map((el) => offset(el));
7632
7361
  const viewportOffset = this.getViewportOffset(this.$el);
7633
7362
  const dirs = [
7634
7363
  [0, ["x", "width", "left", "right"]],
@@ -7638,7 +7367,7 @@
7638
7367
  if (this.axis !== axis && includes([axis, true], this.stretch)) {
7639
7368
  css(this.$el, {
7640
7369
  [prop]: Math.min(
7641
- boundaryOffsets[i][prop],
7370
+ offset(this.boundary[i])[prop],
7642
7371
  viewports[i][prop] - 2 * viewportOffset
7643
7372
  ),
7644
7373
  [`overflow-${axis}`]: "auto"
@@ -7660,10 +7389,10 @@
7660
7389
  const elOffset = offset(this.$el);
7661
7390
  css(this.$el, {
7662
7391
  [prop]: (targetOffset[start] > elOffset[start] ? targetOffset[this.inset ? end : start] - Math.max(
7663
- boundaryOffsets[i][start],
7392
+ offset(this.boundary[i])[start],
7664
7393
  viewports[i][start] + viewportOffset
7665
7394
  ) : Math.min(
7666
- boundaryOffsets[i][end],
7395
+ offset(this.boundary[i])[end],
7667
7396
  viewports[i][end] - viewportOffset
7668
7397
  ) - targetOffset[this.inset ? start : end]) - positionOffset,
7669
7398
  [`overflow-${axis}`]: "auto"
@@ -7692,7 +7421,7 @@
7692
7421
  observeViewportResize(update),
7693
7422
  observeResize(overflowParents(drop.$el).concat(drop.target), update)
7694
7423
  ];
7695
- return () => off.forEach((observer) => observer.disconnect());
7424
+ return () => off.map((observer) => observer.disconnect());
7696
7425
  }
7697
7426
  function listenForScroll(drop, fn = () => drop.$emit()) {
7698
7427
  return on([document, ...overflowParents(drop.$el)], "scroll", fn, {
@@ -7927,9 +7656,7 @@
7927
7656
  const drop = this.getDropdown(target);
7928
7657
  const adjustHeight = () => {
7929
7658
  const maxBottom = Math.max(
7930
- ...[...parents(target, `.${this.clsDrop}`), target].map(
7931
- (el) => offset(el).bottom
7932
- )
7659
+ ...parents(target, `.${this.clsDrop}`).concat(target).map((el) => offset(el).bottom)
7933
7660
  );
7934
7661
  offset(this.dropbar, {
7935
7662
  left: offset(this.dropbar).left,
@@ -8118,8 +7845,7 @@
8118
7845
  parallaxJustify: Boolean
8119
7846
  },
8120
7847
  data: {
8121
- margin: "",
8122
- firstRow: "uk-first-row",
7848
+ margin: "uk-grid-margin",
8123
7849
  clsStack: "uk-grid-stack",
8124
7850
  masonry: false,
8125
7851
  parallax: 0,
@@ -8141,14 +7867,14 @@
8141
7867
  {
8142
7868
  read(data) {
8143
7869
  const { rows } = data;
8144
- let { masonry, parallax, parallaxJustify } = this;
7870
+ let { masonry, parallax, parallaxJustify, margin } = this;
8145
7871
  parallax = Math.max(0, toPx(parallax));
8146
7872
  if (!(masonry || parallax || parallaxJustify) || positionedAbsolute(rows) || rows[0].some(
8147
7873
  (el, i) => rows.some((row) => row[i] && row[i].offsetWidth !== el.offsetWidth)
8148
7874
  )) {
8149
7875
  return data.translates = data.scrollColumns = false;
8150
7876
  }
8151
- let gutter = toFloat(css(this.$el, "row-gap"));
7877
+ let gutter = getGutter(rows, margin);
8152
7878
  let columns;
8153
7879
  let translates;
8154
7880
  if (masonry) {
@@ -8241,6 +7967,10 @@
8241
7967
  }
8242
7968
  return [columns, translates];
8243
7969
  }
7970
+ function getGutter(rows, cls) {
7971
+ const node = rows.flat().find((el) => hasClass(el, cls));
7972
+ return toFloat(node ? css(node, "marginTop") : css(rows[0][0], "paddingLeft"));
7973
+ }
8244
7974
  function transpose(rows) {
8245
7975
  const columns = [];
8246
7976
  for (const row of rows) {
@@ -8271,7 +8001,7 @@
8271
8001
  elements: ({ target }, $el) => $$(target, $el)
8272
8002
  },
8273
8003
  observe: resize({
8274
- target: ({ $el, elements }) => [$el, ...elements.flatMap((el) => [el, ...el.children])]
8004
+ target: ({ $el, elements }) => elements.reduce((elements2, el) => elements2.concat(el, ...el.children), [$el])
8275
8005
  }),
8276
8006
  events: {
8277
8007
  // Hidden elements may change height when fonts load
@@ -9280,11 +9010,11 @@
9280
9010
  ],
9281
9011
  update: {
9282
9012
  read() {
9283
- return {
9284
- overflow: ["Width", "Height"].map(
9285
- (prop) => this.$el[`scroll${prop}`] - this.$el[`client${prop}`]
9286
- )
9287
- };
9013
+ const overflow = [];
9014
+ for (const prop of ["Width", "Height"]) {
9015
+ overflow.push(this.$el[`scroll${prop}`] - this.$el[`client${prop}`]);
9016
+ }
9017
+ return { overflow };
9288
9018
  },
9289
9019
  write({ overflow }) {
9290
9020
  for (let i = 0; i < 2; i++) {
@@ -9915,7 +9645,7 @@
9915
9645
  if (!value) {
9916
9646
  return 0;
9917
9647
  }
9918
- if (isNumeric(value) || isString(value) && /^-?\d/.test(value)) {
9648
+ if (isNumeric(value) || isString(value) && value.match(/^-?\d/)) {
9919
9649
  return propOffset + toPx(value, "height", el, true);
9920
9650
  } else {
9921
9651
  const refElement = value === true ? getVisibleParent(el) : query(value, el);
@@ -10030,9 +9760,10 @@
10030
9760
 
10031
9761
  const selDisabled = ".uk-disabled *, .uk-disabled, [disabled]";
10032
9762
  var Switcher = {
10033
- mixins: [Connect],
9763
+ mixins: [Togglable],
10034
9764
  args: "connect",
10035
9765
  props: {
9766
+ connect: String,
10036
9767
  toggle: String,
10037
9768
  itemNav: String,
10038
9769
  active: Number,
@@ -10044,12 +9775,20 @@
10044
9775
  toggle: "> * > :first-child",
10045
9776
  itemNav: false,
10046
9777
  active: 0,
9778
+ cls: "uk-active",
10047
9779
  attrItem: "uk-switcher-item",
10048
9780
  selVertical: ".uk-nav",
10049
9781
  followFocus: false,
10050
9782
  swiping: true
10051
9783
  },
10052
9784
  computed: {
9785
+ connects: {
9786
+ get: ({ connect }, $el) => queryAll(connect, $el),
9787
+ observe: ({ connect }) => connect
9788
+ },
9789
+ connectChildren() {
9790
+ return this.connects.map((el) => children(el)).flat();
9791
+ },
10053
9792
  toggles: ({ toggle }, $el) => $$(toggle, $el),
10054
9793
  children(_, $el) {
10055
9794
  return children($el).filter(
@@ -10080,7 +9819,10 @@
10080
9819
  connected() {
10081
9820
  this.$el.role = "tablist";
10082
9821
  },
10083
- observe: swipe({ target: ({ connects }) => connects, filter: ({ swiping }) => swiping }),
9822
+ observe: [
9823
+ lazyload({ targets: ({ connectChildren }) => connectChildren }),
9824
+ swipe({ target: ({ connects }) => connects, filter: ({ swiping }) => swiping })
9825
+ ],
10084
9826
  events: [
10085
9827
  {
10086
9828
  name: "click keydown",
@@ -10130,27 +9872,24 @@
10130
9872
  }
10131
9873
  ],
10132
9874
  update() {
9875
+ var _a;
9876
+ for (const el of this.connects) {
9877
+ if (isTag(el, "ul")) {
9878
+ el.role = "presentation";
9879
+ }
9880
+ }
10133
9881
  attr(children(this.$el), "role", "presentation");
10134
9882
  for (const index in this.toggles) {
10135
9883
  const toggle = this.toggles[index];
10136
- toggle.id = generateId(this, toggle);
10137
- const controls = [];
10138
- for (const { children: children2 } of this.connects) {
10139
- const item = children2[index];
10140
- if (!item) {
10141
- continue;
10142
- }
10143
- attr(item, {
10144
- id: generateId(this, item),
10145
- role: "tabpanel",
10146
- "aria-labelledby": toggle.id
10147
- });
10148
- controls.push(item.id);
9884
+ const item = (_a = this.connects[0]) == null ? void 0 : _a.children[index];
9885
+ toggle.role = "tab";
9886
+ if (!item) {
9887
+ continue;
10149
9888
  }
10150
- attr(toggle, {
10151
- role: "tab",
10152
- "aria-controls": controls.join(" ")
10153
- });
9889
+ toggle.id = generateId(this, toggle);
9890
+ item.id = generateId(this, item);
9891
+ toggle.ariaControls = item.id;
9892
+ attr(item, { role: "tabpanel", "aria-labelledby": toggle.id });
10154
9893
  }
10155
9894
  attr(this.$el, "aria-orientation", matches(this.$el, this.selVertical) ? "vertical" : null);
10156
9895
  },
@@ -10183,7 +9922,15 @@
10183
9922
  tabindex: next === i ? null : -1
10184
9923
  });
10185
9924
  });
10186
- return this.showConnects(next, prev >= 0 && prev !== next);
9925
+ const animate = prev >= 0 && prev !== next;
9926
+ this.connects.forEach(async ({ children: children2 }) => {
9927
+ const actives = toArray(children2).filter(
9928
+ (child, i) => i !== next && hasClass(child, this.cls)
9929
+ );
9930
+ if (await this.toggleElement(actives, false, animate)) {
9931
+ await this.toggleElement(children2[next], true, animate);
9932
+ }
9933
+ });
10187
9934
  }
10188
9935
  }
10189
9936
  };