@uzum-tech/ui 1.10.0 → 1.11.0

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 (91) hide show
  1. package/dist/index.js +1269 -207
  2. package/dist/index.prod.js +3 -3
  3. package/es/_internal/index.d.ts +2 -0
  4. package/es/_internal/index.js +1 -0
  5. package/es/_internal/safe-top-scrollbar/index.d.ts +2 -0
  6. package/es/_internal/safe-top-scrollbar/index.js +1 -0
  7. package/es/_internal/safe-top-scrollbar/src/SafeTopScrollbar.d.ts +356 -0
  8. package/es/_internal/safe-top-scrollbar/src/SafeTopScrollbar.js +708 -0
  9. package/es/_internal/safe-top-scrollbar/src/styles/index.cssr.d.ts +2 -0
  10. package/es/_internal/safe-top-scrollbar/src/styles/index.cssr.js +80 -0
  11. package/es/_internal/safe-top-scrollbar/src/styles/rtl.cssr.d.ts +2 -0
  12. package/es/_internal/safe-top-scrollbar/src/styles/rtl.cssr.js +10 -0
  13. package/es/_internal/safe-top-scrollbar/styles/common.d.ts +7 -0
  14. package/es/_internal/safe-top-scrollbar/styles/common.js +7 -0
  15. package/es/_internal/safe-top-scrollbar/styles/dark.d.ts +3 -0
  16. package/es/_internal/safe-top-scrollbar/styles/dark.js +8 -0
  17. package/es/_internal/safe-top-scrollbar/styles/index.d.ts +4 -0
  18. package/es/_internal/safe-top-scrollbar/styles/index.js +3 -0
  19. package/es/_internal/safe-top-scrollbar/styles/light.d.ts +18 -0
  20. package/es/_internal/safe-top-scrollbar/styles/light.js +12 -0
  21. package/es/_internal/safe-top-scrollbar/styles/rtl.d.ts +3 -0
  22. package/es/_internal/safe-top-scrollbar/styles/rtl.js +6 -0
  23. package/es/chat/src/Chat.d.ts +14 -1
  24. package/es/chat/src/Chat.js +5 -0
  25. package/es/chat/src/ChatListItems.js +16 -1
  26. package/es/chat/src/ChatParts/ChatAttachment.js +31 -3
  27. package/es/chat/src/ChatParts/MainArea.js +68 -62
  28. package/es/chat/src/interface.d.ts +6 -2
  29. package/es/components.d.ts +1 -0
  30. package/es/components.js +1 -0
  31. package/es/config-provider/src/internal-interface.d.ts +2 -0
  32. package/es/drawer/src/Drawer.d.ts +18 -0
  33. package/es/drawer/src/Drawer.js +28 -26
  34. package/es/drawer/src/DrawerBodyWrapper.d.ts +8 -0
  35. package/es/drawer/src/DrawerBodyWrapper.js +36 -8
  36. package/es/infinite-scroll/src/InfiniteScroll.d.ts +16 -0
  37. package/es/infinite-scroll/src/InfiniteScroll.js +48 -12
  38. package/es/safe-top-scrollbar/index.d.ts +2 -0
  39. package/es/safe-top-scrollbar/index.js +1 -0
  40. package/es/safe-top-scrollbar/src/SafeTopScrollbar.d.ts +177 -0
  41. package/es/safe-top-scrollbar/src/SafeTopScrollbar.js +38 -0
  42. package/es/themes/dark.js +2 -0
  43. package/es/themes/light.js +2 -0
  44. package/es/version.d.ts +1 -1
  45. package/es/version.js +1 -1
  46. package/lib/_internal/index.d.ts +2 -0
  47. package/lib/_internal/index.js +4 -1
  48. package/lib/_internal/safe-top-scrollbar/index.d.ts +2 -0
  49. package/lib/_internal/safe-top-scrollbar/index.js +9 -0
  50. package/lib/_internal/safe-top-scrollbar/src/SafeTopScrollbar.d.ts +356 -0
  51. package/lib/_internal/safe-top-scrollbar/src/SafeTopScrollbar.js +714 -0
  52. package/lib/_internal/safe-top-scrollbar/src/styles/index.cssr.d.ts +2 -0
  53. package/lib/_internal/safe-top-scrollbar/src/styles/index.cssr.js +85 -0
  54. package/lib/_internal/safe-top-scrollbar/src/styles/rtl.cssr.d.ts +2 -0
  55. package/lib/_internal/safe-top-scrollbar/src/styles/rtl.cssr.js +15 -0
  56. package/lib/_internal/safe-top-scrollbar/styles/common.d.ts +7 -0
  57. package/lib/_internal/safe-top-scrollbar/styles/common.js +10 -0
  58. package/lib/_internal/safe-top-scrollbar/styles/dark.d.ts +3 -0
  59. package/lib/_internal/safe-top-scrollbar/styles/dark.js +10 -0
  60. package/lib/_internal/safe-top-scrollbar/styles/index.d.ts +4 -0
  61. package/lib/_internal/safe-top-scrollbar/styles/index.js +12 -0
  62. package/lib/_internal/safe-top-scrollbar/styles/light.d.ts +18 -0
  63. package/lib/_internal/safe-top-scrollbar/styles/light.js +16 -0
  64. package/lib/_internal/safe-top-scrollbar/styles/rtl.d.ts +3 -0
  65. package/lib/_internal/safe-top-scrollbar/styles/rtl.js +12 -0
  66. package/lib/chat/src/Chat.d.ts +14 -1
  67. package/lib/chat/src/Chat.js +5 -0
  68. package/lib/chat/src/ChatListItems.js +16 -1
  69. package/lib/chat/src/ChatParts/ChatAttachment.js +30 -2
  70. package/lib/chat/src/ChatParts/MainArea.js +68 -62
  71. package/lib/chat/src/interface.d.ts +6 -2
  72. package/lib/components.d.ts +1 -0
  73. package/lib/components.js +1 -0
  74. package/lib/config-provider/src/internal-interface.d.ts +2 -0
  75. package/lib/drawer/src/Drawer.d.ts +18 -0
  76. package/lib/drawer/src/Drawer.js +28 -26
  77. package/lib/drawer/src/DrawerBodyWrapper.d.ts +8 -0
  78. package/lib/drawer/src/DrawerBodyWrapper.js +36 -8
  79. package/lib/infinite-scroll/src/InfiniteScroll.d.ts +16 -0
  80. package/lib/infinite-scroll/src/InfiniteScroll.js +47 -11
  81. package/lib/safe-top-scrollbar/index.d.ts +2 -0
  82. package/lib/safe-top-scrollbar/index.js +9 -0
  83. package/lib/safe-top-scrollbar/src/SafeTopScrollbar.d.ts +177 -0
  84. package/lib/safe-top-scrollbar/src/SafeTopScrollbar.js +41 -0
  85. package/lib/themes/dark.js +5 -0
  86. package/lib/themes/light.js +5 -0
  87. package/lib/version.d.ts +1 -1
  88. package/lib/version.js +1 -1
  89. package/package.json +6 -6
  90. package/volar.d.ts +1 -0
  91. package/web-types.json +67 -2
package/dist/index.js CHANGED
@@ -3431,7 +3431,7 @@
3431
3431
  }
3432
3432
 
