@uzum-tech/ui 2.3.0 → 2.3.2

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 (80) hide show
  1. package/dist/index.js +564 -499
  2. package/dist/index.mjs +564 -499
  3. package/dist/index.prod.js +2 -2
  4. package/dist/index.prod.mjs +2 -2
  5. package/es/chat/src/Chat.d.ts +1074 -0
  6. package/es/chat/src/ChatListItems.d.ts +360 -0
  7. package/es/chat/src/ChatMainArea.d.ts +360 -0
  8. package/es/chat/src/ChatMainArea.mjs +1 -0
  9. package/es/chat/src/ChatMessages.d.ts +360 -0
  10. package/es/chat/src/ChatMessages.mjs +30 -3
  11. package/es/chat/src/ChatParts/Sidebar.d.ts +78 -0
  12. package/es/chat/src/interface.d.ts +1 -0
  13. package/es/chat/styles/dark.d.ts +27 -0
  14. package/es/chat/styles/dark.mjs +2 -0
  15. package/es/chat/styles/light.d.ts +27 -0
  16. package/es/chat/styles/light.mjs +2 -0
  17. package/es/components.d.ts +1840 -7
  18. package/es/image/src/ImagePreview.d.ts +1 -0
  19. package/es/image/src/ImagePreview.mjs +7 -35
  20. package/es/image/src/public-types.d.ts +4 -4
  21. package/es/message-bubble/src/MessageBubble.mjs +16 -5
  22. package/es/message-bubble/src/interface.d.ts +2 -0
  23. package/es/message-bubble/src/styles/index.cssr.mjs +5 -7
  24. package/es/upload/index.d.ts +2 -1
  25. package/es/upload/index.mjs +2 -1
  26. package/es/upload/src/Upload.d.ts +73 -1007
  27. package/es/upload/src/Upload.mjs +43 -124
  28. package/es/upload/src/UploadFile.d.ts +1 -1
  29. package/es/upload/src/UploadFile.mjs +8 -2
  30. package/es/upload/src/UploadFileList.mjs +17 -2
  31. package/es/upload/src/UploadProgress.d.ts +3 -2
  32. package/es/upload/src/interface.d.ts +1086 -92
  33. package/es/upload/src/interface.mjs +117 -1
  34. package/es/upload/src/public-types.d.ts +17 -2
  35. package/es/upload/src/useUploadActionsRender.d.ts +2 -27
  36. package/es/upload/src/useUploadActionsRender.mjs +2 -2
  37. package/es/upload/src/useUploadInternals.d.ts +2 -25
  38. package/es/upload/src/utils.d.ts +2 -0
  39. package/es/upload/src/utils.mjs +7 -0
  40. package/es/version.d.ts +1 -1
  41. package/es/version.mjs +1 -1
  42. package/lib/chat/src/Chat.d.ts +1074 -0
  43. package/lib/chat/src/ChatListItems.d.ts +360 -0
  44. package/lib/chat/src/ChatMainArea.d.ts +360 -0
  45. package/lib/chat/src/ChatMainArea.js +1 -0
  46. package/lib/chat/src/ChatMessages.d.ts +360 -0
  47. package/lib/chat/src/ChatMessages.js +10 -3
  48. package/lib/chat/src/ChatParts/Sidebar.d.ts +78 -0
  49. package/lib/chat/src/interface.d.ts +1 -0
  50. package/lib/chat/styles/dark.d.ts +27 -0
  51. package/lib/chat/styles/dark.js +6 -4
  52. package/lib/chat/styles/light.d.ts +27 -0
  53. package/lib/chat/styles/light.js +6 -4
  54. package/lib/components.d.ts +1840 -7
  55. package/lib/image/src/ImagePreview.d.ts +1 -0
  56. package/lib/image/src/ImagePreview.js +3 -19
  57. package/lib/image/src/public-types.d.ts +4 -4
  58. package/lib/message-bubble/src/MessageBubble.js +15 -5
  59. package/lib/message-bubble/src/interface.d.ts +2 -0
  60. package/lib/message-bubble/src/styles/index.cssr.js +5 -7
  61. package/lib/upload/index.d.ts +2 -1
  62. package/lib/upload/index.js +2 -1
  63. package/lib/upload/src/Upload.d.ts +73 -1007
  64. package/lib/upload/src/Upload.js +40 -68
  65. package/lib/upload/src/UploadFile.d.ts +1 -1
  66. package/lib/upload/src/UploadFile.js +12 -4
  67. package/lib/upload/src/UploadFileList.js +8 -1
  68. package/lib/upload/src/UploadProgress.d.ts +3 -2
  69. package/lib/upload/src/interface.d.ts +1086 -92
  70. package/lib/upload/src/interface.js +59 -1
  71. package/lib/upload/src/public-types.d.ts +17 -2
  72. package/lib/upload/src/useUploadActionsRender.d.ts +2 -27
  73. package/lib/upload/src/useUploadActionsRender.js +2 -2
  74. package/lib/upload/src/useUploadInternals.d.ts +2 -25
  75. package/lib/upload/src/utils.d.ts +2 -0
  76. package/lib/upload/src/utils.js +10 -0
  77. package/lib/version.d.ts +1 -1
  78. package/lib/version.js +1 -1
  79. package/package.json +1 -1
  80. package/web-types.json +113 -36
package/dist/index.js CHANGED
@@ -15760,7 +15760,7 @@
15760
15760
  }
15761
15761
  });
15762
15762
 
