uikit 3.19.5-dev.66a60877b → 3.19.5-dev.74c343fa4

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 (62) hide show
  1. package/CHANGELOG.md +2 -1
  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 +87 -87
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +1 -1
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +1 -1
  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 -30
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +40 -30
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +40 -30
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +40 -30
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +40 -30
  29. package/dist/js/components/slideshow.min.js +1 -1
  30. package/dist/js/components/sortable.js +87 -87
  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 +81 -74
  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 +167 -163
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/js/api/computed.js +20 -26
  44. package/src/js/core/height-placeholder.js +4 -1
  45. package/src/js/core/margin.js +5 -0
  46. package/src/js/core/modal.js +5 -6
  47. package/src/js/core/scrollspy.js +0 -3
  48. package/src/js/core/sticky.js +1 -1
  49. package/src/js/core/switcher.js +4 -1
  50. package/src/js/core/toggle.js +6 -3
  51. package/src/js/mixin/internal/animate-fade.js +2 -7
  52. package/src/js/mixin/internal/animate-slide.js +2 -7
  53. package/src/js/mixin/parallax.js +7 -3
  54. package/src/js/util/fastdom.js +6 -13
  55. package/src/js/util/filter.js +6 -3
  56. package/src/js/util/selector.js +31 -22
  57. package/src/js/util/svg.js +4 -1
  58. package/src/less/components/utility.less +1 -1
  59. package/src/scss/components/utility.scss +1 -1
  60. package/tests/base.html +1 -1
  61. package/tests/js/index.js +12 -10
  62. package/tests/switcher.html +86 -86