3433
3433
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
3434
- const style$1M = c([c('.v-binder-follower-container', {
3434
+ const style$1N = c([c('.v-binder-follower-container', {
3435
3435
  position: 'absolute',
3436
3436
  left: '0',
3437
3437
  right: '0',
@@ -3510,7 +3510,7 @@
3510
3510
  }
3511
3511
  });
3512
3512
  const ssrAdapter = useSsrAdapter();
3513
- style$1M.mount({
3513
+ style$1N.mount({
3514
3514
  id: 'vueuc/binder',
3515
3515
  head: true,
3516
3516
  anchorMetaName: cssrAnchorMetaName$1,
@@ -4970,7 +4970,7 @@
4970
4970
 
4971
4971
  /* eslint-disable @typescript-eslint/strict-boolean-expressions */
4972
4972
  const hiddenAttr = 'v-hidden';
4973
- const style$1L = c('[v-hidden]', {
4973
+ const style$1M = c('[v-hidden]', {
4974
4974
  display: 'none!important'
4975
4975
  });
4976
4976
  var VOverflow = vue.defineComponent({
@@ -5083,7 +5083,7 @@
5083
5083
  }
5084
5084
  }
5085
5085
  const ssrAdapter = useSsrAdapter();
5086
- style$1L.mount({
5086
+ style$1M.mount({
5087
5087
  id: 'vueuc/overflow',
5088
5088
  head: true,
5089
5089
  anchorMetaName: cssrAnchorMetaName$1,
@@ -28838,7 +28838,7 @@
28838
28838
  };
28839
28839
  }
28840
28840
 
28841
- var style$1K = cB("affix", [cM("affixed", {
28841
+ var style$1L = cB("affix", [cM("affixed", {
28842
28842
  position: "fixed"
28843
28843
  }, [cM("absolute-positioned", {
28844
28844
  position: "absolute"
@@ -28898,7 +28898,7 @@
28898
28898
  props: affixProps,
28899
28899
  setup(props) {
28900
28900
  const { mergedClsPrefixRef } = useConfig(props);
28901
- useStyle("-affix", style$1K, mergedClsPrefixRef);
28901
+ useStyle("-affix", style$1L, mergedClsPrefixRef);
28902
28902
  let scrollTarget = null;
28903
28903
  const stickToTopRef = vue.ref(false);
28904
28904
  const stickToBottomRef = vue.ref(false);
@@ -30104,7 +30104,7 @@
30104
30104
  }
30105
30105
  });
30106
30106
 
30107
- var style$1J = cB("base-icon", `
30107
+ var style$1K = cB("base-icon", `
30108
30108
  height: 1em;
30109
30109
  width: 1em;
30110
30110
  line-height: 1em;
@@ -30140,7 +30140,7 @@
30140
30140
  onMouseup: Function
30141
30141
  },
30142
30142
  setup(props) {
30143
- useStyle("-base-icon", style$1J, vue.toRef(props, "clsPrefix"));
30143
+ useStyle("-base-icon", style$1K, vue.toRef(props, "clsPrefix"));
30144
30144
  },
30145
30145
  render() {
30146
30146
  return /* @__PURE__ */ vue.h(
@@ -30160,7 +30160,7 @@
30160
30160
  }
30161
30161
  });
30162
30162
 
30163
- var style$1I = cB("base-close", `
30163
+ var style$1J = cB("base-close", `
30164
30164
  display: flex;
30165
30165
  align-items: center;
30166
30166
  justify-content: center;
@@ -30232,7 +30232,7 @@
30232
30232
  absolute: Boolean
30233
30233
  },
30234
30234
  setup(props) {
30235
- useStyle("-base-close", style$1I, vue.toRef(props, "clsPrefix"));
30235
+ useStyle("-base-close", style$1J, vue.toRef(props, "clsPrefix"));
30236
30236
  return () => {
30237
30237
  const { clsPrefix, disabled, absolute, round, isButtonTag } = props;
30238
30238
  const Tag = isButtonTag ? "button" : "div";
@@ -30312,7 +30312,7 @@
30312
30312
  })];
30313
30313
  }
30314
30314
 
30315
- var style$1H = c$1([c$1("@keyframes loading-container-rotate", `
30315
+ var style$1I = c$1([c$1("@keyframes loading-container-rotate", `
30316
30316
  to {
30317
30317
  -webkit-transform: rotate(360deg);
30318
30318
  transform: rotate(360deg);
@@ -30482,7 +30482,7 @@
30482
30482
  ...exposedLoadingProps
30483
30483
  },
30484
30484
  setup(props) {
30485
- useStyle("-base-loading", style$1H, vue.toRef(props, "clsPrefix"));
30485
+ useStyle("-base-loading", style$1I, vue.toRef(props, "clsPrefix"));
30486
30486
  },
30487
30487
  render() {
30488
30488
  const { clsPrefix, radius, strokeWidth, stroke, scale } = this;
@@ -30729,7 +30729,7 @@
30729
30729
  shadowDepth: "0px 8px 8px 0px rgba(0, 0, 0, 0.25)"
30730
30730
  };
30731
30731
 
30732
- const self$1q = vars => {
30732
+ const self$1r = vars => {
30733
30733
  const {
30734
30734
  heightSmall,
30735
30735
  heightMedium,
@@ -30750,10 +30750,10 @@
30750
30750
  const skeletonLight$1 = {
30751
30751
  name: "Skeleton",
30752
30752
  common: derived,
30753
- self: self$1q
30753
+ self: self$1r
30754
30754
  };
30755
30755
 
30756
- var style$1G = c$1([cB("skeleton", `
30756
+ var style$1H = c$1([cB("skeleton", `
30757
30757
  height: 1em;
30758
30758
  width: 100%;
30759
30759
  transition: background-color .3s var(--u-bezier);
@@ -30809,7 +30809,7 @@
30809
30809
  const themeRef = useTheme(
30810
30810
  "Skeleton",
30811
30811
  "-skeleton",
30812
- style$1G,
30812
+ style$1H,
30813
30813
  skeletonLight$1,
30814
30814
  props,
30815
30815
  mergedClsPrefixRef
@@ -31558,7 +31558,7 @@
31558
31558
  return treemate;
31559
31559
  }
31560
31560
 
31561
- const self$1p = vars => {
31561
+ const self$1q = vars => {
31562
31562
  const {
31563
31563
  fontBodyMedium,
31564
31564
  fontTitleLarge,
@@ -31590,16 +31590,16 @@
31590
31590
  const emptyLight = {
31591
31591
  name: "Empty",
31592
31592
  common: derived,
31593
- self: self$1p
31593
+ self: self$1q
31594
31594
  };
31595
31595
 
31596
31596
  const emptyDark$1 = {
31597
31597
  name: "Empty",
31598
31598
  common: derived$1,
31599
- self: self$1p
31599
+ self: self$1q
31600
31600
  };
31601
31601
 
31602
- var style$1F = cB("empty", `
31602
+ var style$1G = cB("empty", `
31603
31603
  display: flex;
31604
31604
  flex-direction: column;
31605
31605
  align-items: center;
@@ -31676,7 +31676,7 @@
31676
31676
  const themeRef = useTheme(
31677
31677
  "Empty",
31678
31678
  "-empty",
31679
- style$1F,
31679
+ style$1G,
31680
31680
  emptyLight,
31681
31681
  props,
31682
31682
  mergedClsPrefixRef
@@ -31764,7 +31764,7 @@
31764
31764
  }
31765
31765
  });
31766
31766
 
31767
- const commonVars$a = {
31767
+ const commonVars$b = {
31768
31768
  railInsetHorizontalBottom: "auto 2px 4px 2px",
31769
31769
  railInsetHorizontalTop: "4px 2px auto 2px",
31770
31770
  railInsetVerticalRight: "2px 4px 2px auto",
@@ -31772,7 +31772,7 @@
31772
31772
  railColor: "transparent"
31773
31773
  };
31774
31774
 
31775
- const self$1o = vars => {
31775
+ const self$1p = vars => {
31776
31776
  const {
31777
31777
  scrollbarColor,
31778
31778
  scrollbarColorHover,
@@ -31781,7 +31781,7 @@
31781
31781
  scrollbarBorderRadius
31782
31782
  } = vars;
31783
31783
  return {
31784
- ...commonVars$a,
31784
+ ...commonVars$b,
31785
31785
  height: scrollbarHeight,
31786
31786
  width: scrollbarWidth,
31787
31787
  borderRadius: scrollbarBorderRadius,
@@ -31792,13 +31792,13 @@
31792
31792
  const scrollbarLight = {
31793
31793
  name: "Scrollbar",
31794
31794
  common: derived,
31795
- self: self$1o
31795
+ self: self$1p
31796
31796
  };
31797
31797
 
31798
31798
  const scrollbarDark = {
31799
31799
  name: "Scrollbar",
31800
31800
  common: derived$1,
31801
- self: self$1o
31801
+ self: self$1p
31802
31802
  };
31803
31803
 
31804
31804
  var rtlStyle$s = cB("scrollbar", [cM("rtl", `
@@ -31837,7 +31837,7 @@
31837
31837
  })];
31838
31838
  }
31839
31839
 
31840
- var style$1E = cB("scrollbar", `
31840
+ var style$1F = cB("scrollbar", `
31841
31841
  overflow: hidden;
31842
31842
  position: relative;
31843
31843
  z-index: auto;
@@ -31980,7 +31980,7 @@
31980
31980
  const themeRef = useTheme(
31981
31981
  "Scrollbar",
31982
31982
  "-scrollbar",
31983
- style$1E,
31983
+ style$1F,
31984
31984
  scrollbarLight,
31985
31985
  props,
31986
31986
  mergedClsPrefixRef
@@ -32641,7 +32641,7 @@
32641
32641
  });
32642
32642
  const XScrollbar = Scrollbar$1;
32643
32643
 
32644
- const self$1n = vars => {
32644
+ const self$1o = vars => {
32645
32645
  const {
32646
32646
  borderRadius,
32647
32647
  iconMedium,
@@ -32698,7 +32698,7 @@
32698
32698
  Scrollbar: scrollbarLight,
32699
32699
  Empty: emptyLight
32700
32700
  },
32701
- self: self$1n
32701
+ self: self$1o
32702
32702
  });
32703
32703
 
32704
32704
  const internalSelectMenuDark = {
@@ -32708,10 +32708,10 @@
32708
32708
  Scrollbar: scrollbarDark,
32709
32709
  Empty: emptyDark$1
32710
32710
  },
32711
- self: self$1n
32711
+ self: self$1o
32712
32712
  };
32713
32713
 
32714
- var style$1D = cB("base-account-option", `
32714
+ var style$1E = cB("base-account-option", `
32715
32715
  display: flex;
32716
32716
  align-items: center;
32717
32717
  position: relative;
@@ -32751,7 +32751,7 @@
32751
32751
  font-size: var(--u-avatar-size);
32752
32752
  `)])]);
32753
32753
 
32754
- var commonVars$9 = {
32754
+ var commonVars$a = {
32755
32755
  iconWidth: "44px",
32756
32756
  iconHeight: "44px",
32757
32757
  iconMargin: "0 16px 0 0",
@@ -32763,7 +32763,7 @@
32763
32763
  avatarSize: "16px"
32764
32764
  };
32765
32765
 
32766
- const self$1m = vars => {
32766
+ const self$1n = vars => {
32767
32767
  const {
32768
32768
  heightHuge,
32769
32769
  fontBodyLarge,
@@ -32777,7 +32777,7 @@
32777
32777
  elementsSecondary
32778
32778
  } = vars;
32779
32779
  return {
32780
- ...commonVars$9,
32780
+ ...commonVars$a,
32781
32781
  height: heightHuge,
32782
32782
  labelColor: textSecondary,
32783
32783
  labelFontSize: fontBodyLarge,
@@ -32793,13 +32793,13 @@
32793
32793
  const accountOptionLight = {
32794
32794
  name: "AccountOption",
32795
32795
  common: derived,
32796
- self: self$1m
32796
+ self: self$1n
32797
32797
  };
32798
32798
 
32799
32799
  const accountOptionDark = {
32800
32800
  name: "AccountOption",
32801
32801
  common: derived$1,
32802
- self: self$1m
32802
+ self: self$1n
32803
32803
  };
32804
32804
 
32805
32805
  var UBaseAccountOption = vue.defineComponent({
@@ -32817,7 +32817,7 @@
32817
32817
  const themeRef = useTheme(
32818
32818
  "AccountOption",
32819
32819
  "-base-account-option",
32820
- style$1D,
32820
+ style$1E,
32821
32821
  accountOptionLight,
32822
32822
  props,
32823
32823
  mergedClsPrefixRef
@@ -33121,7 +33121,7 @@
33121
33121
  })];
33122
33122
  }
33123
33123
 
33124
- var style$1C = cB("base-select-menu", `
33124
+ var style$1D = cB("base-select-menu", `
33125
33125
  line-height: 1.5;
33126
33126
  outline: none;
33127
33127
  z-index: 0;
@@ -33306,7 +33306,7 @@
33306
33306
  const themeRef = useTheme(
33307
33307
  "InternalSelectMenu",
33308
33308
  "-internal-select-menu",
33309
- style$1C,
33309
+ style$1D,
33310
33310
  internalSelectMenuLight,
33311
33311
  props,
33312
33312
  vue.toRef(props, "clsPrefix")
@@ -33743,7 +33743,7 @@
33743
33743
  }
33744
33744
  });
33745
33745
 
33746
- var style$1B = cB("base-wave", `
33746
+ var style$1C = cB("base-wave", `
33747
33747
  position: absolute;
33748
33748
  left: 0;
33749
33749
  right: 0;
@@ -33761,7 +33761,7 @@
33761
33761
  }
33762
33762
  },
33763
33763
  setup(props) {
33764
- useStyle("-base-wave", style$1B, vue.toRef(props, "clsPrefix"));
33764
+ useStyle("-base-wave", style$1C, vue.toRef(props, "clsPrefix"));
33765
33765
  const selfRef = vue.ref(null);
33766
33766
  const activeRef = vue.ref(false);
33767
33767
  let animationTimerId = null;
@@ -33806,7 +33806,7 @@
33806
33806
  }
33807
33807
  });
33808
33808
 
33809
- var style$1A = cB("base-menu-mask", `
33809
+ var style$1B = cB("base-menu-mask", `
33810
33810
  position: absolute;
33811
33811
  left: 0;
33812
33812
  right: 0;
@@ -33829,7 +33829,7 @@
33829
33829
  }
33830
33830
  },
33831
33831
  setup(props) {
33832
- useStyle("-base-menu-mask", style$1A, vue.toRef(props, "clsPrefix"));
33832
+ useStyle("-base-menu-mask", style$1B, vue.toRef(props, "clsPrefix"));
33833
33833
  const messageRef = vue.ref(null);
33834
33834
  let timerId = null;
33835
33835
  const uncontrolledShowRef = vue.ref(false);
@@ -33862,7 +33862,7 @@
33862
33862
  }
33863
33863
  });
33864
33864
 
33865
- const self$1l = vars => {
33865
+ const self$1m = vars => {
33866
33866
  const {
33867
33867
  fontBodyMedium,
33868
33868
  containerPrimary,
@@ -33889,13 +33889,13 @@
33889
33889
  const popoverLight = {
33890
33890
  name: "Popover",
33891
33891
  common: derived,
33892
- self: self$1l
33892
+ self: self$1m
33893
33893
  };
33894
33894
 
33895
33895
  const popoverDark = {
33896
33896
  name: "Popover",
33897
33897
  common: derived$1,
33898
- self: self$1l
33898
+ self: self$1m
33899
33899
  };
33900
33900
 
33901
33901
  const oppositePlacement = {
@@ -33905,7 +33905,7 @@
33905
33905
  right: "left"
33906
33906
  };
33907
33907
  const arrowSize = "var(--u-arrow-height) * 1.414";
33908
- var style$1z = c$1([cB("popover", `
33908
+ var style$1A = c$1([cB("popover", `
33909
33909
  transition:
33910
33910
  box-shadow .3s var(--u-bezier),
33911
33911
  background-color .3s var(--u-bezier),
@@ -34096,7 +34096,7 @@
34096
34096
  const themeRef = useTheme(
34097
34097
  "Popover",
34098
34098
  "-popover",
34099
- style$1z,
34099
+ style$1A,
34100
34100
  popoverLight,
34101
34101
  props,
34102
34102
  mergedClsPrefixRef
@@ -34886,7 +34886,7 @@
34886
34886
  }
34887
34887
  });
34888
34888
 
34889
- const self$1k = vars => {
34889
+ const self$1l = vars => {
34890
34890
  const {
34891
34891
  opacityDisabled,
34892
34892
  borderRadiusSmall: borderRadius,
@@ -34984,13 +34984,13 @@
34984
34984
  const tagLight = {
34985
34985
  name: "Tag",
34986
34986
  common: derived,
34987
- self: self$1k
34987
+ self: self$1l
34988
34988
  };
34989
34989
 
34990
34990
  const tagDark = {
34991
34991
  name: "Tag",
34992
34992
  common: derived$1,
34993
- self: self$1k
34993
+ self: self$1l
34994
34994
  };
34995
34995
 
34996
34996
  var rtlStyle$r = cB("tag", [cM("rtl", `
@@ -35037,7 +35037,7 @@
35037
35037
  }
35038
35038
  };
35039
35039
 
35040
- var style$1y = cB("tag", `
35040
+ var style$1z = cB("tag", `
35041
35041
  white-space: nowrap;
35042
35042
  position: relative;
35043
35043
  box-sizing: border-box;
@@ -35204,7 +35204,7 @@
35204
35204
  const themeRef = useTheme(
35205
35205
  "Tag",
35206
35206
  "-tag",
35207
- style$1y,
35207
+ style$1z,
35208
35208
  tagLight,
35209
35209
  props,
35210
35210
  mergedClsPrefixRef
@@ -35563,7 +35563,7 @@
35563
35563
  }
35564
35564
  });
35565
35565
 
35566
- var style$1x = cB("base-clear", `
35566
+ var style$1y = cB("base-clear", `
35567
35567
  flex-shrink: 0;
35568
35568
  height: 1em;
35569
35569
  width: 1em;
@@ -35604,7 +35604,7 @@
35604
35604
  onClear: Function
35605
35605
  },
35606
35606
  setup(props) {
35607
- useStyle("-base-clear", style$1x, vue.toRef(props, "clsPrefix"));
35607
+ useStyle("-base-clear", style$1y, vue.toRef(props, "clsPrefix"));
35608
35608
  return {
35609
35609
  handleMouseDown(e) {
35610
35610
  e.preventDefault();
@@ -35698,7 +35698,7 @@
35698
35698
  }
35699
35699
  });
35700
35700
 
35701
- const self$1j = vars => {
35701
+ const self$1k = vars => {
35702
35702
  const {
35703
35703
  borderRadius,
35704
35704
  iconMedium,
@@ -35856,7 +35856,7 @@
35856
35856
  peers: {
35857
35857
  Popover: popoverLight
35858
35858
  },
35859
- self: self$1j
35859
+ self: self$1k
35860
35860
  });
35861
35861
 
35862
35862
  const internalSelectionDark = {
@@ -35865,7 +35865,7 @@
35865
35865
  peers: {
35866
35866
  Popover: popoverDark
35867
35867
  },
35868
- self: self$1j
35868
+ self: self$1k
35869
35869
  };
35870
35870
 
35871
35871
  function generateSecondaryStates(state) {
@@ -35889,7 +35889,7 @@
35889
35889
  color: var(--u-arrow-color${state}-secondary);
35890
35890
  `)])];
35891
35891
  }
35892
- var style$1w = c$1([cB("base-selection", `
35892
+ var style$1x = c$1([cB("base-selection", `
35893
35893
  position: relative;
35894
35894
  z-index: auto;
35895
35895
  box-shadow: none;
@@ -36236,7 +36236,7 @@
36236
36236
  const themeRef = useTheme(
36237
36237
  "InternalSelection",
36238
36238
  "-internal-selection",
36239
- style$1w,
36239
+ style$1x,
36240
36240
  internalSelectionLight,
36241
36241
  props,
36242
36242
  vue.toRef(props, "clsPrefix")
@@ -37299,7 +37299,7 @@
37299
37299
  })];
37300
37300
  }
37301
37301
 
37302
- var style$1v = c$1([c$1("@keyframes u-base-slot-machine-fade-up-in", `
37302
+ var style$1w = c$1([c$1("@keyframes u-base-slot-machine-fade-up-in", `
37303
37303
  from {
37304
37304
  transform: translateY(60%);
37305
37305
  opacity: 0;
@@ -37418,7 +37418,7 @@
37418
37418
  }
37419
37419
  },
37420
37420
  setup(props) {
37421
- useStyle("-base-slot-machine", style$1v, vue.toRef(props, "clsPrefix"));
37421
+ useStyle("-base-slot-machine", style$1w, vue.toRef(props, "clsPrefix"));
37422
37422
  const oldValueRef = vue.ref();
37423
37423
  const newValueRef = vue.ref();
37424
37424
  const numbersRef = vue.computed(() => {
@@ -37471,6 +37471,908 @@
37471
37471
  }
37472
37472
  });
37473
37473
 
37474
+ const commonVars$9 = {
37475
+ railInsetHorizontalBottom: "auto 2px 4px 2px",
37476
+ railInsetHorizontalTop: "4px 2px auto 2px",
37477
+ railInsetVerticalRight: "2px 4px 2px auto",
37478
+ railInsetVerticalLeft: "2px auto 2px 4px",
37479
+ railColor: "transparent"
37480
+ };
37481
+
37482
+ const self$1j = vars => {
37483
+ const {
37484
+ scrollbarColor,
37485
+ scrollbarColorHover,
37486
+ scrollbarHeight,
37487
+ scrollbarWidth,
37488
+ scrollbarBorderRadius
37489
+ } = vars;
37490
+ return {
37491
+ ...commonVars$9,
37492
+ height: scrollbarHeight,
37493
+ width: scrollbarWidth,
37494
+ borderRadius: scrollbarBorderRadius,
37495
+ color: scrollbarColor,
37496
+ colorHover: scrollbarColorHover
37497
+ };
37498
+ };
37499
+ const safeTopScrollbarLight = {
37500
+ name: "SafeTopScrollbar",
37501
+ common: derived,
37502
+ self: self$1j
37503
+ };
37504
+
37505
+ const safeTopScrollbarDark = {
37506
+ name: "SafeTopScrollbar",
37507
+ common: derived$1,
37508
+ self: self$1j
37509
+ };
37510
+
37511
+ cB("scrollbar", [cM("rtl", `
37512
+ direction: rtl;
37513
+ `, [c$1(">", [cB("scrollbar-rail", [cM("horizontal", [c$1(">", [cE("scrollbar", `
37514
+ left: 0;
37515
+ right: unset;
37516
+ `)])]), cM("vertical", `
37517
+ left: 4px;
37518
+ right: unset;
37519
+ `)])])])]);
37520
+
37521
+ var style$1v = cB("safe-top-scrollbar", `
37522
+ overflow: hidden;
37523
+ position: relative;
37524
+ z-index: auto;
37525
+ height: 100%;
37526
+ width: 100%;
37527
+ `, [c$1(">", [cB("scrollbar-container", `
37528
+ width: 100%;
37529
+ overflow: scroll;
37530
+ height: 100%;
37531
+ min-height: inherit;
37532
+ max-height: inherit;
37533
+ scrollbar-width: none;
37534
+ `, [c$1("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb", `
37535
+ width: 0;
37536
+ height: 0;
37537
+ display: none;
37538
+ `), c$1(">", [
37539
+ // We can't set overflow hidden since it affects positioning.
37540
+ cB("scrollbar-content", `
37541
+ box-sizing: border-box;
37542
+ min-width: 100%;
37543
+ `)])])]), c$1(">, +", [cB("scrollbar-rail", `
37544
+ position: absolute;
37545
+ pointer-events: none;
37546
+ user-select: none;
37547
+ background: var(--u-scrollbar-rail-color);
37548
+ -webkit-user-select: none;
37549
+ `, [cM("horizontal", `
37550
+ height: var(--u-scrollbar-height);
37551
+ `, [c$1(">", [cE("scrollbar", `
37552
+ height: var(--u-scrollbar-height);
37553
+ border-radius: var(--u-scrollbar-border-radius);
37554
+ right: 0;
37555
+ `)])]), cM("horizontal--top", `
37556
+ top: var(--u-scrollbar-rail-top-horizontal-top);
37557
+ right: var(--u-scrollbar-rail-right-horizontal-top);
37558
+ bottom: var(--u-scrollbar-rail-bottom-horizontal-top);
37559
+ left: var(--u-scrollbar-rail-left-horizontal-top);
37560
+ `), cM("horizontal--bottom", `
37561
+ top: var(--u-scrollbar-rail-top-horizontal-bottom);
37562
+ right: var(--u-scrollbar-rail-right-horizontal-bottom);
37563
+ bottom: var(--u-scrollbar-rail-bottom-horizontal-bottom);
37564
+ left: var(--u-scrollbar-rail-left-horizontal-bottom);
37565
+ `), cM("vertical", `
37566
+ width: var(--u-scrollbar-width);
37567
+ `, [c$1(">", [cE("scrollbar", `
37568
+ width: var(--u-scrollbar-width);
37569
+ border-radius: var(--u-scrollbar-border-radius);
37570
+ bottom: 0;
37571
+ `)])]), cM("vertical--left", `
37572
+ top: var(--u-scrollbar-rail-top-vertical-left);
37573
+ right: var(--u-scrollbar-rail-right-vertical-left);
37574
+ bottom: var(--u-scrollbar-rail-bottom-vertical-left);
37575
+ left: var(--u-scrollbar-rail-left-vertical-left);
37576
+ `), cM("vertical--right", `
37577
+ top: var(--u-scrollbar-rail-top-vertical-right);
37578
+ right: var(--u-scrollbar-rail-right-vertical-right);
37579
+ bottom: var(--u-scrollbar-rail-bottom-vertical-right);
37580
+ left: var(--u-scrollbar-rail-left-vertical-right);
37581
+ `), cM("disabled", [c$1(">", [cE("scrollbar", "pointer-events: none;")])]), c$1(">", [cE("scrollbar", `
37582
+ z-index: 1;
37583
+ position: absolute;
37584
+ cursor: pointer;
37585
+ pointer-events: all;
37586
+ background-color: var(--u-scrollbar-color);
37587
+ transition: background-color .2s var(--u-scrollbar-bezier);
37588
+ `, [fadeInTransition(), c$1("&:hover", "background-color: var(--u-scrollbar-color-hover);")])])])])]);
37589
+
37590
+ const safeTopscrollbarProps = {
37591
+ ...useTheme.props,
37592
+ duration: {
37593
+ type: Number,
37594
+ default: 0
37595
+ },
37596
+ scrollable: {
37597
+ type: Boolean,
37598
+ default: true
37599
+ },
37600
+ xScrollable: Boolean,
37601
+ trigger: {
37602
+ type: String,
37603
+ default: "hover"
37604
+ },
37605
+ useUnifiedContainer: Boolean,
37606
+ triggerDisplayManually: Boolean,
37607
+ // If container is set, resize observer won't not attached
37608
+ container: Function,
37609
+ content: Function,
37610
+ containerClass: String,
37611
+ containerStyle: [String, Object],
37612
+ contentClass: [String, Array],
37613
+ contentStyle: [String, Object],
37614
+ horizontalRailStyle: [String, Object],
37615
+ verticalRailStyle: [String, Object],
37616
+ onScroll: Function,
37617
+ onWheel: Function,
37618
+ onResize: Function,
37619
+ internalOnUpdateScrollLeft: Function,
37620
+ internalHoistYRail: Boolean,
37621
+ yPlacement: {
37622
+ type: String,
37623
+ default: "right"
37624
+ },
37625
+ xPlacement: {
37626
+ type: String,
37627
+ default: "bottom"
37628
+ }
37629
+ };
37630
+ const SafeTopScrollbar$1 = vue.defineComponent({
37631
+ name: "SafeTopScrollbar",
37632
+ props: safeTopscrollbarProps,
37633
+ inheritAttrs: false,
37634
+ setup(props) {
37635
+ const { mergedClsPrefixRef, inlineThemeDisabled, mergedRtlRef } = useConfig(props);
37636
+ const rtlEnabledRef = useRtl(
37637
+ "SafeTopScrollbar",
37638
+ mergedRtlRef,
37639
+ mergedClsPrefixRef
37640
+ );
37641
+ const wrapperRef = vue.ref(null);
37642
+ const containerRef = vue.ref(null);
37643
+ const contentRef = vue.ref(null);
37644
+ const yRailRef = vue.ref(null);
37645
+ const xRailRef = vue.ref(null);
37646
+ const contentHeightRef = vue.ref(null);
37647
+ const contentWidthRef = vue.ref(null);
37648
+ const containerHeightRef = vue.ref(null);
37649
+ const containerWidthRef = vue.ref(null);
37650
+ const yRailSizeRef = vue.ref(null);
37651
+ const xRailSizeRef = vue.ref(null);
37652
+ const containerScrollTopRef = vue.ref(0);
37653
+ const containerScrollLeftRef = vue.ref(0);
37654
+ const isShowXBarRef = vue.ref(false);
37655
+ const isShowYBarRef = vue.ref(false);
37656
+ let yBarPressed = false;
37657
+ let xBarPressed = false;
37658
+ let xBarVanishTimerId;
37659
+ let yBarVanishTimerId;
37660
+ let memoYTop = 0;
37661
+ let memoXLeft = 0;
37662
+ let memoMouseX = 0;
37663
+ let memoMouseY = 0;
37664
+ let previousScrollHeight = 0;
37665
+ let previousScrollTop = 0;
37666
+ const isIos = useIsIos();
37667
+ const themeRef = useTheme(
37668
+ "SafeTopScrollbar",
37669
+ "-safe-top-scrollbar",
37670
+ style$1v,
37671
+ safeTopScrollbarLight,
37672
+ props,
37673
+ mergedClsPrefixRef
37674
+ );
37675
+ const yBarSizeRef = vue.computed(() => {
37676
+ const { value: containerHeight } = containerHeightRef;
37677
+ const { value: contentHeight } = contentHeightRef;
37678
+ const { value: yRailSize } = yRailSizeRef;
37679
+ if (containerHeight === null || contentHeight === null || yRailSize === null) {
37680
+ return 0;
37681
+ } else {
37682
+ return Math.min(
37683
+ containerHeight,
37684
+ yRailSize * containerHeight / contentHeight + depx(themeRef.value.self.width) * 1.5
37685
+ );
37686
+ }
37687
+ });
37688
+ const yBarSizePxRef = vue.computed(() => {
37689
+ return `${yBarSizeRef.value}px`;
37690
+ });
37691
+ const xBarSizeRef = vue.computed(() => {
37692
+ const { value: containerWidth } = containerWidthRef;
37693
+ const { value: contentWidth } = contentWidthRef;
37694
+ const { value: xRailSize } = xRailSizeRef;
37695
+ if (containerWidth === null || contentWidth === null || xRailSize === null) {
37696
+ return 0;
37697
+ } else {
37698
+ return xRailSize * containerWidth / contentWidth + depx(themeRef.value.self.height) * 1.5;
37699
+ }
37700
+ });
37701
+ const xBarSizePxRef = vue.computed(() => {
37702
+ return `${xBarSizeRef.value}px`;
37703
+ });
37704
+ const yBarTopRef = vue.computed(() => {
37705
+ const { value: containerHeight } = containerHeightRef;
37706
+ const { value: containerScrollTop } = containerScrollTopRef;
37707
+ const { value: contentHeight } = contentHeightRef;
37708
+ const { value: yRailSize } = yRailSizeRef;
37709
+ if (containerHeight === null || contentHeight === null || yRailSize === null) {
37710
+ return 0;
37711
+ } else {
37712
+ const heightDiff = contentHeight - containerHeight;
37713
+ if (!heightDiff) return 0;
37714
+ return containerScrollTop / heightDiff * (yRailSize - yBarSizeRef.value);
37715
+ }
37716
+ });
37717
+ const yBarTopPxRef = vue.computed(() => {
37718
+ return `${yBarTopRef.value}px`;
37719
+ });
37720
+ const xBarLeftRef = vue.computed(() => {
37721
+ const { value: containerWidth } = containerWidthRef;
37722
+ const { value: containerScrollLeft } = containerScrollLeftRef;
37723
+ const { value: contentWidth } = contentWidthRef;
37724
+ const { value: xRailSize } = xRailSizeRef;
37725
+ if (containerWidth === null || contentWidth === null || xRailSize === null) {
37726
+ return 0;
37727
+ } else {
37728
+ const widthDiff = contentWidth - containerWidth;
37729
+ if (!widthDiff) return 0;
37730
+ return containerScrollLeft / widthDiff * (xRailSize - xBarSizeRef.value);
37731
+ }
37732
+ });
37733
+ const xBarLeftPxRef = vue.computed(() => {
37734
+ return `${xBarLeftRef.value}px`;
37735
+ });
37736
+ const needYBarRef = vue.computed(() => {
37737
+ const { value: containerHeight } = containerHeightRef;
37738
+ const { value: contentHeight } = contentHeightRef;
37739
+ return containerHeight !== null && contentHeight !== null && contentHeight > containerHeight;
37740
+ });
37741
+ const needXBarRef = vue.computed(() => {
37742
+ const { value: containerWidth } = containerWidthRef;
37743
+ const { value: contentWidth } = contentWidthRef;
37744
+ return containerWidth !== null && contentWidth !== null && contentWidth > containerWidth;
37745
+ });
37746
+ const mergedShowXBarRef = vue.computed(() => {
37747
+ const { trigger } = props;
37748
+ return trigger === "none" || isShowXBarRef.value;
37749
+ });
37750
+ const mergedShowYBarRef = vue.computed(() => {
37751
+ const { trigger } = props;
37752
+ return trigger === "none" || isShowYBarRef.value;
37753
+ });
37754
+ const mergedContainerRef = vue.computed(() => {
37755
+ const { container } = props;
37756
+ if (container) return container();
37757
+ return containerRef.value;
37758
+ });
37759
+ const mergedContentRef = vue.computed(() => {
37760
+ const { content } = props;
37761
+ if (content) return content();
37762
+ return contentRef.value;
37763
+ });
37764
+ const scrollTo = (options, y) => {
37765
+ if (!props.scrollable) return;
37766
+ if (typeof options === "number") {
37767
+ scrollToPosition(options, y ?? 0, 0, false, "auto");
37768
+ return;
37769
+ }
37770
+ const {
37771
+ left,
37772
+ top,
37773
+ index,
37774
+ elSize,
37775
+ position,
37776
+ behavior,
37777
+ el,
37778
+ debounce = true
37779
+ } = options;
37780
+ if (left !== void 0 || top !== void 0) {
37781
+ scrollToPosition(left ?? 0, top ?? 0, 0, false, behavior);
37782
+ }
37783
+ if (el !== void 0) {
37784
+ scrollToPosition(0, el.offsetTop, el.offsetHeight, debounce, behavior);
37785
+ } else if (index !== void 0 && elSize !== void 0) {
37786
+ scrollToPosition(0, index * elSize, elSize, debounce, behavior);
37787
+ } else if (position === "bottom") {
37788
+ scrollToPosition(0, Number.MAX_SAFE_INTEGER, 0, false, behavior);
37789
+ } else if (position === "top") {
37790
+ scrollToPosition(0, 0, 0, false, behavior);
37791
+ }
37792
+ };
37793
+ const activateState = useReactivated(() => {
37794
+ if (!props.container) {
37795
+ scrollTo({
37796
+ top: containerScrollTopRef.value,
37797
+ left: containerScrollLeftRef.value
37798
+ });
37799
+ }
37800
+ });
37801
+ const handleContentResize = () => {
37802
+ if (activateState.isDeactivated) return;
37803
+ const { value: container } = mergedContainerRef;
37804
+ if (container && previousScrollHeight > 0) {
37805
+ const currentScrollHeight = container.scrollHeight;
37806
+ const currentScrollTop = container.scrollTop;
37807
+ const savedScrollHeight = previousScrollHeight;
37808
+ const savedScrollTop = previousScrollTop;
37809
+ const heightDiff = currentScrollHeight - savedScrollHeight;
37810
+ if (heightDiff > 0 && currentScrollTop === savedScrollTop) {
37811
+ container.scrollTop = savedScrollTop + heightDiff;
37812
+ }
37813
+ sync();
37814
+ } else {
37815
+ sync();
37816
+ }
37817
+ };
37818
+ const handleContainerResize = (e) => {
37819
+ if (activateState.isDeactivated) return;
37820
+ const { onResize } = props;
37821
+ if (onResize) {
37822
+ onResize(e);
37823
+ }
37824
+ sync();
37825
+ };
37826
+ const scrollBy = (options, y) => {
37827
+ if (!props.scrollable) return;
37828
+ const { value: container } = mergedContainerRef;
37829
+ if (!container) return;
37830
+ if (typeof options === "object") {
37831
+ container.scrollBy(options);
37832
+ } else {
37833
+ container.scrollBy(options, y || 0);
37834
+ }
37835
+ };
37836
+ function scrollToPosition(left, top, elSize, debounce, behavior) {
37837
+ const { value: container } = mergedContainerRef;
37838
+ if (!container) return;
37839
+ if (debounce) {
37840
+ const { scrollTop, offsetHeight } = container;
37841
+ if (top > scrollTop) {
37842
+ if (top + elSize <= scrollTop + offsetHeight) ; else {
37843
+ container.scrollTo({
37844
+ left,
37845
+ top: top + elSize - offsetHeight,
37846
+ behavior
37847
+ });
37848
+ }
37849
+ return;
37850
+ }
37851
+ }
37852
+ container.scrollTo({
37853
+ left,
37854
+ top,
37855
+ behavior
37856
+ });
37857
+ }
37858
+ function handleMouseEnterWrapper() {
37859
+ showXBar();
37860
+ showYBar();
37861
+ sync();
37862
+ }
37863
+ function handleMouseLeaveWrapper() {
37864
+ hideBar();
37865
+ }
37866
+ function hideBar() {
37867
+ hideYBar();
37868
+ hideXBar();
37869
+ }
37870
+ function hideYBar() {
37871
+ if (yBarVanishTimerId !== void 0) {
37872
+ window.clearTimeout(yBarVanishTimerId);
37873
+ }
37874
+ yBarVanishTimerId = window.setTimeout(() => {
37875
+ isShowYBarRef.value = false;
37876
+ }, props.duration);
37877
+ }
37878
+ function hideXBar() {
37879
+ if (xBarVanishTimerId !== void 0) {
37880
+ window.clearTimeout(xBarVanishTimerId);
37881
+ }
37882
+ xBarVanishTimerId = window.setTimeout(() => {
37883
+ isShowXBarRef.value = false;
37884
+ }, props.duration);
37885
+ }
37886
+ function showXBar() {
37887
+ if (xBarVanishTimerId !== void 0) {
37888
+ window.clearTimeout(xBarVanishTimerId);
37889
+ }
37890
+ isShowXBarRef.value = true;
37891
+ }
37892
+ function showYBar() {
37893
+ if (yBarVanishTimerId !== void 0) {
37894
+ window.clearTimeout(yBarVanishTimerId);
37895
+ }
37896
+ isShowYBarRef.value = true;
37897
+ }
37898
+ function handleScroll(e) {
37899
+ const { onScroll } = props;
37900
+ if (onScroll) onScroll(e);
37901
+ const { value: container } = mergedContainerRef;
37902
+ if (container) {
37903
+ previousScrollHeight = container.scrollHeight;
37904
+ previousScrollTop = container.scrollTop;
37905
+ }
37906
+ syncScrollState();
37907
+ }
37908
+ function syncScrollState() {
37909
+ const { value: container } = mergedContainerRef;
37910
+ if (container) {
37911
+ containerScrollTopRef.value = container.scrollTop;
37912
+ containerScrollLeftRef.value = container.scrollLeft * (rtlEnabledRef?.value ? -1 : 1);
37913
+ }
37914
+ }
37915
+ function syncPositionState() {
37916
+ const { value: content } = mergedContentRef;
37917
+ if (content) {
37918
+ contentHeightRef.value = content.offsetHeight;
37919
+ contentWidthRef.value = content.offsetWidth;
37920
+ }
37921
+ const { value: container } = mergedContainerRef;
37922
+ if (container) {
37923
+ containerHeightRef.value = container.offsetHeight;
37924
+ containerWidthRef.value = container.offsetWidth;
37925
+ }
37926
+ const { value: xRailEl } = xRailRef;
37927
+ const { value: yRailEl } = yRailRef;
37928
+ if (xRailEl) {
37929
+ xRailSizeRef.value = xRailEl.offsetWidth;
37930
+ }
37931
+ if (yRailEl) {
37932
+ yRailSizeRef.value = yRailEl.offsetHeight;
37933
+ }
37934
+ }
37935
+ function syncUnifiedContainer() {
37936
+ const { value: container } = mergedContainerRef;
37937
+ if (container) {
37938
+ containerScrollTopRef.value = container.scrollTop;
37939
+ containerScrollLeftRef.value = container.scrollLeft * (rtlEnabledRef?.value ? -1 : 1);
37940
+ containerHeightRef.value = container.offsetHeight;
37941
+ containerWidthRef.value = container.offsetWidth;
37942
+ contentHeightRef.value = container.scrollHeight;
37943
+ contentWidthRef.value = container.scrollWidth;
37944
+ }
37945
+ const { value: xRailEl } = xRailRef;
37946
+ const { value: yRailEl } = yRailRef;
37947
+ if (xRailEl) {
37948
+ xRailSizeRef.value = xRailEl.offsetWidth;
37949
+ }
37950
+ if (yRailEl) {
37951
+ yRailSizeRef.value = yRailEl.offsetHeight;
37952
+ }
37953
+ }
37954
+ function sync() {
37955
+ if (!props.scrollable) return;
37956
+ if (props.useUnifiedContainer) {
37957
+ syncUnifiedContainer();
37958
+ } else {
37959
+ syncPositionState();
37960
+ syncScrollState();
37961
+ }
37962
+ const { value: container } = mergedContainerRef;
37963
+ if (container) {
37964
+ previousScrollHeight = container.scrollHeight;
37965
+ previousScrollTop = container.scrollTop;
37966
+ }
37967
+ }
37968
+ function isMouseUpAway(e) {
37969
+ return !wrapperRef.value?.contains(
37970
+ getPreciseEventTarget(e)
37971
+ );
37972
+ }
37973
+ function handleXScrollMouseDown(e) {
37974
+ e.preventDefault();
37975
+ e.stopPropagation();
37976
+ xBarPressed = true;
37977
+ on("mousemove", window, handleXScrollMouseMove, true);
37978
+ on("mouseup", window, handleXScrollMouseUp, true);
37979
+ memoXLeft = containerScrollLeftRef.value;
37980
+ memoMouseX = rtlEnabledRef?.value ? window.innerWidth - e.clientX : e.clientX;
37981
+ }
37982
+ function handleXScrollMouseMove(e) {
37983
+ if (!xBarPressed) return;
37984
+ if (xBarVanishTimerId !== void 0) {
37985
+ window.clearTimeout(xBarVanishTimerId);
37986
+ }
37987
+ if (yBarVanishTimerId !== void 0) {
37988
+ window.clearTimeout(yBarVanishTimerId);
37989
+ }
37990
+ const { value: containerWidth } = containerWidthRef;
37991
+ const { value: contentWidth } = contentWidthRef;
37992
+ const { value: xBarSize } = xBarSizeRef;
37993
+ if (containerWidth === null || contentWidth === null) return;
37994
+ const dX = rtlEnabledRef?.value ? window.innerWidth - e.clientX - memoMouseX : e.clientX - memoMouseX;
37995
+ const dScrollLeft = dX * (contentWidth - containerWidth) / (containerWidth - xBarSize);
37996
+ const toScrollLeftUpperBound = contentWidth - containerWidth;
37997
+ let toScrollLeft = memoXLeft + dScrollLeft;
37998
+ toScrollLeft = Math.min(toScrollLeftUpperBound, toScrollLeft);
37999
+ toScrollLeft = Math.max(toScrollLeft, 0);
38000
+ const { value: container } = mergedContainerRef;
38001
+ if (container) {
38002
+ container.scrollLeft = toScrollLeft * (rtlEnabledRef?.value ? -1 : 1);
38003
+ const { internalOnUpdateScrollLeft } = props;
38004
+ if (internalOnUpdateScrollLeft) internalOnUpdateScrollLeft(toScrollLeft);
38005
+ }
38006
+ }
38007
+ function handleXScrollMouseUp(e) {
38008
+ e.preventDefault();
38009
+ e.stopPropagation();
38010
+ off("mousemove", window, handleXScrollMouseMove, true);
38011
+ off("mouseup", window, handleXScrollMouseUp, true);
38012
+ xBarPressed = false;
38013
+ sync();
38014
+ if (isMouseUpAway(e)) {
38015
+ hideBar();
38016
+ }
38017
+ }
38018
+ function handleYScrollMouseDown(e) {
38019
+ e.preventDefault();
38020
+ e.stopPropagation();
38021
+ yBarPressed = true;
38022
+ on("mousemove", window, handleYScrollMouseMove, true);
38023
+ on("mouseup", window, handleYScrollMouseUp, true);
38024
+ memoYTop = containerScrollTopRef.value;
38025
+ memoMouseY = e.clientY;
38026
+ }
38027
+ function handleYScrollMouseMove(e) {
38028
+ if (!yBarPressed) return;
38029
+ if (xBarVanishTimerId !== void 0) {
38030
+ window.clearTimeout(xBarVanishTimerId);
38031
+ }
38032
+ if (yBarVanishTimerId !== void 0) {
38033
+ window.clearTimeout(yBarVanishTimerId);
38034
+ }
38035
+ const { value: containerHeight } = containerHeightRef;
38036
+ const { value: contentHeight } = contentHeightRef;
38037
+ const { value: yBarSize } = yBarSizeRef;
38038
+ if (containerHeight === null || contentHeight === null) return;
38039
+ const dY = e.clientY - memoMouseY;
38040
+ const dScrollTop = dY * (contentHeight - containerHeight) / (containerHeight - yBarSize);
38041
+ const toScrollTopUpperBound = contentHeight - containerHeight;
38042
+ let toScrollTop = memoYTop + dScrollTop;
38043
+ toScrollTop = Math.min(toScrollTopUpperBound, toScrollTop);
38044
+ toScrollTop = Math.max(toScrollTop, 0);
38045
+ const { value: container } = mergedContainerRef;
38046
+ if (container) {
38047
+ container.scrollTop = toScrollTop;
38048
+ }
38049
+ }
38050
+ function handleYScrollMouseUp(e) {
38051
+ e.preventDefault();
38052
+ e.stopPropagation();
38053
+ off("mousemove", window, handleYScrollMouseMove, true);
38054
+ off("mouseup", window, handleYScrollMouseUp, true);
38055
+ yBarPressed = false;
38056
+ sync();
38057
+ if (isMouseUpAway(e)) {
38058
+ hideBar();
38059
+ }
38060
+ }
38061
+ vue.watchEffect(() => {
38062
+ const { value: needXBar } = needXBarRef;
38063
+ const { value: needYBar } = needYBarRef;
38064
+ const { value: mergedClsPrefix } = mergedClsPrefixRef;
38065
+ const { value: xRailEl } = xRailRef;
38066
+ const { value: yRailEl } = yRailRef;
38067
+ if (xRailEl) {
38068
+ if (!needXBar) {
38069
+ xRailEl.classList.add(`${mergedClsPrefix}-scrollbar-rail--disabled`);
38070
+ } else {
38071
+ xRailEl.classList.remove(
38072
+ `${mergedClsPrefix}-scrollbar-rail--disabled`
38073
+ );
38074
+ }
38075
+ }
38076
+ if (yRailEl) {
38077
+ if (!needYBar) {
38078
+ yRailEl.classList.add(`${mergedClsPrefix}-scrollbar-rail--disabled`);
38079
+ } else {
38080
+ yRailEl.classList.remove(
38081
+ `${mergedClsPrefix}-scrollbar-rail--disabled`
38082
+ );
38083
+ }
38084
+ }
38085
+ });
38086
+ vue.onMounted(() => {
38087
+ if (props.container) return;
38088
+ sync();
38089
+ const { value: container } = mergedContainerRef;
38090
+ if (container) {
38091
+ previousScrollHeight = container.scrollHeight;
38092
+ previousScrollTop = container.scrollTop;
38093
+ }
38094
+ });
38095
+ vue.onBeforeUnmount(() => {
38096
+ if (xBarVanishTimerId !== void 0) {
38097
+ window.clearTimeout(xBarVanishTimerId);
38098
+ }
38099
+ if (yBarVanishTimerId !== void 0) {
38100
+ window.clearTimeout(yBarVanishTimerId);
38101
+ }
38102
+ off("mousemove", window, handleYScrollMouseMove, true);
38103
+ off("mouseup", window, handleYScrollMouseUp, true);
38104
+ });
38105
+ const cssVarsRef = vue.computed(() => {
38106
+ const {
38107
+ common: { cubicBezierEaseInOut },
38108
+ self: {
38109
+ color,
38110
+ colorHover,
38111
+ height,
38112
+ width,
38113
+ borderRadius,
38114
+ railInsetHorizontalTop,
38115
+ railInsetHorizontalBottom,
38116
+ railInsetVerticalRight,
38117
+ railInsetVerticalLeft,
38118
+ railColor
38119
+ }
38120
+ } = themeRef.value;
38121
+ const {
38122
+ top: railTopHorizontalTop,
38123
+ right: railRightHorizontalTop,
38124
+ bottom: railBottomHorizontalTop,
38125
+ left: railLeftHorizontalTop
38126
+ } = getMargin(railInsetHorizontalTop);
38127
+ const {
38128
+ top: railTopHorizontalBottom,
38129
+ right: railRightHorizontalBottom,
38130
+ bottom: railBottomHorizontalBottom,
38131
+ left: railLeftHorizontalBottom
38132
+ } = getMargin(railInsetHorizontalBottom);
38133
+ const {
38134
+ top: railTopVerticalRight,
38135
+ right: railRightVerticalRight,
38136
+ bottom: railBottomVerticalRight,
38137
+ left: railLeftVerticalRight
38138
+ } = getMargin(
38139
+ rtlEnabledRef?.value ? rtlInset(railInsetVerticalRight) : railInsetVerticalRight
38140
+ );
38141
+ const {
38142
+ top: railTopVerticalLeft,
38143
+ right: railRightVerticalLeft,
38144
+ bottom: railBottomVerticalLeft,
38145
+ left: railLeftVerticalLeft
38146
+ } = getMargin(
38147
+ rtlEnabledRef?.value ? rtlInset(railInsetVerticalLeft) : railInsetVerticalLeft
38148
+ );
38149
+ return {
38150
+ "--u-scrollbar-bezier": cubicBezierEaseInOut,
38151
+ "--u-scrollbar-color": color,
38152
+ "--u-scrollbar-color-hover": colorHover,
38153
+ "--u-scrollbar-border-radius": borderRadius,
38154
+ "--u-scrollbar-width": width,
38155
+ "--u-scrollbar-height": height,
38156
+ "--u-scrollbar-rail-top-horizontal-top": railTopHorizontalTop,
38157
+ "--u-scrollbar-rail-right-horizontal-top": railRightHorizontalTop,
38158
+ "--u-scrollbar-rail-bottom-horizontal-top": railBottomHorizontalTop,
38159
+ "--u-scrollbar-rail-left-horizontal-top": railLeftHorizontalTop,
38160
+ "--u-scrollbar-rail-top-horizontal-bottom": railTopHorizontalBottom,
38161
+ "--u-scrollbar-rail-right-horizontal-bottom": railRightHorizontalBottom,
38162
+ "--u-scrollbar-rail-bottom-horizontal-bottom": railBottomHorizontalBottom,
38163
+ "--u-scrollbar-rail-left-horizontal-bottom": railLeftHorizontalBottom,
38164
+ "--u-scrollbar-rail-top-vertical-right": railTopVerticalRight,
38165
+ "--u-scrollbar-rail-right-vertical-right": railRightVerticalRight,
38166
+ "--u-scrollbar-rail-bottom-vertical-right": railBottomVerticalRight,
38167
+ "--u-scrollbar-rail-left-vertical-right": railLeftVerticalRight,
38168
+ "--u-scrollbar-rail-top-vertical-left": railTopVerticalLeft,
38169
+ "--u-scrollbar-rail-right-vertical-left": railRightVerticalLeft,
38170
+ "--u-scrollbar-rail-bottom-vertical-left": railBottomVerticalLeft,
38171
+ "--u-scrollbar-rail-left-vertical-left": railLeftVerticalLeft,
38172
+ "--u-scrollbar-rail-color": railColor
38173
+ };
38174
+ });
38175
+ const themeClassHandle = inlineThemeDisabled ? useThemeClass("scrollbar", void 0, cssVarsRef, props) : void 0;
38176
+ function getScrollState() {
38177
+ const { value: container } = mergedContainerRef;
38178
+ if (!container) {
38179
+ return { scrollHeight: 0, scrollTop: 0, clientHeight: 0 };
38180
+ }
38181
+ return {
38182
+ scrollHeight: container.scrollHeight,
38183
+ scrollTop: container.scrollTop,
38184
+ clientHeight: container.clientHeight
38185
+ };
38186
+ }
38187
+ function adjustScrollTop(heightDiff) {
38188
+ const { value: container } = mergedContainerRef;
38189
+ if (!container) return;
38190
+ container.scrollTop = container.scrollTop + heightDiff;
38191
+ }
38192
+ const exposedMethods = {
38193
+ scrollTo,
38194
+ scrollBy,
38195
+ sync,
38196
+ syncUnifiedContainer,
38197
+ handleMouseEnterWrapper,
38198
+ handleMouseLeaveWrapper,
38199
+ getScrollState,
38200
+ adjustScrollTop
38201
+ };
38202
+ return {
38203
+ ...exposedMethods,
38204
+ mergedClsPrefix: mergedClsPrefixRef,
38205
+ rtlEnabled: rtlEnabledRef,
38206
+ containerScrollTop: containerScrollTopRef,
38207
+ wrapperRef,
38208
+ containerRef,
38209
+ contentRef,
38210
+ yRailRef,
38211
+ xRailRef,
38212
+ needYBar: needYBarRef,
38213
+ needXBar: needXBarRef,
38214
+ yBarSizePx: yBarSizePxRef,
38215
+ xBarSizePx: xBarSizePxRef,
38216
+ yBarTopPx: yBarTopPxRef,
38217
+ xBarLeftPx: xBarLeftPxRef,
38218
+ isShowXBar: mergedShowXBarRef,
38219
+ isShowYBar: mergedShowYBarRef,
38220
+ isIos,
38221
+ handleScroll,
38222
+ handleContentResize,
38223
+ handleContainerResize,
38224
+ handleYScrollMouseDown,
38225
+ handleXScrollMouseDown,
38226
+ cssVars: inlineThemeDisabled ? void 0 : cssVarsRef,
38227
+ themeClass: themeClassHandle?.themeClass,
38228
+ onRender: themeClassHandle?.onRender
38229
+ };
38230
+ },
38231
+ render() {
38232
+ const {
38233
+ $slots,
38234
+ mergedClsPrefix,
38235
+ triggerDisplayManually,
38236
+ rtlEnabled,
38237
+ internalHoistYRail,
38238
+ yPlacement,
38239
+ xPlacement,
38240
+ xScrollable
38241
+ } = this;
38242
+ if (!this.scrollable) return $slots.default?.();
38243
+ const triggerIsNone = this.trigger === "none";
38244
+ const createYRail = (className, style2) => {
38245
+ return /* @__PURE__ */ vue.h(
38246
+ "div",
38247
+ {
38248
+ ref: "yRailRef",
38249
+ class: [
38250
+ `${mergedClsPrefix}-scrollbar-rail`,
38251
+ `${mergedClsPrefix}-scrollbar-rail--vertical`,
38252
+ `${mergedClsPrefix}-scrollbar-rail--vertical--${yPlacement}`,
38253
+ className
38254
+ ],
38255
+ "data-scrollbar-rail": true,
38256
+ style: [style2 || "", this.verticalRailStyle],
38257
+ "aria-hidden": true
38258
+ },
38259
+ vue.h(
38260
+ triggerIsNone ? Wrapper : vue.Transition,
38261
+ triggerIsNone ? null : { name: "fade-in-transition" },
38262
+ {
38263
+ default: () => this.needYBar && this.isShowYBar && !this.isIos ? /* @__PURE__ */ vue.h(
38264
+ "div",
38265
+ {
38266
+ class: `${mergedClsPrefix}-scrollbar-rail__scrollbar`,
38267
+ style: {
38268
+ height: this.yBarSizePx,
38269
+ top: this.yBarTopPx
38270
+ },
38271
+ onMousedown: this.handleYScrollMouseDown
38272
+ }
38273
+ ) : null
38274
+ }
38275
+ )
38276
+ );
38277
+ };
38278
+ const createChildren = () => {
38279
+ this.onRender?.();
38280
+ return vue.h(
38281
+ "div",
38282
+ vue.mergeProps(this.$attrs, {
38283
+ role: "none",
38284
+ ref: "wrapperRef",
38285
+ class: [
38286
+ `${mergedClsPrefix}-safe-top-scrollbar`,
38287
+ this.themeClass,
38288
+ rtlEnabled && `${mergedClsPrefix}-scrollbar--rtl`
38289
+ ],
38290
+ style: this.cssVars,
38291
+ onMouseenter: triggerDisplayManually ? void 0 : this.handleMouseEnterWrapper,
38292
+ onMouseleave: triggerDisplayManually ? void 0 : this.handleMouseLeaveWrapper
38293
+ }),
38294
+ [
38295
+ this.container ? $slots.default?.() : /* @__PURE__ */ vue.h(
38296
+ "div",
38297
+ {
38298
+ role: "none",
38299
+ ref: "containerRef",
38300
+ class: [
38301
+ `${mergedClsPrefix}-scrollbar-container`,
38302
+ this.containerClass
38303
+ ],
38304
+ style: this.containerStyle,
38305
+ onScroll: this.handleScroll,
38306
+ onWheel: this.onWheel
38307
+ },
38308
+ /* @__PURE__ */ vue.h(VResizeObserver, { onResize: this.handleContentResize }, {
38309
+ default: () => /* @__PURE__ */ vue.h(
38310
+ "div",
38311
+ {
38312
+ ref: "contentRef",
38313
+ role: "none",
38314
+ style: [
38315
+ {
38316
+ width: this.xScrollable ? "fit-content" : null
38317
+ },
38318
+ this.contentStyle
38319
+ ],
38320
+ class: [
38321
+ `${mergedClsPrefix}-scrollbar-content`,
38322
+ this.contentClass
38323
+ ]
38324
+ },
38325
+ $slots
38326
+ )
38327
+ })
38328
+ ),
38329
+ internalHoistYRail ? null : createYRail(void 0, void 0),
38330
+ xScrollable && /* @__PURE__ */ vue.h(
38331
+ "div",
38332
+ {
38333
+ ref: "xRailRef",
38334
+ class: [
38335
+ `${mergedClsPrefix}-scrollbar-rail`,
38336
+ `${mergedClsPrefix}-scrollbar-rail--horizontal`,
38337
+ `${mergedClsPrefix}-scrollbar-rail--horizontal--${xPlacement}`
38338
+ ],
38339
+ style: this.horizontalRailStyle,
38340
+ "data-scrollbar-rail": true,
38341
+ "aria-hidden": true
38342
+ },
38343
+ vue.h(
38344
+ triggerIsNone ? Wrapper : vue.Transition,
38345
+ triggerIsNone ? null : { name: "fade-in-transition" },
38346
+ {
38347
+ default: () => this.needXBar && this.isShowXBar && !this.isIos ? /* @__PURE__ */ vue.h(
38348
+ "div",
38349
+ {
38350
+ class: `${mergedClsPrefix}-scrollbar-rail__scrollbar`,
38351
+ style: {
38352
+ width: this.xBarSizePx,
38353
+ right: rtlEnabled ? this.xBarLeftPx : void 0,
38354
+ left: rtlEnabled ? void 0 : this.xBarLeftPx
38355
+ },
38356
+ onMousedown: this.handleXScrollMouseDown
38357
+ }
38358
+ ) : null
38359
+ }
38360
+ )
38361
+ )
38362
+ ]
38363
+ );
38364
+ };
38365
+ const scrollbarNode = this.container ? createChildren() : /* @__PURE__ */ vue.h(VResizeObserver, { onResize: this.handleContainerResize }, {
38366
+ default: createChildren
38367
+ });
38368
+ if (internalHoistYRail) {
38369
+ return /* @__PURE__ */ vue.h(vue.Fragment, null, scrollbarNode, createYRail(this.themeClass, this.cssVars));
38370
+ } else {
38371
+ return scrollbarNode;
38372
+ }
38373
+ }
38374
+ });
38375
+
37474
38376
  const checkboxGroupInjectionKey = createInjectionKey("u-checkbox-group");
37475
38377
  const checkboxBaseProps = {
37476
38378
  size: String,
@@ -60909,13 +61811,25 @@
60909
61811
  const handleChatSelect = (chatId) => {
60910
61812
  props.onChatSelect?.(chatId);
60911
61813
  };
61814
+ const toKeyString = (value) => {
61815
+ if (typeof value === "symbol") return value.toString();
61816
+ if (typeof value === "function") {
61817
+ const result = value();
61818
+ return typeof result === "string" || typeof result === "number" ? String(result) : "";
61819
+ }
61820
+ return value != null ? String(value) : "";
61821
+ };
60912
61822
  const renderChatItem = (item) => {
60913
61823
  const isSelected = props.selectedChatId === item.id;
60914
61824
  const isTyping = props.typingChatIds?.includes(item.id) ?? false;
61825
+ const { id, title, subtitle } = item;
61826
+ const keyId = toKeyString(id);
61827
+ const keyTitle = toKeyString(title);
61828
+ const keySubtitle = toKeyString(subtitle);
60915
61829
  return /* @__PURE__ */ vue.h(
60916
61830
  UListItem,
60917
61831
  {
60918
- key: item.id,
61832
+ key: `${keyId}-${keyTitle}-${keySubtitle}`,
60919
61833
  showIcon: false,
60920
61834
  onClick: () => {
60921
61835
  handleChatSelect(item.id);
@@ -61243,6 +62157,46 @@
61243
62157
  }
61244
62158
  });
61245
62159
 
62160
+ const safeTopScrollbarProps = {
62161
+ ...useTheme.props,
62162
+ trigger: String,
62163
+ xScrollable: Boolean,
62164
+ onScroll: Function,
62165
+ size: Number
62166
+ };
62167
+ const SafeTopScrollbar = vue.defineComponent({
62168
+ name: "SafeTopScrollbar",
62169
+ props: safeTopScrollbarProps,
62170
+ setup() {
62171
+ const scrollbarInstRef = vue.ref(null);
62172
+ const exposedMethods = {
62173
+ scrollTo: (...args) => {
62174
+ scrollbarInstRef.value?.scrollTo(args[0], args[1]);
62175
+ },
62176
+ scrollBy: (...args) => {
62177
+ scrollbarInstRef.value?.scrollBy(args[0], args[1]);
62178
+ },
62179
+ getScrollState: () => {
62180
+ return scrollbarInstRef.value?.getScrollState() || {
62181
+ scrollHeight: 0,
62182
+ scrollTop: 0,
62183
+ clientHeight: 0
62184
+ };
62185
+ },
62186
+ adjustScrollTop: (heightDiff) => {
62187
+ scrollbarInstRef.value?.adjustScrollTop(heightDiff);
62188
+ }
62189
+ };
62190
+ return {
62191
+ ...exposedMethods,
62192
+ scrollbarInstRef
62193
+ };
62194
+ },
62195
+ render() {
62196
+ return /* @__PURE__ */ vue.h(SafeTopScrollbar$1, { ref: "scrollbarInstRef", ...this.$props }, this.$slots);
62197
+ }
62198
+ });
62199
+
61246
62200
  const uploadInjectionKey = createInjectionKey("u-upload");
61247
62201
 
61248
62202
  const isImageFileType = type => type.includes("image/");
@@ -64998,12 +65952,31 @@
64998
65952
  }
64999
65953
  },
65000
65954
  setup(props, { slots }) {
65955
+ const UChat = vue.inject(chatInjectionKey, null);
65956
+ const onAttachmentDownload = UChat?.onAttachmentDownload;
65001
65957
  const getThumbnailUrl = (attachment) => {
65002
65958
  const url = [attachment.preview, attachment.thumbnail].find(
65003
65959
  (value) => typeof value === "string"
65004
65960
  );
65005
65961
  return url ?? null;
65006
65962
  };
65963
+ const handleDownload = async (file) => {
65964
+ if (onAttachmentDownload?.value) {
65965
+ const attachment = props.attachments.find(
65966
+ (att) => att.name === file.name
65967
+ );
65968
+ if (attachment) {
65969
+ try {
65970
+ await onAttachmentDownload.value(attachment);
65971
+ return false;
65972
+ } catch (error) {
65973
+ console.error("Download failed:", error);
65974
+ return false;
65975
+ }
65976
+ }
65977
+ }
65978
+ return true;
65979
+ };
65007
65980
  const renderAttachment = () => {
65008
65981
  const fileList = props.attachments.map(
65009
65982
  (attachment, index) => ({
@@ -65022,6 +65995,7 @@
65022
65995
  UUpload,
65023
65996
  {
65024
65997
  abstract: true,
65998
+ ...props.uploadProps,
65025
65999
  fileList,
65026
66000
  fileListStyle: props.withPadding ? {
65027
66001
  display: "flex",
@@ -65036,7 +66010,7 @@
65036
66010
  showRetryButton: props.attachments.some(
65037
66011
  (attachment) => attachment.status === "error"
65038
66012
  ),
65039
- ...props.uploadProps
66013
+ onDownload: handleDownload
65040
66014
  },
65041
66015
  {
65042
66016
  default: () => /* @__PURE__ */ vue.h(UUploadFileList, null, {
@@ -65615,6 +66589,7 @@
65615
66589
  handleMessageSend,
65616
66590
  handleMessageRetry,
65617
66591
  handleFooterInputChange,
66592
+ onAttachmentUpload,
65618
66593
  onChatClose,
65619
66594
  onChatShare,
65620
66595
  onUserProfile,
@@ -65626,6 +66601,7 @@
65626
66601
  const inputRef = vue.ref();
65627
66602
  const inputValue = vue.ref("");
65628
66603
  const attachmentFileList = vue.ref([]);
66604
+ const uploadedAttachmentsMap = vue.ref(/* @__PURE__ */ new Map());
65629
66605
  const lastScrollTop = vue.ref(0);
65630
66606
  const scrollTopFired = vue.ref(false);
65631
66607
  const scrollBottomFired = vue.ref(false);
@@ -65653,6 +66629,8 @@
65653
66629
  scrollTopFired.value = false;
65654
66630
  scrollBottomFired.value = false;
65655
66631
  shouldScrollOnLoad.value = true;
66632
+ attachmentFileList.value = [];
66633
+ uploadedAttachmentsMap.value.clear();
65656
66634
  if (unreadBeforeRead > 0 && !notificationsShownSetRef.value.has(newChat.id)) {
65657
66635
  hasUnreadMessages.value = true;
65658
66636
  showNotificationManually.value = true;
@@ -65747,50 +66725,62 @@
65747
66725
  el.scrollTop = el.scrollHeight;
65748
66726
  }
65749
66727
  };
66728
+ const toKeyString = (value) => {
66729
+ if (typeof value === "symbol") return value.toString();
66730
+ if (typeof value === "function") {
66731
+ const result = value();
66732
+ return typeof result === "string" || typeof result === "number" ? String(result) : "";
66733
+ }
66734
+ return value != null ? String(value) : "";
66735
+ };
65750
66736
  const renderHeader = () => {
65751
66737
  return /* @__PURE__ */ vue.h("div", { class: `${mergedClsPrefixRef.value}-chat-main__header` }, /* @__PURE__ */ vue.h(UFlex, { justify: "space-between", align: "flex-start", wrap: false }, {
65752
- default: () => /* @__PURE__ */ vue.h(vue.Fragment, null, /* @__PURE__ */ vue.h(
65753
- UText,
65754
- {
65755
- variant: "heading-s-bold",
65756
- class: `${mergedClsPrefixRef.value}-chat-main__header-title`,
65757
- theme: mergedThemeRef.value.peers.Typography,
65758
- themeOverrides: mergedThemeRef.value.peerOverrides.Typography
65759
- },
65760
- {
65761
- default: () => selectedChatRef.value?.title ?? ""
65762
- }
65763
- ), /* @__PURE__ */ vue.h(
65764
- UFlex,
65765
- {
65766
- align: "center",
65767
- size: "small",
65768
- class: `${mergedClsPrefixRef.value}-chat-main__header-actions`
65769
- },
65770
- {
65771
- default: () => resolveSlot(slots.headerActions, () => {
65772
- const shareButtonProps = {
65773
- ...headerButtonPropsRef.value,
65774
- ...headerShareButtonPropsRef.value
65775
- };
65776
- const profileButtonProps = {
65777
- ...headerButtonPropsRef.value,
65778
- ...headerProfileButtonPropsRef.value
65779
- };
65780
- const closeButtonProps = {
65781
- ...headerButtonPropsRef.value,
65782
- ...headerCloseButtonPropsRef.value
65783
- };
65784
- const shareIconProps = {
65785
- ...headerIconPropsRef.value,
65786
- ...headerShareIconPropsRef.value
65787
- };
65788
- const profileIconProps = {
65789
- ...headerIconPropsRef.value,
65790
- ...headerProfileIconPropsRef.value
65791
- };
65792
- const buttons = [];
65793
- if (shareButtonProps.disabled !== true) {
66738
+ default: () => {
66739
+ const chat = selectedChatRef.value;
66740
+ const keyId = toKeyString(chat?.id);
66741
+ const keyTitle = toKeyString(chat?.title);
66742
+ return /* @__PURE__ */ vue.h(vue.Fragment, null, /* @__PURE__ */ vue.h(
66743
+ UText,
66744
+ {
66745
+ key: `${keyId}-${keyTitle}`,
66746
+ variant: "heading-s-bold",
66747
+ class: `${mergedClsPrefixRef.value}-chat-main__header-title`,
66748
+ theme: mergedThemeRef.value.peers.Typography,
66749
+ themeOverrides: mergedThemeRef.value.peerOverrides.Typography
66750
+ },
66751
+ {
66752
+ default: () => selectedChatRef.value?.title ?? ""
66753
+ }
66754
+ ), /* @__PURE__ */ vue.h(
66755
+ UFlex,
66756
+ {
66757
+ align: "center",
66758
+ size: "small",
66759
+ class: `${mergedClsPrefixRef.value}-chat-main__header-actions`
66760
+ },
66761
+ {
66762
+ default: () => resolveSlot(slots.headerActions, () => {
66763
+ const shareButtonProps = {
66764
+ ...headerButtonPropsRef.value,
66765
+ ...headerShareButtonPropsRef.value
66766
+ };
66767
+ const profileButtonProps = {
66768
+ ...headerButtonPropsRef.value,
66769
+ ...headerProfileButtonPropsRef.value
66770
+ };
66771
+ const closeButtonProps = {
66772
+ ...headerButtonPropsRef.value,
66773
+ ...headerCloseButtonPropsRef.value
66774
+ };
66775
+ const shareIconProps = {
66776
+ ...headerIconPropsRef.value,
66777
+ ...headerShareIconPropsRef.value
66778
+ };
66779
+ const profileIconProps = {
66780
+ ...headerIconPropsRef.value,
66781
+ ...headerProfileIconPropsRef.value
66782
+ };
66783
+ const buttons = [];
65794
66784
  buttons.push(
65795
66785
  /* @__PURE__ */ vue.h(UTooltip, null, {
65796
66786
  trigger: () => /* @__PURE__ */ vue.h(
@@ -65822,8 +66812,6 @@
65822
66812
  default: () => shareButtonTooltipRef.value
65823
66813
  })
65824
66814
  );
65825
- }
65826
- if (profileButtonProps.disabled !== true) {
65827
66815
  buttons.push(
65828
66816
  /* @__PURE__ */ vue.h(UTooltip, null, {
65829
66817
  trigger: () => /* @__PURE__ */ vue.h(
@@ -65855,8 +66843,6 @@
65855
66843
  default: () => profileButtonTooltipRef.value
65856
66844
  })
65857
66845
  );
65858
- }
65859
- if (closeButtonProps.disabled !== true) {
65860
66846
  buttons.push(
65861
66847
  /* @__PURE__ */ vue.h(
65862
66848
  Button,
@@ -65874,11 +66860,11 @@
65874
66860
  }
65875
66861
  )
65876
66862
  );
65877
- }
65878
- return buttons;
65879
- })
65880
- }
65881
- ))
66863
+ return buttons;
66864
+ })
66865
+ }
66866
+ ));
66867
+ }
65882
66868
  }));
65883
66869
  };
65884
66870
  const renderMessages = () => {
@@ -65916,20 +66902,29 @@
65916
66902
  if ((hasContent || hasAttachments) && selectedChatRef.value && handleMessageSend) {
65917
66903
  isSending.value = true;
65918
66904
  try {
65919
- const attachments = attachmentFileList.value.length > 0 ? attachmentFileList.value.map((file) => ({
65920
- id: file.id,
65921
- type: ChatMessageType.FILE,
65922
- name: file.name,
65923
- url: file.url || (file.file ? URL.createObjectURL(file.file) : "#"),
65924
- size: file.file?.size,
65925
- thumbnail: file.thumbnailUrl ?? void 0,
65926
- status: file.status,
65927
- percentage: file.percentage ?? void 0
65928
- })) : void 0;
66905
+ const attachments = attachmentFileList.value.length > 0 ? attachmentFileList.value.map((file) => {
66906
+ const uploadedAttachment = uploadedAttachmentsMap.value.get(
66907
+ file.id
66908
+ );
66909
+ if (uploadedAttachment) {
66910
+ return uploadedAttachment;
66911
+ }
66912
+ return {
66913
+ id: file.id,
66914
+ type: ChatMessageType.FILE,
66915
+ name: file.name,
66916
+ url: file.url || (file.file ? URL.createObjectURL(file.file) : "#"),
66917
+ size: file.file?.size,
66918
+ thumbnail: file.thumbnailUrl ?? void 0,
66919
+ status: file.status,
66920
+ percentage: file.percentage ?? void 0
66921
+ };
66922
+ }) : void 0;
65929
66923
  handleMessageSend(inputValue.value.trim(), attachments);
65930
66924
  inputValue.value = "";
65931
66925
  attachmentFileList.value = [];
65932
66926
  chatInputs.value[selectedChatRef.value.id] = "";
66927
+ uploadedAttachmentsMap.value.clear();
65933
66928
  hasUnreadMessages.value = false;
65934
66929
  showNotificationManually.value = false;
65935
66930
  } finally {
@@ -65939,44 +66934,25 @@
65939
66934
  }
65940
66935
  }
65941
66936
  };
65942
- let fileUploadTimer = null;
65943
- const pendingFiles = vue.ref([]);
65944
66937
  const handleFileListUpdate = (fileList) => {
65945
- const newFiles = fileList.filter(
65946
- (file) => !attachmentFileList.value.some(
65947
- (existing) => existing.id === file.id
65948
- ) && !pendingFiles.value.some(
65949
- (existing) => existing.id === file.id
65950
- )
65951
- );
65952
- if (newFiles.length > 0) {
65953
- pendingFiles.value = [...pendingFiles.value, ...newFiles];
65954
- if (fileUploadTimer) {
65955
- clearTimeout(fileUploadTimer);
65956
- }
65957
- fileUploadTimer = setTimeout(() => {
65958
- if (pendingFiles.value.length > 0 && handleMessageSend) {
65959
- const hasError = pendingFiles.value.some(
65960
- (file) => file.status === "error"
65961
- );
65962
- const batchStatus = hasError ? "error" : "finished";
65963
- const attachments = pendingFiles.value.map(
65964
- (file) => ({
65965
- id: file.id,
65966
- type: ChatMessageType.FILE,
65967
- name: file.name,
65968
- url: file.url || (file.file ? URL.createObjectURL(file.file) : "#"),
65969
- size: file.file?.size,
65970
- thumbnail: file.thumbnailUrl ?? void 0,
65971
- status: batchStatus,
65972
- percentage: file.percentage ?? void 0
65973
- })
65974
- );
65975
- handleMessageSend("", attachments);
65976
- pendingFiles.value = [];
65977
- attachmentFileList.value = [];
66938
+ attachmentFileList.value = fileList;
66939
+ const uploadCallback = onAttachmentUpload?.value;
66940
+ if (uploadCallback) {
66941
+ const newFiles = fileList.filter(
66942
+ (file) => file.file && !uploadedAttachmentsMap.value.has(file.id)
66943
+ );
66944
+ void (async () => {
66945
+ for (const uploadFile of newFiles) {
66946
+ if (uploadFile.file) {
66947
+ try {
66948
+ const attachment = await uploadCallback(uploadFile.file);
66949
+ uploadedAttachmentsMap.value.set(uploadFile.id, attachment);
66950
+ } catch (error) {
66951
+ console.error("File upload failed:", error);
66952
+ }
66953
+ }
65978
66954
  }
65979
- }, SENDING_DELAY);
66955
+ })();
65980
66956
  }
65981
66957
  };
65982
66958
  const renderFooter = () => {
@@ -66009,6 +66985,7 @@
66009
66985
  size: "large",
66010
66986
  class: `${mergedClsPrefixRef.value}-chat-main__attach-btn`,
66011
66987
  ...footerButtonPropsRef.value,
66988
+ disabled: footerInputPropsRef.value?.disabled,
66012
66989
  theme: mergedThemeRef.value.peers.Button,
66013
66990
  themeOverrides: mergedThemeRef.value.peerOverrides.Button,
66014
66991
  onClick: handleClick
@@ -66073,7 +67050,7 @@
66073
67050
  render() {
66074
67051
  const { mergedClsPrefixRef } = vue.inject(chatInjectionKey);
66075
67052
  return /* @__PURE__ */ vue.h("div", { class: `${mergedClsPrefixRef.value}-chat-main` }, this.renderHeader(), /* @__PURE__ */ vue.h(
66076
- Scrollbar,
67053
+ SafeTopScrollbar,
66077
67054
  {
66078
67055
  ref: "messagesBodyRef",
66079
67056
  class: `${mergedClsPrefixRef.value}-chat-main__body`,
@@ -66276,6 +67253,10 @@
66276
67253
  type: Function,
66277
67254
  default: void 0
66278
67255
  },
67256
+ onAttachmentDownload: {
67257
+ type: Function,
67258
+ default: void 0
67259
+ },
66279
67260
  onFilterChange: {
66280
67261
  type: Function,
66281
67262
  default: void 0
@@ -66591,6 +67572,8 @@
66591
67572
  handleNetworkError,
66592
67573
  handleUploadError,
66593
67574
  handleSendError,
67575
+ onAttachmentUpload: vue.toRef(props, "onAttachmentUpload"),
67576
+ onAttachmentDownload: vue.toRef(props, "onAttachmentDownload"),
66594
67577
  onChatClose: vue.toRef(props, "onChatClose"),
66595
67578
  onChatShare: vue.toRef(props, "onChatShare"),
66596
67579
  onUserProfile: vue.toRef(props, "onUserProfile"),
@@ -108489,6 +109472,10 @@
108489
109472
  type: [Boolean, String],
108490
109473
  required: true
108491
109474
  },
109475
+ maxWidth: Number,
109476
+ maxHeight: Number,
109477
+ minWidth: Number,
109478
+ minHeight: Number,
108492
109479
  resizable: Boolean,
108493
109480
  onClickoutside: Function,
108494
109481
  onAfterLeave: Function,
@@ -108514,9 +109501,9 @@
108514
109501
  startPosition = isVertical.value ? e.clientY : e.clientX;
108515
109502
  memoizedBodyStyleCursor = document.body.style.cursor;
108516
109503
  document.body.style.cursor = isVertical.value ? "ns-resize" : "ew-resize";
108517
- window.addEventListener("mousemove", handleBodyMousemove);
108518
- window.addEventListener("mouseleave", handleBodyMouseleave);
108519
- window.addEventListener("mouseup", handleBodyMouseup);
109504
+ document.body.addEventListener("mousemove", handleBodyMousemove);
109505
+ document.body.addEventListener("mouseleave", handleBodyMouseleave);
109506
+ document.body.addEventListener("mouseup", handleBodyMouseup);
108520
109507
  };
108521
109508
  const handleMouseenterResizeTrigger = () => {
108522
109509
  if (hoverTimerId !== null) {
@@ -108539,31 +109526,55 @@
108539
109526
  isHoverOnResizeTriggerRef.value = false;
108540
109527
  };
108541
109528
  const { doUpdateHeight, doUpdateWidth } = UDrawer;
108542
- const handleBodyMousemove = (e) => {
109529
+ const regulateWidth = (size) => {
109530
+ const { maxWidth } = props;
109531
+ if (maxWidth && size > maxWidth) {
109532
+ return maxWidth;
109533
+ }
109534
+ const { minWidth } = props;
109535
+ if (minWidth && size < minWidth) {
109536
+ return minWidth;
109537
+ }
109538
+ return size;
109539
+ };
109540
+ const regulateHeight = (size) => {
109541
+ const { maxHeight } = props;
109542
+ if (maxHeight && size > maxHeight) {
109543
+ return maxHeight;
109544
+ }
109545
+ const { minHeight } = props;
109546
+ if (minHeight && size < minHeight) {
109547
+ return minHeight;
109548
+ }
109549
+ return size;
109550
+ };
109551
+ function handleBodyMousemove(e) {
108543
109552
  if (isDraggingRef.value) {
108544
109553
  if (isVertical.value) {
108545
109554
  let height = bodyRef.value?.offsetHeight || 0;
108546
109555
  const increment = startPosition - e.clientY;
108547
109556
  height += props.placement === "bottom" ? increment : -increment;
109557
+ height = regulateHeight(height);
108548
109558
  doUpdateHeight(height);
108549
109559
  startPosition = e.clientY;
108550
109560
  } else {
108551
109561
  let width = bodyRef.value?.offsetWidth || 0;
108552
109562
  const increment = startPosition - e.clientX;
108553
109563
  width += props.placement === "right" ? increment : -increment;
109564
+ width = regulateWidth(width);
108554
109565
  doUpdateWidth(width);
108555
109566
  startPosition = e.clientX;
108556
109567
  }
108557
109568
  }
108558
- };
109569
+ }
108559
109570
  const handleBodyMouseup = () => {
108560
109571
  if (isDraggingRef.value) {
108561
109572
  startPosition = 0;
108562
109573
  isDraggingRef.value = false;
108563
109574
  document.body.style.cursor = memoizedBodyStyleCursor;
108564
- window.removeEventListener("mousemove", handleBodyMousemove);
108565
- window.removeEventListener("mouseup", handleBodyMouseup);
108566
- window.removeEventListener("mouseleave", handleBodyMouseleave);
109575
+ document.body.removeEventListener("mousemove", handleBodyMousemove);
109576
+ document.body.removeEventListener("mouseup", handleBodyMouseup);
109577
+ document.body.removeEventListener("mouseleave", handleBodyMouseleave);
108567
109578
  }
108568
109579
  };
108569
109580
  const handleBodyMouseleave = handleBodyMouseup;
@@ -109055,6 +110066,12 @@
109055
110066
  minHeight: Number,
109056
110067
  resizable: Boolean,
109057
110068
  fullscreen: Boolean,
110069
+ defaultWidth: {
110070
+ type: [Number, String]
110071
+ },
110072
+ defaultHeight: {
110073
+ type: [Number, String]
110074
+ },
109058
110075
  onUpdateWidth: [Function, Array],
109059
110076
  onUpdateHeight: [Function, Array],
109060
110077
  "onUpdate:width": [Function, Array],
@@ -109120,8 +110137,8 @@
109120
110137
  props,
109121
110138
  mergedClsPrefixRef
109122
110139
  );
109123
- const uncontrolledWidthRef = vue.ref(sizesWidth[props.size]);
109124
- const uncontrolledHeightRef = vue.ref(sizesHeight[props.size]);
110140
+ const uncontrolledWidthRef = vue.ref(props.defaultWidth || sizesWidth[props.size]);
110141
+ const uncontrolledHeightRef = vue.ref(props.defaultHeight || sizesHeight[props.size]);
109125
110142
  const mergedWidthRef = useMergedState(
109126
110143
  vue.toRef(props, "width"),
109127
110144
  uncontrolledWidthRef
@@ -109142,32 +110159,29 @@
109142
110159
  if (placement === "left" || placement === "right") return "";
109143
110160
  return formatLength(mergedHeightRef.value);
109144
110161
  });
109145
- const doUpdate = (isHeight, value) => {
109146
- let {
109147
- onUpdateWidth: onUpdate,
109148
- "onUpdate:width": _onUpdate,
109149
- maxWidth: max,
109150
- minWidth: min
109151
- } = props;
109152
- let _ref = uncontrolledWidthRef;
109153
- if (isHeight) {
109154
- onUpdate = props.onUpdateHeight;
109155
- _onUpdate = props["onUpdate:height"];
109156
- max = props.maxHeight;
109157
- min = props.minHeight;
109158
- _ref = uncontrolledHeightRef;
109159
- }
109160
- if (max && value > max) value = max;
109161
- if (min && value < min) value = min;
109162
- if (onUpdate) call(onUpdate, value);
109163
- if (_onUpdate) call(_onUpdate, value);
109164
- _ref.value = value;
109165
- };
109166
- const doUpdateWidth = doUpdate.bind(null, false);
109167
- const doUpdateHeight = doUpdate.bind(null, true);
110162
+ const doUpdateWidth = (value) => {
110163
+ const { onUpdateWidth, "onUpdate:width": _onUpdateWidth } = props;
110164
+ if (onUpdateWidth) {
110165
+ call(onUpdateWidth, value);
110166
+ }
110167
+ if (_onUpdateWidth) {
110168
+ call(_onUpdateWidth, value);
110169
+ }
110170
+ uncontrolledWidthRef.value = value;
110171
+ };
110172
+ const doUpdateHeight = (value) => {
110173
+ const { onUpdateHeight, "onUpdate:width": _onUpdateHeight } = props;
110174
+ if (onUpdateHeight) {
110175
+ call(onUpdateHeight, value);
110176
+ }
110177
+ if (_onUpdateHeight) {
110178
+ call(_onUpdateHeight, value);
110179
+ }
110180
+ uncontrolledHeightRef.value = value;
110181
+ };
109168
110182
  vue.watchEffect(() => {
109169
- doUpdateWidth(sizesWidth[props.size]);
109170
- doUpdateHeight(sizesHeight[props.size]);
110183
+ doUpdateWidth(Number(props.defaultWidth || sizesWidth[props.size]));
110184
+ doUpdateHeight(Number(props.defaultHeight || sizesHeight[props.size]));
109171
110185
  });
109172
110186
  const mergedBodyStyleRef = vue.computed(() => {
109173
110187
  return [
@@ -109353,6 +110367,10 @@
109353
110367
  trapFocus: this.trapFocus,
109354
110368
  autoFocus: this.autoFocus,
109355
110369
  resizable: this.resizable,
110370
+ maxHeight: this.maxHeight,
110371
+ minHeight: this.minHeight,
110372
+ maxWidth: this.maxWidth,
110373
+ minWidth: this.minWidth,
109356
110374
  showMask: this.showMask,
109357
110375
  onEsc: this.handleEsc,
109358
110376
  onClickoutside: this.handleMaskClick
@@ -113250,7 +114268,12 @@
113250
114268
  type: Number,
113251
114269
  default: 0
113252
114270
  },
114271
+ topDistance: {
114272
+ type: Number,
114273
+ default: 0
114274
+ },
113253
114275
  onLoad: Function,
114276
+ onLoadTop: Function,
113254
114277
  scrollbarProps: Object
113255
114278
  };
113256
114279
  var InfiniteScroll = vue.defineComponent({
@@ -113258,7 +114281,8 @@
113258
114281
  props: infiniteScrollProps,
113259
114282
  setup(props) {
113260
114283
  const scrollbarInstRef = vue.ref(null);
113261
- let loading = false;
114284
+ let loadingBottom = false;
114285
+ let loadingTop = false;
113262
114286
  const handleCheckBottom = async () => {
113263
114287
  const { value: scrollbarInst } = scrollbarInstRef;
113264
114288
  if (scrollbarInst) {
@@ -113268,24 +114292,56 @@
113268
114292
  const scrollTop = containerRef?.scrollTop;
113269
114293
  if (containerRef && scrollHeight !== void 0 && clientHeight !== void 0 && scrollTop !== void 0) {
113270
114294
  if (scrollTop + clientHeight >= scrollHeight - props.distance) {
113271
- loading = true;
114295
+ loadingBottom = true;
113272
114296
  try {
113273
114297
  await props.onLoad?.();
113274
114298
  } catch {
113275
114299
  }
113276
- loading = false;
114300
+ loadingBottom = false;
114301
+ }
114302
+ }
114303
+ }
114304
+ };
114305
+ const handleCheckTop = async () => {
114306
+ const { value: scrollbarInst } = scrollbarInstRef;
114307
+ if (scrollbarInst) {
114308
+ const { containerRef } = scrollbarInst;
114309
+ const scrollTop = containerRef?.scrollTop;
114310
+ if (containerRef && scrollTop !== void 0) {
114311
+ if (scrollTop <= props.topDistance) {
114312
+ loadingTop = true;
114313
+ const oldScrollHeight = containerRef.scrollHeight;
114314
+ const oldScrollTop = containerRef.scrollTop;
114315
+ try {
114316
+ await props.onLoadTop?.();
114317
+ await vue.nextTick();
114318
+ const newScrollHeight = containerRef.scrollHeight;
114319
+ const heightDiff = newScrollHeight - oldScrollHeight;
114320
+ if (heightDiff > 0) {
114321
+ containerRef.scrollTop = oldScrollTop + heightDiff;
114322
+ }
114323
+ } catch {
114324
+ }
114325
+ loadingTop = false;
113277
114326
  }
113278
114327
  }
113279
114328
  }
113280
114329
  };
113281
114330
  const handleScroll = () => {
113282
- if (loading) return;
113283
- void handleCheckBottom();
114331
+ if (!loadingBottom) {
114332
+ void handleCheckBottom();
114333
+ }
114334
+ if (!loadingTop) {
114335
+ void handleCheckTop();
114336
+ }
113284
114337
  };
113285
114338
  const handleWheel = (e) => {
113286
- if (e.deltaY <= 0) return;
113287
- if (loading) return;
113288
- void handleCheckBottom();
114339
+ if (e.deltaY > 0 && !loadingBottom) {
114340
+ void handleCheckBottom();
114341
+ }
114342
+ if (e.deltaY < 0 && !loadingTop) {
114343
+ void handleCheckTop();
114344
+ }
113289
114345
  };
113290
114346
  return {
113291
114347
  scrollbarInstRef,
@@ -134945,6 +136001,7 @@
134945
136001
  URate: Rate,
134946
136002
  UResult: Result,
134947
136003
  URow: URow,
136004
+ USafeTopScrollbar: SafeTopScrollbar,
134948
136005
  UScrollbar: Scrollbar,
134949
136006
  USelect: USelect,
134950
136007
  USkeleton: USkeleton,
@@ -135091,6 +136148,7 @@
135091
136148
  rateProps: rateProps,
135092
136149
  resultProps: resultProps,
135093
136150
  rowProps: rowProps,
136151
+ safeTopScrollbarProps: safeTopScrollbarProps,
135094
136152
  scrollbarProps: scrollbarProps,
135095
136153
  selectProps: selectProps,
135096
136154
  skeletonProps: skeletonProps,
@@ -135129,7 +136187,7 @@
135129
136187
  watermarkProps: watermarkProps
135130
136188
  });
135131
136189
 
135132
- var version = "1.10.0";
136190
+ var version = "1.11.0";
135133
136191
 
135134
136192
  function create({
135135
136193
  componentPrefix = "U",
@@ -135271,6 +136329,7 @@
135271
136329
  Result: resultDark,
135272
136330
  Row: rowDark,
135273
136331
  Scrollbar: scrollbarDark,
136332
+ SafeTopScrollbar: safeTopScrollbarDark,
135274
136333
  Select: selectDark,
135275
136334
  Skeleton: skeletonDark,
135276
136335
  Slider: sliderDark,
@@ -135367,6 +136426,7 @@
135367
136426
  Row: rowLight,
135368
136427
  Result: resultLight,
135369
136428
  Scrollbar: scrollbarLight,
136429
+ SafeTopScrollbar: safeTopScrollbarLight,
135370
136430
  Skeleton: skeletonLight,
135371
136431
  Select: selectLight,
135372
136432
  Slider: sliderLight,
@@ -136056,6 +137116,7 @@
136056
137116
  exports.URate = Rate;
136057
137117
  exports.UResult = Result;
136058
137118
  exports.URow = URow;
137119
+ exports.USafeTopScrollbar = SafeTopScrollbar;
136059
137120
  exports.UScrollbar = Scrollbar;
136060
137121
  exports.USelect = USelect;
136061
137122
  exports.USkeleton = USkeleton;
@@ -136311,6 +137372,7 @@
136311
137372
  exports.resultProps = resultProps;
136312
137373
  exports.rowProps = rowProps;
136313
137374
  exports.ruRU = ruRu;
137375
+ exports.safeTopScrollbarProps = safeTopScrollbarProps;
136314
137376
  exports.scrollbarDark = scrollbarDark;
136315
137377
  exports.scrollbarProps = scrollbarProps;
136316
137378
  exports.selectDark = selectDark;