giime 0.9.3-beta.1 → 0.9.4-beta.1

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 (76) hide show
  1. package/dist/index.css +116 -116
  2. package/es/components/src/base/configProvider/ConfigProvider.vue.d.ts +1 -1
  3. package/es/components/src/base/configProvider/index.d.ts +3 -3
  4. package/es/components/src/base/image/Image.vue.d.ts +1 -1
  5. package/es/components/src/base/image/index.d.ts +2 -2
  6. package/es/components/src/base/imageViewer/ImageViewer.vue.d.ts +1 -1
  7. package/es/components/src/base/imageViewer/index.d.ts +1 -1
  8. package/es/components/src/base/progress/Progress.vue.d.ts +1 -1
  9. package/es/components/src/base/progress/index.d.ts +3 -3
  10. package/es/components/src/base/space/Space.vue.d.ts +2 -2
  11. package/es/components/src/base/space/index.d.ts +6 -6
  12. package/es/components/src/base/step/Step.vue.d.ts +1 -1
  13. package/es/components/src/base/step/index.d.ts +3 -3
  14. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +6 -3
  15. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
  16. package/es/components/src/composite/tableCustom/TableColumnVNodeRenderer.mjs +11 -9
  17. package/es/components/src/composite/tableCustom/TableColumnVNodeRenderer.mjs.map +1 -1
  18. package/es/components/src/composite/tableCustom/TableCustom.vue.mjs +1 -1
  19. package/es/components/src/composite/tableCustom/TableCustom.vue2.mjs +1 -1
  20. package/es/components/src/composite/tableCustom/TableCustom.vue2.mjs.map +1 -1
  21. package/es/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.mjs +7 -1
  22. package/es/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.mjs.map +1 -1
  23. package/es/giime/index.mjs +1 -0
  24. package/es/giime/index.mjs.map +1 -1
  25. package/es/giime/version.d.ts +1 -1
  26. package/es/giime/version.mjs +1 -1
  27. package/es/giime/version.mjs.map +1 -1
  28. package/es/hooks/store/common/useLangList/index.d.ts +1 -1
  29. package/es/hooks/store/useLineList/index.d.ts +1 -1
  30. package/es/index.css +116 -116
  31. package/es/utils/index.d.ts +1 -0
  32. package/es/utils/index.mjs +1 -0
  33. package/es/utils/index.mjs.map +1 -1
  34. package/es/utils/src/clarity/index.d.ts +67 -0
  35. package/es/utils/src/clarity/index.mjs +93 -0
  36. package/es/utils/src/clarity/index.mjs.map +1 -0
  37. package/es/utils/src/http/devProxy.mjs +1 -3
  38. package/es/utils/src/http/devProxy.mjs.map +1 -1
  39. package/lib/components/src/base/configProvider/ConfigProvider.vue.d.ts +1 -1
  40. package/lib/components/src/base/configProvider/index.d.ts +3 -3
  41. package/lib/components/src/base/image/Image.vue.d.ts +1 -1
  42. package/lib/components/src/base/image/index.d.ts +2 -2
  43. package/lib/components/src/base/imageViewer/ImageViewer.vue.d.ts +1 -1
  44. package/lib/components/src/base/imageViewer/index.d.ts +1 -1
  45. package/lib/components/src/base/progress/Progress.vue.d.ts +1 -1
  46. package/lib/components/src/base/progress/index.d.ts +3 -3
  47. package/lib/components/src/base/space/Space.vue.d.ts +2 -2
  48. package/lib/components/src/base/space/index.d.ts +6 -6
  49. package/lib/components/src/base/step/Step.vue.d.ts +1 -1
  50. package/lib/components/src/base/step/index.d.ts +3 -3
  51. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +6 -3
  52. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
  53. package/lib/components/src/composite/tableCustom/TableColumnVNodeRenderer.js +11 -9
  54. package/lib/components/src/composite/tableCustom/TableColumnVNodeRenderer.js.map +1 -1
  55. package/lib/components/src/composite/tableCustom/TableCustom.vue.js +1 -1
  56. package/lib/components/src/composite/tableCustom/TableCustom.vue2.js +1 -1
  57. package/lib/components/src/composite/tableCustom/TableCustom.vue2.js.map +1 -1
  58. package/lib/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.js +7 -1
  59. package/lib/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.js.map +1 -1
  60. package/lib/giime/index.js +375 -373
  61. package/lib/giime/index.js.map +1 -1
  62. package/lib/giime/version.d.ts +1 -1
  63. package/lib/giime/version.js +1 -1
  64. package/lib/giime/version.js.map +1 -1
  65. package/lib/hooks/store/common/useLangList/index.d.ts +1 -1
  66. package/lib/hooks/store/useLineList/index.d.ts +1 -1
  67. package/lib/index.css +116 -116
  68. package/lib/utils/index.d.ts +1 -0
  69. package/lib/utils/index.js +2 -0
  70. package/lib/utils/index.js.map +1 -1
  71. package/lib/utils/src/clarity/index.d.ts +67 -0
  72. package/lib/utils/src/clarity/index.js +95 -0
  73. package/lib/utils/src/clarity/index.js.map +1 -0
  74. package/lib/utils/src/http/devProxy.js +1 -3
  75. package/lib/utils/src/http/devProxy.js.map +1 -1
  76. package/package.json +1 -1