package/dist/js/uikit.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.19.5-dev.66a60877b | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License */
1
+ /*! UIkit 3.19.5-dev.74c343fa4 | 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() :
@@ -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) {
@@ -373,10 +374,7 @@
373
374
  const selectors = [];
374
375
  for (let sel of (_a = selector.match(splitSelectorRe)) != null ? _a : []) {
375
376
  sel = sel.replace(trailingCommaRe, "").trim();
376
- if (sel[0] === ">") {
377
- sel = `:scope ${sel}`;
378
- }
379
- isContextSelector || (isContextSelector = ["!", "+", "~", "-"].includes(sel[0]));
377
+ isContextSelector || (isContextSelector = ["!", "+", "~", "-", ">"].includes(sel[0]));
380
378
  selectors.push(sel);
381
379
  }
382
380
  return {
@@ -385,6 +383,11 @@
385
383
  isContextSelector
386
384
  };
387
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
+ });
388
391
  function _query(selector, context = document, queryFn) {
389
392
  if (!selector || !isString(selector)) {
390
393
  return selector;
@@ -396,33 +399,36 @@
396
399
  selector = "";
397
400
  const isSingle = parsed.selectors.length === 1;
398
401
  for (let sel of parsed.selectors) {
402
+ let positionSel;
399
403
  let ctx = context;
400
404
  if (sel[0] === "!") {
401
- const selectors = sel.substr(1).trim().split(" ");
402
- ctx = context.parentElement.closest(selectors[0]);
403
- sel = selectors.slice(1).join(" ").trim();
404
- if (!sel.length && isSingle) {
405
+ [positionSel, sel] = parsePositionSelector(sel);
406
+ ctx = context.parentElement.closest(positionSel);
407
+ if (!sel && isSingle) {
405
408
  return ctx;
406
409
  }
407
410
  }
408
- if (sel[0] === "-") {
409
- const selectors = sel.substr(1).trim().split(" ");
410
- const prev = (ctx || context).previousElementSibling;
411
- ctx = matches(prev, sel.substr(1)) ? prev : null;
412
- sel = selectors.slice(1).join(" ");
413
- 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) {
414
416
  return ctx;
415
417
  }
416
- } else if (sel[0] === "~" || sel[0] === "+" && isSingle) {
417
- return _doQuery(
418
- ctx.parentElement,
419
- queryFn,
420
- `:scope :nth-child(${index(ctx) + 1}) ${sel}`
421
- );
422
418
  }
423
- if (ctx) {
424
- selector += `${selector ? "," : ""}${domPath(ctx)} ${sel}`;
419
+ if (!ctx) {
420
+ continue;
425
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);
430
+ }
431
+ selector += `${selector ? "," : ""}${domPath(ctx)} ${sel}`;
426
432
  }
427
433
  if (!isDocument(context)) {
428
434
  context = context.ownerDocument;
@@ -993,24 +999,18 @@
993
999
  },
994
1000
  flush
995
1001
  };
996
- function flush(recursion) {
1002
+ function flush() {
997
1003
  runTasks(fastdom.reads);
998
1004
  runTasks(fastdom.writes.splice(0));
999
1005
  fastdom.scheduled = false;
1000
1006
  if (fastdom.reads.length || fastdom.writes.length) {
1001
- scheduleFlush(recursion + 1);
1007
+ scheduleFlush();
1002
1008
  }
1003
1009
  }
1004
- const RECURSION_LIMIT = 4;
1005
- function scheduleFlush(recursion) {
1006
- if (fastdom.scheduled) {
1007
- return;
1008
- }
1009
- fastdom.scheduled = true;
1010
- if (recursion && recursion < RECURSION_LIMIT) {
1011
- Promise.resolve().then(() => flush(recursion));
1012
- } else {
1013
- requestAnimationFrame(() => flush(1));
1010
+ function scheduleFlush() {
1011
+ if (!fastdom.scheduled) {
1012
+ fastdom.scheduled = true;
1013
+ queueMicrotask(flush);
1014
1014
  }
1015
1015
  }
1016
1016
  function runTasks(tasks) {
@@ -2027,6 +2027,11 @@
2027
2027
  firstColumn: "uk-first-column"
2028
2028
  },
2029
2029
  observe: [
2030
+ mutation({
2031
+ options: {
2032
+ childList: true
2033
+ }
2034
+ }),
2030
2035
  mutation({
2031
2036
  options: {
2032
2037
  attributes: true,
@@ -2108,99 +2113,15 @@
2108
2113
  };
2109
2114
  }
2110
2115
 
2111
- const clsLeave = "uk-transition-leave";
2112
- const clsEnter = "uk-transition-enter";
2113
- function fade(action, target, duration, stagger = 0) {
2114
- const index = transitionIndex(target, true);
2115
- const propsIn = { opacity: 1 };
2116
- const propsOut = { opacity: 0 };
2117
- const wrapIndexFn = (fn) => () => index === transitionIndex(target) ? fn() : Promise.reject();
2118
- const leaveFn = wrapIndexFn(async () => {
2119
- addClass(target, clsLeave);
2120
- await Promise.all(
2121
- getTransitionNodes(target).map(
2122
- (child, i) => new Promise(
2123
- (resolve) => setTimeout(
2124
- () => Transition.start(child, propsOut, duration / 2, "ease").then(
2125
- resolve
2126
- ),
2127
- i * stagger
2128
- )
2129
- )
2130
- )
2131
- );
2132
- removeClass(target, clsLeave);
2133
- });
2134
- const enterFn = wrapIndexFn(async () => {
2135
- const oldHeight = height(target);
2136
- addClass(target, clsEnter);
2137
- action();
2138
- css(children(target), { opacity: 0 });
2139
- await awaitFrame$1();
2140
- const nodes = children(target);
2141
- const newHeight = height(target);
2142
- css(target, "alignContent", "flex-start");
2143
- height(target, oldHeight);
2144
- const transitionNodes = getTransitionNodes(target);
2145
- css(nodes, propsOut);
2146
- const transitions = transitionNodes.map(async (child, i) => {
2147
- await awaitTimeout(i * stagger);
2148
- await Transition.start(child, propsIn, duration / 2, "ease");
2149
- });
2150
- if (oldHeight !== newHeight) {
2151
- transitions.push(
2152
- Transition.start(
2153
- target,
2154
- { height: newHeight },
2155
- duration / 2 + transitionNodes.length * stagger,
2156
- "ease"
2157
- )
2158
- );
2159
- }
2160
- await Promise.all(transitions).then(() => {
2161
- removeClass(target, clsEnter);
2162
- if (index === transitionIndex(target)) {
2163
- css(target, { height: "", alignContent: "" });
2164
- css(nodes, { opacity: "" });
2165
- delete target.dataset.transition;
2166
- }
2167
- });
2168
- });
2169
- return hasClass(target, clsLeave) ? waitTransitionend(target).then(enterFn) : hasClass(target, clsEnter) ? waitTransitionend(target).then(leaveFn).then(enterFn) : leaveFn().then(enterFn);
2170
- }
2171
- function transitionIndex(target, next) {
2172
- if (next) {
2173
- target.dataset.transition = 1 + transitionIndex(target);
2174
- }
2175
- return toNumber(target.dataset.transition) || 0;
2176
- }
2177
- function waitTransitionend(target) {
2178
- return Promise.all(
2179
- children(target).filter(Transition.inProgress).map(
2180
- (el) => new Promise((resolve) => once(el, "transitionend transitioncanceled", resolve))
2181
- )
2182
- );
2183
- }
2184
- function getTransitionNodes(target) {
2185
- return getRows(children(target)).flat().filter((node) => isVisible(node));
2186
- }
2187
- function awaitFrame$1() {
2188
- return new Promise((resolve) => requestAnimationFrame(resolve));
2189
- }
2190
- function awaitTimeout(timeout) {
2191
- return new Promise((resolve) => setTimeout(resolve, timeout));
2192
- }
2193
-
2194
2116
  async function slide(action, target, duration) {
2195
2117
  await awaitFrame();
2196
2118
  let nodes = children(target);
2197
2119
  const currentProps = nodes.map((el) => getProps$1(el, true));
2198
2120
  const targetProps = { ...css(target, ["height", "padding"]), display: "block" };
2199
2121
  await Promise.all(nodes.concat(target).map(Transition.cancel));
2200
- action();
2122
+ await action();
2201
2123
  nodes = nodes.concat(children(target).filter((el) => !includes(nodes, el)));
2202
2124
  await Promise.resolve();
2203
- fastdom.flush();
2204
2125
  const targetStyle = attr(target, "style");
2205
2126
  const targetPropsTo = css(target, ["height", "padding"]);
2206
2127
  const [propsTo, propsFrom] = getTransitionProps(target, nodes, currentProps);
@@ -2208,7 +2129,6 @@
2208
2129
  nodes.forEach((el, i) => propsFrom[i] && css(el, propsFrom[i]));
2209
2130
  css(target, targetProps);
2210
2131
  trigger(target, "scroll");
2211
- fastdom.flush();
2212
2132
  await awaitFrame();
2213
2133
  const transitions = nodes.map((el, i) => parent(el) === target && Transition.start(el, propsTo[i], duration, "ease")).concat(Transition.start(target, targetPropsTo, duration, "ease"));
2214
2134
  try {
@@ -2278,6 +2198,86 @@
2278
2198
  return new Promise((resolve) => requestAnimationFrame(resolve));
2279
2199
  }
2280
2200
 
2201
+ const clsLeave = "uk-transition-leave";
2202
+ const clsEnter = "uk-transition-enter";
2203
+ function fade(action, target, duration, stagger = 0) {
2204
+ const index = transitionIndex(target, true);
2205
+ const propsIn = { opacity: 1 };
2206
+ const propsOut = { opacity: 0 };
2207
+ const wrapIndexFn = (fn) => () => index === transitionIndex(target) ? fn() : Promise.reject();
2208
+ const leaveFn = wrapIndexFn(async () => {
2209
+ addClass(target, clsLeave);
2210
+ await Promise.all(
2211
+ getTransitionNodes(target).map(
2212
+ (child, i) => new Promise(
2213
+ (resolve) => setTimeout(
2214
+ () => Transition.start(child, propsOut, duration / 2, "ease").then(
2215
+ resolve
2216
+ ),
2217
+ i * stagger
2218
+ )
2219
+ )
2220
+ )
2221
+ );
2222
+ removeClass(target, clsLeave);
2223
+ });
2224
+ const enterFn = wrapIndexFn(async () => {
2225
+ const oldHeight = height(target);
2226
+ addClass(target, clsEnter);
2227
+ action();
2228
+ css(children(target), { opacity: 0 });
2229
+ await awaitFrame();
2230
+ const nodes = children(target);
2231
+ const newHeight = height(target);
2232
+ css(target, "alignContent", "flex-start");
2233
+ height(target, oldHeight);
2234
+ const transitionNodes = getTransitionNodes(target);
2235
+ css(nodes, propsOut);
2236
+ const transitions = transitionNodes.map(async (child, i) => {
2237
+ await awaitTimeout(i * stagger);
2238
+ await Transition.start(child, propsIn, duration / 2, "ease");
2239
+ });
2240
+ if (oldHeight !== newHeight) {
2241
+ transitions.push(
2242
+ Transition.start(
2243
+ target,
2244
+ { height: newHeight },
2245
+ duration / 2 + transitionNodes.length * stagger,
2246
+ "ease"
2247
+ )
2248
+ );
2249
+ }
2250
+ await Promise.all(transitions).then(() => {
2251
+ removeClass(target, clsEnter);
2252
+ if (index === transitionIndex(target)) {
2253
+ css(target, { height: "", alignContent: "" });
2254
+ css(nodes, { opacity: "" });
2255
+ delete target.dataset.transition;
2256
+ }
2257
+ });
2258
+ });
2259
+ return hasClass(target, clsLeave) ? waitTransitionend(target).then(enterFn) : hasClass(target, clsEnter) ? waitTransitionend(target).then(leaveFn).then(enterFn) : leaveFn().then(enterFn);
2260
+ }
2261
+ function transitionIndex(target, next) {
2262
+ if (next) {
2263
+ target.dataset.transition = 1 + transitionIndex(target);
2264
+ }
2265
+ return toNumber(target.dataset.transition) || 0;
2266
+ }
2267
+ function waitTransitionend(target) {
2268
+ return Promise.all(
2269
+ children(target).filter(Transition.inProgress).map(
2270
+ (el) => new Promise((resolve) => once(el, "transitionend transitioncanceled", resolve))
2271
+ )
2272
+ );
2273
+ }
2274
+ function getTransitionNodes(target) {
2275
+ return getRows(children(target)).flat().filter(isVisible);
2276
+ }
2277
+ function awaitTimeout(timeout) {
2278
+ return new Promise((resolve) => setTimeout(resolve, timeout));
2279
+ }
2280
+
2281
2281
  var Animate = {
2282
2282
  props: {
2283
2283
  duration: Number,
@@ -3254,6 +3254,7 @@
3254
3254
  }
3255
3255
  }
3256
3256
  }
3257
+ const mutationOptions = { subtree: true, childList: true };
3257
3258
  function registerComputed(instance, key, cb) {
3258
3259
  instance._hasComputed = true;
3259
3260
  Object.defineProperty(instance, key, {
@@ -3262,6 +3263,13 @@
3262
3263
  const { _computed, $props, $el } = instance;
3263
3264
  if (!hasOwn(_computed, key)) {
3264
3265
  _computed[key] = (cb.get || cb).call(instance, $props, $el);
3266
+ if (cb.observe && instance._computedObserver) {
3267
+ const selector = cb.observe.call(instance, $props);
3268
+ instance._computedObserver.observe(
3269
+ ["~", "+", "-"].includes(selector[0]) ? $el.parentElement : $el.getRootNode(),
3270
+ mutationOptions
3271
+ );
3272
+ }
3265
3273
  }
3266
3274
  return _computed[key];
3267
3275
  },
@@ -3282,11 +3290,16 @@
3282
3290
  read: () => runWatches(instance, resetComputed(instance)),
3283
3291
  events: ["resize", "computed"]
3284
3292
  });
3285
- registerComputedObserver();
3286
- instances$1.add(instance);
3293
+ instance._computedObserver = observeMutation(
3294
+ instance.$el,
3295
+ () => callUpdate(instance, "computed"),
3296
+ mutationOptions
3297
+ );
3287
3298
  }
3288
3299
  function disconnectComputedUpdates(instance) {
3289
- instances$1 == null ? void 0 : instances$1.delete(instance);
3300
+ var _a;
3301
+ (_a = instance._computedObserver) == null ? void 0 : _a.disconnect();
3302
+ delete instance._computedObserver;
3290
3303
  resetComputed(instance);
3291
3304
  }
3292
3305
  function resetComputed(instance) {
@@ -3294,23 +3307,6 @@
3294
3307
  instance._computed = {};
3295
3308
  return values;
3296
3309
  }
3297
- let observer;
3298
- let instances$1;
3299
- function registerComputedObserver() {
3300
- if (observer) {
3301
- return;
3302
- }
3303
- instances$1 = /* @__PURE__ */ new Set();
3304
- observer = new MutationObserver(() => {
3305
- for (const instance of instances$1) {
3306
- callUpdate(instance, "computed");
3307
- }
3308
- });
3309
- observer.observe(document, {
3310
- subtree: true,
3311
- childList: true
3312
- });
3313
- }
3314
3310
 