15763
- var ResizeSmallIcon = vue.defineComponent({
15763
+ vue.defineComponent({
15764
15764
  name: "ResizeSmall",
15765
15765
  render() {
15766
15766
  return /* @__PURE__ */ vue.h("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20" }, /* @__PURE__ */ vue.h("g", { fill: "none" }, /* @__PURE__ */ vue.h(
@@ -45099,6 +45099,58 @@
45099
45099
  };
45100
45100
 
45101
45101
  function self$17(vars) {
45102
+ const {
45103
+ borderRadiusLarge,
45104
+ elementsSecondary,
45105
+ elementsTertiary,
45106
+ textPrimary,
45107
+ textSecondary,
45108
+ textTertiary,
45109
+ brandPrimary400,
45110
+ staticGreen,
45111
+ staticRed,
45112
+ staticWhite
45113
+ } = vars;
45114
+ return {
45115
+ messageBubbleBackgroundColorOwn: elementsTertiary,
45116
+ messageBubbleBackgroundColorOther: elementsTertiary,
45117
+ messageBubbleTextColorOwn: textPrimary,
45118
+ messageBubbleTextColorOther: textPrimary,
45119
+ messageTimeColor: textTertiary,
45120
+ messageStatusReadColor: brandPrimary400,
45121
+ messageStatusSuccessColor: staticGreen,
45122
+ attachmentBackgroundColorOwn: staticWhite,
45123
+ attachmentBackgroundColorOther: staticWhite,
45124
+ messageErrorColor: staticRed,
45125
+ messageBorderRadius: borderRadiusLarge,
45126
+ unreadNotificationBackgroundColor: brandPrimary400,
45127
+ unreadNotificationTextColor: elementsSecondary,
45128
+ serviceMessageTextColor: textSecondary,
45129
+ serviceMessageBackgroundColor: "transparent",
45130
+ messageTitleColor: textPrimary
45131
+ };
45132
+ }
45133
+ const messageBubbleLight = createTheme$1({
45134
+ name: "MessageBubble",
45135
+ common: derived,
45136
+ peers: {
45137
+ StatusIcon: iconLight
45138
+ },
45139
+ self: self$17
45140
+ });
45141
+
45142
+ const messageBubbleDark = createTheme$1({
45143
+ name: "MessageBubble",
45144
+ common: derived$1,
45145
+ peers: {
45146
+ StatusIcon: iconDark$1
45147
+ },
45148
+ self: vars => ({
45149
+ ...self$17(vars)
45150
+ })
45151
+ });
45152
+
45153
+ function self$16(vars) {
45102
45154
  const {
45103
45155
  shadowDepth2
45104
45156
  } = vars;
@@ -45113,7 +45165,7 @@
45113
45165
  InternalSelection: internalSelectionLight,
45114
45166
  InternalSelectMenu: internalSelectMenuLight
45115
45167
  },
45116
- self: self$17
45168
+ self: self$16
45117
45169
  });
45118
45170
 
45119
45171
  const selectDark = {
@@ -45123,13 +45175,13 @@
45123
45175
  InternalSelection: internalSelectionDark,
45124
45176
  InternalSelectMenu: internalSelectMenuDark
45125
45177
  },
45126
- self: self$17
45178
+ self: self$16
45127
45179
  };
45128
45180
 
45129
45181
  ({
45130
45182
  style: c$1([])});
45131
45183
 
45132
- function self$16(vars) {
45184
+ function self$15(vars) {
45133
45185
  const {
45134
45186
  borderRadiusSmall,
45135
45187
  fontWeightStrong,
@@ -45224,13 +45276,13 @@
45224
45276
  const typographyLight = {
45225
45277
  name: "Typography",
45226
45278
  common: derived,
45227
- self: self$16
45279
+ self: self$15
45228
45280
  };
45229
45281
 
45230
45282
  const typographyDark = {
45231
45283
  name: "Typography",
45232
45284
  common: derived$1,
45233
- self: self$16
45285
+ self: self$15
45234
45286
  };
45235
45287
 
45236
45288
  const chatInputLight = {
@@ -45268,7 +45320,7 @@
45268
45320
  };
45269
45321
  }
45270
45322
  };
45271
- function self$15(vars) {
45323
+ function self$14(vars) {
45272
45324
  const {
45273
45325
  borderRadiusLarge,
45274
45326
  elementsQuaternary,
@@ -45335,13 +45387,14 @@
45335
45387
  Button: buttonLight,
45336
45388
  List: listLight,
45337
45389
  Typography: typographyLight,
45390
+ MessageBubble: messageBubbleLight,
45338
45391
  StatusIcon: iconLight,
45339
45392
  FooterAttachIcon: iconLight,
45340
45393
  FooterSuffixIcon: iconLight,
45341
45394
  HeaderShareIcon: iconLight,
45342
45395
  HeaderProfileIcon: iconLight
45343
45396
  },
45344
- self: self$15
45397
+ self: self$14
45345
45398
  });
45346
45399
 
45347
45400
  const chatDark = createTheme$1({
@@ -45356,6 +45409,7 @@
45356
45409
  Button: buttonDark,
45357
45410
  List: listDark$1,
45358
45411
  Typography: typographyDark,
45412
+ MessageBubble: messageBubbleDark,
45359
45413
  StatusIcon: iconDark$1,
45360
45414
  FooterAttachIcon: iconDark$1,
45361
45415
  FooterSuffixIcon: iconDark$1,
@@ -45363,7 +45417,7 @@
45363
45417
  HeaderProfileIcon: iconDark$1
45364
45418
  },
45365
45419
  self: vars => {
45366
- const lightVars = self$15(vars);
45420
+ const lightVars = self$14(vars);
45367
45421
  return {
45368
45422
  ...lightVars
45369
45423
  };
@@ -46712,7 +46766,284 @@
46712
46766
  }
46713
46767
  });
46714
46768
 
46715
- function self$14(vars) {
46769
+ function isImageFileType(type) {
46770
+ return type.includes("image/");
46771
+ }
46772
+ function getExtname(url = "") {
46773
+ const temp = url.split("/");
46774
+ const filename = temp[temp.length - 1];
46775
+ const filenameWithoutSuffix = filename.split(/#|\?/)[0];
46776
+ return (/\.[^./\\]*$/.exec(filenameWithoutSuffix) || [""])[0];
46777
+ }
46778
+ const imageExtensionRegex = /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i;
46779
+ function capitalizeFirstLetter(str) {
46780
+ if (!str) return str;
46781
+ return str.charAt(0).toUpperCase() + str.slice(1);
46782
+ }
46783
+ const isImageFile = file => {
46784
+ if (file.type) {
46785
+ return isImageFileType(file.type);
46786
+ }
46787
+ const fileNameExtension = getExtname(file.name || "");
46788
+ if (imageExtensionRegex.test(fileNameExtension)) {
46789
+ return true;
46790
+ }
46791
+ const url = file.thumbnailUrl || file.url || "";
46792
+ const urlExtension = getExtname(url);
46793
+ if (/^data:image\//.test(url) || imageExtensionRegex.test(urlExtension)) {
46794
+ return true;
46795
+ }
46796
+ return false;
46797
+ };
46798
+ async function createImageDataUrl(file) {
46799
+ return await new Promise(resolve => {
46800
+ if (!file.type || !isImageFileType(file.type)) {
46801
+ resolve("");
46802
+ return;
46803
+ }
46804
+ resolve(window.URL.createObjectURL(file));
46805
+ });
46806
+ }
46807
+ const environmentSupportFile = isBrowser$1 && window.FileReader && window.File;
46808
+ function isFileSystemDirectoryEntry(item) {
46809
+ return item.isDirectory;
46810
+ }
46811
+ function isFileSystemFileEntry(item) {
46812
+ return item.isFile;
46813
+ }
46814
+ async function getFilesFromEntries(entries, directory) {
46815
+ const fileAndEntries = [];
46816
+ let _resolve;
46817
+ let requestCallbackCount = 0;
46818
+ function lock() {
46819
+ requestCallbackCount++;
46820
+ }
46821
+ function unlock() {
46822
+ requestCallbackCount--;
46823
+ if (!requestCallbackCount) {
46824
+ _resolve(fileAndEntries);
46825
+ }
46826
+ }
46827
+ function _getFilesFromEntries(entries2) {
46828
+ entries2.forEach(entry => {
46829
+ if (!entry) return;
46830
+ lock();
46831
+ if (directory && isFileSystemDirectoryEntry(entry)) {
46832
+ const directoryReader = entry.createReader();
46833
+ lock();
46834
+ directoryReader.readEntries(entries3 => {
46835
+ _getFilesFromEntries(entries3);
46836
+ unlock();
46837
+ }, () => {
46838
+ unlock();
46839
+ });
46840
+ } else if (isFileSystemFileEntry(entry)) {
46841
+ lock();
46842
+ entry.file(file => {
46843
+ fileAndEntries.push({
46844
+ file,
46845
+ entry,
46846
+ source: "dnd"
46847
+ });
46848
+ unlock();
46849
+ }, () => {
46850
+ unlock();
46851
+ });
46852
+ }
46853
+ unlock();
46854
+ });
46855
+ }
46856
+ await new Promise(resolve => {
46857
+ _resolve = resolve;
46858
+ _getFilesFromEntries(entries);
46859
+ });
46860
+ return fileAndEntries;
46861
+ }
46862
+ function getFilePreviewSrc(file) {
46863
+ return file.url || file.thumbnailUrl || null;
46864
+ }
46865
+ function isFileSizeExceeded(file, maxSize) {
46866
+ if (maxSize === void 0 || !file) return false;
46867
+ return file.size > maxSize;
46868
+ }
46869
+ function createSettledFileInfo(fileInfo) {
46870
+ const {
46871
+ id,
46872
+ name,
46873
+ percentage,
46874
+ status,
46875
+ url,
46876
+ file,
46877
+ thumbnailUrl,
46878
+ type,
46879
+ fullPath,
46880
+ batchId
46881
+ } = fileInfo;
46882
+ return {
46883
+ id,
46884
+ name,
46885
+ percentage: percentage ?? null,
46886
+ status,
46887
+ url: url ?? null,
46888
+ file: file ?? null,
46889
+ thumbnailUrl: thumbnailUrl ?? null,
46890
+ type: type ?? null,
46891
+ fullPath: fullPath ?? null,
46892
+ batchId: batchId ?? null
46893
+ };
46894
+ }
46895
+ function matchType(name, mimeType, accept) {
46896
+ name = name.toLowerCase();
46897
+ mimeType = mimeType.toLocaleLowerCase();
46898
+ accept = accept.toLocaleLowerCase();
46899
+ const acceptAtoms = accept.split(",").map(acceptAtom => acceptAtom.trim()).filter(Boolean);
46900
+ return acceptAtoms.some(acceptAtom => {
46901
+ if (acceptAtom.startsWith(".")) {
46902
+ if (name.endsWith(acceptAtom)) return true;
46903
+ } else if (acceptAtom.includes("/")) {
46904
+ const [type, subtype] = mimeType.split("/");
46905
+ const [acceptType, acceptSubtype] = acceptAtom.split("/");
46906
+ if (acceptType === "*" || type && acceptType && acceptType === type) {
46907
+ if (acceptSubtype === "*" || subtype && acceptSubtype && acceptSubtype === subtype) {
46908
+ return true;
46909
+ }
46910
+ }
46911
+ } else {
46912
+ return true;
46913
+ }
46914
+ return false;
46915
+ });
46916
+ }
46917
+ function download(url, name) {
46918
+ if (!url) return;
46919
+ const a = document.createElement("a");
46920
+ a.href = url;
46921
+ if (name !== void 0) {
46922
+ a.download = name;
46923
+ }
46924
+ document.body.appendChild(a);
46925
+ a.click();
46926
+ document.body.removeChild(a);
46927
+ }
46928
+
46929
+ const uploadInjectionKey = createInjectionKey("u-upload");
46930
+ const uploadProps = {
46931
+ ...useTheme.props,
46932
+ name: {
46933
+ type: String,
46934
+ default: "file"
46935
+ },
46936
+ accept: String,
46937
+ action: String,
46938
+ customRequest: Function,
46939
+ directory: Boolean,
46940
+ directoryDnd: {
46941
+ type: Boolean,
46942
+ default: void 0
46943
+ },
46944
+ method: {
46945
+ type: String,
46946
+ default: "POST"
46947
+ },
46948
+ multiple: Boolean,
46949
+ showFileList: {
46950
+ type: Boolean,
46951
+ default: true
46952
+ },
46953
+ data: [Object, Function],
46954
+ headers: [Object, Function],
46955
+ withCredentials: Boolean,
46956
+ responseType: {
46957
+ type: String,
46958
+ default: ""
46959
+ },
46960
+ disabled: {
46961
+ type: Boolean,
46962
+ default: void 0
46963
+ },
46964
+ vertical: {
46965
+ type: Boolean,
46966
+ default: false
46967
+ },
46968
+ icon: Object,
46969
+ onChange: Function,
46970
+ onRemove: Function,
46971
+ onFinish: Function,
46972
+ onError: Function,
46973
+ onRetry: Function,
46974
+ onBeforeUpload: Function,
46975
+ isErrorState: Function,
46976
+ onDownload: Function,
46977
+ defaultUpload: {
46978
+ type: Boolean,
46979
+ default: true
46980
+ },
46981
+ fileList: Array,
46982
+ "onUpdate:fileList": [Function, Array],
46983
+ onUpdateFileList: [Function, Array],
46984
+ fileListClass: String,
46985
+ fileListStyle: [String, Object],
46986
+ defaultFileList: {
46987
+ type: Array,
46988
+ default: () => []
46989
+ },
46990
+ showCancelButton: {
46991
+ type: Boolean,
46992
+ default: true
46993
+ },
46994
+ showRemoveButton: {
46995
+ type: Boolean,
46996
+ default: true
46997
+ },
46998
+ showDownloadButton: Boolean,
46999
+ showRetryButton: {
47000
+ type: Boolean,
47001
+ default: true
47002
+ },
47003
+ customDownload: Function,
47004
+ showPreviewButton: {
47005
+ type: Boolean,
47006
+ default: true
47007
+ },
47008
+ listType: {
47009
+ type: String,
47010
+ default: "text"
47011
+ },
47012
+ onPreview: Function,
47013
+ shouldUseThumbnailUrl: {
47014
+ type: Function,
47015
+ default: file => {
47016
+ if (!environmentSupportFile) return false;
47017
+ return isImageFile(file);
47018
+ }
47019
+ },
47020
+ createThumbnailUrl: Function,
47021
+ abstract: Boolean,
47022
+ max: Number,
47023
+ maxSize: Number,
47024
+ showTrigger: {
47025
+ type: Boolean,
47026
+ default: true
47027
+ },
47028
+ imageGroupProps: Object,
47029
+ inputProps: Object,
47030
+ triggerClass: String,
47031
+ triggerStyle: [String, Object],
47032
+ renderIcon: Function,
47033
+ label: String,
47034
+ size: {
47035
+ type: String,
47036
+ default: "medium"
47037
+ },
47038
+ title: String,
47039
+ subtitle: String,
47040
+ noIcon: {
47041
+ type: Boolean,
47042
+ default: false
47043
+ }
47044
+ };
47045
+
47046
+ function self$13(vars) {
46716
47047
  const {
46717
47048
  fontWeight,
46718
47049
  fontBodyMedium,
@@ -46753,16 +47084,16 @@
46753
47084
  const progressLight = {
46754
47085
  name: "Progress",
46755
47086
  common: derived,
46756
- self: self$14
47087
+ self: self$13
46757
47088
  };
46758
47089
 
46759
47090
  const progressDark = {
46760
47091
  name: "Progress",
46761
47092
  common: derived$1,
46762
- self: self$14
47093
+ self: self$13
46763
47094
  };
46764
47095
 
46765
- function self$13(vars) {
47096
+ function self$12(vars) {
46766
47097
  const {
46767
47098
  staticGreen,
46768
47099
  staticRed,
@@ -46819,7 +47150,7 @@
46819
47150
  Button: buttonLight,
46820
47151
  Progress: progressLight
46821
47152
  },
46822
- self: self$13
47153
+ self: self$12
46823
47154
  });
46824
47155
 
46825
47156
  const uploadDark = {
@@ -46829,7 +47160,7 @@
46829
47160
  Button: buttonDark,
46830
47161
  Progress: progressDark
46831
47162
  },
46832
- self: self$13
47163
+ self: self$12
46833
47164
  };
46834
47165
 
46835
47166
  var rtlStyle$i = cB("upload", [cM("rtl", `
@@ -46842,8 +47173,6 @@
46842
47173
  style: rtlStyle$i
46843
47174
  };
46844
47175
 
46845
- const uploadInjectionKey = createInjectionKey("u-upload");
46846
-
46847
47176
  var style$1a = c$1([cB("upload", "width: var(--u-upload-width)", [cM("dragger-inside", [cB("upload-trigger", `
46848
47177
  display: block;
46849
47178
  `)]), cM("drag-over", [cB("upload-dragger", `
@@ -47308,7 +47637,7 @@
47308
47637
  self: self$1d
47309
47638
  };
47310
47639
 
47311
- function self$12(vars) {
47640
+ function self$11(vars) {
47312
47641
  const {
47313
47642
  textPrimary,
47314
47643
  fontBodyMedium,
@@ -47336,12 +47665,12 @@
47336
47665
  const codeLight = {
47337
47666
  name: "Code",
47338
47667
  common: derived,
47339
- self: self$12
47668
+ self: self$11
47340
47669
  };
47341
47670
 
47342
- function self$11(vars) {
47671
+ function self$10(vars) {
47343
47672
  return {
47344
- ...self$12(vars),
47673
+ ...self$11(vars),
47345
47674
  // extracted from hljs atom-one-dark.scss
47346
47675
  "mono-3": "#5c6370",
47347
47676
  "hue-1": "#56b6c2",
@@ -47357,10 +47686,10 @@
47357
47686
  const codeDark = {
47358
47687
  name: "Code",
47359
47688
  common: derived$1,
47360
- self: self$11
47689
+ self: self$10
47361
47690
  };
47362
47691
 
47363
- function self$10(vars) {
47692
+ function self$$(vars) {
47364
47693
  const {
47365
47694
  cubicBezierEaseInOut
47366
47695
  } = vars;
@@ -47371,13 +47700,13 @@
47371
47700
  const collapseTransitionLight = {
47372
47701
  name: "CollapseTransition",
47373
47702
  common: derived,
47374
- self: self$10
47703
+ self: self$$
47375
47704
  };
47376
47705
 
47377
47706
  const collapseTransitionDark = {
47378
47707
  name: "CollapseTransition",
47379
47708
  common: derived$1,
47380
- self: self$10
47709
+ self: self$$
47381
47710
  };
47382
47711
 
47383
47712
  var rtlStyle$g = cB("collapse-transition", [cM("rtl", `
@@ -47390,7 +47719,7 @@
47390
47719
  style: rtlStyle$g
47391
47720
  };
47392
47721
 
47393
- function self$$(vars) {
47722
+ function self$_(vars) {
47394
47723
  const {
47395
47724
  fontWeight,
47396
47725
  fontBodyLarge,
@@ -47430,13 +47759,13 @@
47430
47759
  const collapseLight = {
47431
47760
  name: "Collapse",
47432
47761
  common: derived,
47433
- self: self$$
47762
+ self: self$_
47434
47763
  };
47435
47764
 
47436
47765
  const collapseDark = {
47437
47766
  name: "Collapse",
47438
47767
  common: derived$1,
47439
- self: self$$
47768
+ self: self$_
47440
47769
  };
47441
47770
 
47442
47771
  var rtlStyle$f = cB("collapse", [cM("rtl", `
@@ -47459,7 +47788,7 @@
47459
47788
  style: rtlStyle$f
47460
47789
  };
47461
47790
 
47462
- function self$_(vars) {
47791
+ function self$Z(vars) {
47463
47792
  const {
47464
47793
  borderRadius,
47465
47794
  fontBodySmall,
@@ -47546,7 +47875,7 @@
47546
47875
  peers: {
47547
47876
  Popover: popoverLight
47548
47877
  },
47549
- self: self$_
47878
+ self: self$Z
47550
47879
  });
47551
47880
 
47552
47881
  const dropdownDark = {
@@ -47555,7 +47884,7 @@
47555
47884
  peers: {
47556
47885
  Popover: popoverDark
47557
47886
  },
47558
- self: self$_
47887
+ self: self$Z
47559
47888
  };
47560
47889
 
47561
47890
  const popselect = {
@@ -47567,7 +47896,7 @@
47567
47896
  }
47568
47897
  };
47569
47898
 
47570
- function self$Z(vars) {
47899
+ function self$Y(vars) {
47571
47900
  const {
47572
47901
  shadowDepth2
47573
47902
  } = vars;
@@ -47582,10 +47911,10 @@
47582
47911
  Popover: popoverLight,
47583
47912
  InternalSelectMenu: internalSelectMenuLight
47584
47913
  },
47585
- self: self$Z
47914
+ self: self$Y
47586
47915
  });
47587
47916
 
47588
- function self$Y(vars) {
47917
+ function self$X(vars) {
47589
47918
  const {
47590
47919
  brandPrimary100,
47591
47920
  transparencySecondary,
@@ -47683,7 +48012,7 @@
47683
48012
  Input: inputLight,
47684
48013
  Popselect: popselectLight
47685
48014
  },
47686
- self: self$Y
48015
+ self: self$X
47687
48016
  });
47688
48017
 
47689
48018
  const paginationDark = {
@@ -47694,7 +48023,7 @@
47694
48023
  Input: inputDark,
47695
48024
  Popselect: popselect
47696
48025
  },
47697
- self: self$Y
48026
+ self: self$X
47698
48027
  };
47699
48028
 
47700
48029
  var rtlStyle$e = cB("pagination", [cM("rtl", `
@@ -47711,7 +48040,7 @@
47711
48040
  peers: [inputRtl]
47712
48041
  };
47713
48042
 
47714
- function self$X(vars) {
48043
+ function self$W(vars) {
47715
48044
  const {
47716
48045
  heightTiny,
47717
48046
  heightSmall,
@@ -47803,13 +48132,13 @@
47803
48132
  const radioLight = {
47804
48133
  name: "Radio",
47805
48134
  common: derived,
47806
- self: self$X
48135
+ self: self$W
47807
48136
  };
47808
48137
 
47809
48138
  const radioDark = {
47810
48139
  name: "Radio",
47811
48140
  common: derived$1,
47812
- self: self$X
48141
+ self: self$W
47813
48142
  };
47814
48143
 
47815
48144
  var rtlStyle$d = c$1([cB("radio", [cM("rtl", `
@@ -47837,7 +48166,7 @@
47837
48166
  style: rtlStyle$d
47838
48167
  };
47839
48168
 
47840
- function self$W(vars) {
48169
+ function self$V(vars) {
47841
48170
  const {
47842
48171
  borderRadius,
47843
48172
  opacityDisabled,
@@ -47938,7 +48267,7 @@
47938
48267
  Ellipsis: ellipsisLight,
47939
48268
  Dropdown: dropdownLight
47940
48269
  },
47941
- self: self$W
48270
+ self: self$V
47942
48271
  });
47943
48272
 
47944
48273
  const dataTableDark = {
@@ -47955,10 +48284,10 @@
47955
48284
  Ellipsis: ellipsisDark,
47956
48285
  Dropdown: dropdownDark
47957
48286
  },
47958
- self: self$W
48287
+ self: self$V
47959
48288
  };
47960
48289
 
47961
- function self$V(vars) {
48290
+ function self$U(vars) {
47962
48291
  const {
47963
48292
  opacityDisabled,
47964
48293
  borderRadius,
@@ -48000,7 +48329,7 @@
48000
48329
  Button: buttonLight,
48001
48330
  Input: inputLight
48002
48331
  },
48003
- self: self$V
48332
+ self: self$U
48004
48333
  });
48005
48334
 
48006
48335
  const timePickerDark = {
@@ -48011,7 +48340,7 @@
48011
48340
  Button: buttonDark,
48012
48341
  Input: inputDark
48013
48342
  },
48014
- self: self$V
48343
+ self: self$U
48015
48344
  };
48016
48345
 
48017
48346
  const itemWidth = "38px";
@@ -48057,7 +48386,7 @@
48057
48386
  calendarRightPaddingYearrange: "0"
48058
48387
  };
48059
48388
 
48060
- function self$U(vars) {
48389
+ function self$T(vars) {
48061
48390
  const {
48062
48391
  iconMedium,
48063
48392
  fontWeightStrong,
@@ -48158,7 +48487,7 @@
48158
48487
  Scrollbar: scrollbarLight,
48159
48488
  Select: internalSelectionLight
48160
48489
  },
48161
- self: self$U
48490
+ self: self$T
48162
48491
  });
48163
48492
 
48164
48493
  const datePickerDark = {
@@ -48171,10 +48500,10 @@
48171
48500
  Scrollbar: scrollbarDark,
48172
48501
  Select: internalSelectionDark
48173
48502
  },
48174
- self: self$U
48503
+ self: self$T
48175
48504
  };
48176
48505
 
48177
- function self$T(vars) {
48506
+ function self$S(vars) {
48178
48507
  const {
48179
48508
  borderRadius,
48180
48509
  lineHeightBodyLarge,
@@ -48224,13 +48553,13 @@
48224
48553
  const descriptionsLight = {
48225
48554
  name: "Descriptions",
48226
48555
  common: derived,
48227
- self: self$T
48556
+ self: self$S
48228
48557
  };
48229
48558
 
48230
48559
  const descriptionsDark = {
48231
48560
  name: "Descriptions",
48232
48561
  common: derived$1,
48233
- self: self$T
48562
+ self: self$S
48234
48563
  };
48235
48564
 
48236
48565
  var commonVars$5 = {
@@ -48244,7 +48573,7 @@
48244
48573
  closeBorderRadius: "100px"
48245
48574
  };
48246
48575
 
48247
- function self$S(vars) {
48576
+ function self$R(vars) {
48248
48577
  const {
48249
48578
  borderRadius,
48250
48579
  containerPrimary,
@@ -48301,7 +48630,7 @@
48301
48630
  peers: {
48302
48631
  Button: buttonLight
48303
48632
  },
48304
- self: self$S
48633
+ self: self$R
48305
48634
  });
48306
48635
 
48307
48636
  const dialogDark = {
@@ -48310,10 +48639,10 @@
48310
48639
  peers: {
48311
48640
  Button: buttonDark
48312
48641
  },
48313
- self: self$S
48642
+ self: self$R
48314
48643
  };
48315
48644
 
48316
- function self$R(vars) {
48645
+ function self$Q(vars) {
48317
48646
  const {
48318
48647
  elementsQuaternary,
48319
48648
  textPrimary,
@@ -48333,13 +48662,13 @@
48333
48662
  const dividerLight = {
48334
48663
  name: "Divider",
48335
48664
  common: derived,
48336
- self: self$R
48665
+ self: self$Q
48337
48666
  };
48338
48667
 
48339
48668
  const dividerDark = {
48340
48669
  name: "Divider",
48341
48670
  common: derived$1,
48342
- self: self$R
48671
+ self: self$Q
48343
48672
  };
48344
48673
 
48345
48674
  var commonVars$4 = {
@@ -48355,7 +48684,7 @@
48355
48684
  contentBorderRadius: "24px"
48356
48685
  };
48357
48686
 
48358
- function self$Q(vars) {
48687
+ function self$P(vars) {
48359
48688
  const {
48360
48689
  containerPrimary,
48361
48690
  textPrimary,
@@ -48404,7 +48733,7 @@
48404
48733
  peers: {
48405
48734
  Scrollbar: scrollbarLight
48406
48735
  },
48407
- self: self$Q
48736
+ self: self$P
48408
48737
  });
48409
48738
 
48410
48739
  const drawerDark = {
@@ -48413,7 +48742,7 @@
48413
48742
  peers: {
48414
48743
  Scrollbar: scrollbarDark
48415
48744
  },
48416
- self: self$Q
48745
+ self: self$P
48417
48746
  };
48418
48747
 
48419
48748
  var rtlStyle$c = cB("drawer", [cM("rtl", `
@@ -48447,7 +48776,7 @@
48447
48776
  }
48448
48777
  };
48449
48778
 
48450
- function self$P() {
48779
+ function self$O() {
48451
48780
  return commonVariables$1;
48452
48781
  }
48453
48782
  const dynamicInputLight = createTheme$1({
@@ -48457,7 +48786,7 @@
48457
48786
  Input: inputLight,
48458
48787
  Button: buttonLight
48459
48788
  },
48460
- self: self$P
48789
+ self: self$O
48461
48790
  });
48462
48791
 
48463
48792
  var rtlStyle$b = cB("input-number", [cM("rtl", `
@@ -48498,12 +48827,12 @@
48498
48827
  }
48499
48828
  };
48500
48829
 
48501
- function self$O() {
48830
+ function self$N() {
48502
48831
  return commonVars$3;
48503
48832
  }
48504
48833
  const spaceLight = {
48505
48834
  name: "Space",
48506
- self: self$O
48835
+ self: self$N
48507
48836
  };
48508
48837
 
48509
48838
  var rtlStyle$9 = cB("space", [cM("rtl", `
@@ -48575,7 +48904,7 @@
48575
48904
  }
48576
48905
  };
48577
48906
 
48578
- function self$N(vars) {
48907
+ function self$M(vars) {
48579
48908
  const {
48580
48909
  containerPrimary,
48581
48910
  elementsQuaternary,
@@ -48591,7 +48920,7 @@
48591
48920
  const themeLight$4 = {
48592
48921
  name: "FloatButtonGroup",
48593
48922
  common: derived,
48594
- self: self$N
48923
+ self: self$M
48595
48924
  };
48596
48925
 
48597
48926
  const floatButtonDark = {
@@ -48626,7 +48955,7 @@
48626
48955
  }
48627
48956
  };
48628
48957
 
48629
- function self$M(vars) {
48958
+ function self$L(vars) {
48630
48959
  const {
48631
48960
  containerPrimary,
48632
48961
  textPrimary,
@@ -48655,10 +48984,10 @@
48655
48984
  const themeLight$3 = {
48656
48985
  name: "FloatButton",
48657
48986
  common: derived,
48658
- self: self$M
48987
+ self: self$L
48659
48988
  };
48660
48989
 
48661
- function self$L(vars) {
48990
+ function self$K(vars) {
48662
48991
  const {
48663
48992
  heightSmall,
48664
48993
  heightMedium,
@@ -48713,16 +49042,16 @@
48713
49042
  const formLight = {
48714
49043
  name: "Form",
48715
49044
  common: derived,
48716
- self: self$L
49045
+ self: self$K
48717
49046
  };
48718
49047
 
48719
49048
  const formItemDark = {
48720
49049
  name: "Form",
48721
49050
  common: derived$1,
48722
- self: self$L
49051
+ self: self$K
48723
49052
  };
48724
49053
 
48725
- function self$K(vars) {
49054
+ function self$J(vars) {
48726
49055
  const {
48727
49056
  brandPrimary500,
48728
49057
  staticGreen,
@@ -48759,16 +49088,16 @@
48759
49088
  const gradientTextLight = {
48760
49089
  name: "GradientText",
48761
49090
  common: derived,
48762
- self: self$K
49091
+ self: self$J
48763
49092
  };
48764
49093
 
48765
49094
  const gradientTextDark = {
48766
49095
  name: "GradientText",
48767
49096
  common: derived$1,
48768
- self: self$K
49097
+ self: self$J
48769
49098
  };
48770
49099
 
48771
- function self$J(vars) {
49100
+ function self$I(vars) {
48772
49101
  const {
48773
49102
  textSecondary
48774
49103
  } = vars;
@@ -48783,7 +49112,7 @@
48783
49112
  Button: buttonLight,
48784
49113
  Input: inputLight
48785
49114
  },
48786
- self: self$J
49115
+ self: self$I
48787
49116
  });
48788
49117
 
48789
49118
  const inputNumberDark = {
@@ -48793,10 +49122,10 @@
48793
49122
  Button: buttonDark,
48794
49123
  Input: inputDark
48795
49124
  },
48796
- self: self$J
49125
+ self: self$I
48797
49126
  };
48798
49127
 
48799
- function self$I() {
49128
+ function self$H() {
48800
49129
  return {
48801
49130
  inputWidthSmall: "44px",
48802
49131
  inputWidthMedium: "50px",
@@ -48812,7 +49141,7 @@
48812
49141
  peers: {
48813
49142
  Input: inputLight
48814
49143
  },
48815
- self: self$I
49144
+ self: self$H
48816
49145
  });
48817
49146
 
48818
49147
  const inputOtpDark = {
@@ -48821,7 +49150,7 @@
48821
49150
  peers: {
48822
49151
  Input: inputDark
48823
49152
  },
48824
- self: self$I
49153
+ self: self$H
48825
49154
  };
48826
49155
 
48827
49156
  var rtlStyle$8 = cB("input-otp", [cM("rtl", `
@@ -48833,7 +49162,7 @@
48833
49162
  style: rtlStyle$8
48834
49163
  };
48835
49164
 
48836
- function self$H(vars) {
49165
+ function self$G(vars) {
48837
49166
  const {
48838
49167
  textPrimary,
48839
49168
  textQuaternary,
@@ -48879,7 +49208,7 @@
48879
49208
  peers: {
48880
49209
  Scrollbar: scrollbarLight
48881
49210
  },
48882
- self: self$H
49211
+ self: self$G
48883
49212
  });
48884
49213
 
48885
49214
  const layoutDark = {
@@ -48888,7 +49217,7 @@
48888
49217
  peers: {
48889
49218
  Scrollbar: scrollbarDark
48890
49219
  },
48891
- self: self$H
49220
+ self: self$G
48892
49221
  };
48893
49222
 
48894
49223
  const rowDark = {
@@ -48925,7 +49254,7 @@
48925
49254
  style: rtlStyle$7
48926
49255
  };
48927
49256
 
48928
- function self$G(vars) {
49257
+ function self$F(vars) {
48929
49258
  const {
48930
49259
  brandPrimary500,
48931
49260
  staticRed
@@ -48939,16 +49268,16 @@
48939
49268
  const loadingBarLight = {
48940
49269
  name: "LoadingBar",
48941
49270
  common: derived,
48942
- self: self$G
49271
+ self: self$F
48943
49272
  };
48944
49273
 
48945
49274
  const loadingBarDark = {
48946
49275
  name: "LoadingBar",
48947
49276
  common: derived$1,
48948
- self: self$G
49277
+ self: self$F
48949
49278
  };
48950
49279
 
48951
- function self$F(vars) {
49280
+ function self$E(vars) {
48952
49281
  const {
48953
49282
  fontBodyMedium,
48954
49283
  textPrimary,
@@ -48971,7 +49300,7 @@
48971
49300
  Scrollbar: scrollbarLight,
48972
49301
  Code: codeLight
48973
49302
  },
48974
- self: self$F
49303
+ self: self$E
48975
49304
  });
48976
49305
 
48977
49306
  const logDark = {
@@ -48981,25 +49310,25 @@
48981
49310
  Scrollbar: scrollbarDark,
48982
49311
  Code: codeDark
48983
49312
  },
48984
- self: self$F
49313
+ self: self$E
48985
49314
  };
48986
49315
 
48987
- function self$E() {
49316
+ function self$D() {
48988
49317
  return {};
48989
49318
  }
48990
49319
  const marqueeLight = {
48991
49320
  name: "Marquee",
48992
49321
  common: derived,
48993
- self: self$E
49322
+ self: self$D
48994
49323
  };
48995
49324
 
48996
49325
  const marqueeDark = {
48997
49326
  name: "Marquee",
48998
49327
  common: derived$1,
48999
- self: self$E
49328
+ self: self$D
49000
49329
  };
49001
49330
 
49002
- function self$D(vars) {
49331
+ function self$C(vars) {
49003
49332
  const {
49004
49333
  shadowDepth2
49005
49334
  } = vars;
@@ -49014,7 +49343,7 @@
49014
49343
  InternalSelectMenu: internalSelectMenuLight,
49015
49344
  Input: inputLight
49016
49345
  },
49017
- self: self$D
49346
+ self: self$C
49018
49347
  });
49019
49348
 
49020
49349
  const listDark = {
@@ -49024,7 +49353,7 @@
49024
49353
  InternalSelectMenu: internalSelectMenuDark,
49025
49354
  Input: inputDark
49026
49355
  },
49027
- self: self$D
49356
+ self: self$C
49028
49357
  };
49029
49358
 
49030
49359
  function createPartialInvertedVars(color, activeItemColor, activeTextColor, groupTextColor) {
@@ -49067,7 +49396,7 @@
49067
49396
  groupTextColorInverted: groupTextColor
49068
49397
  };
49069
49398
  }
49070
- function self$C(vars) {
49399
+ function self$B(vars) {
49071
49400
  const {
49072
49401
  textSecondary,
49073
49402
  borderRadiusSmall,
@@ -49135,7 +49464,7 @@
49135
49464
  Tooltip: tooltipLight,
49136
49465
  Dropdown: dropdownLight
49137
49466
  },
49138
- self: self$C
49467
+ self: self$B
49139
49468
  });
49140
49469
 
49141
49470
  const menuDark = {
@@ -49145,60 +49474,8 @@
49145
49474
  Tooltip: tooltipDark,
49146
49475
  Dropdown: dropdownDark
49147
49476
  },
49148
- self: self$C
49149
- };
49150
-
49151
- function self$B(vars) {
49152
- const {
49153
- borderRadiusLarge,
49154
- elementsSecondary,
49155
- elementsTertiary,
49156
- textPrimary,
49157
- textSecondary,
49158
- textTertiary,
49159
- brandPrimary400,
49160
- staticGreen,
49161
- staticRed,
49162
- staticWhite
49163
- } = vars;
49164
- return {
49165
- messageBubbleBackgroundColorOwn: elementsTertiary,
49166
- messageBubbleBackgroundColorOther: elementsTertiary,
49167
- messageBubbleTextColorOwn: textPrimary,
49168
- messageBubbleTextColorOther: textPrimary,
49169
- messageTimeColor: textTertiary,
49170
- messageStatusReadColor: brandPrimary400,
49171
- messageStatusSuccessColor: staticGreen,
49172
- attachmentBackgroundColorOwn: staticWhite,
49173
- attachmentBackgroundColorOther: staticWhite,
49174
- messageErrorColor: staticRed,
49175
- messageBorderRadius: borderRadiusLarge,
49176
- unreadNotificationBackgroundColor: brandPrimary400,
49177
- unreadNotificationTextColor: elementsSecondary,
49178
- serviceMessageTextColor: textSecondary,
49179
- serviceMessageBackgroundColor: "transparent",
49180
- messageTitleColor: textPrimary
49181
- };
49182
- }
49183
- const messageBubbleLight = createTheme$1({
49184
- name: "MessageBubble",
49185
- common: derived,
49186
- peers: {
49187
- StatusIcon: iconLight
49188
- },
49189
49477
  self: self$B
49190
- });
49191
-
49192
- const messageBubbleDark = createTheme$1({
49193
- name: "MessageBubble",
49194
- common: derived$1,
49195
- peers: {
49196
- StatusIcon: iconDark$1
49197
- },
49198
- self: vars => ({
49199
- ...self$B(vars)
49200
- })
49201
- });
49478
+ };
49202
49479
 
49203
49480
  function self$A(vars) {
49204
49481
  const {
@@ -50574,20 +50851,6 @@
50574
50851
  self: self$g
50575
50852
  };
50576
50853
 
50577
- const prevIcon = /* @__PURE__ */ vue.h("svg", { viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ vue.h(
50578
- "path",
50579
- {
50580
- d: "M6 5C5.75454 5 5.55039 5.17688 5.50806 5.41012L5.5 5.5V14.5C5.5 14.7761 5.72386 15 6 15C6.24546 15 6.44961 14.8231 6.49194 14.5899L6.5 14.5V5.5C6.5 5.22386 6.27614 5 6 5ZM13.8536 5.14645C13.68 4.97288 13.4106 4.9536 13.2157 5.08859L13.1464 5.14645L8.64645 9.64645C8.47288 9.82001 8.4536 10.0894 8.58859 10.2843L8.64645 10.3536L13.1464 14.8536C13.3417 15.0488 13.6583 15.0488 13.8536 14.8536C14.0271 14.68 14.0464 14.4106 13.9114 14.2157L13.8536 14.1464L9.70711 10L13.8536 5.85355C14.0488 5.65829 14.0488 5.34171 13.8536 5.14645Z",
50581
- fill: "currentColor"
50582
- }
50583
- ));
50584
- const nextIcon = /* @__PURE__ */ vue.h("svg", { viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ vue.h(
50585
- "path",
50586
- {
50587
- d: "M13.5 5C13.7455 5 13.9496 5.17688 13.9919 5.41012L14 5.5V14.5C14 14.7761 13.7761 15 13.5 15C13.2545 15 13.0504 14.8231 13.0081 14.5899L13 14.5V5.5C13 5.22386 13.2239 5 13.5 5ZM5.64645 5.14645C5.82001 4.97288 6.08944 4.9536 6.28431 5.08859L6.35355 5.14645L10.8536 9.64645C11.0271 9.82001 11.0464 10.0894 10.9114 10.2843L10.8536 10.3536L6.35355 14.8536C6.15829 15.0488 5.84171 15.0488 5.64645 14.8536C5.47288 14.68 5.4536 14.4106 5.58859 14.2157L5.64645 14.1464L9.79289 10L5.64645 5.85355C5.45118 5.65829 5.45118 5.34171 5.64645 5.14645Z",
50588
- fill: "currentColor"
50589
- }
50590
- ));
50591
50854
  const closeIcon = /* @__PURE__ */ vue.h("svg", { viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ vue.h(
50592
50855
  "path",
50593
50856
  {
@@ -50595,22 +50858,6 @@
50595
50858
  fill: "currentColor"
50596
50859
  }
50597
50860
  ));
50598
- const downloadIcon = /* @__PURE__ */ vue.h(
50599
- "svg",
50600
- {
50601
- xmlns: "http://www.w3.org/2000/svg",
50602
- width: "32",
50603
- height: "32",
50604
- viewBox: "0 0 1024 1024"
50605
- },
50606
- /* @__PURE__ */ vue.h(
50607
- "path",
50608
- {
50609
- fill: "currentColor",
50610
- d: "M505.7 661a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"
50611
- }
50612
- )
50613
- );
50614
50861
 
50615
50862
  const imagePreviewSharedProps = {
50616
50863
  ...useTheme.props,
@@ -51060,7 +51307,8 @@
51060
51307
  toolbarIconColor,
51061
51308
  toolbarBorderRadius,
51062
51309
  toolbarBoxShadow,
51063
- toolbarColor
51310
+ toolbarColor,
51311
+ overlayColor
51064
51312
  }
51065
51313
  } = themeRef.value;
51066
51314
  return {
@@ -51068,7 +51316,8 @@
51068
51316
  "--u-toolbar-icon-color": toolbarIconColor,
51069
51317
  "--u-toolbar-color": toolbarColor,
51070
51318
  "--u-toolbar-border-radius": toolbarBorderRadius,
51071
- "--u-toolbar-box-shadow": toolbarBoxShadow
51319
+ "--u-toolbar-box-shadow": toolbarBoxShadow,
51320
+ "--u-overlay-color": overlayColor
51072
51321
  };
51073
51322
  });
51074
51323
  const { inlineThemeDisabled } = useConfig();
@@ -51117,14 +51366,6 @@
51117
51366
  },
51118
51367
  render() {
51119
51368
  const { clsPrefix, renderToolbar, withTooltip } = this;
51120
- const prevNode = withTooltip(
51121
- /* @__PURE__ */ vue.h(UBaseIcon, { clsPrefix, onClick: this.handleSwitchPrev }, { default: () => prevIcon }),
51122
- "tipPrevious"
51123
- );
51124
- const nextNode = withTooltip(
51125
- /* @__PURE__ */ vue.h(UBaseIcon, { clsPrefix, onClick: this.handleSwitchNext }, { default: () => nextIcon }),
51126
- "tipNext"
51127
- );
51128
51369
  const rotateCounterclockwiseNode = withTooltip(
51129
51370
  /* @__PURE__ */ vue.h(UBaseIcon, { clsPrefix, onClick: this.rotateCounterclockwise }, {
51130
51371
  default: () => /* @__PURE__ */ vue.h(RotateCounterclockwiseIcon, null)
@@ -51137,22 +51378,10 @@
51137
51378
  }),
51138
51379
  "tipClockwise"
51139
51380
  );
51140
- const originalSizeNode = withTooltip(
51141
- /* @__PURE__ */ vue.h(UBaseIcon, { clsPrefix, onClick: this.resizeToOrignalImageSize }, {
51142
- default: () => {
51143
- return /* @__PURE__ */ vue.h(ResizeSmallIcon, null);
51144
- }
51145
- }),
51146
- "tipOriginalSize"
51147
- );
51148
51381
  const zoomOutNode = withTooltip(
51149
51382
  /* @__PURE__ */ vue.h(UBaseIcon, { clsPrefix, onClick: this.zoomOut }, { default: () => /* @__PURE__ */ vue.h(ZoomOutIcon, null) }),
51150
51383
  "tipZoomOut"
51151
51384
  );
51152
- const downloadNode = withTooltip(
51153
- /* @__PURE__ */ vue.h(UBaseIcon, { clsPrefix, onClick: this.handleDownloadClick }, { default: () => downloadIcon }),
51154
- "tipDownload"
51155
- );
51156
51385
  const closeNode = withTooltip(
51157
51386
  /* @__PURE__ */ vue.h(UBaseIcon, { clsPrefix, onClick: () => this.close() }, { default: () => closeIcon }),
51158
51387
  "tipClose"
@@ -51194,17 +51423,13 @@
51194
51423
  return null;
51195
51424
  return /* @__PURE__ */ vue.h("div", { class: `${clsPrefix}-image-preview-toolbar` }, renderToolbar ? renderToolbar({
51196
51425
  nodes: {
51197
- prev: prevNode,
51198
- next: nextNode,
51199
51426
  rotateCounterclockwise: rotateCounterclockwiseNode,
51200
51427
  rotateClockwise: rotateClockwiseNode,
51201
- resizeToOriginalSize: originalSizeNode,
51202
51428
  zoomOut: zoomOutNode,
51203
51429
  zoomIn: zoomInNode,
51204
- download: downloadNode,
51205
51430
  close: closeNode
51206
51431
  }
51207
- }) : /* @__PURE__ */ vue.h(vue.Fragment, null, this.onPrev ? /* @__PURE__ */ vue.h(vue.Fragment, null, prevNode, nextNode) : null, rotateCounterclockwiseNode, rotateClockwiseNode, originalSizeNode, zoomOutNode, zoomInNode, downloadNode, closeNode));
51432
+ }) : /* @__PURE__ */ vue.h(vue.Fragment, null, rotateCounterclockwiseNode, rotateClockwiseNode, zoomOutNode, zoomInNode, closeNode));
51208
51433
  }
51209
51434
  }) : null,
51210
51435
  /* @__PURE__ */ vue.h(
@@ -51859,7 +52084,7 @@
51859
52084
  }
51860
52085
  });
51861
52086
 
51862
- function useUploadActionsRender(opts) {
52087
+ function useUploadActionsRender(options) {
51863
52088
  const {
51864
52089
  clsPrefix,
51865
52090
  listType,
@@ -51879,7 +52104,7 @@
51879
52104
  handleRetryClick,
51880
52105
  handleDownloadClick,
51881
52106
  capitalizeFirstLetter
51882
- } = opts;
52107
+ } = options;
51883
52108
  const getExt = (name) => {
51884
52109
  const i = name.lastIndexOf(".");
51885
52110
  return i === -1 || i === name.length - 1 ? "" : name.slice(i + 1);
@@ -52006,159 +52231,6 @@
52006
52231
  return { icon, actionsNode };
52007
52232
  }
52008
52233
 
52009
- function isImageFileType(type) {
52010
- return type.includes("image/");
52011
- }
52012
- function getExtname(url = "") {
52013
- const temp = url.split("/");
52014
- const filename = temp[temp.length - 1];
52015
- const filenameWithoutSuffix = filename.split(/#|\?/)[0];
52016
- return (/\.[^./\\]*$/.exec(filenameWithoutSuffix) || [""])[0];
52017
- }
52018
- const imageExtensionRegex = /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i;
52019
- function capitalizeFirstLetter(str) {
52020
- if (!str) return str;
52021
- return str.charAt(0).toUpperCase() + str.slice(1);
52022
- }
52023
- const isImageFile = file => {
52024
- if (file.type) {
52025
- return isImageFileType(file.type);
52026
- }
52027
- const fileNameExtension = getExtname(file.name || "");
52028
- if (imageExtensionRegex.test(fileNameExtension)) {
52029
- return true;
52030
- }
52031
- const url = file.thumbnailUrl || file.url || "";
52032
- const urlExtension = getExtname(url);
52033
- if (/^data:image\//.test(url) || imageExtensionRegex.test(urlExtension)) {
52034
- return true;
52035
- }
52036
- return false;
52037
- };
52038
- async function createImageDataUrl(file) {
52039
- return await new Promise(resolve => {
52040
- if (!file.type || !isImageFileType(file.type)) {
52041
- resolve("");
52042
- return;
52043
- }
52044
- resolve(window.URL.createObjectURL(file));
52045
- });
52046
- }
52047
- const environmentSupportFile = isBrowser$1 && window.FileReader && window.File;
52048
- function isFileSystemDirectoryEntry(item) {
52049
- return item.isDirectory;
52050
- }
52051
- function isFileSystemFileEntry(item) {
52052
- return item.isFile;
52053
- }
52054
- async function getFilesFromEntries(entries, directory) {
52055
- const fileAndEntries = [];
52056
- let _resolve;
52057
- let requestCallbackCount = 0;
52058
- function lock() {
52059
- requestCallbackCount++;
52060
- }
52061
- function unlock() {
52062
- requestCallbackCount--;
52063
- if (!requestCallbackCount) {
52064
- _resolve(fileAndEntries);
52065
- }
52066
- }
52067
- function _getFilesFromEntries(entries2) {
52068
- entries2.forEach(entry => {
52069
- if (!entry) return;
52070
- lock();
52071
- if (directory && isFileSystemDirectoryEntry(entry)) {
52072
- const directoryReader = entry.createReader();
52073
- lock();
52074
- directoryReader.readEntries(entries3 => {
52075
- _getFilesFromEntries(entries3);
52076
- unlock();
52077
- }, () => {
52078
- unlock();
52079
- });
52080
- } else if (isFileSystemFileEntry(entry)) {
52081
- lock();
52082
- entry.file(file => {
52083
- fileAndEntries.push({
52084
- file,
52085
- entry,
52086
- source: "dnd"
52087
- });
52088
- unlock();
52089
- }, () => {
52090
- unlock();
52091
- });
52092
- }
52093
- unlock();
52094
- });
52095
- }
52096
- await new Promise(resolve => {
52097
- _resolve = resolve;
52098
- _getFilesFromEntries(entries);
52099
- });
52100
- return fileAndEntries;
52101
- }
52102
- function createSettledFileInfo(fileInfo) {
52103
- const {
52104
- id,
52105
- name,
52106
- percentage,
52107
- status,
52108
- url,
52109
- file,
52110
- thumbnailUrl,
52111
- type,
52112
- fullPath,
52113
- batchId
52114
- } = fileInfo;
52115
- return {
52116
- id,
52117
- name,
52118
- percentage: percentage ?? null,
52119
- status,
52120
- url: url ?? null,
52121
- file: file ?? null,
52122
- thumbnailUrl: thumbnailUrl ?? null,
52123
- type: type ?? null,
52124
- fullPath: fullPath ?? null,
52125
- batchId: batchId ?? null
52126
- };
52127
- }
52128
- function matchType(name, mimeType, accept) {
52129
- name = name.toLowerCase();
52130
- mimeType = mimeType.toLocaleLowerCase();
52131
- accept = accept.toLocaleLowerCase();
52132
- const acceptAtoms = accept.split(",").map(acceptAtom => acceptAtom.trim()).filter(Boolean);
52133
- return acceptAtoms.some(acceptAtom => {
52134
- if (acceptAtom.startsWith(".")) {
52135
- if (name.endsWith(acceptAtom)) return true;
52136
- } else if (acceptAtom.includes("/")) {
52137
- const [type, subtype] = mimeType.split("/");
52138
- const [acceptType, acceptSubtype] = acceptAtom.split("/");
52139
- if (acceptType === "*" || type && acceptType && acceptType === type) {
52140
- if (acceptSubtype === "*" || subtype && acceptSubtype && acceptSubtype === subtype) {
52141
- return true;
52142
- }
52143
- }
52144
- } else {
52145
- return true;
52146
- }
52147
- return false;
52148
- });
52149
- }
52150
- function download(url, name) {
52151
- if (!url) return;
52152
- const a = document.createElement("a");
52153
- a.href = url;
52154
- if (name !== void 0) {
52155
- a.download = name;
52156
- }
52157
- document.body.appendChild(a);
52158
- a.click();
52159
- document.body.removeChild(a);
52160
- }
52161
-
52162
52234
  const buttonThemeOverrides = {
52163
52235
  paddingMedium: "0 3px",
52164
52236
  heightMedium: "24px",
@@ -52236,7 +52308,12 @@
52236
52308
  file: { status },
52237
52309
  listType
52238
52310
  } = props;
52239
- return ["finished"].includes(status) && mergedThumbnailUrlRef.value && listType === "image-card";
52311
+ if (!["finished"].includes(status))
52312
+ return false;
52313
+ if (listType === "preview-list") {
52314
+ return UUpload.isFilePreviewable(props.file);
52315
+ }
52316
+ return !!mergedThumbnailUrlRef.value && listType === "image-card";
52240
52317
  });
52241
52318
  async function handleRetryClick() {
52242
52319
  const onRetry = UUpload.onRetryRef.value;
@@ -52315,6 +52392,8 @@
52315
52392
  } = UUpload;
52316
52393
  if (onPreview) {
52317
52394
  onPreview(props.file);
52395
+ } else if (props.listType === "preview-list") {
52396
+ UUpload.openFilePreview(props.file);
52318
52397
  } else if (props.listType === "image-card") {
52319
52398
  const { value } = imageRef;
52320
52399
  if (!value)
@@ -52401,7 +52480,8 @@
52401
52480
  `${clsPrefix}-upload-file`,
52402
52481
  `${clsPrefix}-upload-file--${this.progressStatus}-status`,
52403
52482
  file.url && file.status !== "error" && imageCardTypes.includes(listType) && `${clsPrefix}-upload-file--with-url`,
52404
- `${clsPrefix}-upload-file--${listType === "image" || listType === "image-card" ? "image-card" : "text"}-type`
52483
+ `${clsPrefix}-upload-file--${listType === "image" || listType === "image-card" ? "image-card" : "text"}-type`,
52484
+ listType === "preview-list" && `${clsPrefix}-upload-file--preview-list-type`
52405
52485
  ]
52406
52486
  },
52407
52487
  /* @__PURE__ */ vue.h(
@@ -52569,11 +52649,17 @@
52569
52649
  themeClassRef,
52570
52650
  maxReachedRef,
52571
52651
  showTriggerRef,
52572
- imageGroupPropsRef
52652
+ imageGroupPropsRef,
52653
+ previewSrcListRef,
52654
+ previewShowRef,
52655
+ previewCurrentRef
52573
52656
  } = UUpload;
52574
52657
  const isImageCardTypeRef = vue.computed(
52575
52658
  () => listTypeRef.value === "image-card" || listTypeRef.value === "image"
52576
52659
  );
52660
+ const isPreviewListTypeRef = vue.computed(
52661
+ () => listTypeRef.value === "preview-list"
52662
+ );
52577
52663
  const renderFileList = () => mergedFileListRef.value.map((file) => /* @__PURE__ */ vue.h(
52578
52664
  UUploadFile,
52579
52665
  {
@@ -52587,6 +52673,21 @@
52587
52673
  const renderUploadFileList = () => isImageCardTypeRef.value ? /* @__PURE__ */ vue.h(_UImageGroup, { ...imageGroupPropsRef.value }, { default: renderFileList }) : /* @__PURE__ */ vue.h(FadeInExpandTransition, { group: true }, {
52588
52674
  default: renderFileList
52589
52675
  });
52676
+ const renderPreview = () => /* @__PURE__ */ vue.h(
52677
+ _UImageGroup,
52678
+ {
52679
+ ...imageGroupPropsRef.value,
52680
+ srcList: previewSrcListRef.value,
52681
+ show: previewShowRef.value,
52682
+ current: previewCurrentRef.value,
52683
+ onUpdateShow: (show) => {
52684
+ previewShowRef.value = show;
52685
+ },
52686
+ onUpdateCurrent: (current) => {
52687
+ previewCurrentRef.value = current;
52688
+ }
52689
+ }
52690
+ );
52590
52691
  return () => {
52591
52692
  const { value: mergedClsPrefix } = mergedClsPrefixRef;
52592
52693
  const { value: abstract } = abstractRef;
@@ -52605,6 +52706,7 @@
52605
52706
  ]
52606
52707
  },
52607
52708
  renderUploadFileList(),
52709
+ isPreviewListTypeRef.value && renderPreview(),
52608
52710
  showTriggerRef.value && !maxReachedRef.value && isImageCardTypeRef.value && /* @__PURE__ */ vue.h(_UUploadTrigger, null, slots)
52609
52711
  );
52610
52712
  };
@@ -52870,119 +52972,6 @@
52870
52972
  };
52871
52973
  }
52872
52974
 
52873
- const uploadProps = {
52874
- ...useTheme.props,
52875
- name: {
52876
- type: String,
52877
- default: "file"
52878
- },
52879
- accept: String,
52880
- action: String,
52881
- customRequest: Function,
52882
- directory: Boolean,
52883
- directoryDnd: { type: Boolean, default: void 0 },
52884
- method: {
52885
- type: String,
52886
- default: "POST"
52887
- },
52888
- multiple: Boolean,
52889
- showFileList: {
52890
- type: Boolean,
52891
- default: true
52892
- },
52893
- data: [Object, Function],
52894
- headers: [Object, Function],
52895
- withCredentials: Boolean,
52896
- responseType: {
52897
- type: String,
52898
- default: ""
52899
- },
52900
- disabled: {
52901
- type: Boolean,
52902
- default: void 0
52903
- },
52904
- vertical: {
52905
- type: Boolean,
52906
- default: false
52907
- },
52908
- icon: Object,
52909
- onChange: Function,
52910
- onRemove: Function,
52911
- onFinish: Function,
52912
- onError: Function,
52913
- onRetry: Function,
52914
- onBeforeUpload: Function,
52915
- isErrorState: Function,
52916
- /** currently not used */
52917
- onDownload: Function,
52918
- defaultUpload: {
52919
- type: Boolean,
52920
- default: true
52921
- },
52922
- fileList: Array,
52923
- "onUpdate:fileList": [Function, Array],
52924
- onUpdateFileList: [Function, Array],
52925
- fileListClass: String,
52926
- fileListStyle: [String, Object],
52927
- defaultFileList: {
52928
- type: Array,
52929
- default: () => []
52930
- },
52931
- showCancelButton: {
52932
- type: Boolean,
52933
- default: true
52934
- },
52935
- showRemoveButton: {
52936
- type: Boolean,
52937
- default: true
52938
- },
52939
- showDownloadButton: Boolean,
52940
- showRetryButton: {
52941
- type: Boolean,
52942
- default: true
52943
- },
52944
- customDownload: Function,
52945
- showPreviewButton: {
52946
- type: Boolean,
52947
- default: true
52948
- },
52949
- listType: {
52950
- type: String,
52951
- default: "text"
52952
- },
52953
- onPreview: Function,
52954
- shouldUseThumbnailUrl: {
52955
- type: Function,
52956
- default: (file) => {
52957
- if (!environmentSupportFile)
52958
- return false;
52959
- return isImageFile(file);
52960
- }
52961
- },
52962
- createThumbnailUrl: Function,
52963
- abstract: Boolean,
52964
- max: Number,
52965
- showTrigger: {
52966
- type: Boolean,
52967
- default: true
52968
- },
52969
- imageGroupProps: Object,
52970
- inputProps: Object,
52971
- triggerClass: String,
52972
- triggerStyle: [String, Object],
52973
- renderIcon: Function,
52974
- label: String,
52975
- size: {
52976
- type: String,
52977
- default: "medium"
52978
- },
52979
- title: String,
52980
- subtitle: String,
52981
- noIcon: {
52982
- type: Boolean,
52983
- default: false
52984
- }
52985
- };
52986
52975
  var _UUpload = vue.defineComponent({
52987
52976
  name: "Upload",
52988
52977
  props: uploadProps,
@@ -53032,15 +53021,15 @@
53032
53021
  function openFileDialog() {
53033
53022
  inputElRef.value?.click();
53034
53023
  }
53035
- function handleFileInputChange(e) {
53036
- const target = e.target;
53024
+ function handleFileInputChange(event) {
53025
+ const target = event.target;
53037
53026
  handleFileAddition(
53038
53027
  target.files ? Array.from(target.files).map((file) => ({
53039
53028
  file,
53040
53029
  entry: null,
53041
53030
  source: "input"
53042
53031
  })) : null,
53043
- e
53032
+ event
53044
53033
  );
53045
53034
  target.value = "";
53046
53035
  }
@@ -53060,12 +53049,12 @@
53060
53049
  uploadKeyIndexRef.value += 1;
53061
53050
  return key;
53062
53051
  }
53063
- function handleFileAddition(fileAndEntries, e) {
53052
+ function handleFileAddition(fileAndEntries, event) {
53064
53053
  if (!fileAndEntries || fileAndEntries.length === 0)
53065
53054
  return;
53066
53055
  const { onBeforeUpload } = props;
53067
53056
  fileAndEntries = mergedMultipleRef.value ? fileAndEntries : [fileAndEntries[0]];
53068
- const { max, accept } = props;
53057
+ const { max, accept, maxSize } = props;
53069
53058
  fileAndEntries = fileAndEntries.filter(({ file, source }) => {
53070
53059
  if (source === "dnd" && accept?.trim()) {
53071
53060
  return matchType(file.name, file.type, accept);
@@ -53094,6 +53083,10 @@
53094
53083
  thumbnailUrl: null,
53095
53084
  fullPath: entry?.fullPath ?? `/${file.webkitRelativePath || file.name}`
53096
53085
  };
53086
+ if (isFileSizeExceeded(file, maxSize)) {
53087
+ fileInfo.status = "error";
53088
+ return fileInfo;
53089
+ }
53097
53090
  if (!onBeforeUpload || await onBeforeUpload({
53098
53091
  file: fileInfo,
53099
53092
  fileList: mergedFileListRef.value
@@ -53106,7 +53099,7 @@
53106
53099
  let nextTickChain = Promise.resolve();
53107
53100
  fileInfos.forEach((fileInfo) => {
53108
53101
  nextTickChain = nextTickChain.then(vue.nextTick).then(() => {
53109
- fileInfo && doChange(fileInfo, e, {
53102
+ fileInfo && doChange(fileInfo, event, {
53110
53103
  append: true
53111
53104
  });
53112
53105
  });
@@ -53133,6 +53126,15 @@
53133
53126
  filesToUpload.forEach((file) => {
53134
53127
  const { status } = file;
53135
53128
  if (status === "pending" || status === "error" && shouldReupload) {
53129
+ if (isFileSizeExceeded(file.file, props.maxSize)) {
53130
+ if (status === "pending") {
53131
+ const fileAfterChange = Object.assign({}, file, {
53132
+ status: "error"
53133
+ });
53134
+ doChange(fileAfterChange);
53135
+ }
53136
+ return;
53137
+ }
53136
53138
  if (props.customRequest) {
53137
53139
  customSubmitImpl({
53138
53140
  inst: {
@@ -53213,6 +53215,26 @@
53213
53215
  }
53214
53216
  return "";
53215
53217
  }
53218
+ function isFilePreviewable(file) {
53219
+ return props.shouldUseThumbnailUrl(file) && getFilePreviewSrc(file) !== null;
53220
+ }
53221
+ const previewFileListRef = vue.computed(
53222
+ () => mergedFileListRef.value.filter(isFilePreviewable)
53223
+ );
53224
+ const previewSrcListRef = vue.computed(
53225
+ () => previewFileListRef.value.map((file) => getFilePreviewSrc(file))
53226
+ );
53227
+ const previewShowRef = vue.ref(false);
53228
+ const previewCurrentRef = vue.ref(0);
53229
+ function openFilePreview(file) {
53230
+ const index = previewFileListRef.value.findIndex(
53231
+ ({ id }) => id === file.id
53232
+ );
53233
+ if (index < 0)
53234
+ return;
53235
+ previewCurrentRef.value = index;
53236
+ previewShowRef.value = true;
53237
+ }
53216
53238
  const cssVarsRef = vue.computed(() => {
53217
53239
  const { value: size } = formItem.mergedSizeRef;
53218
53240
  const {
@@ -53332,7 +53354,12 @@
53332
53354
  imageGroupPropsRef: vue.toRef(props, "imageGroupProps"),
53333
53355
  mergedDirectoryDndRef: vue.computed(() => {
53334
53356
  return props.directoryDnd ?? props.directory;
53335
- })
53357
+ }),
53358
+ previewSrcListRef,
53359
+ previewShowRef,
53360
+ previewCurrentRef,
53361
+ isFilePreviewable,
53362
+ openFilePreview
53336
53363
  });
53337
53364
  const exposedMethods = {
53338
53365
  clear: () => {
@@ -54649,6 +54676,8 @@
54649
54676
  width: fit-content;
54650
54677
  display: flex;
54651
54678
  flex-direction: column;
54679
+ padding: 12px;
54680
+ gap: 12px;
54652
54681
  `, [cM("own", `
54653
54682
  background-color: var(--u-message-bubble-background-color-own);
54654
54683
  color: var(--u-message-bubble-text-color-own);
@@ -54656,16 +54685,12 @@
54656
54685
  border-bottom-right-radius: 6px;
54657
54686
  `)]), cE("title", `
54658
54687
  color: var(--u-message-bubble-title-color);
54659
- padding: 12px 16px 0;
54660
54688
  white-space: pre-wrap;
54661
54689
  `), cE("text", `
54662
- padding: 12px 16px;
54663
54690
  white-space: pre-wrap;
54664
- `), cE("text", `
54665
- padding-top: 8px;
54666
- `, [c$1("&&:first-child", `
54667
- padding-top: 12px;
54668
- `)]), cE("meta", `
54691
+ `), cE("after-content", `
54692
+ white-space: normal;
54693
+ `), cE("meta", `
54669
54694
  display: flex;
54670
54695
  align-items: center;
54671
54696
  gap: 4px;
@@ -54837,6 +54862,12 @@
54837
54862
  );
54838
54863
  return url ?? null;
54839
54864
  };
54865
+ const getAttachmentUrl = (attachment) => {
54866
+ if (!attachment.url || attachment.url === "#")
54867
+ return null;
54868
+ return attachment.url;
54869
+ };
54870
+ const isAttachmentPreviewable = (file) => Boolean(file.thumbnailUrl);
54840
54871
  const handleAttachmentDownload = async (file) => {
54841
54872
  if (props.onAttachmentDownload) {
54842
54873
  const attachment = normalizedAttachmentsRef.value.find(
@@ -54877,7 +54908,7 @@
54877
54908
  name: attachment.name,
54878
54909
  status: attachment.status || MessageBubbleAttachmentStatus.FINISHED,
54879
54910
  percentage: attachment.percentage ?? null,
54880
- url: attachment.url ?? null,
54911
+ url: getAttachmentUrl(attachment),
54881
54912
  thumbnailUrl: getThumbnailUrl(attachment),
54882
54913
  type: attachment.type ?? null,
54883
54914
  file: null,
@@ -54888,6 +54919,8 @@
54888
54919
  _UUpload,
54889
54920
  {
54890
54921
  abstract: true,
54922
+ listType: "preview-list",
54923
+ shouldUseThumbnailUrl: isAttachmentPreviewable,
54891
54924
  fileList,
54892
54925
  fileListStyle: withPadding ? {
54893
54926
  display: "flex",
@@ -54928,8 +54961,10 @@
54928
54961
  props.actions && props.actions.length > 0
54929
54962
  );
54930
54963
  const hasTitle = Boolean(props.title || slots.title);
54964
+ const afterContentSlot = slots.afterContent || slots["after-content"];
54965
+ const hasAfterContent = Boolean(afterContentSlot);
54931
54966
  const hasContentInsideBubble = Boolean(
54932
- props.content || slots.default || hasTitle || normalizedAttachmentsRef.value.length > 1
54967
+ props.content || slots.default || hasAfterContent || hasTitle || normalizedAttachmentsRef.value.length > 1
54933
54968
  );
54934
54969
  const messageBubbleContent = hasContentInsideBubble ? /* @__PURE__ */ vue.h(
54935
54970
  "div",
@@ -54948,7 +54983,14 @@
54948
54983
  slots.title ? slots.title(messagePayloadRef.value) : resolveRenderContent(props.title)
54949
54984
  ),
54950
54985
  normalizedAttachmentsRef.value.length > 0 && renderAttachment(true),
54951
- (props.content || slots.default) && /* @__PURE__ */ vue.h("div", { class: `${mergedClsPrefixRef.value}-message-bubble__text` }, slots.default ? slots.default(messagePayloadRef.value) : resolveRenderContent(props.content))
54986
+ (props.content || slots.default) && /* @__PURE__ */ vue.h("div", { class: `${mergedClsPrefixRef.value}-message-bubble__text` }, slots.default ? slots.default(messagePayloadRef.value) : resolveRenderContent(props.content)),
54987
+ hasAfterContent && /* @__PURE__ */ vue.h(
54988
+ "div",
54989
+ {
54990
+ class: `${mergedClsPrefixRef.value}-message-bubble__after-content`
54991
+ },
54992
+ afterContentSlot?.(messagePayloadRef.value)
54993
+ )
54952
54994
  ) : normalizedAttachmentsRef.value.length === 1 ? renderAttachment() : null;
54953
54995
  return /* @__PURE__ */ vue.h(
54954
54996
  "div",
@@ -55590,6 +55632,21 @@
55590
55632
  const { mergedClsPrefixRef } = useConfig(props);
55591
55633
  const themeRef = UChat?.mergedThemeRef ?? useTheme("Chat", "-chat", style$15, chatLight, props, mergedClsPrefixRef);
55592
55634
  const { localeRef } = useLocale("Chat");
55635
+ const messageBubbleThemeOverridesRef = vue.computed(() => {
55636
+ const { self, peerOverrides } = themeRef.value;
55637
+ return {
55638
+ messageBubbleBackgroundColorOwn: self.messageBubbleBackgroundColorOwn,
55639
+ messageBubbleBackgroundColorOther: self.messageBubbleBackgroundColorOther,
55640
+ messageBubbleTextColorOwn: self.messageBubbleTextColorOwn,
55641
+ messageBubbleTextColorOther: self.messageBubbleTextColorOther,
55642
+ messageTimeColor: self.messageTimeColor,
55643
+ attachmentBackgroundColorOwn: self.attachmentBackgroundColorOwn,
55644
+ attachmentBackgroundColorOther: self.attachmentBackgroundColorOther,
55645
+ unreadNotificationBackgroundColor: self.unreadNotificationBackgroundColor,
55646
+ unreadNotificationTextColor: self.unreadNotificationTextColor,
55647
+ ...peerOverrides.MessageBubble
55648
+ };
55649
+ });
55593
55650
  const cssVarsRef = vue.computed(() => {
55594
55651
  const {
55595
55652
  common: {
@@ -55705,7 +55762,9 @@
55705
55762
  {
55706
55763
  type: MessageBubbleType.SERVICE,
55707
55764
  serviceVariant: MessageBubbleServiceVariant.UNREAD,
55708
- content: `${count} ${mergedUnreadNotificationTextRef.value}`
55765
+ content: `${count} ${mergedUnreadNotificationTextRef.value}`,
55766
+ theme: themeRef.value.peers.MessageBubble,
55767
+ themeOverrides: messageBubbleThemeOverridesRef.value
55709
55768
  }
55710
55769
  );
55711
55770
  };
@@ -55717,7 +55776,9 @@
55717
55776
  key: String(message.id),
55718
55777
  type: MessageBubbleType.SERVICE,
55719
55778
  serviceVariant,
55720
- content: message.content
55779
+ content: message.content,
55780
+ theme: themeRef.value.peers.MessageBubble,
55781
+ themeOverrides: messageBubbleThemeOverridesRef.value
55721
55782
  }
55722
55783
  );
55723
55784
  };
@@ -55760,12 +55821,15 @@
55760
55821
  retryText: mergedRetryTextRef.value,
55761
55822
  actions: getMessageBubbleActions(message),
55762
55823
  onRetry: handleMessageBubbleRetry,
55763
- onAttachmentDownload: handleMessageBubbleAttachmentDownload
55824
+ onAttachmentDownload: handleMessageBubbleAttachmentDownload,
55825
+ theme: themeRef.value.peers.MessageBubble,
55826
+ themeOverrides: messageBubbleThemeOverridesRef.value
55764
55827
  },
55765
55828
  {
55766
55829
  bubbleActions: slots.bubbleActions ? () => slots.bubbleActions?.(message) : void 0,
55767
55830
  messageStatus: slots.messageStatus ? () => slots.messageStatus?.(message) : void 0,
55768
55831
  messageAttachment: slots.messageAttachment ? () => slots.messageAttachment?.(message) : void 0,
55832
+ afterContent: slots.messageAfterContent ? () => slots.messageAfterContent?.(message) : void 0,
55769
55833
  "upload-file-title": slots.messageAttachmentTitle,
55770
55834
  "upload-file-subtitle": slots.messageAttachmentSubtitle
55771
55835
  }
@@ -56572,6 +56636,7 @@
56572
56636
  messageAttachmentTitle: slots.messageAttachmentTitle,
56573
56637
  messageAttachmentSubtitle: slots.messageAttachmentSubtitle,
56574
56638
  messageStatus: slots.messageStatus,
56639
+ messageAfterContent: slots.messageAfterContent,
56575
56640
  bubbleActions: slots.bubbleActions
56576
56641
  }
56577
56642
  );
@@ -117065,7 +117130,7 @@ ${icon.label}`.toLowerCase()
117065
117130
  });
117066
117131
  }
117067
117132
 
117068
- var version = "2.3.0";
117133
+ var version = "2.3.2";
117069
117134
 
117070
117135
  function create({
117071
117136
  componentPrefix = "U",