package/es/index.css CHANGED
@@ -887,57 +887,13 @@ video {
887
887
  .gm-group:hover .group-hover\:gm-block {
888
888
  display: block;
889
889
  }
890
- .gm-upload-pro-file {
891
- line-height: normal;
892
- }
893
- .gm-upload-pro-file .el-checkbox-group {
894
- font-size: unset;
895
- }
896
- .gm-upload-pro-file .el-checkbox {
897
- position: absolute;
898
- left: 10px;
899
- top: 0;
900
- z-index: 9;
901
- }
902
- .gm-upload-pro-file .el-upload-list--picture-card {
903
- gap: 10px;
904
- }
905
- .gm-upload-pro-file .el-upload-list__item {
906
- margin: 0;
907
- }
908
- .gm-upload-pro-file .el-upload-list__item-file-name {
909
- line-height: 1.7;
910
- }
911
- .gm-upload-pro-file .el-upload-dragger {
912
- padding: 0;
913
- border: none;
914
- width: 100%;
915
- height: 100%;
916
- display: flex;
917
- }
918
- .gm-upload-pro-file .el-upload--picture-card {
919
- border: none;
920
- }
921
-
922
- .gm-upload-pro-file-disabled .el-upload--picture-card {
923
- display: none;
924
- }
925
- .gm-upload-pro-file-disabled .el-upload-list__item-status-label {
926
- display: none;
927
- }
928
- .gm-upload-pro-preview-dialog[data-v-80b383d8] [data-v-80b383d8] .el-dialog__body {
929
- padding: 0;
930
- }
931
-
932
- .gm-upload-pro-file-picture-card[data-v-80b383d8] [data-v-80b383d8] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-80b383d8] [data-v-80b383d8] .el-upload--picture-card {
933
- width: auto;
934
- height: auto;
890
+ .gm-flex-center[data-v-c17deec9] {
891
+ align-items: center;
935
892
  }
936
893
 
937
- .gm-range-number .el-form-item[data-v-1ae16d96] {
938
- margin: 0;
894
+ .gm-flex-justify-between[data-v-c17deec9] {
895
+ justify-content: space-between;
939
896
  }
940
-
941
897
  .circular[data-v-d7b04fae] {
942
898
  animation: loading-rotate-d7b04fae 2s linear infinite;
943
899
  }
@@ -969,123 +925,100 @@ video {
969
925
  stroke-dashoffset: -120px;
970
926
  }
971
927
  }
972
- [data-v-050a4f74] .gmTableNoBorder .el-table__body .el-table__cell {
973
- border-right: none;
974
- }
975
928
 
976
- [data-v-050a4f74] .gmTableNoBorder .el-table__inner-wrapper:before {
977
- height: 0;
978
- }
979
-
980
- [data-v-050a4f74] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
981
- height: 0;
982
- }
983
-
984
- [data-v-050a4f74] .gmTableNoBorder.el-table--border:after {
985
- height: 0;
986
- }
987
-
988
- [data-v-050a4f74] .gmTableNoBorder.el-table--border:before {
989
- height: 0;
990
- }
991
-
992
- [data-v-050a4f74] .gmTableNoBorder .el-table__border-left-patch {
993
- height: 0;
994
- }
995
- [data-v-79615afd] .gmSearchForm .el-form-item {
996
- margin-right: 0;
997
- margin-bottom: 4px;
998
- }
999
- .gm-number-interval-single[data-v-4e6f4d6f] {
1000
- border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
1001
- box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
1002
- background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
1003
- }
1004
- .gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
1005
- box-shadow: none;
1006
- background: none;
1007
- }
1008
-
1009
- .gm-number-interval-close[data-v-4e6f4d6f] {
1010
- display: none;
1011
- color: var(--el-input-icon-color, var(--el-text-color-placeholder));
929
+ .gm-range-number .el-form-item[data-v-1ae16d96] {
930
+ margin: 0;
1012
931
  }
1013
932
 
1014
- .gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
1015
- display: flex;
1016
- }
1017
- .gm-upload-preview-dialog[data-v-c615121c] [data-v-c615121c] .el-dialog__body {
933
+ .gm-upload-pro-preview-dialog[data-v-80b383d8] [data-v-80b383d8] .el-dialog__body {
1018
934
  padding: 0;
1019
935
  }
1020
936
 
1021
- .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload-list__item, .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload--picture-card {
937
+ .gm-upload-pro-file-picture-card[data-v-80b383d8] [data-v-80b383d8] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-80b383d8] [data-v-80b383d8] .el-upload--picture-card {
1022
938
  width: auto;
1023
939
  height: auto;
1024
940
  }
1025
- .gm-flex-center[data-v-c17deec9] {
1026
- align-items: center;
1027
- }
1028
-
1029
- .gm-flex-justify-between[data-v-c17deec9] {
1030
- justify-content: space-between;
1031
- }
1032
- .gm-upload-file {
941
+ .gm-upload-pro-file {
1033
942
  line-height: normal;
1034
943
  }
1035
- .gm-upload-file li > .el-checkbox {
944
+ .gm-upload-pro-file .el-checkbox-group {
945
+ font-size: unset;
946
+ }
947
+ .gm-upload-pro-file .el-checkbox {
1036
948
  position: absolute;
1037
949
  left: 10px;
1038
950
  top: 0;
1039
951
  z-index: 9;
1040
952
  }
1041
- .gm-upload-file .el-upload-list--picture-card {
953
+ .gm-upload-pro-file .el-upload-list--picture-card {
1042
954
  gap: 10px;
1043
955
  }
1044
- .gm-upload-file .el-upload-list__item {
956
+ .gm-upload-pro-file .el-upload-list__item {
1045
957
  margin: 0;
1046
- border: none;
1047
958
  }
1048
- .gm-upload-file .el-upload-list__item-file-name {
1049
- line-height: normal;
959
+ .gm-upload-pro-file .el-upload-list__item-file-name {
960
+ line-height: 1.7;
1050
961
  }
1051
- .gm-upload-file .el-upload-dragger {
962
+ .gm-upload-pro-file .el-upload-dragger {
1052
963
  padding: 0;
1053
964
  border: none;
1054
965
  width: 100%;
1055
966
  height: 100%;
1056
967
  display: flex;
1057
968
  }
1058
- .gm-upload-file .el-upload--picture-card {
969
+ .gm-upload-pro-file .el-upload--picture-card {
1059
970
  border: none;
1060
971
  }
1061
972
 
1062
- .gm-upload-file-disabled .el-upload--picture-card {
973
+ .gm-upload-pro-file-disabled .el-upload--picture-card {
1063
974
  display: none;
1064
975
  }
1065
- .gm-upload-file-disabled .el-upload-list__item-status-label {
976
+ .gm-upload-pro-file-disabled .el-upload-list__item-status-label {
1066
977
  display: none;
1067
978
  }
1068
- [data-v-1e1d88ac] .gmTableNoBorder .el-table__body .el-table__cell {
979
+ .gm-number-interval-single[data-v-4e6f4d6f] {
980
+ border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
981
+ box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
982
+ background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
983
+ }
984
+ .gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
985
+ box-shadow: none;
986
+ background: none;
987
+ }
988
+
989
+ .gm-number-interval-close[data-v-4e6f4d6f] {
990
+ display: none;
991
+ color: var(--el-input-icon-color, var(--el-text-color-placeholder));
992
+ }
993
+
994
+ .gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
995
+ display: flex;
996
+ }
997
+ [data-v-79615afd] .gmSearchForm .el-form-item {
998
+ margin-right: 0;
999
+ margin-bottom: 4px;
1000
+ }
1001
+ [data-v-050a4f74] .gmTableNoBorder .el-table__body .el-table__cell {
1069
1002
  border-right: none;
1070
1003
  }
1071
1004
 
1072
- [data-v-1e1d88ac] .gmTableNoBorder .el-table__inner-wrapper:before {
1005
+ [data-v-050a4f74] .gmTableNoBorder .el-table__inner-wrapper:before {
1073
1006
  height: 0;
1074
1007
  }
1075
1008
 
1076
- [data-v-1e1d88ac] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1009
+ [data-v-050a4f74] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1077
1010
  height: 0;
1078
1011
  }
1079
1012
 
1080
- [data-v-1e1d88ac] .gmTableNoBorder.el-table--border:after {
1013
+ [data-v-050a4f74] .gmTableNoBorder.el-table--border:after {
1081
1014
  height: 0;
1082
1015
  }
1083
1016
 
1084
- [data-v-1e1d88ac] .gmTableNoBorder.el-table--border:before {
1017
+ [data-v-050a4f74] .gmTableNoBorder.el-table--border:before {
1085
1018
  height: 0;
1086
1019
  }
1087
1020
 
1088
- [data-v-1e1d88ac] .gmTableNoBorder .el-table__border-left-patch {
1021
+ [data-v-050a4f74] .gmTableNoBorder .el-table__border-left-patch {
1089
1022
  height: 0;
1090
1023
  }
1091
1024
 
@@ -1153,6 +1086,29 @@ video {
1153
1086
  border-radius: 10px;
1154
1087
  background: #eee;
1155
1088
  }
1089
+ [data-v-3f2c8504] .gmTableNoBorder .el-table__body .el-table__cell {
1090
+ border-right: none;
1091
+ }
1092
+
1093
+ [data-v-3f2c8504] .gmTableNoBorder .el-table__inner-wrapper:before {
1094
+ height: 0;
1095
+ }
1096
+
1097
+ [data-v-3f2c8504] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1098
+ height: 0;
1099
+ }
1100
+
1101
+ [data-v-3f2c8504] .gmTableNoBorder.el-table--border:after {
1102
+ height: 0;
1103
+ }
1104
+
1105
+ [data-v-3f2c8504] .gmTableNoBorder.el-table--border:before {
1106
+ height: 0;
1107
+ }
1108
+
1109
+ [data-v-3f2c8504] .gmTableNoBorder .el-table__border-left-patch {
1110
+ height: 0;
1111
+ }
1156
1112
  @charset "UTF-8";
1157
1113
  .table-custom-header-drawer .el-drawer__header {
1158
1114
  padding: 10px 15px;
@@ -1208,4 +1164,48 @@ video {
1208
1164
  box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
1209
1165
  border-radius: 10px;
1210
1166
  background: #eee;
1167
+ }
1168
+ .gm-upload-preview-dialog[data-v-c615121c] [data-v-c615121c] .el-dialog__body {
1169
+ padding: 0;
1170
+ }
1171
+
1172
+ .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload-list__item, .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload--picture-card {
1173
+ width: auto;
1174
+ height: auto;
1175
+ }
1176
+ .gm-upload-file {
1177
+ line-height: normal;
1178
+ }
1179
+ .gm-upload-file li > .el-checkbox {
1180
+ position: absolute;
1181
+ left: 10px;
1182
+ top: 0;
1183
+ z-index: 9;
1184
+ }
1185
+ .gm-upload-file .el-upload-list--picture-card {
1186
+ gap: 10px;
1187
+ }
1188
+ .gm-upload-file .el-upload-list__item {
1189
+ margin: 0;
1190
+ border: none;
1191
+ }
1192
+ .gm-upload-file .el-upload-list__item-file-name {
1193
+ line-height: normal;
1194
+ }
1195
+ .gm-upload-file .el-upload-dragger {
1196
+ padding: 0;
1197
+ border: none;
1198
+ width: 100%;
1199
+ height: 100%;
1200
+ display: flex;
1201
+ }
1202
+ .gm-upload-file .el-upload--picture-card {
1203
+ border: none;
1204
+ }
1205
+
1206
+ .gm-upload-file-disabled .el-upload--picture-card {
1207
+ display: none;
1208
+ }
1209
+ .gm-upload-file-disabled .el-upload-list__item-status-label {
1210
+ display: none;
1211
1211
  }
@@ -15,3 +15,4 @@ export * from './src/image';
15
15
  export * from './src/array';
16
16
  export * from './src/regexPatterns';
17
17
  export * from './src/tenant';
18
+ export * from './src/clarity';
@@ -15,6 +15,7 @@ export { getCountryImageUrl } from './src/image.mjs';
15
15
  export { mergePropsToArray } from './src/array.mjs';
16
16
  import './src/regexPatterns/index.mjs';
17
17
  export { getTenantType, isGiikin, isGiiktok } from './src/tenant.mjs';
18
+ export { Clarity } from './src/clarity/index.mjs';
18
19
  export { withInstall, withInstallDirective, withInstallFunction, withNoopInstall } from './src/vue/install.mjs';
19
20
  export { GiimeResolver, bypass, kebabCase } from './src/vue/resolver.mjs';
20
21
  export { getRouteParams, getRouteQuery } from './src/vue/router.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,67 @@
1
+ export interface ClarityInitOptions {
2
+ /**
3
+ * 是否自动识别用户信息
4
+ * @default true
5
+ */
6
+ autoIdentify?: boolean;
7
+ }
8
+ export interface ClarityIdentifyOptions {
9
+ customId: string;
10
+ customSessionId?: string;
11
+ customPageId?: string;
12
+ friendlyName?: string;
13
+ }
14
+ export interface ClarityConsentV2Options {
15
+ ad_Storage: 'granted' | 'denied';
16
+ analytics_Storage: 'granted' | 'denied';
17
+ }
18
+ declare global {
19
+ interface Window {
20
+ clarity: (...args: any[]) => void;
21
+ }
22
+ }
23
+ /**
24
+ * Microsoft Clarity 封装
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * // 自动识别用户信息
29
+ * Clarity.init('your-project-id');
30
+ *
31
+ * // 手动设置用户信息
32
+ * Clarity.init('your-project-id', { autoIdentify: false });
33
+ * Clarity.identify({ customId: 'user-id', friendlyName: 'User Name' });
34
+ * ```
35
+ */
36
+ export declare const Clarity: {
37
+ /**
38
+ * 初始化 Clarity
39
+ * @param projectId 项目 ID
40
+ * @param options 配置选项
41
+ */
42
+ init(projectId: string, options?: ClarityInitOptions): void;
43
+ /**
44
+ * 设置标签
45
+ */
46
+ setTag(key: string, value: string | string[]): void;
47
+ /**
48
+ * 识别用户
49
+ */
50
+ identify(options: ClarityIdentifyOptions): void;
51
+ /**
52
+ * 同意追踪
53
+ */
54
+ consent(consent?: boolean): void;
55
+ /**
56
+ * 同意追踪 V2
57
+ */
58
+ consentV2(options?: ClarityConsentV2Options): void;
59
+ /**
60
+ * 升级会话
61
+ */
62
+ upgrade(reason: string): void;
63
+ /**
64
+ * 发送自定义事件
65
+ */
66
+ event(eventName: string): void;
67
+ };
@@ -0,0 +1,93 @@
1
+ import { until } from '@vueuse/core';
2
+ import { useCurrentUserStore } from '../../../hooks/store/userCenter/useCurrentUser/index.mjs';
3
+
4
+ const injectScript = (projectId) => {
5
+ try {
6
+ (function(c, l, a, r, i, t, y) {
7
+ if (l.getElementById("clarity-script")) {
8
+ return;
9
+ }
10
+ c[a] = c[a] || function() {
11
+ (c[a].q = c[a].q || []).push(arguments);
12
+ };
13
+ t = l.createElement(r);
14
+ t.async = 1;
15
+ t.src = "https://www.clarity.ms/tag/" + i + "?ref=npm";
16
+ t.id = "clarity-script";
17
+ y = l.getElementsByTagName(r)[0];
18
+ y.parentNode.insertBefore(t, y);
19
+ })(window, document, "clarity", "script", projectId);
20
+ } catch {
21
+ }
22
+ };
23
+ const autoIdentifyUser = async () => {
24
+ const currentUserStore = useCurrentUserStore();
25
+ await until(() => currentUserStore.userInfo?.id).toBeTruthy();
26
+ const userInfo = {
27
+ id: currentUserStore.userInfo?.id?.toString() || "",
28
+ name: currentUserStore.userInfo?.name?.toString() || ""
29
+ };
30
+ Clarity.identify({
31
+ customId: userInfo.id,
32
+ customSessionId: userInfo.id,
33
+ customPageId: "",
34
+ friendlyName: `${userInfo.name} - ${userInfo.id}`
35
+ });
36
+ };
37
+ const Clarity = {
38
+ /**
39
+ * 初始化 Clarity
40
+ * @param projectId 项目 ID
41
+ * @param options 配置选项
42
+ */
43
+ init(projectId, options = {}) {
44
+ const { autoIdentify = true } = options;
45
+ if (!projectId) {
46
+ return;
47
+ }
48
+ injectScript(projectId);
49
+ if (autoIdentify) {
50
+ autoIdentifyUser();
51
+ }
52
+ },
53
+ /**
54
+ * 设置标签
55
+ */
56
+ setTag(key, value) {
57
+ window.clarity("set", key, value);
58
+ },
59
+ /**
60
+ * 识别用户
61
+ */
62
+ identify(options) {
63
+ const { customId, customSessionId, customPageId, friendlyName } = options;
64
+ window.clarity("identify", customId, customSessionId, customPageId, friendlyName);
65
+ },
66
+ /**
67
+ * 同意追踪
68
+ */
69
+ consent(consent = true) {
70
+ window.clarity("consent", consent);
71
+ },
72
+ /**
73
+ * 同意追踪 V2
74
+ */
75
+ consentV2(options = { ad_Storage: "granted", analytics_Storage: "granted" }) {
76
+ window.clarity("consentv2", options);
77
+ },
78
+ /**
79
+ * 升级会话
80
+ */
81
+ upgrade(reason) {
82
+ window.clarity("upgrade", reason);
83
+ },
84
+ /**
85
+ * 发送自定义事件
86
+ */
87
+ event(eventName) {
88
+ window.clarity("event", eventName);
89
+ }
90
+ };
91
+
92
+ export { Clarity };
93
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../packages/utils/src/clarity/index.ts"],"sourcesContent":["import { until } from '@vueuse/core';\nimport { useCurrentUserStore } from '@giime/hooks/store/userCenter/useCurrentUser';\n\nexport interface ClarityInitOptions {\n /**\n * 是否自动识别用户信息\n * @default true\n */\n autoIdentify?: boolean;\n}\n\nexport interface ClarityIdentifyOptions {\n customId: string;\n customSessionId?: string;\n customPageId?: string;\n friendlyName?: string;\n}\n\nexport interface ClarityConsentV2Options {\n ad_Storage: 'granted' | 'denied';\n analytics_Storage: 'granted' | 'denied';\n}\n\ndeclare global {\n interface Window {\n clarity: (...args: any[]) => void;\n }\n}\n\n/**\n * 注入 Clarity 脚本\n */\nconst injectScript = (projectId: string) => {\n try {\n (function (c: any, l: Document, a: string, r: string, i: string, t?: any, y?: any) {\n if (l.getElementById('clarity-script')) {\n return;\n }\n c[a] =\n c[a] ||\n function () {\n // eslint-disable-next-line prefer-rest-params\n (c[a].q = c[a].q || []).push(arguments);\n };\n t = l.createElement(r);\n t.async = 1;\n t.src = 'https://www.clarity.ms/tag/' + i + '?ref=npm';\n t.id = 'clarity-script';\n y = l.getElementsByTagName(r)[0];\n y.parentNode.insertBefore(t, y);\n })(window, document, 'clarity', 'script', projectId);\n } catch {\n // ignore\n }\n};\n\n/**\n * 自动识别用户信息\n */\nconst autoIdentifyUser = async () => {\n const currentUserStore = useCurrentUserStore();\n\n // 等待 userInfo 变为有效值\n await until(() => currentUserStore.userInfo?.id).toBeTruthy();\n\n const userInfo = {\n id: currentUserStore.userInfo?.id?.toString() || '',\n name: currentUserStore.userInfo?.name?.toString() || '',\n };\n\n Clarity.identify({\n customId: userInfo.id,\n customSessionId: userInfo.id,\n customPageId: '',\n friendlyName: `${userInfo.name} - ${userInfo.id}`,\n });\n};\n\n/**\n * Microsoft Clarity 封装\n *\n * @example\n * ```ts\n * // 自动识别用户信息\n * Clarity.init('your-project-id');\n *\n * // 手动设置用户信息\n * Clarity.init('your-project-id', { autoIdentify: false });\n * Clarity.identify({ customId: 'user-id', friendlyName: 'User Name' });\n * ```\n */\nexport const Clarity = {\n /**\n * 初始化 Clarity\n * @param projectId 项目 ID\n * @param options 配置选项\n */\n init(projectId: string, options: ClarityInitOptions = {}) {\n const { autoIdentify = true } = options;\n\n if (!projectId) {\n return;\n }\n\n injectScript(projectId);\n\n if (autoIdentify) {\n autoIdentifyUser();\n }\n },\n\n /**\n * 设置标签\n */\n setTag(key: string, value: string | string[]) {\n window.clarity('set', key, value);\n },\n\n /**\n * 识别用户\n */\n identify(options: ClarityIdentifyOptions) {\n const { customId, customSessionId, customPageId, friendlyName } = options;\n window.clarity('identify', customId, customSessionId, customPageId, friendlyName);\n },\n\n /**\n * 同意追踪\n */\n consent(consent = true) {\n window.clarity('consent', consent);\n },\n\n /**\n * 同意追踪 V2\n */\n consentV2(options: ClarityConsentV2Options = { ad_Storage: 'granted', analytics_Storage: 'granted' }) {\n window.clarity('consentv2', options);\n },\n\n /**\n * 升级会话\n */\n upgrade(reason: string) {\n window.clarity('upgrade', reason);\n },\n\n /**\n * 发送自定义事件\n */\n event(eventName: string) {\n window.clarity('event', eventName);\n },\n};\n"],"names":[],"mappings":"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"}
@@ -60,14 +60,12 @@ const autoGenerateProxy = (env, options) => {
60
60
  };
61
61
  const giimeDevProxyFn = (env, options) => {
62
62
  const mode = env[resetEnvMode];
63
- const res = {
63
+ return {
64
64
  ...generateProxyConfig(mode, options?.excludePaths),
65
65
  // 预定义的服务类型配置
66
66
  ...autoGenerateProxy(env, options)
67
67
  // 自动扫描的配置
68
68
  };
69
- console.log("res", res);
70
- return res;
71
69
  };
72
70
 
73
71
  export { autoGenerateProxy, giimeDevProxy, giimeDevProxyFn };
@@ -1 +1 @@
1
- {"version":3,"file":"devProxy.mjs","sources":["../../../../../../packages/utils/src/http/devProxy.ts"],"sourcesContent":["import type { ProxyOptions } from 'vite';\nimport { bypass } from '../vue/resolver';\n// background引用,先必须使用../../\nimport { resetEnvMode } from '../../../constants/key';\nimport { getEnvConfig } from './createModes';\n\n/**\n * 自动代理配置选项\n */\nexport interface AutoProxyOptions {\n /** 需要排除的环境变量名称数组 */\n excludeKeys?: string[];\n /** 是否禁用本地开发环境代理(禁用后不会代理到 localhost) */\n disableLocal?: boolean;\n /** 需要排除的路径数组(支持带或不带尾部斜杠,如 '/third/am' 或 '/third/am/') */\n excludePaths?: string[];\n}\n\n/**\n * 标准化路径(移除尾部斜杠)\n * @param path 原始路径\n * @returns 标准化后的路径\n */\nconst normalizePath = (path: string): string => {\n return path.endsWith('/') ? path.slice(0, -1) : path;\n};\n\n/**\n * 检查路径是否在排除列表中\n * @param path 需要检查的路径\n * @param excludePaths 排除路径列表\n * @returns 是否应该被排除\n */\nconst isPathExcluded = (path: string, excludePaths?: string[]): boolean => {\n if (!excludePaths || excludePaths.length === 0) return false;\n const normalizedPath = normalizePath(path);\n return excludePaths.some(excludePath => normalizePath(excludePath) === normalizedPath);\n};\n\n/**\n * 预定义的 API 服务类型列表\n */\nconst API_SERVICE_TYPES = ['/third/gstore', '/third/am', '/guard', '/fe/basic', '/middle', '/product-center'];\n\n/**\n * 根据模式获取基础URL\n * @param mode 环境模式\n * @returns 基础URL\n */\nconst resolveBaseUrl = (mode?: string): string => {\n return getEnvConfig(mode).url;\n};\n\n/**\n * 生成代理配置对象\n * @param mode 环境模式(可选)\n * @param excludePaths 需要排除的路径数组\n * @returns 代理配置对象\n */\nconst generateProxyConfig = (mode?: string, excludePaths?: string[]): Record<string, string | ProxyOptions> => {\n const config: Record<string, string | ProxyOptions> = {};\n // 使用 VITE_GIIME_MODE 确定代理目标,默认为 development\n const giimeMode = mode || 'development';\n const baseUrl = resolveBaseUrl(giimeMode);\n\n API_SERVICE_TYPES.forEach(serviceType => {\n // 跳过被排除的路径\n if (isPathExcluded(serviceType, excludePaths)) return;\n\n config[serviceType] = {\n target: baseUrl,\n changeOrigin: true,\n rewrite: (p: string) => p.replace(new RegExp(`^${serviceType.replace(/\\//g, '\\\\/')}`), serviceType),\n bypass,\n };\n });\n\n return config;\n};\n\n/**\n * 默认开发代理配置\n * https://cn.vitejs.dev/config/#server-proxy\n */\nexport const giimeDevProxy: Record<string, string | ProxyOptions> = generateProxyConfig();\n\n/**\n * 自动生成代理配置(通过扫描环境变量)\n * - 自动读取环境变量中以斜杠开头的 VITE_ 变量\n * - 根据 VITE_GIIME_MODE 自动确定代理目标服务器\n * - 支持排除特定环境变量\n * - 支持禁用本地开发环境代理\n *\n * @param env 环境变量对象\n * @param options 配置选项\n * @param options.excludeKeys 需要排除的环境变量名称数组\n * @param options.disableLocal 是否禁用本地开发环境代理\n * @returns 代理配置对象\n *\n * @example\n * // 基础用法 - 自动扫描环境变量\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env)\n * }\n * })\n *\n * @example\n * // 排除特定环境变量并禁用本地代理\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env, {\n * excludeKeys: ['VITE_APP_TITLE', 'VITE_PUBLIC_PATH'],\n * disableLocal: true\n * })\n * }\n * })\n *\n * @example\n * // 排除特定路径(支持带或不带尾部斜杠)\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env, {\n * excludePaths: ['/third/am', '/third/gstore/']\n * })\n * }\n * })\n */\nexport const autoGenerateProxy = (env: Record<string, string>, options?: AutoProxyOptions): Record<string, string | ProxyOptions> => {\n const proxy: Record<string, string | ProxyOptions> = {};\n\n // 使用 VITE_GIIME_MODE 确定代理目标,默认为 development\n const giimeMode = env.VITE_GIIME_MODE || 'development';\n const proxyTarget = resolveBaseUrl(giimeMode);\n\n const processedPaths = new Set<string>();\n const excludeKeys = options?.excludeKeys || [];\n const excludePaths = options?.excludePaths;\n const disableLocal = options?.disableLocal || false;\n\n // 遍历所有环境变量\n for (const [key, value] of Object.entries(env)) {\n // 只处理 VITE_ 开头的变量\n if (!key.startsWith('VITE_')) continue;\n\n // 跳过被排除的环境变量\n if (excludeKeys.includes(key)) continue;\n\n // 跳过 VITE_BASE_URL\n if (key === 'VITE_BASE_URL') continue;\n\n // 移除引号并获取清理后的值\n const cleanValue = value.replace(/['\"]/g, '').trim();\n\n // 只处理以斜杠开头且后续有值的路径(排除单独的 '/')\n if (!cleanValue.startsWith('/') || cleanValue === '/') continue;\n\n // 如果禁用本地代理且当前模式是 development,跳过\n if (disableLocal && giimeMode === 'development') continue;\n\n // 标准化路径:移除尾部斜杠\n const normalizedPath = normalizePath(cleanValue);\n\n // 跳过被排除的路径\n if (isPathExcluded(normalizedPath, excludePaths)) continue;\n\n // 跳过已处理的路径(避免重复配置)\n if (processedPaths.has(normalizedPath)) continue;\n\n // 生成代理配置\n proxy[normalizedPath] = {\n target: proxyTarget,\n changeOrigin: true,\n rewrite: (p: string) => p.replace(new RegExp(`^${normalizedPath.replace(/\\//g, '\\\\/')}`), normalizedPath),\n bypass,\n };\n\n processedPaths.add(normalizedPath);\n }\n\n return proxy;\n};\n\n/**\n * 根据环境动态生成代理配置(融合版)\n * - 包含预定义的 API 服务类型代理配置\n * - 包含自动扫描环境变量的代理配置\n *\n * @param env 环境变量对象\n * @param options 自动代理配置选项\n * @returns 代理配置对象\n *\n * @example\n * // 基础用法\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env)\n * }\n * })\n *\n * @example\n * // 带选项\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env, {\n * excludeKeys: ['VITE_APP_TITLE'],\n * disableLocal: true\n * })\n * }\n * })\n *\n * @example\n * // 排除特定路径\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env, {\n * excludePaths: ['/third/am', '/third/am/']\n * })\n * }\n * })\n */\nexport const giimeDevProxyFn = (env: Record<string, string>, options?: AutoProxyOptions): Record<string, string | ProxyOptions> => {\n const mode = env[resetEnvMode];\n const res = {\n ...generateProxyConfig(mode, options?.excludePaths), // 预定义的服务类型配置\n ...autoGenerateProxy(env, options), // 自动扫描的配置\n };\n console.log('res', res);\n return res;\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devProxy.mjs","sources":["../../../../../../packages/utils/src/http/devProxy.ts"],"sourcesContent":["import type { ProxyOptions } from 'vite';\nimport { bypass } from '../vue/resolver';\n// background引用,先必须使用../../\nimport { resetEnvMode } from '../../../constants/key';\nimport { getEnvConfig } from './createModes';\n\n/**\n * 自动代理配置选项\n */\nexport interface AutoProxyOptions {\n /** 需要排除的环境变量名称数组 */\n excludeKeys?: string[];\n /** 是否禁用本地开发环境代理(禁用后不会代理到 localhost) */\n disableLocal?: boolean;\n /** 需要排除的路径数组(支持带或不带尾部斜杠,如 '/third/am' 或 '/third/am/') */\n excludePaths?: string[];\n}\n\n/**\n * 标准化路径(移除尾部斜杠)\n * @param path 原始路径\n * @returns 标准化后的路径\n */\nconst normalizePath = (path: string): string => {\n return path.endsWith('/') ? path.slice(0, -1) : path;\n};\n\n/**\n * 检查路径是否在排除列表中\n * @param path 需要检查的路径\n * @param excludePaths 排除路径列表\n * @returns 是否应该被排除\n */\nconst isPathExcluded = (path: string, excludePaths?: string[]): boolean => {\n if (!excludePaths || excludePaths.length === 0) return false;\n const normalizedPath = normalizePath(path);\n return excludePaths.some(excludePath => normalizePath(excludePath) === normalizedPath);\n};\n\n/**\n * 预定义的 API 服务类型列表\n */\nconst API_SERVICE_TYPES = ['/third/gstore', '/third/am', '/guard', '/fe/basic', '/middle', '/product-center'];\n\n/**\n * 根据模式获取基础URL\n * @param mode 环境模式\n * @returns 基础URL\n */\nconst resolveBaseUrl = (mode?: string): string => {\n return getEnvConfig(mode).url;\n};\n\n/**\n * 生成代理配置对象\n * @param mode 环境模式(可选)\n * @param excludePaths 需要排除的路径数组\n * @returns 代理配置对象\n */\nconst generateProxyConfig = (mode?: string, excludePaths?: string[]): Record<string, string | ProxyOptions> => {\n const config: Record<string, string | ProxyOptions> = {};\n // 使用 VITE_GIIME_MODE 确定代理目标,默认为 development\n const giimeMode = mode || 'development';\n const baseUrl = resolveBaseUrl(giimeMode);\n\n API_SERVICE_TYPES.forEach(serviceType => {\n // 跳过被排除的路径\n if (isPathExcluded(serviceType, excludePaths)) return;\n\n config[serviceType] = {\n target: baseUrl,\n changeOrigin: true,\n rewrite: (p: string) => p.replace(new RegExp(`^${serviceType.replace(/\\//g, '\\\\/')}`), serviceType),\n bypass,\n };\n });\n\n return config;\n};\n\n/**\n * 默认开发代理配置\n * https://cn.vitejs.dev/config/#server-proxy\n */\nexport const giimeDevProxy: Record<string, string | ProxyOptions> = generateProxyConfig();\n\n/**\n * 自动生成代理配置(通过扫描环境变量)\n * - 自动读取环境变量中以斜杠开头的 VITE_ 变量\n * - 根据 VITE_GIIME_MODE 自动确定代理目标服务器\n * - 支持排除特定环境变量\n * - 支持禁用本地开发环境代理\n *\n * @param env 环境变量对象\n * @param options 配置选项\n * @param options.excludeKeys 需要排除的环境变量名称数组\n * @param options.disableLocal 是否禁用本地开发环境代理\n * @returns 代理配置对象\n *\n * @example\n * // 基础用法 - 自动扫描环境变量\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env)\n * }\n * })\n *\n * @example\n * // 排除特定环境变量并禁用本地代理\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env, {\n * excludeKeys: ['VITE_APP_TITLE', 'VITE_PUBLIC_PATH'],\n * disableLocal: true\n * })\n * }\n * })\n *\n * @example\n * // 排除特定路径(支持带或不带尾部斜杠)\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env, {\n * excludePaths: ['/third/am', '/third/gstore/']\n * })\n * }\n * })\n */\nexport const autoGenerateProxy = (env: Record<string, string>, options?: AutoProxyOptions): Record<string, string | ProxyOptions> => {\n const proxy: Record<string, string | ProxyOptions> = {};\n\n // 使用 VITE_GIIME_MODE 确定代理目标,默认为 development\n const giimeMode = env.VITE_GIIME_MODE || 'development';\n const proxyTarget = resolveBaseUrl(giimeMode);\n\n const processedPaths = new Set<string>();\n const excludeKeys = options?.excludeKeys || [];\n const excludePaths = options?.excludePaths;\n const disableLocal = options?.disableLocal || false;\n\n // 遍历所有环境变量\n for (const [key, value] of Object.entries(env)) {\n // 只处理 VITE_ 开头的变量\n if (!key.startsWith('VITE_')) continue;\n\n // 跳过被排除的环境变量\n if (excludeKeys.includes(key)) continue;\n\n // 跳过 VITE_BASE_URL\n if (key === 'VITE_BASE_URL') continue;\n\n // 移除引号并获取清理后的值\n const cleanValue = value.replace(/['\"]/g, '').trim();\n\n // 只处理以斜杠开头且后续有值的路径(排除单独的 '/')\n if (!cleanValue.startsWith('/') || cleanValue === '/') continue;\n\n // 如果禁用本地代理且当前模式是 development,跳过\n if (disableLocal && giimeMode === 'development') continue;\n\n // 标准化路径:移除尾部斜杠\n const normalizedPath = normalizePath(cleanValue);\n\n // 跳过被排除的路径\n if (isPathExcluded(normalizedPath, excludePaths)) continue;\n\n // 跳过已处理的路径(避免重复配置)\n if (processedPaths.has(normalizedPath)) continue;\n\n // 生成代理配置\n proxy[normalizedPath] = {\n target: proxyTarget,\n changeOrigin: true,\n rewrite: (p: string) => p.replace(new RegExp(`^${normalizedPath.replace(/\\//g, '\\\\/')}`), normalizedPath),\n bypass,\n };\n\n processedPaths.add(normalizedPath);\n }\n\n return proxy;\n};\n\n/**\n * 根据环境动态生成代理配置(融合版)\n * - 包含预定义的 API 服务类型代理配置\n * - 包含自动扫描环境变量的代理配置\n *\n * @param env 环境变量对象\n * @param options 自动代理配置选项\n * @returns 代理配置对象\n *\n * @example\n * // 基础用法\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env)\n * }\n * })\n *\n * @example\n * // 带选项\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env, {\n * excludeKeys: ['VITE_APP_TITLE'],\n * disableLocal: true\n * })\n * }\n * })\n *\n * @example\n * // 排除特定路径\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env, {\n * excludePaths: ['/third/am', '/third/am/']\n * })\n * }\n * })\n */\nexport const giimeDevProxyFn = (env: Record<string, string>, options?: AutoProxyOptions): Record<string, string | ProxyOptions> => {\n const mode = env[resetEnvMode];\n\n // 融合两种代理配置\n return {\n ...generateProxyConfig(mode, options?.excludePaths), // 预定义的服务类型配置\n ...autoGenerateProxy(env, options), // 自动扫描的配置\n };\n};\n"],"names":[],"mappings":"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"}
@@ -112,10 +112,10 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
112
112
  zIndex: NumberConstructor;
113
113
  namespace: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "el", boolean>;
114
114
  }>>, {
115
+ namespace: string;
115
116
  valueOnClear: import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
116
117
  a11y: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
117
118
  keyboardNavigation: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
118
- namespace: string;
119
119
  }, {}>, {
120
120
  default?: ((props: any) => any) | undefined;
121
121
  }>;
@@ -113,10 +113,10 @@ export declare const GmConfigProvider: import("../../../../utils").SFCWithInstal
113
113
  zIndex: NumberConstructor;
114
114
  namespace: import("element-plus/es/utils/index.js").EpPropFinalized<StringConstructor, unknown, unknown, "el", boolean>;
115
115
  }>>, {
116
+ namespace: string;
116
117
  valueOnClear: import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
117
118
  a11y: import("element-plus/es/utils/index.js").EpPropMergeType<BooleanConstructor, unknown, unknown>;
118
119
  keyboardNavigation: import("element-plus/es/utils/index.js").EpPropMergeType<BooleanConstructor, unknown, unknown>;
119
- namespace: string;
120
120
  }, true, {}, {}, {
121
121
  P: {};
122
122
  B: {};
@@ -182,10 +182,10 @@ export declare const GmConfigProvider: import("../../../../utils").SFCWithInstal
182
182
  }>>, {
183
183
  elRef: import("vue").Ref<import("element-plus").ConfigProviderInstance | undefined>;
184
184
  }, {}, {}, {}, {
185
+ namespace: string;
185
186
  valueOnClear: import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
186
187
  a11y: import("element-plus/es/utils/index.js").EpPropMergeType<BooleanConstructor, unknown, unknown>;
187
188
  keyboardNavigation: import("element-plus/es/utils/index.js").EpPropMergeType<BooleanConstructor, unknown, unknown>;
188
- namespace: string;
189
189
  }>;
190
190
  __isFragment?: undefined;
191
191
  __isTeleport?: undefined;
@@ -248,10 +248,10 @@ export declare const GmConfigProvider: import("../../../../utils").SFCWithInstal
248
248
  }>>, {
249
249
  elRef: import("vue").Ref<import("element-plus").ConfigProviderInstance | undefined>;
250
250
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
251
+ namespace: string;
251
252
  valueOnClear: import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
252
253
  a11y: import("element-plus/es/utils/index.js").EpPropMergeType<BooleanConstructor, unknown, unknown>;
253
254
  keyboardNavigation: import("element-plus/es/utils/index.js").EpPropMergeType<BooleanConstructor, unknown, unknown>;
254
- namespace: string;
255
255
  }, {}, string, {}> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
256
256
  $slots: {
257
257
  default?: ((props: any) => any) | undefined;
@@ -118,8 +118,8 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
118
118
  }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
119
119
  error: (evt: Event) => void;
120
120
  show: () => void;
121
- close: () => void;
122
121
  switch: (val: number) => void;
122
+ close: () => void;
123
123
  load: (evt: Event) => void;
124
124
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
125
125
  hideOnClickModal: BooleanConstructor;
@@ -118,8 +118,8 @@ export declare const GmImage: import("../../../../utils").SFCWithInstall<{
118
118
  }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
119
119
  error: (evt: Event) => void;
120
120
  show: () => void;
121
- close: () => void;
122
121
  switch: (val: number) => void;
122
+ close: () => void;
123
123
  load: (evt: Event) => void;
124
124
  }, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & Readonly<import("vue").ExtractPropTypes<{
125
125
  hideOnClickModal: BooleanConstructor;
@@ -510,8 +510,8 @@ export declare const GmImage: import("../../../../utils").SFCWithInstall<{
510
510
  }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
511
511
  error: (evt: Event) => void;
512
512
  show: () => void;
513
- close: () => void;
514
513
  switch: (val: number) => void;
514
+ close: () => void;
515
515
  load: (evt: Event) => void;
516
516
  }, string, {
517
517
  infinite: boolean;
@@ -83,8 +83,8 @@ declare const _default: import("vue").DefineComponent<{
83
83
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
84
84
  error: (evt: Event) => void;
85
85
  rotate: (deg: number) => void;
86
- close: () => void;
87
86
  switch: (index: number) => void;
87
+ close: () => void;
88
88
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
89
89
  urlList: {
90
90
  readonly type: import("vue").PropType<string[]>;