3315
3311
  function initEvents(instance) {
3316
3312
  instance._events = [];
@@ -3563,7 +3559,7 @@
3563
3559
  };
3564
3560
  App.util = util;
3565
3561
  App.options = {};
3566
- App.version = "3.19.5-dev.66a60877b";
3562
+ App.version = "3.19.5-dev.74c343fa4";
3567
3563
 
3568
3564
  const PREFIX = "uk-";
3569
3565
  const DATA = "__uikit__";
@@ -4563,10 +4559,7 @@
4563
4559
  }
4564
4560
 
4565
4561
  function getMaxPathLength(el) {
4566
- return Math.ceil(Math.max(0, ...$$("[stroke]", el).map((stroke) => {
4567
- var _a;
4568
- return (_a = stroke.getTotalLength) == null ? void 0 : _a.call(stroke);
4569
- })));
4562
+ return isVisible(el) ? Math.ceil(Math.max(0, ...$$("[stroke]", el).map((stroke) => stroke.getTotalLength()))) : 0;
4570
4563
  }
4571
4564
 
4572
4565
  const props = {
@@ -4770,6 +4763,7 @@
4770
4763
  }
4771
4764
  };
4772
4765
  }
4766
+ const loading = {};
4773
4767
  const dimensions = {};
4774
4768
  function getBackgroundImageDimensions(el) {
4775
4769
  const src = css(el, "backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/, "$1");
@@ -4779,11 +4773,12 @@
4779
4773
  const image = new Image();
4780
4774
  if (src) {
4781
4775
  image.src = src;
4782
- if (!image.naturalWidth) {
4783
- image.onload = () => {
4776
+ if (!image.naturalWidth && !loading[src]) {
4777
+ once(image, "error load", () => {
4784
4778
  dimensions[src] = toDimensions(image);
4785
4779
  trigger(el, createEvent("load", false));
4786
- };
4780
+ });
4781
+ loading[src] = true;
4787
4782
  return toDimensions(image);
4788
4783
  }
4789
4784
  }
@@ -7784,7 +7779,10 @@
7784
7779
  target: ""
7785
7780
  },
7786
7781
  computed: {
7787
- target: ({ target }, $el) => query(target, $el)
7782
+ target: {
7783
+ get: ({ target }, $el) => query(target, $el),
7784
+ observe: ({ target }) => target
7785
+ }
7788
7786
  },
7789
7787
  observe: resize({ target: ({ target }) => target }),
7790
7788
  update: {
@@ -8444,10 +8442,11 @@
8444
8442
  };
8445
8443
  function install({ modal }) {
8446
8444
  modal.dialog = function(content, options) {
8447
- const dialog = modal(
8448
- `<div class="uk-modal"> <div class="uk-modal-dialog">${content}</div> </div>`,
8449
- { stack: true, role: "alertdialog", ...options }
8450
- );
8445
+ const dialog = modal($(`<div><div class="uk-modal-dialog">${content}</div></div>`), {
8446
+ stack: true,
8447
+ role: "alertdialog",
8448
+ ...options
8449
+ });
8451
8450
  dialog.show();
8452
8451
  on(
8453
8452
  dialog.$el,
@@ -8919,7 +8918,6 @@
8919
8918
  }
8920
8919
  trigger(el, inview ? "inview" : "outview");
8921
8920
  state.inview = inview;
8922
- this.$update(el);
8923
8921
  }
8924
8922
  }
8925
8923
  };
@@ -9066,7 +9064,7 @@
9066
9064
  target: () => document.scrollingElement,
9067
9065
  options: { box: "content-box" }
9068
9066
  }),
9069
- resize({ target: ({ $el }) => $el })
9067
+ resize()
9070
9068
  ],
9071
9069
  events: [
9072
9070
  {
@@ -9479,7 +9477,10 @@
9479
9477
  swiping: true
9480
9478
  },
9481
9479
  computed: {
9482
- connects: ({ connect }, $el) => queryAll(connect, $el),
9480
+ connects: {
9481
+ get: ({ connect }, $el) => queryAll(connect, $el),
9482
+ observe: ({ connect }) => connect
9483
+ },
9483
9484
  connectChildren() {
9484
9485
  return this.connects.map((el) => children(el)).flat();
9485
9486
  },
@@ -9668,9 +9669,12 @@
9668
9669
  queued: true
9669
9670
  },
9670
9671
  computed: {
9671
- target({ target }, $el) {
9672
- target = queryAll(target || $el.hash, $el);
9673
- return target.length ? target : [$el];
9672
+ target: {
9673
+ get: ({ target }, $el) => {
9674
+ target = queryAll(target || $el.hash, $el);
9675
+ return target.length ? target : [$el];
9676
+ },
9677
+ observe: ({ target }) => target
9674
9678
  }
9675
9679
  },
9676
9680
  connected() {