@varlet/ui 2.14.2 → 2.14.3-alpha.1692871861882

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.
package/lib/varlet.cjs.js CHANGED
@@ -616,6 +616,94 @@ function useInitialized(source, value) {
616
616
  }, { immediate: true });
617
617
  return initialized;
618
618
  }
619
+ function getDirection(x, y) {
620
+ if (x > y) {
621
+ return "horizontal";
622
+ }
623
+ if (y > x) {
624
+ return "vertical";
625
+ }
626
+ }
627
+ function useTouch() {
628
+ const startX = vue.ref(0);
629
+ const startY = vue.ref(0);
630
+ const deltaX = vue.ref(0);
631
+ const deltaY = vue.ref(0);
632
+ const offsetX = vue.ref(0);
633
+ const offsetY = vue.ref(0);
634
+ const prevX = vue.ref(0);
635
+ const prevY = vue.ref(0);
636
+ const moveX = vue.ref(0);
637
+ const moveY = vue.ref(0);
638
+ const direction = vue.ref();
639
+ const touching = vue.ref(false);
640
+ const startTime = vue.ref(0);
641
+ const distance = vue.ref(0);
642
+ const resetTouch = () => {
643
+ startX.value = 0;
644
+ startY.value = 0;
645
+ deltaX.value = 0;
646
+ deltaY.value = 0;
647
+ offsetX.value = 0;
648
+ offsetY.value = 0;
649
+ prevX.value = 0;
650
+ prevY.value = 0;
651
+ moveX.value = 0;
652
+ moveY.value = 0;
653
+ direction.value = void 0;
654
+ touching.value = false;
655
+ startTime.value = 0;
656
+ distance.value = 0;
657
+ };
658
+ const startTouch = (event) => {
659
+ resetTouch();
660
+ const { clientX: x, clientY: y } = event.touches[0];
661
+ startX.value = x;
662
+ startY.value = y;
663
+ prevX.value = x;
664
+ prevY.value = y;
665
+ touching.value = true;
666
+ startTime.value = performance.now();
667
+ };
668
+ const moveTouch = (event) => {
669
+ const { clientX: x, clientY: y } = event.touches[0];
670
+ deltaX.value = x - startX.value;
671
+ deltaY.value = y - startY.value;
672
+ offsetX.value = Math.abs(deltaX.value);
673
+ offsetY.value = Math.abs(deltaY.value);
674
+ distance.value = Math.sqrt(offsetX.value ** 2 + offsetY.value ** 2);
675
+ moveX.value = x - prevX.value;
676
+ moveY.value = y - prevY.value;
677
+ if (!direction.value) {
678
+ direction.value = getDirection(offsetX.value, offsetY.value);
679
+ }
680
+ prevX.value = x;
681
+ prevY.value = y;
682
+ };
683
+ const endTouch = () => {
684
+ touching.value = false;
685
+ };
686
+ return {
687
+ startX,
688
+ startY,
689
+ deltaX,
690
+ deltaY,
691
+ offsetX,
692
+ offsetY,
693
+ prevX,
694
+ prevY,
695
+ moveX,
696
+ moveY,
697
+ direction,
698
+ touching,
699
+ startTime,
700
+ distance,
701
+ resetTouch,
702
+ startTouch,
703
+ moveTouch,
704
+ endTouch
705
+ };
706
+ }
619
707
  function asyncGeneratorStep$f(gen, resolve, reject, _next, _throw, key, arg) {
620
708
  try {
621
709
  var info = gen[key](arg);
@@ -4738,6 +4826,10 @@ var props$V = {
4738
4826
  type: Boolean,
4739
4827
  default: false
4740
4828
  },
4829
+ indeterminate: {
4830
+ type: Boolean,
4831
+ default: false
4832
+ },
4741
4833
  iconSize: {
4742
4834
  type: [String, Number]
4743
4835
  },
@@ -4754,7 +4846,8 @@ var props$V = {
4754
4846
  },
4755
4847
  onClick: defineListenerProp(),
4756
4848
  onChange: defineListenerProp(),
4757
- "onUpdate:modelValue": defineListenerProp()
4849
+ "onUpdate:modelValue": defineListenerProp(),
4850
+ "onUpdate:indeterminate": defineListenerProp()
4758
4851
  };
4759
4852
  var CHECKBOX_GROUP_BIND_CHECKBOX_KEY = Symbol("CHECKBOX_GROUP_BIND_CHECKBOX_KEY");
4760
4853
  function useCheckboxes() {
@@ -4852,26 +4945,33 @@ function __render__$10(_ctx, _cache) {
4852
4945
  [vue.withDirectives((vue.openBlock(), vue.createElementBlock(
4853
4946
  "div",
4854
4947
  {
4855
- class: vue.normalizeClass(_ctx.classes(_ctx.n("action"), [_ctx.checked, _ctx.n("--checked"), _ctx.n("--unchecked")], [_ctx.errorMessage || _ctx.checkboxGroupErrorMessage, _ctx.n("--error")], [_ctx.formDisabled || _ctx.disabled, _ctx.n("--disabled")])),
4948
+ class: vue.normalizeClass(_ctx.classes(_ctx.n("action"), [_ctx.checked || _ctx.isIndeterminate, _ctx.n("--checked"), _ctx.n("--unchecked")], [_ctx.errorMessage || _ctx.checkboxGroupErrorMessage, _ctx.n("--error")], [_ctx.formDisabled || _ctx.disabled, _ctx.n("--disabled")])),
4856
4949
  style: vue.normalizeStyle({
4857
- color: _ctx.checked ? _ctx.checkedColor : _ctx.uncheckedColor
4950
+ color: _ctx.checked || _ctx.isIndeterminate ? _ctx.checkedColor : _ctx.uncheckedColor
4858
4951
  })
4859
4952
  },
4860
- [_ctx.checked ? vue.renderSlot(_ctx.$slots, "checked-icon", {
4953
+ [_ctx.isIndeterminate ? vue.renderSlot(_ctx.$slots, "indeterminate-icon", {
4861
4954
  key: 0
4862
4955
  }, () => [vue.createVNode(_component_var_icon, {
4863
4956
  class: vue.normalizeClass(_ctx.classes(_ctx.n("icon"), [_ctx.withAnimation, _ctx.n("--with-animation")])),
4864
- name: "checkbox-marked",
4957
+ name: "minus-box",
4865
4958
  size: _ctx.iconSize,
4866
4959
  "var-checkbox-cover": ""
4867
- }, null, 8, ["class", "size"])]) : vue.renderSlot(_ctx.$slots, "unchecked-icon", {
4960
+ }, null, 8, ["class", "size"])]) : vue.createCommentVNode("v-if", true), _ctx.checked && !_ctx.isIndeterminate ? vue.renderSlot(_ctx.$slots, "checked-icon", {
4868
4961
  key: 1
4962
+ }, () => [vue.createVNode(_component_var_icon, {
4963
+ class: vue.normalizeClass(_ctx.classes(_ctx.n("icon"), [_ctx.withAnimation, _ctx.n("--with-animation")])),
4964
+ name: "checkbox-marked",
4965
+ size: _ctx.iconSize,
4966
+ "var-checkbox-cover": ""
4967
+ }, null, 8, ["class", "size"])]) : vue.createCommentVNode("v-if", true), !_ctx.checked && !_ctx.isIndeterminate ? vue.renderSlot(_ctx.$slots, "unchecked-icon", {
4968
+ key: 2
4869
4969
  }, () => [vue.createVNode(_component_var_icon, {
4870
4970
  class: vue.normalizeClass(_ctx.classes(_ctx.n("icon"), [_ctx.withAnimation, _ctx.n("--with-animation")])),
4871
4971
  name: "checkbox-blank-outline",
4872
4972
  size: _ctx.iconSize,
4873
4973
  "var-checkbox-cover": ""
4874
- }, null, 8, ["class", "size"])]), vue.createVNode(_component_var_hover_overlay, {
4974
+ }, null, 8, ["class", "size"])]) : vue.createCommentVNode("v-if", true), vue.createVNode(_component_var_hover_overlay, {
4875
4975
  hovering: !_ctx.disabled && !_ctx.formDisabled && _ctx.hovering
4876
4976
  }, null, 8, ["hovering"])],
4877
4977
  6
@@ -4909,7 +5009,7 @@ var __sfc__$11 = vue.defineComponent({
4909
5009
  },
4910
5010
  props: props$V,
4911
5011
  setup(props2) {
4912
- var value = vue.ref(false);
5012
+ var value = useVModel(props2, "modelValue");
4913
5013
  var checked = vue.computed(() => value.value === props2.checkedValue);
4914
5014
  var checkedValue = vue.computed(() => props2.checkedValue);
4915
5015
  var withAnimation = vue.ref(false);
@@ -4932,6 +5032,7 @@ var __sfc__$11 = vue.defineComponent({
4932
5032
  // expose
4933
5033
  resetValidation
4934
5034
  } = useValidation();
5035
+ var isIndeterminate = useVModel(props2, "indeterminate");
4935
5036
  var validateWithTrigger = (trigger) => {
4936
5037
  vue.nextTick(() => {
4937
5038
  var {
@@ -4943,12 +5044,12 @@ var __sfc__$11 = vue.defineComponent({
4943
5044
  });
4944
5045
  };
4945
5046
  var change = (changedValue) => {
4946
- value.value = changedValue;
4947
5047
  var {
4948
5048
  checkedValue: checkedValue2,
4949
5049
  onChange
4950
5050
  } = props2;
4951
- call(props2["onUpdate:modelValue"], value.value);
5051
+ value.value = changedValue;
5052
+ isIndeterminate.value = false;
4952
5053
  call(onChange, value.value);
4953
5054
  validateWithTrigger("onChange");
4954
5055
  changedValue === checkedValue2 ? checkboxGroup2 == null ? void 0 : checkboxGroup2.onChecked(checkedValue2) : checkboxGroup2 == null ? void 0 : checkboxGroup2.onUnchecked(checkedValue2);
@@ -4986,7 +5087,7 @@ var __sfc__$11 = vue.defineComponent({
4986
5087
  withAnimation.value = false;
4987
5088
  };
4988
5089
  var reset = () => {
4989
- call(props2["onUpdate:modelValue"], props2.uncheckedValue);
5090
+ value.value = props2.uncheckedValue;
4990
5091
  resetValidation();
4991
5092
  };
4992
5093
  var toggle = (changedValue) => {
@@ -5001,11 +5102,6 @@ var __sfc__$11 = vue.defineComponent({
5001
5102
  change(changedValue);
5002
5103
  };
5003
5104
  var validate = () => v(props2.rules, props2.modelValue);
5004
- vue.watch(() => props2.modelValue, (newValue) => {
5005
- value.value = newValue;
5006
- }, {
5007
- immediate: true
5008
- });
5009
5105
  var checkboxProvider = {
5010
5106
  checkedValue,
5011
5107
  checked,
@@ -5018,6 +5114,7 @@ var __sfc__$11 = vue.defineComponent({
5018
5114
  call(bindCheckboxGroup, checkboxProvider);
5019
5115
  call(bindForm, checkboxProvider);
5020
5116
  return {
5117
+ isIndeterminate,
5021
5118
  withAnimation,
5022
5119
  checked,
5023
5120
  errorMessage,
@@ -10529,7 +10626,7 @@ var __sfc__$R = vue.defineComponent({
10529
10626
  startX = clientX;
10530
10627
  startY = clientY;
10531
10628
  };
10532
- var getDirection = (x, y) => x >= y && x > 20 ? "x" : "y";
10629
+ var getDirection2 = (x, y) => x >= y && x > 20 ? "x" : "y";
10533
10630
  var handleTouchmove = (event) => {
10534
10631
  if (isUntouchable.value)
10535
10632
  return;
@@ -10539,7 +10636,7 @@ var __sfc__$R = vue.defineComponent({
10539
10636
  } = event.touches[0];
10540
10637
  var x = clientX - startX;
10541
10638
  var y = clientY - startY;
10542
- touchDirection = getDirection(Math.abs(x), Math.abs(y));
10639
+ touchDirection = getDirection2(Math.abs(x), Math.abs(y));
10543
10640
  checkType = x > 0 ? "prev" : "next";
10544
10641
  };
10545
10642
  var handleTouchend = () => {
@@ -11388,50 +11485,45 @@ var __sfc__$O = vue.defineComponent({
11388
11485
  var dragged = vue.ref(false);
11389
11486
  var enableTransition = vue.ref(false);
11390
11487
  var dragging = vue.ref(false);
11488
+ var {
11489
+ touching,
11490
+ moveX,
11491
+ moveY,
11492
+ startTouch,
11493
+ moveTouch,
11494
+ endTouch,
11495
+ resetTouch
11496
+ } = useTouch();
11391
11497
  var {
11392
11498
  disabled: teleportDisabled
11393
11499
  } = useTeleport();
11394
- var touching = false;
11395
- var prevX = 0;
11396
- var prevY = 0;
11397
11500
  var draggingRunner = null;
11398
11501
  var handleTouchstart = (event) => {
11399
11502
  if (props2.disabled) {
11400
11503
  return;
11401
11504
  }
11402
- draggingRunner && window.clearTimeout(draggingRunner);
11403
- var {
11404
- clientX,
11405
- clientY
11406
- } = event.touches[0];
11505
+ if (draggingRunner) {
11506
+ window.clearTimeout(draggingRunner);
11507
+ }
11407
11508
  saveXY();
11408
- prevX = clientX;
11409
- prevY = clientY;
11410
- touching = true;
11509
+ startTouch(event);
11411
11510
  dragging.value = false;
11412
11511
  };
11413
11512
  var handleTouchmove = /* @__PURE__ */ function() {
11414
11513
  var _ref2 = _asyncToGenerator$b(function* (event) {
11415
- if (!touching || props2.disabled) {
11514
+ if (!touching.value || props2.disabled) {
11416
11515
  return;
11417
11516
  }
11418
11517
  event.preventDefault();
11419
11518
  enableTransition.value = false;
11420
11519
  dragged.value = true;
11421
11520
  dragging.value = true;
11422
- var {
11423
- clientX,
11424
- clientY
11425
- } = event.touches[0];
11426
- var deltaX = clientX - prevX;
11427
- var deltaY = clientY - prevY;
11428
- prevX = clientX;
11429
- prevY = clientY;
11521
+ moveTouch(event);
11430
11522
  if (props2.direction.includes("x")) {
11431
- x.value += deltaX;
11523
+ x.value += moveX.value;
11432
11524
  }
11433
11525
  if (props2.direction.includes("y")) {
11434
- y.value += deltaY;
11526
+ y.value += moveY.value;
11435
11527
  }
11436
11528
  clampToBoundary();
11437
11529
  });
@@ -11443,7 +11535,7 @@ var __sfc__$O = vue.defineComponent({
11443
11535
  if (props2.disabled) {
11444
11536
  return;
11445
11537
  }
11446
- touching = false;
11538
+ endTouch();
11447
11539
  enableTransition.value = true;
11448
11540
  attract();
11449
11541
  draggingRunner = window.setTimeout(() => {
@@ -11586,9 +11678,7 @@ var __sfc__$O = vue.defineComponent({
11586
11678
  dragging.value = false;
11587
11679
  x.value = 0;
11588
11680
  y.value = 0;
11589
- touching = false;
11590
- prevX = 0;
11591
- prevY = 0;
11681
+ resetTouch();
11592
11682
  };
11593
11683
  vue.watch(() => props2.boundary, toPxBoundary);
11594
11684
  onWindowResize(resize);
@@ -14180,7 +14270,7 @@ function _asyncToGenerator$8(fn2) {
14180
14270
  };
14181
14271
  }
14182
14272
  var SWIPE_DELAY = 250;
14183
- var SWIPE_DISTANCE = 20;
14273
+ var SWIPE_OFFSET = 20;
14184
14274
  var {
14185
14275
  n: n$H,
14186
14276
  classes: classes$A
@@ -14200,7 +14290,7 @@ function __render__$I(_ctx, _cache) {
14200
14290
  style: vue.normalizeStyle({
14201
14291
  width: !_ctx.vertical ? _ctx.trackSize + "px" : void 0,
14202
14292
  height: _ctx.vertical ? _ctx.trackSize + "px" : void 0,
14203
- transform: "translate" + (_ctx.vertical ? "Y" : "X") + "(" + _ctx.translate + "px)",
14293
+ transform: "translate" + (_ctx.vertical ? "Y" : "X") + "(" + _ctx.trackTranslate + "px)",
14204
14294
  transitionDuration: _ctx.lockDuration ? "0ms" : _ctx.toNumber(_ctx.duration) + "ms"
14205
14295
  }),
14206
14296
  onTouchstart: _cache[0] || (_cache[0] = function() {
@@ -14256,7 +14346,7 @@ var __sfc__$J = vue.defineComponent({
14256
14346
  var size = vue.ref(0);
14257
14347
  var vertical = vue.computed(() => props2.vertical);
14258
14348
  var trackSize = vue.ref(0);
14259
- var translate = vue.ref(0);
14349
+ var trackTranslate = vue.ref(0);
14260
14350
  var lockDuration = vue.ref(false);
14261
14351
  var index = vue.ref(0);
14262
14352
  var {
@@ -14268,37 +14358,45 @@ var __sfc__$J = vue.defineComponent({
14268
14358
  popup: popup2,
14269
14359
  bindPopup
14270
14360
  } = usePopup();
14361
+ var {
14362
+ deltaX,
14363
+ deltaY,
14364
+ moveX,
14365
+ moveY,
14366
+ offsetX,
14367
+ offsetY,
14368
+ touching,
14369
+ direction,
14370
+ startTime,
14371
+ startTouch,
14372
+ moveTouch,
14373
+ endTouch
14374
+ } = useTouch();
14271
14375
  var initializedIndex = false;
14272
- var touching = false;
14273
14376
  var timer = -1;
14274
- var startX;
14275
- var startY;
14276
- var startTime;
14277
- var prevX;
14278
- var prevY;
14279
14377
  var findSwipeItem = (idx) => swipeItems.find((_ref) => {
14280
14378
  var {
14281
14379
  index: index2
14282
14380
  } = _ref;
14283
14381
  return index2.value === idx;
14284
14382
  });
14285
- var dispatchBorrower = () => {
14383
+ var dispatchSwipeItems = () => {
14286
14384
  if (!props2.loop) {
14287
14385
  return;
14288
14386
  }
14289
- if (translate.value >= 0) {
14387
+ if (trackTranslate.value >= 0) {
14290
14388
  findSwipeItem(length.value - 1).setTranslate(-trackSize.value);
14291
14389
  }
14292
- if (translate.value <= -(trackSize.value - size.value)) {
14390
+ if (trackTranslate.value <= -(trackSize.value - size.value)) {
14293
14391
  findSwipeItem(0).setTranslate(trackSize.value);
14294
14392
  }
14295
- if (translate.value > -(trackSize.value - size.value) && translate.value < 0) {
14393
+ if (trackTranslate.value > -(trackSize.value - size.value) && trackTranslate.value < 0) {
14296
14394
  findSwipeItem(length.value - 1).setTranslate(0);
14297
14395
  findSwipeItem(0).setTranslate(0);
14298
14396
  }
14299
14397
  };
14300
14398
  var getSwipeIndex = (targetSwipeIndex) => {
14301
- var swipeIndex = isNumber(targetSwipeIndex) ? targetSwipeIndex : Math.floor((translate.value - size.value / 2) / -size.value);
14399
+ var swipeIndex = isNumber(targetSwipeIndex) ? targetSwipeIndex : Math.floor((trackTranslate.value - size.value / 2) / -size.value);
14302
14400
  var {
14303
14401
  loop
14304
14402
  } = props2;
@@ -14335,14 +14433,14 @@ var __sfc__$J = vue.defineComponent({
14335
14433
  return clamp$1(index2, 0, length.value - 1);
14336
14434
  };
14337
14435
  var fixPosition = (fn2) => {
14338
- var overLeft = translate.value >= size.value;
14339
- var overRight = translate.value <= -trackSize.value;
14436
+ var overLeft = trackTranslate.value >= size.value;
14437
+ var overRight = trackTranslate.value <= -trackSize.value;
14340
14438
  var leftTranslate = 0;
14341
14439
  var rightTranslate = -(trackSize.value - size.value);
14342
14440
  lockDuration.value = true;
14343
14441
  if (overLeft || overRight) {
14344
14442
  lockDuration.value = true;
14345
- translate.value = overRight ? leftTranslate : rightTranslate;
14443
+ trackTranslate.value = overRight ? leftTranslate : rightTranslate;
14346
14444
  findSwipeItem(0).setTranslate(0);
14347
14445
  findSwipeItem(length.value - 1).setTranslate(0);
14348
14446
  }
@@ -14374,26 +14472,15 @@ var __sfc__$J = vue.defineComponent({
14374
14472
  var stopAutoplay = () => {
14375
14473
  timer && clearTimeout(timer);
14376
14474
  };
14377
- var getDirection = (x, y) => {
14378
- if (x > y && x > 10) {
14379
- return "horizontal";
14380
- }
14381
- if (y > x && y > 10) {
14382
- return "vertical";
14383
- }
14475
+ var setTrackTranslate = (value) => {
14476
+ trackTranslate.value = value;
14477
+ dispatchSwipeItems();
14384
14478
  };
14385
14479
  var handleTouchstart = (event) => {
14386
14480
  if (length.value <= 1 || !props2.touchable) {
14387
14481
  return;
14388
14482
  }
14389
- var {
14390
- clientX,
14391
- clientY
14392
- } = event.touches[0];
14393
- startX = clientX;
14394
- startY = clientY;
14395
- startTime = performance.now();
14396
- touching = true;
14483
+ startTouch(event);
14397
14484
  stopAutoplay();
14398
14485
  fixPosition(() => {
14399
14486
  lockDuration.value = true;
@@ -14404,48 +14491,38 @@ var __sfc__$J = vue.defineComponent({
14404
14491
  touchable,
14405
14492
  vertical: vertical2
14406
14493
  } = props2;
14407
- if (!touching || !touchable) {
14494
+ if (!touching.value || !touchable) {
14408
14495
  return;
14409
14496
  }
14410
- var {
14411
- clientX,
14412
- clientY
14413
- } = event.touches[0];
14414
- var deltaX = Math.abs(clientX - startX);
14415
- var deltaY = Math.abs(clientY - startY);
14416
- var direction = getDirection(deltaX, deltaY);
14497
+ moveTouch(event);
14417
14498
  var expectDirection = vertical2 ? "vertical" : "horizontal";
14418
- if (direction === expectDirection) {
14419
- event.preventDefault();
14420
- var moveX = prevX !== void 0 ? clientX - prevX : 0;
14421
- var moveY = prevY !== void 0 ? clientY - prevY : 0;
14422
- prevX = clientX;
14423
- prevY = clientY;
14424
- translate.value += vertical2 ? moveY : moveX;
14425
- dispatchBorrower();
14499
+ if (direction.value !== expectDirection) {
14500
+ return;
14426
14501
  }
14502
+ event.preventDefault();
14503
+ setTrackTranslate(trackTranslate.value + (vertical2 ? moveY.value : moveX.value));
14427
14504
  };
14428
14505
  var handleTouchend = () => {
14429
- if (!touching) {
14506
+ if (!touching.value) {
14430
14507
  return;
14431
14508
  }
14432
14509
  var {
14433
14510
  vertical: vertical2,
14434
14511
  onChange
14435
14512
  } = props2;
14436
- var positive = vertical2 ? prevY < startY : prevX < startX;
14437
- var distance = vertical2 ? Math.abs(startY - prevY) : Math.abs(startX - prevX);
14438
- var quickSwiping = performance.now() - startTime <= SWIPE_DELAY && distance >= SWIPE_DISTANCE;
14513
+ endTouch();
14514
+ var positive = vertical2 ? deltaY.value < 0 : deltaX.value < 0;
14515
+ var offset2 = vertical2 ? offsetY.value : offsetX.value;
14516
+ var quickSwiping = performance.now() - startTime.value <= SWIPE_DELAY && offset2 >= SWIPE_OFFSET;
14439
14517
  var swipeIndex = quickSwiping ? positive ? getSwipeIndex(index.value + 1) : getSwipeIndex(index.value - 1) : getSwipeIndex();
14440
- touching = false;
14441
14518
  lockDuration.value = false;
14442
- prevX = void 0;
14443
- prevY = void 0;
14444
- translate.value = swipeIndex * -size.value;
14519
+ setTrackTranslate(swipeIndex * -size.value);
14445
14520
  var prevIndex = index.value;
14446
14521
  index.value = swipeIndexToIndex(swipeIndex);
14447
14522
  startAutoplay();
14448
- prevIndex !== index.value && call(onChange, index.value);
14523
+ if (prevIndex !== index.value) {
14524
+ call(onChange, index.value);
14525
+ }
14449
14526
  };
14450
14527
  var resize = () => {
14451
14528
  if (!swipeEl.value) {
@@ -14454,7 +14531,7 @@ var __sfc__$J = vue.defineComponent({
14454
14531
  lockDuration.value = true;
14455
14532
  size.value = props2.vertical ? swipeEl.value.offsetHeight : swipeEl.value.offsetWidth;
14456
14533
  trackSize.value = size.value * length.value;
14457
- translate.value = index.value * -size.value;
14534
+ trackTranslate.value = index.value * -size.value;
14458
14535
  swipeItems.forEach((swipeItem2) => {
14459
14536
  swipeItem2.setTranslate(0);
14460
14537
  });
@@ -14480,11 +14557,11 @@ var __sfc__$J = vue.defineComponent({
14480
14557
  fixPosition(() => {
14481
14558
  if (currentIndex === length.value - 1 && loop) {
14482
14559
  findSwipeItem(0).setTranslate(trackSize.value);
14483
- translate.value = length.value * -size.value;
14560
+ trackTranslate.value = length.value * -size.value;
14484
14561
  return;
14485
14562
  }
14486
14563
  if (currentIndex !== length.value - 1) {
14487
- translate.value = index.value * -size.value;
14564
+ trackTranslate.value = index.value * -size.value;
14488
14565
  }
14489
14566
  });
14490
14567
  };
@@ -14505,11 +14582,11 @@ var __sfc__$J = vue.defineComponent({
14505
14582
  fixPosition(() => {
14506
14583
  if (currentIndex === 0 && loop) {
14507
14584
  findSwipeItem(length.value - 1).setTranslate(-trackSize.value);
14508
- translate.value = size.value;
14585
+ trackTranslate.value = size.value;
14509
14586
  return;
14510
14587
  }
14511
14588
  if (currentIndex !== 0) {
14512
- translate.value = index.value * -size.value;
14589
+ trackTranslate.value = index.value * -size.value;
14513
14590
  }
14514
14591
  });
14515
14592
  };
@@ -14565,7 +14642,7 @@ var __sfc__$J = vue.defineComponent({
14565
14642
  index,
14566
14643
  swipeEl,
14567
14644
  trackSize,
14568
- translate,
14645
+ trackTranslate,
14569
14646
  lockDuration,
14570
14647
  handleTouchstart,
14571
14648
  handleTouchmove,
@@ -14835,6 +14912,29 @@ var __sfc__$H = vue.defineComponent({
14835
14912
  props: props$D,
14836
14913
  setup(props2) {
14837
14914
  var popupShow = vue.ref(false);
14915
+ var scale = vue.ref(1);
14916
+ var translateX = vue.ref(0);
14917
+ var translateY = vue.ref(0);
14918
+ var transitionTimingFunction = vue.ref(void 0);
14919
+ var transitionDuration = vue.ref(void 0);
14920
+ var canSwipe = vue.ref(true);
14921
+ var swipeRef = vue.ref(null);
14922
+ var {
14923
+ moveX,
14924
+ moveY,
14925
+ distance,
14926
+ startTime,
14927
+ startTouch,
14928
+ moveTouch,
14929
+ endTouch
14930
+ } = useTouch();
14931
+ var targets = {
14932
+ start: null,
14933
+ prev: null
14934
+ };
14935
+ var closeRunner = null;
14936
+ var longPressRunner = null;
14937
+ var isLongPress = false;
14838
14938
  var initialIndex = vue.computed(() => {
14839
14939
  var {
14840
14940
  images,
@@ -14845,20 +14945,8 @@ var __sfc__$H = vue.defineComponent({
14845
14945
  return toNumber(initialIndex2);
14846
14946
  }
14847
14947
  var index = images.findIndex((image2) => image2 === current);
14848
- return index >= 0 ? index : 0;
14948
+ return Math.max(index, 0);
14849
14949
  });
14850
- var scale = vue.ref(1);
14851
- var translateX = vue.ref(0);
14852
- var translateY = vue.ref(0);
14853
- var transitionTimingFunction = vue.ref(void 0);
14854
- var transitionDuration = vue.ref(void 0);
14855
- var canSwipe = vue.ref(true);
14856
- var swipeRef = vue.ref(null);
14857
- var startTouch = null;
14858
- var prevTouch = null;
14859
- var closeRunner = null;
14860
- var longPressRunner = null;
14861
- var isLongPress = false;
14862
14950
  var isPreventDefault = vue.computed(() => {
14863
14951
  var {
14864
14952
  imagePreventDefault,
@@ -14866,27 +14954,10 @@ var __sfc__$H = vue.defineComponent({
14866
14954
  } = props2;
14867
14955
  return show && imagePreventDefault;
14868
14956
  });
14869
- var getDistance = (touch, target) => {
14870
- var {
14871
- clientX: touchX,
14872
- clientY: touchY
14873
- } = touch;
14874
- var {
14875
- clientX: targetX,
14876
- clientY: targetY
14877
- } = target;
14878
- return Math.abs(Math.sqrt(Math.pow(targetX - touchX, 2) + Math.pow(targetY - touchY, 2)));
14879
- };
14880
- var createVarTouch = (touch, target) => ({
14881
- clientX: touch.clientX,
14882
- clientY: touch.clientY,
14883
- timestamp: performance.now(),
14884
- target
14885
- });
14886
14957
  var zoomIn = () => {
14887
14958
  scale.value = toNumber(props2.zoom);
14888
14959
  canSwipe.value = false;
14889
- prevTouch = null;
14960
+ targets.prev = null;
14890
14961
  window.setTimeout(() => {
14891
14962
  transitionTimingFunction.value = "linear";
14892
14963
  transitionDuration.value = "0s";
@@ -14897,28 +14968,30 @@ var __sfc__$H = vue.defineComponent({
14897
14968
  translateX.value = 0;
14898
14969
  translateY.value = 0;
14899
14970
  canSwipe.value = true;
14900
- prevTouch = null;
14971
+ targets.prev = null;
14901
14972
  transitionTimingFunction.value = void 0;
14902
14973
  transitionDuration.value = void 0;
14903
14974
  };
14904
- var isDoubleTouch = (currentTouch) => {
14905
- if (!prevTouch) {
14975
+ var isDoubleTouch = (target) => {
14976
+ if (!targets.prev) {
14906
14977
  return false;
14907
14978
  }
14908
- return getDistance(prevTouch, currentTouch) <= DISTANCE_OFFSET && currentTouch.timestamp - prevTouch.timestamp <= EVENT_DELAY && prevTouch.target === currentTouch.target;
14979
+ return distance.value <= DISTANCE_OFFSET && performance.now() - startTime.value <= EVENT_DELAY && targets.prev === target;
14909
14980
  };
14910
14981
  var isTapTouch = (target) => {
14911
- if (!target || !startTouch || !prevTouch) {
14982
+ if (!target || !targets.start || !targets.prev) {
14912
14983
  return false;
14913
14984
  }
14914
- return getDistance(startTouch, prevTouch) <= DISTANCE_OFFSET && performance.now() - prevTouch.timestamp < TAP_DELAY && (target === startTouch.target || target.parentNode === startTouch.target);
14985
+ return distance.value <= DISTANCE_OFFSET && performance.now() - startTime.value < TAP_DELAY && (target === targets.start || target.parentNode === targets.start);
14915
14986
  };
14916
14987
  var handleTouchcancel = () => {
14988
+ endTouch();
14917
14989
  window.clearTimeout(longPressRunner);
14918
14990
  isLongPress = false;
14919
- startTouch = null;
14991
+ targets.start = null;
14920
14992
  };
14921
14993
  var handleTouchend = (event) => {
14994
+ endTouch();
14922
14995
  window.clearTimeout(longPressRunner);
14923
14996
  if (isLongPress) {
14924
14997
  isLongPress = false;
@@ -14927,26 +15000,24 @@ var __sfc__$H = vue.defineComponent({
14927
15000
  var isTap = isTapTouch(event.target);
14928
15001
  closeRunner = window.setTimeout(() => {
14929
15002
  isTap && close();
14930
- startTouch = null;
15003
+ targets.start = null;
14931
15004
  }, EVENT_DELAY);
14932
15005
  };
14933
15006
  var handleTouchstart = (event, idx) => {
14934
15007
  window.clearTimeout(closeRunner);
14935
15008
  window.clearTimeout(longPressRunner);
14936
- var currentTouch = createVarTouch(event.touches[0], event.currentTarget);
14937
- startTouch = currentTouch;
15009
+ var target = event.currentTarget;
15010
+ targets.start = target;
14938
15011
  longPressRunner = window.setTimeout(() => {
14939
- var {
14940
- onLongPress
14941
- } = props2;
14942
15012
  isLongPress = true;
14943
- call(onLongPress, idx);
15013
+ call(props2.onLongPress, idx);
14944
15014
  }, LONG_PRESS_DELAY);
14945
- if (isDoubleTouch(currentTouch)) {
15015
+ if (isDoubleTouch(target)) {
14946
15016
  scale.value > 1 ? zoomOut() : zoomIn();
14947
15017
  return;
14948
15018
  }
14949
- prevTouch = currentTouch;
15019
+ startTouch(event);
15020
+ targets.prev = target;
14950
15021
  };
14951
15022
  var getZoom = (target) => {
14952
15023
  var {
@@ -14993,33 +15064,22 @@ var __sfc__$H = vue.defineComponent({
14993
15064
  var displayHeight = imageRadio > rootRadio ? height : width * imageRadio;
14994
15065
  return Math.max(0, (zoom * displayHeight - height) / 2) / zoom;
14995
15066
  };
14996
- var getMoveTranslate = (current, move, limit) => {
14997
- if (current + move >= limit) {
14998
- return limit;
14999
- }
15000
- if (current + move <= -limit) {
15001
- return -limit;
15002
- }
15003
- return current + move;
15004
- };
15005
15067
  var handleTouchmove = (event) => {
15006
- if (!prevTouch) {
15068
+ if (!targets.prev) {
15007
15069
  return;
15008
15070
  }
15071
+ moveTouch(event);
15009
15072
  var target = event.currentTarget;
15010
- var currentTouch = createVarTouch(event.touches[0], target);
15011
- if (getDistance(currentTouch, prevTouch) > DISTANCE_OFFSET) {
15073
+ if (distance.value > DISTANCE_OFFSET) {
15012
15074
  window.clearTimeout(longPressRunner);
15013
15075
  }
15014
15076
  if (scale.value > 1) {
15015
- var moveX = currentTouch.clientX - prevTouch.clientX;
15016
- var moveY = currentTouch.clientY - prevTouch.clientY;
15017
15077
  var limitX = getLimitX(target);
15018
15078
  var limitY = getLimitY(target);
15019
- translateX.value = getMoveTranslate(translateX.value, moveX, limitX);
15020
- translateY.value = getMoveTranslate(translateY.value, moveY, limitY);
15079
+ translateX.value = clamp$1(translateX.value + moveX.value, -limitX, limitX);
15080
+ translateY.value = clamp$1(translateY.value + moveY.value, -limitY, limitY);
15021
15081
  }
15022
- prevTouch = currentTouch;
15082
+ targets.prev = target;
15023
15083
  };
15024
15084
  var close = () => {
15025
15085
  if (scale.value > 1) {
@@ -17273,7 +17333,9 @@ var {
17273
17333
  } = createNamespace("option");
17274
17334
  function __render__$x(_ctx, _cache) {
17275
17335
  var _component_var_checkbox = vue.resolveComponent("var-checkbox");
17336
+ var _component_var_hover_overlay = vue.resolveComponent("var-hover-overlay");
17276
17337
  var _directive_ripple = vue.resolveDirective("ripple");
17338
+ var _directive_hover = vue.resolveDirective("hover");
17277
17339
  return vue.withDirectives((vue.openBlock(), vue.createElementBlock(
17278
17340
  "div",
17279
17341
  {
@@ -17317,18 +17379,22 @@ function __render__$x(_ctx, _cache) {
17317
17379
  )])],
17318
17380
  2
17319
17381
  /* CLASS */
17320
- )],
17382
+ ), vue.createVNode(_component_var_hover_overlay, {
17383
+ hovering: _ctx.hovering
17384
+ }, null, 8, ["hovering"])],
17321
17385
  6
17322
17386
  /* CLASS, STYLE */
17323
- )), [[_directive_ripple]]);
17387
+ )), [[_directive_ripple], [_directive_hover, _ctx.handleHovering, "desktop"]]);
17324
17388
  }
17325
17389
  var __sfc__$y = vue.defineComponent({
17326
17390
  name: "VarOption",
17327
17391
  directives: {
17328
- Ripple: Ripple$1
17392
+ Ripple: Ripple$1,
17393
+ Hover: Hover$1
17329
17394
  },
17330
17395
  components: {
17331
- VarCheckbox: Checkbox
17396
+ VarCheckbox: Checkbox,
17397
+ VarHoverOverlay: HoverOverlay
17332
17398
  },
17333
17399
  props: props$s,
17334
17400
  setup(props2) {
@@ -17346,6 +17412,10 @@ var __sfc__$y = vue.defineComponent({
17346
17412
  onSelect,
17347
17413
  computeLabel
17348
17414
  } = select2;
17415
+ var {
17416
+ hovering,
17417
+ handleHovering
17418
+ } = useHoverOverlay();
17349
17419
  var handleClick = () => {
17350
17420
  if (multiple.value) {
17351
17421
  optionSelected.value = !optionSelected.value;
@@ -17370,6 +17440,8 @@ var __sfc__$y = vue.defineComponent({
17370
17440
  optionSelected,
17371
17441
  multiple,
17372
17442
  focusColor,
17443
+ hovering,
17444
+ handleHovering,
17373
17445
  handleClick,
17374
17446
  handleSelect
17375
17447
  };
@@ -19216,7 +19288,7 @@ var __sfc__$s = vue.defineComponent({
19216
19288
  inheritAttrs: false,
19217
19289
  props: props$l,
19218
19290
  setup(props2) {
19219
- var value = vue.ref(false);
19291
+ var value = useVModel(props2, "modelValue");
19220
19292
  var checked = vue.computed(() => value.value === props2.checkedValue);
19221
19293
  var withAnimation = vue.ref(false);
19222
19294
  var {
@@ -19257,7 +19329,6 @@ var __sfc__$s = vue.defineComponent({
19257
19329
  return;
19258
19330
  }
19259
19331
  value.value = changedValue;
19260
- call(props2["onUpdate:modelValue"], value.value);
19261
19332
  call(onChange, value.value);
19262
19333
  radioGroup2 == null ? void 0 : radioGroup2.onToggle(checkedValue);
19263
19334
  validateWithTrigger("onChange");
@@ -19288,7 +19359,7 @@ var __sfc__$s = vue.defineComponent({
19288
19359
  value.value = v2 === checkedValue ? checkedValue : uncheckedValue;
19289
19360
  };
19290
19361
  var reset = () => {
19291
- call(props2["onUpdate:modelValue"], props2.uncheckedValue);
19362
+ value.value = props2.uncheckedValue;
19292
19363
  resetValidation();
19293
19364
  };
19294
19365
  var validate = () => v(props2.rules, props2.modelValue);
@@ -19303,11 +19374,6 @@ var __sfc__$s = vue.defineComponent({
19303
19374
  }
19304
19375
  change(changedValue);
19305
19376
  };
19306
- vue.watch(() => props2.modelValue, (newValue) => {
19307
- value.value = newValue;
19308
- }, {
19309
- immediate: true
19310
- });
19311
19377
  var radioProvider = {
19312
19378
  sync,
19313
19379
  validate,
@@ -25460,7 +25526,7 @@ const uploader = "";
25460
25526
  const UploaderSfc = "";
25461
25527
  const watermark = "";
25462
25528
  const WatermarkSfc = "";
25463
- const version = "2.14.2";
25529
+ const version = "2.14.3-alpha.1692871861882";
25464
25530
  function install(app) {
25465
25531
  ActionSheet.install && app.use(ActionSheet);
25466
25532
  AppBar.install && app.use(AppBar);