uikit 3.19.5-dev.8317c4705 → 3.19.5-dev.92ee0f0d9

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 (69) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/css/uikit-core-rtl.css +2 -2
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +2 -2
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +2 -2
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +2 -2
  9. package/dist/css/uikit.min.css +1 -1
  10. package/dist/js/components/countdown.js +1 -1
  11. package/dist/js/components/countdown.min.js +1 -1
  12. package/dist/js/components/filter.js +2 -2
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +55 -55
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +55 -55
  17. package/dist/js/components/lightbox.min.js +1 -1
  18. package/dist/js/components/notification.js +1 -1
  19. package/dist/js/components/notification.min.js +1 -1
  20. package/dist/js/components/parallax.js +40 -40
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +41 -41
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +41 -42
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +41 -41
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +41 -41
  29. package/dist/js/components/slideshow.min.js +1 -1
  30. package/dist/js/components/sortable.js +2 -2
  31. package/dist/js/components/sortable.min.js +1 -1
  32. package/dist/js/components/tooltip.js +1 -1
  33. package/dist/js/components/tooltip.min.js +1 -1
  34. package/dist/js/components/upload.js +1 -1
  35. package/dist/js/components/upload.min.js +1 -1
  36. package/dist/js/uikit-core.js +128 -103
  37. package/dist/js/uikit-core.min.js +1 -1
  38. package/dist/js/uikit-icons.js +1 -1
  39. package/dist/js/uikit-icons.min.js +1 -1
  40. package/dist/js/uikit.js +137 -110
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/js/api/boot.js +6 -7
  44. package/src/js/api/component.js +4 -4
  45. package/src/js/api/computed.js +20 -26
  46. package/src/js/api/observer.js +17 -5
  47. package/src/js/components/slider-parallax.js +2 -2
  48. package/src/js/components/slider.js +1 -1
  49. package/src/js/core/drop.js +1 -2
  50. package/src/js/core/height-placeholder.js +4 -1
  51. package/src/js/core/height-viewport.js +1 -1
  52. package/src/js/core/icon.js +2 -3
  53. package/src/js/core/img.js +1 -1
  54. package/src/js/core/inverse.js +22 -5
  55. package/src/js/core/modal.js +5 -6
  56. package/src/js/core/sticky.js +1 -1
  57. package/src/js/core/switcher.js +4 -1
  58. package/src/js/core/toggle.js +6 -3
  59. package/src/js/mixin/internal/animate-fade.js +1 -3
  60. package/src/js/mixin/parallax.js +7 -3
  61. package/src/js/mixin/slider.js +0 -3
  62. package/src/js/mixin/slideshow.js +3 -0
  63. package/src/js/util/filter.js +7 -14
  64. package/src/js/util/lang.js +1 -1
  65. package/src/js/util/selector.js +33 -24
  66. package/src/js/util/svg.js +1 -12
  67. package/src/less/components/utility.less +1 -1
  68. package/src/scss/components/utility.scss +1 -1
  69. package/tests/js/index.js +12 -10
package/dist/js/uikit.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.19.5-dev.8317c4705 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License */
1
+ /*! UIkit 3.19.5-dev.92ee0f0d9 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License */
2
2
 
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -88,7 +88,7 @@
88
88
  return parseFloat(value) || 0;
89
89
  }
90
90
  function toNode(element) {
91
- return toNodes(element)[0];
91
+ return element && toNodes(element)[0];
92
92
  }
93
93
  function toNodes(element) {
94
94
  return isNode(element) ? [element] : Array.from(element || []).filter(isNode);
@@ -296,10 +296,11 @@
296
296
  function isVoidElement(element) {
297
297
  return toNodes(element).some((element2) => voidElements[element2.tagName.toLowerCase()]);
298
298
  }
299
+ const isVisibleFn = Element.prototype.checkVisibility || function() {
300
+ return this.offsetWidth || this.offsetHeight || this.getClientRects().length;
301
+ };
299
302
  function isVisible(element) {
300
- return toNodes(element).some(
301
- (element2) => element2.offsetWidth || element2.offsetHeight || element2.getClientRects().length
302
- );
303
+ return toNodes(element).some((element2) => isVisibleFn.call(element2));
303
304
  }
304
305
  const selInput = "input,select,textarea,button";
305
306
  function isInput(element) {
@@ -319,13 +320,6 @@
319
320
  function matches(element, selector) {
320
321
  return toNodes(element).some((element2) => element2.matches(selector));
321
322
  }
322
- function closest(element, selector) {
323
- var _a;
324
- return (_a = toNode(element)) == null ? void 0 : _a.closest(startsWith(selector, ">") ? selector.slice(1) : selector);
325
- }
326
- function within(element, selector) {
327
- return isString(selector) ? !!closest(element, selector) : toNode(selector).contains(toNode(element));
328
- }
329
323
  function parents(element, selector) {
330
324
  const elements = [];
331
325
  while (element = parent(element)) {
@@ -374,15 +368,13 @@
374
368
  const splitSelectorRe = /.*?[^\\](?![^(]*\))(?:,|$)/g;
375
369
  const trailingCommaRe = /\s*,$/;
376
370
  const parseSelector = memoize((selector) => {
371
+ var _a;
377
372
  selector = selector.replace(addStarRe, "$1 *");
378
373
  let isContextSelector = false;
379
374
  const selectors = [];
380
- for (let sel of selector.match(splitSelectorRe)) {
375
+ for (let sel of (_a = selector.match(splitSelectorRe)) != null ? _a : []) {
381
376
  sel = sel.replace(trailingCommaRe, "").trim();
382
- if (sel[0] === ">") {
383
- sel = `:scope ${sel}`;
384
- }
385
- isContextSelector || (isContextSelector = ["!", "+", "~", "-"].includes(sel[0]));
377
+ isContextSelector || (isContextSelector = ["!", "+", "~", "-", ">"].includes(sel[0]));
386
378
  selectors.push(sel);
387
379
  }
388
380
  return {
@@ -391,6 +383,11 @@
391
383
  isContextSelector
392
384
  };
393
385
  });
386
+ const parsePositionSelector = memoize((selector) => {
387
+ selector = selector.substr(1).trim();
388
+ const index2 = selector.indexOf(" ");
389
+ return ~index2 ? [selector.substring(0, index2), selector.substring(index2 + 1)] : [selector, ""];
390
+ });
394
391
  function _query(selector, context = document, queryFn) {
395
392
  if (!selector || !isString(selector)) {
396
393
  return selector;
@@ -402,33 +399,36 @@
402
399
  selector = "";
403
400
  const isSingle = parsed.selectors.length === 1;
404
401
  for (let sel of parsed.selectors) {
402
+ let positionSel;
405
403
  let ctx = context;
406
404
  if (sel[0] === "!") {
407
- const selectors = sel.substr(1).trim().split(" ");
408
- ctx = parent(context).closest(selectors[0]);
409
- sel = selectors.slice(1).join(" ").trim();
410
- if (!sel.length && isSingle) {
405
+ [positionSel, sel] = parsePositionSelector(sel);
406
+ ctx = context.parentElement.closest(positionSel);
407
+ if (!sel && isSingle) {
411
408
  return ctx;
412
409
  }
413
410
  }
414
- if (sel[0] === "-") {
415
- const selectors = sel.substr(1).trim().split(" ");
416
- const prev = (ctx || context).previousElementSibling;
417
- ctx = matches(prev, sel.substr(1)) ? prev : null;
418
- sel = selectors.slice(1).join(" ");
419
- if (!sel.length && isSingle) {
411
+ if (ctx && sel[0] === "-") {
412
+ [positionSel, sel] = parsePositionSelector(sel);
413
+ ctx = ctx.previousElementSibling;
414
+ ctx = matches(ctx, positionSel) ? ctx : null;
415
+ if (!sel && isSingle) {
420
416
  return ctx;
421
417
  }
422
- } else if (sel[0] === "~" || sel[0] === "+" && isSingle) {
423
- return _doQuery(
424
- parent(context),
425
- queryFn,
426
- `:scope :nth-child(${index(context) + 1}) ${sel}`
427
- );
428
418
  }
429
- if (ctx) {
430
- selector += `${selector ? "," : ""}${domPath(ctx)} ${sel}`;
419
+ if (!ctx) {
420
+ continue;
421
+ }
422
+ if (isSingle) {
423
+ if (sel[0] === "~" || sel[0] === "+") {
424
+ sel = `:scope :nth-child(${index(ctx) + 1}) ${sel}`;
425
+ ctx = ctx.parentElement;
426
+ } else if (sel[0] === ">") {
427
+ sel = `:scope ${sel}`;
428
+ }
429
+ return _doQuery(ctx, queryFn, sel);
431
430
  }
431
+ selector += `${selector ? "," : ""}${domPath(ctx)} ${sel}`;
432
432
  }
433
433
  if (!isDocument(context)) {
434
434
  context = context.ownerDocument;
@@ -1566,7 +1566,6 @@
1566
1566
  camelize: camelize,
1567
1567
  children: children,
1568
1568
  clamp: clamp,
1569
- closest: closest,
1570
1569
  createEvent: createEvent,
1571
1570
  css: css,
1572
1571
  data: data,
@@ -1687,7 +1686,6 @@
1687
1686
  uniqueBy: uniqueBy,
1688
1687
  unwrap: unwrap,
1689
1688
  width: width,
1690
- within: within,
1691
1689
  wrapAll: wrapAll,
1692
1690
  wrapInner: wrapInner
1693
1691
  });
@@ -2190,7 +2188,7 @@
2190
2188
  );
2191
2189
  }
2192
2190
  function getTransitionNodes(target) {
2193
- return getRows(children(target)).flat().filter((node) => isVisible(node));
2191
+ return getRows(children(target)).flat().filter(isVisible);
2194
2192
  }
2195
2193
  function awaitFrame$1() {
2196
2194
  return new Promise((resolve) => requestAnimationFrame(resolve));
@@ -3262,6 +3260,7 @@
3262
3260
  }
3263
3261
  }
3264
3262
  }
3263
+ const mutationOptions = { subtree: true, childList: true };
3265
3264
  function registerComputed(instance, key, cb) {
3266
3265
  instance._hasComputed = true;
3267
3266
  Object.defineProperty(instance, key, {
@@ -3270,6 +3269,13 @@
3270
3269
  const { _computed, $props, $el } = instance;
3271
3270
  if (!hasOwn(_computed, key)) {
3272
3271
  _computed[key] = (cb.get || cb).call(instance, $props, $el);
3272
+ if (cb.observe && instance._computedObserver) {
3273
+ const selector = cb.observe.call(instance, $props);
3274
+ instance._computedObserver.observe(
3275
+ ["~", "+", "-"].includes(selector[0]) ? $el.parentElement : $el.getRootNode(),
3276
+ mutationOptions
3277
+ );
3278
+ }
3273
3279
  }
3274
3280
  return _computed[key];
3275
3281
  },
@@ -3290,11 +3296,16 @@
3290
3296
  read: () => runWatches(instance, resetComputed(instance)),
3291
3297
  events: ["resize", "computed"]
3292
3298
  });
3293
- registerComputedObserver();
3294
- instances$1.add(instance);
3299
+ instance._computedObserver = observeMutation(
3300
+ instance.$el,
3301
+ () => callUpdate(instance, "computed"),
3302
+ mutationOptions
3303
+ );
3295
3304
  }
3296
3305
  function disconnectComputedUpdates(instance) {
3297
- instances$1 == null ? void 0 : instances$1.delete(instance);
3306
+ var _a;
3307
+ (_a = instance._computedObserver) == null ? void 0 : _a.disconnect();
3308
+ delete instance._computedObserver;
3298
3309
  resetComputed(instance);
3299
3310
  }
3300
3311
  function resetComputed(instance) {
@@ -3302,23 +3313,6 @@
3302
3313
  instance._computed = {};
3303
3314
  return values;
3304
3315
  }
3305
- let observer;
3306
- let instances$1;
3307
- function registerComputedObserver() {
3308
- if (observer) {
3309
- return;
3310
- }
3311
- instances$1 = /* @__PURE__ */ new Set();
3312
- observer = new MutationObserver(() => {
3313
- for (const instance of instances$1) {
3314
- callUpdate(instance, "computed");
3315
- }
3316
- });
3317
- observer.observe(document, {
3318
- subtree: true,
3319
- childList: true
3320
- });
3321
- }
3322
3316
 
3323
3317
  function initEvents(instance) {
3324
3318
  instance._events = [];
@@ -3388,18 +3382,30 @@
3388
3382
  }
3389
3383
  const targets = hasOwn(instance, key) ? instance[key] : target;
3390
3384
  const observer = observe(targets, handler, options, args);
3391
- if (isFunction(target) && isArray(instance[key]) && observer.unobserve) {
3392
- registerWatch(instance, { handler: updateTargets(observer), immediate: false }, key);
3385
+ if (isFunction(target) && isArray(instance[key])) {
3386
+ registerWatch(
3387
+ instance,
3388
+ { handler: updateTargets(observer, options), immediate: false },
3389
+ key
3390
+ );
3393
3391
  }
3394
3392
  registerObserver(instance, observer);
3395
3393
  }
3396
- function updateTargets(observer) {
3394
+ function updateTargets(observer, options) {
3397
3395
  return (targets, prev) => {
3398
3396
  for (const target of prev) {
3399
- !includes(targets, target) && observer.unobserve(target);
3397
+ if (!includes(targets, target)) {
3398
+ if (observer.unobserve) {
3399
+ observer.unobserve(target);
3400
+ } else if (observer.observe) {
3401
+ observer.disconnect();
3402
+ }
3403
+ }
3400
3404
  }
3401
3405
  for (const target of targets) {
3402
- !includes(prev, target) && observer.observe(target);
3406
+ if (!includes(prev, target) || !observer.unobserve) {
3407
+ observer.observe(target, options);
3408
+ }
3403
3409
  }
3404
3410
  };
3405
3411
  }
@@ -3559,26 +3565,26 @@
3559
3565
  };
3560
3566
  App.util = util;
3561
3567
  App.options = {};
3562
- App.version = "3.19.5-dev.8317c4705";
3568
+ App.version = "3.19.5-dev.92ee0f0d9";
3563
3569
 
3564
3570
  const PREFIX = "uk-";
3565
3571
  const DATA = "__uikit__";
3566
3572
  const components$2 = {};
3567
3573
  function component(name, options) {
3568
- var _a;
3574
+ var _a, _b;
3569
3575
  const id = PREFIX + hyphenate(name);
3570
3576
  if (!options) {
3571
- if (isPlainObject(components$2[id])) {
3577
+ if (!components$2[id].options) {
3572
3578
  components$2[id] = App.extend(components$2[id]);
3573
3579
  }
3574
3580
  return components$2[id];
3575
3581
  }
3576
3582
  name = camelize(name);
3577
3583
  App[name] = (element, data) => createComponent(name, element, data);
3578
- const opt = isPlainObject(options) ? { ...options } : options.options;
3584
+ const opt = (_a = options.options) != null ? _a : { ...options };
3579
3585
  opt.id = id;
3580
3586
  opt.name = name;
3581
- (_a = opt.install) == null ? void 0 : _a.call(opt, App, opt, name);
3587
+ (_b = opt.install) == null ? void 0 : _b.call(opt, App, opt, name);
3582
3588
  if (App._initialized && !opt.functional) {
3583
3589
  requestAnimationFrame(() => createComponent(name, `[${id}],[data-${id}]`));
3584
3590
  }
@@ -3586,7 +3592,7 @@
3586
3592
  }
3587
3593
  function createComponent(name, element, data, ...args) {
3588
3594
  const Component = component(name);
3589
- return Component.options.functional ? new Component({ data: isPlainObject(element) ? element : [element, data, ...args] }) : element ? $$(element).map(init)[0] : init();
3595
+ return Component.options.functional ? new Component({ data: isPlainObject(element) ? element : [element, data, ...args] }) : element ? findAll(element).map(init)[0] : init();
3590
3596
  function init(element2) {
3591
3597
  const instance = getComponent(element2, name);
3592
3598
  if (instance) {
@@ -3948,7 +3954,6 @@
3948
3954
  }
3949
3955
  }
3950
3956
  },
3951
- observe: resize(),
3952
3957
  events: {
3953
3958
  itemshow({ target }) {
3954
3959
  addClass(target, this.clsEnter, this.clsSlideActive);
@@ -4077,6 +4082,7 @@
4077
4082
  return { animation: this.animation };
4078
4083
  }
4079
4084
  },
4085
+ observe: resize(),
4080
4086
  events: {
4081
4087
  beforeitemshow({ target }) {
4082
4088
  addClass(target, this.clsActive);
@@ -4559,18 +4565,10 @@
4559
4565
  }
4560
4566
 
4561
4567
  function getMaxPathLength(el) {
4562
- return Math.ceil(
4563
- Math.max(
4564
- 0,
4565
- ...$$("[stroke]", el).map((stroke) => {
4566
- try {
4567
- return stroke.getTotalLength();
4568
- } catch (e) {
4569
- return 0;
4570
- }
4571
- })
4572
- )
4573
- );
4568
+ return Math.ceil(Math.max(0, ...$$("[stroke]", el).map((stroke) => {
4569
+ var _a;
4570
+ return (_a = stroke.getTotalLength) == null ? void 0 : _a.call(stroke);
4571
+ })));
4574
4572
  }
4575
4573
 
4576
4574
  const props = {
@@ -4774,6 +4772,7 @@
4774
4772
  }
4775
4773
  };
4776
4774
  }
4775
+ const loading = {};
4777
4776
  const dimensions = {};
4778
4777
  function getBackgroundImageDimensions(el) {
4779
4778
  const src = css(el, "backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/, "$1");
@@ -4783,11 +4782,12 @@
4783
4782
  const image = new Image();
4784
4783
  if (src) {
4785
4784
  image.src = src;
4786
- if (!image.naturalWidth) {
4787
- image.onload = () => {
4785
+ if (!image.naturalWidth && !loading[src]) {
4786
+ once(image, "error load", () => {
4788
4787
  dimensions[src] = toDimensions(image);
4789
4788
  trigger(el, createEvent("load", false));
4790
- };
4789
+ });
4790
+ loading[src] = true;
4791
4791
  return toDimensions(image);
4792
4792
  }
4793
4793
  }
@@ -5277,7 +5277,7 @@
5277
5277
  toggleClass(this.$el, this.clsContainer, !$(`.${this.clsContainer}`, this.$el));
5278
5278
  },
5279
5279
  observe: resize({
5280
- target: ({ slides }) => slides
5280
+ target: ({ slides, $el }) => [$el, ...slides]
5281
5281
  }),
5282
5282
  update: {
5283
5283
  write() {
@@ -5465,7 +5465,7 @@
5465
5465
  var sliderParallax = {
5466
5466
  mixins: [Parallax],
5467
5467
  beforeConnect() {
5468
- this.item = closest(this.$el, `.${this.$options.id.replace("parallax", "items")} > *`);
5468
+ this.item = this.$el.closest(`.${this.$options.id.replace("parallax", "items")} > *`);
5469
5469
  },
5470
5470
  disconnected() {
5471
5471
  this.item = null;
@@ -6402,14 +6402,14 @@
6402
6402
  if (name) {
6403
6403
  if (hasAttr(target, attributeName)) {
6404
6404
  createComponent(name, target);
6405
- return;
6405
+ } else {
6406
+ (_a = getComponent(target, name)) == null ? void 0 : _a.$destroy();
6406
6407
  }
6407
- (_a = getComponent(target, name)) == null ? void 0 : _a.$destroy();
6408
6408
  }
6409
6409
  }
6410
6410
  function connect(node) {
6411
6411
  const components2 = getComponents(node);
6412
- for (const name in getComponents(node)) {
6412
+ for (const name in components2) {
6413
6413
  callConnected(components2[name]);
6414
6414
  }
6415
6415
  for (const attributeName of node.getAttributeNames()) {
@@ -6419,7 +6419,7 @@
6419
6419
  }
6420
6420
  function disconnect(node) {
6421
6421
  const components2 = getComponents(node);
6422
- for (const name in getComponents(node)) {
6422
+ for (const name in components2) {
6423
6423
  callDisconnected(components2[name]);
6424
6424
  }
6425
6425
  }
@@ -6428,7 +6428,7 @@
6428
6428
  attribute = attribute.slice(5);
6429
6429
  }
6430
6430
  const cmp = components$2[attribute];
6431
- return cmp && (isPlainObject(cmp) ? cmp : cmp.options).name;
6431
+ return cmp && (cmp.options || cmp).name;
6432
6432
  }
6433
6433
 
6434
6434
  globalApi(App);
@@ -7171,7 +7171,8 @@
7171
7171
  document,
7172
7172
  `${pointerUp$1} ${pointerCancel} scroll`,
7173
7173
  ({ defaultPrevented, type, target: newTarget }) => {
7174
- if (!defaultPrevented && type === pointerUp$1 && target === newTarget && !(drop.targetEl && within(target, drop.targetEl))) {
7174
+ var _a;
7175
+ if (!defaultPrevented && type === pointerUp$1 && target === newTarget && !((_a = drop.targetEl) == null ? void 0 : _a.contains(target))) {
7175
7176
  drop.hide(false);
7176
7177
  }
7177
7178
  },
@@ -7787,7 +7788,10 @@
7787
7788
  target: ""
7788
7789
  },
7789
7790
  computed: {
7790
- target: ({ target }, $el) => query(target, $el)
7791
+ target: {
7792
+ get: ({ target }, $el) => query(target, $el),
7793
+ observe: ({ target }) => target
7794
+ }
7791
7795
  },
7792
7796
  observe: resize({ target: ({ target }) => target }),
7793
7797
  update: {
@@ -7843,7 +7847,7 @@
7843
7847
  const top = offsetPosition(offsetTopEl)[0] - offsetPosition(scrollElement)[0];
7844
7848
  minHeight += top > 0 && top < viewportHeight / 2 ? ` - ${top}px` : "";
7845
7849
  } else {
7846
- minHeight += ` - ${css(scrollElement, "paddingTop")}`;
7850
+ minHeight += ` - ${boxModelAdjust(scrollElement, "height", css(scrollElement, "boxSizing"))}px`;
7847
7851
  }
7848
7852
  }
7849
7853
  if (this.offsetBottom === true) {
@@ -8037,7 +8041,7 @@
8037
8041
  i18n: { toggle: "Open Search", submit: "Submit Search" },
8038
8042
  beforeConnect() {
8039
8043
  const isToggle = hasClass(this.$el, "uk-search-toggle") || hasClass(this.$el, "uk-navbar-toggle");
8040
- this.icon = isToggle ? "search-toggle-icon" : hasClass(this.$el, "uk-search-icon") && closest(this.$el, ".uk-search-large") ? "search-large" : closest(this.$el, ".uk-search-navbar") ? "search-navbar" : this.$props.icon;
8044
+ this.icon = isToggle ? "search-toggle-icon" : hasClass(this.$el, "uk-search-icon") && this.$el.closest(".uk-search-large") ? "search-large" : this.$el.closest(".uk-search-navbar") ? "search-navbar" : this.$props.icon;
8041
8045
  if (hasAttr(this.$el, "aria-label")) {
8042
8046
  return;
8043
8047
  }
@@ -8181,13 +8185,13 @@
8181
8185
  delete this.img;
8182
8186
  },
8183
8187
  observe: intersection({
8184
- target: ({ $el, $props }) => [$el, ...queryAll($props.target, $el)],
8185
8188
  handler(entries, observer) {
8186
8189
  this.load();
8187
8190
  observer.disconnect();
8188
8191
  },
8189
8192
  options: ({ margin }) => ({ rootMargin: margin }),
8190
- filter: ({ loading }) => loading === "lazy"
8193
+ filter: ({ loading }) => loading === "lazy",
8194
+ target: ({ $el, $props }) => $props.target ? [$el, ...queryAll($props.target, $el)] : $el
8191
8195
  }),
8192
8196
  methods: {
8193
8197
  load() {
@@ -8277,9 +8281,17 @@
8277
8281
  selActive: false
8278
8282
  },
8279
8283
  computed: {
8280
- target: ({ target }, $el) => target ? $$(target, $el) : [$el]
8284
+ target: ({ target }, $el) => target ? $$(target, $el) : $el
8281
8285
  },
8282
8286
  observe: [
8287
+ intersection({
8288
+ handler(entries) {
8289
+ this.isIntersecting = entries.some(({ isIntersecting }) => isIntersecting);
8290
+ this.$emit();
8291
+ },
8292
+ target: ({ target }) => target,
8293
+ args: { intersecting: false }
8294
+ }),
8283
8295
  mutation({
8284
8296
  target: ({ target }) => target,
8285
8297
  options: { attributes: true, attributeFilter: ["class"], attributeOldValue: true }
@@ -8287,7 +8299,10 @@
8287
8299
  {
8288
8300
  target: ({ target }) => target,
8289
8301
  observe: (target, handler) => {
8290
- const observer = observeResize([...target, document.documentElement], handler);
8302
+ const observer = observeResize(
8303
+ [...toNodes(target), document.documentElement],
8304
+ handler
8305
+ );
8291
8306
  const listener = [
8292
8307
  on(document, "scroll itemshown itemhidden", handler, {
8293
8308
  passive: true,
@@ -8303,6 +8318,8 @@
8303
8318
  })
8304
8319
  ];
8305
8320
  return {
8321
+ observe: observer.observe.bind(observer),
8322
+ unobserve: observer.unobserve.bind(observer),
8306
8323
  disconnect() {
8307
8324
  observer.disconnect();
8308
8325
  listener.map((off) => off());
@@ -8316,7 +8333,10 @@
8316
8333
  ],
8317
8334
  update: {
8318
8335
  read() {
8319
- for (const target of this.target) {
8336
+ if (!this.isIntersecting) {
8337
+ return false;
8338
+ }
8339
+ for (const target of toNodes(this.target)) {
8320
8340
  replaceClass(
8321
8341
  target,
8322
8342
  "uk-light,uk-dark",
@@ -8431,10 +8451,11 @@
8431
8451
  };
8432
8452
  function install({ modal }) {
8433
8453
  modal.dialog = function(content, options) {
8434
- const dialog = modal(
8435
- `<div class="uk-modal"> <div class="uk-modal-dialog">${content}</div> </div>`,
8436
- { stack: true, role: "alertdialog", ...options }
8437
- );
8454
+ const dialog = modal($(`<div><div class="uk-modal-dialog">${content}</div></div>`), {
8455
+ stack: true,
8456
+ role: "alertdialog",
8457
+ ...options
8458
+ });
8438
8459
  dialog.show();
8439
8460
  on(
8440
8461
  dialog.$el,
@@ -9053,7 +9074,7 @@
9053
9074
  target: () => document.scrollingElement,
9054
9075
  options: { box: "content-box" }
9055
9076
  }),
9056
- resize({ target: ({ $el }) => $el })
9077
+ resize()
9057
9078
  ],
9058
9079
  events: [
9059
9080
  {
@@ -9466,7 +9487,10 @@
9466
9487
  swiping: true
9467
9488
  },
9468
9489
  computed: {
9469
- connects: ({ connect }, $el) => queryAll(connect, $el),
9490
+ connects: {
9491
+ get: ({ connect }, $el) => queryAll(connect, $el),
9492
+ observe: ({ connect }) => connect
9493
+ },
9470
9494
  connectChildren() {
9471
9495
  return this.connects.map((el) => children(el)).flat();
9472
9496
  },
@@ -9655,9 +9679,12 @@
9655
9679
  queued: true
9656
9680
  },
9657
9681
  computed: {
9658
- target({ target }, $el) {
9659
- target = queryAll(target || $el.hash, $el);
9660
- return target.length ? target : [$el];
9682
+ target: {
9683
+ get: ({ target }, $el) => {
9684
+ target = queryAll(target || $el.hash, $el);
9685
+ return target.length ? target : [$el];
9686
+ },
9687
+ observe: ({ target }) => target
9661
9688
  }
9662
9689
  },
9663
9690
  connected() {