@gct-paas/core-web 0.1.4-dev.12 → 0.1.4-dev.13

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 (90) hide show
  1. package/dist/de_DE-Dlmr1Wso.js +152 -0
  2. package/dist/en_US-B9GNh9s3.js +173 -0
  3. package/dist/es_ES-CdOh6_BZ.js +159 -0
  4. package/dist/fr_FR-DA5AJaJ_.js +168 -0
  5. package/dist/index.min.css +1 -1
  6. package/dist/ja_JP-DE6fp7p7.js +140 -0
  7. package/dist/loader.esm.min.js +9583 -0
  8. package/dist/{monaco-editor-BHuf3IVH.js → monaco-editor-Di2Ob0f2.js} +37 -38
  9. package/dist/objectSpread2-fLnUNEWu.js +62 -0
  10. package/dist/pt_PT-DqWIQ8Sv.js +134 -0
  11. package/dist/ru_RU-B7eejpuq.js +165 -0
  12. package/dist/tr_TR-Cp-TWGG5.js +167 -0
  13. package/dist/{useMonacoEditor-CfhCBaPa.js → useMonacoEditor-B4gp3RiK.js} +753 -817
  14. package/dist/vi_VN-BWekEft9.js +85 -0
  15. package/dist/zh_CN-CaadhslE.js +174 -0
  16. package/dist/zh_TW-DHMPuQGm.js +169 -0
  17. package/es/components/field-upload/index.d.ts +2 -0
  18. package/es/components/field-upload/index.mjs +7 -0
  19. package/es/components/field-upload/src/FieldUpload.vue.d.ts +37 -0
  20. package/es/components/field-upload/src/FieldUpload.vue.mjs +5 -0
  21. package/es/components/field-upload/src/FieldUpload.vue_vue_type_script_setup_true_name_FieldUpload_lang.mjs +111 -0
  22. package/es/components/field-upload/src/components/base-upload.vue.d.ts +21 -0
  23. package/es/components/field-upload/src/components/base-upload.vue.mjs +7 -0
  24. package/es/components/field-upload/src/components/base-upload.vue_vue_type_script_name_baseUpload_setup_true_lang.mjs +227 -0
  25. package/es/components/field-upload/src/components/base-upload.vue_vue_type_style_index_0_scoped_f53b6ac6_lang.css +76 -0
  26. package/es/components/field-upload/src/components/file-list.vue.d.ts +17 -0
  27. package/es/components/field-upload/src/components/file-list.vue.mjs +7 -0
  28. package/es/components/field-upload/src/components/file-list.vue_vue_type_script_setup_true_name_fileList_lang.mjs +129 -0
  29. package/es/components/field-upload/src/components/file-list.vue_vue_type_style_index_0_scoped_3918aad0_lang.css +129 -0
  30. package/es/components/field-upload/src/components/upload-design.vue.d.ts +5 -0
  31. package/es/components/field-upload/src/components/upload-design.vue.mjs +7 -0
  32. package/es/components/field-upload/src/components/upload-design.vue_vue_type_script_name_UploadDesign_setup_true_lang.mjs +43 -0
  33. package/es/components/field-upload/src/components/upload-design.vue_vue_type_style_index_0_scoped_1e5189c1_lang.css +43 -0
  34. package/es/components/field-upload/src/hooks/hooks.d.ts +4 -0
  35. package/es/components/field-upload/src/hooks/hooks.mjs +47 -0
  36. package/es/components/field-upload/src/types/index.d.ts +42 -0
  37. package/es/components/field-upload/src/types/index.mjs +24 -0
  38. package/es/components/image-upload/index.d.ts +2 -0
  39. package/es/components/image-upload/index.mjs +7 -0
  40. package/es/components/image-upload/src/ImageUpload.vue.d.ts +32 -0
  41. package/es/components/image-upload/src/ImageUpload.vue.mjs +5 -0
  42. package/es/components/image-upload/src/ImageUpload.vue_vue_type_script_setup_true_name_ImageUpload_lang.mjs +74 -0
  43. package/es/components/image-upload/src/components/base-upload.vue.d.ts +24 -0
  44. package/es/components/image-upload/src/components/base-upload.vue.mjs +8 -0
  45. package/es/components/image-upload/src/components/base-upload.vue_vue_type_script_name_baseUpload_setup_true_lang.mjs +209 -0
  46. package/es/components/image-upload/src/components/base-upload.vue_vue_type_style_index_0_scoped_3248e630_lang.css +73 -0
  47. package/es/components/image-upload/src/components/base-upload.vue_vue_type_style_index_1_lang.css +3 -0
  48. package/es/components/image-upload/src/components/upload-design.vue.d.ts +6 -0
  49. package/es/components/image-upload/src/components/upload-design.vue.mjs +7 -0
  50. package/es/components/image-upload/src/components/upload-design.vue_vue_type_script_name_UploadDesign_setup_true_lang.mjs +33 -0
  51. package/es/components/image-upload/src/components/upload-design.vue_vue_type_style_index_0_scoped_575d3a1a_lang.css +33 -0
  52. package/es/components/image-upload/src/hooks/hooks.d.ts +2 -0
  53. package/es/components/image-upload/src/types/index.d.ts +34 -0
  54. package/es/components/image-upload/src/types/index.mjs +8 -0
  55. package/es/components/index.d.ts +3 -1
  56. package/es/components/index.mjs +2 -0
  57. package/es/hooks/useLocale.d.ts +365 -1
  58. package/es/hooks/useLocale.mjs +20 -24
  59. package/es/index.d.ts +1 -0
  60. package/es/index.mjs +10 -6
  61. package/es/loader.d.ts +1 -0
  62. package/es/modules/Cropper/hooks/useFile.mjs +21 -0
  63. package/es/modules/Cropper/index.d.ts +1 -0
  64. package/es/modules/Cropper/index.mjs +12 -0
  65. package/es/modules/Cropper/src/CopperFreeModal.vue.mjs +7 -0
  66. package/es/modules/Cropper/src/CopperFreeModal.vue_vue_type_script_setup_true_name_CropperModal_lang.mjs +299 -0
  67. package/es/modules/Cropper/src/CopperFreeModal.vue_vue_type_style_index_0_scoped_28afc2ab_lang.css +48 -0
  68. package/es/modules/Cropper/src/CopperModal.vue.mjs +7 -0
  69. package/es/modules/Cropper/src/CopperModal.vue_vue_type_script_setup_true_name_CropperModal_lang.mjs +283 -0
  70. package/es/modules/Cropper/src/CopperModal.vue_vue_type_style_index_0_scoped_f42f8311_lang.css +71 -0
  71. package/es/modules/Cropper/src/Cropper.vue.d.ts +1 -1
  72. package/es/modules/Cropper/src/Cropper.vue.mjs +25 -0
  73. package/es/modules/Cropper/src/Cropper.vue_vue_type_script_lang.mjs +173 -0
  74. package/es/modules/Cropper/src/Cropper.vue_vue_type_style_index_0_lang.css +4 -0
  75. package/es/modules/Cropper/src/CropperAvatar.vue.mjs +7 -0
  76. package/es/modules/Cropper/src/CropperAvatar.vue_vue_type_script_setup_true_name_CropperAvatar_lang.mjs +116 -0
  77. package/es/modules/Cropper/src/CropperAvatar.vue_vue_type_style_index_0_scoped_b5d65cd4_lang.css +39 -0
  78. package/es/modules/Cropper/src/CropperFree.vue.mjs +7 -0
  79. package/es/modules/Cropper/src/CropperFree.vue_vue_type_script_setup_true_name_CropperPhoto_lang.mjs +165 -0
  80. package/es/modules/Cropper/src/CropperFree.vue_vue_type_style_index_0_scoped_3cc5e19b_lang.css +83 -0
  81. package/es/modules/code-editor/index.d.ts +3 -3
  82. package/es/modules/code-editor/monaco-editor.vue.d.ts +1 -1
  83. package/es/modules/code-editor/monaco-editor.vue.mjs +2 -2
  84. package/es/modules/code-editor/monaco-editor.vue_vue_type_script_setup_true_name_code-editor_lang.mjs +4 -3
  85. package/es/modules/code-editor/{monaco-editor.vue_vue_type_style_index_0_scoped_254c9227_lang.css → monaco-editor.vue_vue_type_style_index_0_scoped_ccf22884_lang.css} +9 -9
  86. package/es/modules/gct-table/editor/gct-table-date/gct-table-date.mjs +1 -1
  87. package/es/modules/gct-table/editor/gct-table-text/gct-table-text.mjs +1 -1
  88. package/package.json +7 -7
  89. package/dist/index.esm.min.js +0 -9864
  90. /package/es/modules/gct-table/editor/{gct-table-text/gct-table-text.css → gct-table-date/gct-table-date.css} +0 -0
@@ -0,0 +1,299 @@
1
+ import { useDesign } from "../../../hooks/useDesign.mjs";
2
+ import "../../../hooks/index.mjs";
3
+ import { useModalInner } from "../../global-modal/src/hooks/useModal.mjs";
4
+ import { BasicModal } from "../../global-modal/index.mjs";
5
+ import Cropper_default from "./Cropper.vue.mjs";
6
+ import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, resolveComponent, toDisplayString, unref, watch, withCtx, withModifiers } from "vue";
7
+ import { isFunction } from "lodash-es";
8
+ import { dataURLtoBlob, t } from "@gct-paas/core";
9
+ import { Space, Tooltip, Upload, message } from "ant-design-vue";
10
+ import { ReloadOutlined } from "@ant-design/icons-vue";
11
+ //#region src/modules/Cropper/src/CopperFreeModal.vue?vue&type=script&setup=true&name=CropperModal&lang.ts
12
+ var _hoisted_1 = {
13
+ key: 1,
14
+ class: "empty"
15
+ };
16
+ var _hoisted_2 = { class: "flex flex-col justify-center items-center" };
17
+ var _hoisted_3 = ["title"];
18
+ var CopperFreeModal_vue_vue_type_script_setup_true_name_CropperModal_lang_default = /* @__PURE__ */ defineComponent({
19
+ __name: "CopperFreeModal",
20
+ props: {
21
+ title: {
22
+ type: String,
23
+ default: "图片上传"
24
+ },
25
+ circled: {
26
+ type: Boolean,
27
+ default: true
28
+ },
29
+ uploadApi: { type: Function },
30
+ src: { type: String },
31
+ aspectRatio: { type: Number },
32
+ accept: {
33
+ type: Array,
34
+ default: [
35
+ "jpg",
36
+ "jpeg",
37
+ "png",
38
+ "bmp"
39
+ ]
40
+ },
41
+ beforeUpload: { type: Function },
42
+ uploadText: { type: String }
43
+ },
44
+ emits: ["uploadSuccess", "register"],
45
+ setup(__props, { emit: __emit }) {
46
+ const props = __props;
47
+ const emit = __emit;
48
+ const src = ref(props.src || "");
49
+ const originalSrc = ref(props.src || "");
50
+ const previewSource = ref("");
51
+ const cropper = ref();
52
+ let scaleX = 1;
53
+ let scaleY = 1;
54
+ let filename = "";
55
+ const fileAccept = computed(() => {
56
+ return props.accept.map((e) => `image/${e}`).join(",");
57
+ });
58
+ const { prefixCls } = useDesign("cropper-free");
59
+ const [register, { closeModal, setModalProps }] = useModalInner((data) => {
60
+ if (data?.file) handleBeforeUpload(data.file);
61
+ });
62
+ watch(() => props.src, (value) => {
63
+ src.value = value || "";
64
+ originalSrc.value = value || "";
65
+ });
66
+ async function handleBeforeUpload(file) {
67
+ props.beforeUpload && await props.beforeUpload(file);
68
+ if (file.size / 1024 / 1024 > 4) {
69
+ message.warn(`【${file.name}】文件大小不能超过 4MB`);
70
+ return false;
71
+ }
72
+ if (!fileAccept.value.includes(file.type)) {
73
+ message.warning(`【${file.name}】${t("sys.component.cropper.acceptAvatarTypeTip")}`);
74
+ return false;
75
+ }
76
+ const reader = new FileReader();
77
+ reader.readAsDataURL(file);
78
+ src.value = "";
79
+ previewSource.value = "";
80
+ reader.onload = function(e) {
81
+ src.value = e.target?.result ?? "";
82
+ filename = file.name;
83
+ };
84
+ return false;
85
+ }
86
+ function handleCropend({ imgBase64 }) {
87
+ previewSource.value = imgBase64;
88
+ }
89
+ function handleReady(cropperInstance) {
90
+ cropper.value = cropperInstance;
91
+ }
92
+ function handlerToolbar(event, arg) {
93
+ if (event === "scaleX") scaleX = arg = scaleX === -1 ? 1 : -1;
94
+ if (event === "scaleY") scaleY = arg = scaleY === -1 ? 1 : -1;
95
+ cropper.value?.[event]?.(arg);
96
+ }
97
+ async function handleOk() {
98
+ const uploadApi = props.uploadApi;
99
+ if (uploadApi && isFunction(uploadApi)) {
100
+ const blob = dataURLtoBlob(previewSource.value);
101
+ try {
102
+ setModalProps({ confirmLoading: true });
103
+ const result = await uploadApi({
104
+ name: "file",
105
+ file: blob,
106
+ filename
107
+ });
108
+ emit("uploadSuccess", {
109
+ source: previewSource.value,
110
+ data: result.data.data
111
+ });
112
+ closeModal();
113
+ } finally {
114
+ setModalProps({ confirmLoading: false });
115
+ }
116
+ }
117
+ }
118
+ function handleCancel() {
119
+ src.value = "";
120
+ setTimeout(() => {
121
+ src.value = originalSrc.value || "";
122
+ });
123
+ }
124
+ return (_ctx, _cache) => {
125
+ const _component_PlusOutlined = resolveComponent("PlusOutlined");
126
+ const _component_a_button = resolveComponent("a-button");
127
+ return openBlock(), createBlock(unref(BasicModal), mergeProps(_ctx.$attrs, {
128
+ title: __props.title,
129
+ width: "640px",
130
+ "min-height": "510",
131
+ "can-fullscreen": false,
132
+ "ok-text": unref(t)("sys.okText"),
133
+ onRegister: unref(register),
134
+ onOk: handleOk,
135
+ onCancel: handleCancel
136
+ }), {
137
+ default: withCtx(() => [createElementVNode("div", { class: normalizeClass(unref(prefixCls)) }, [createElementVNode("div", { class: normalizeClass(`${unref(prefixCls)}-left`) }, [createElementVNode("div", { class: normalizeClass(`${unref(prefixCls)}-cropper`) }, [src.value ? (openBlock(), createBlock(Cropper_default, {
138
+ key: 0,
139
+ src: src.value,
140
+ height: "304px",
141
+ width: "538px",
142
+ options: { aspectRatio: __props.aspectRatio ?? 200 / 120 },
143
+ onCropend: handleCropend,
144
+ onReady: handleReady
145
+ }, null, 8, ["src", "options"])) : (openBlock(), createElementBlock("div", _hoisted_1, [createVNode(unref(Upload), {
146
+ "list-type": "picture-card",
147
+ "file-list": [],
148
+ accept: "image/*",
149
+ "before-upload": handleBeforeUpload
150
+ }, {
151
+ default: withCtx(() => [createElementVNode("div", _hoisted_2, [
152
+ createVNode(_component_PlusOutlined),
153
+ _cache[14] || (_cache[14] = createElementVNode("div", { class: "mt12px" }, "点击或将图片拖拽到这里上传", -1)),
154
+ _cache[15] || (_cache[15] = createElementVNode("div", { class: "color-[#8B8B8B] mt8px" }, " 仅支持JPG、PNG、JPEG、BMP格式,文件小于4M ", -1))
155
+ ])]),
156
+ _: 1
157
+ })]))], 2), src.value ? (openBlock(), createElementBlock("div", {
158
+ key: 0,
159
+ class: normalizeClass(`${unref(prefixCls)}-toolbar`)
160
+ }, [createVNode(unref(Upload), {
161
+ "file-list": [],
162
+ accept: fileAccept.value,
163
+ "before-upload": handleBeforeUpload
164
+ }, {
165
+ default: withCtx(() => [__props.uploadText ? (openBlock(), createBlock(_component_a_button, {
166
+ key: 0,
167
+ type: "link",
168
+ size: "small",
169
+ style: { "padding": "0" }
170
+ }, {
171
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.uploadText), 1)]),
172
+ _: 1
173
+ })) : (openBlock(), createElementBlock("a", {
174
+ key: 1,
175
+ title: unref(t)("sys.reUpload"),
176
+ placement: "bottom"
177
+ }, toDisplayString(unref(t)("sys.reUpload")), 9, _hoisted_3))]),
178
+ _: 1
179
+ }, 8, ["accept"]), createVNode(unref(Space), null, {
180
+ default: withCtx(() => [
181
+ createVNode(unref(Tooltip), {
182
+ title: unref(t)("sys.component.cropper.btn_zoom_in"),
183
+ placement: "bottom"
184
+ }, {
185
+ default: withCtx(() => [createVNode(_component_a_button, {
186
+ size: "small",
187
+ disabled: !src.value,
188
+ onMousedown: _cache[0] || (_cache[0] = withModifiers(() => {}, ["prevent"])),
189
+ onClick: _cache[1] || (_cache[1] = ($event) => handlerToolbar("zoom", .1))
190
+ }, {
191
+ icon: withCtx(() => [..._cache[16] || (_cache[16] = [createElementVNode("i", { class: "iconfont icon-fangda_zoom-in" }, null, -1)])]),
192
+ _: 1
193
+ }, 8, ["disabled"])]),
194
+ _: 1
195
+ }, 8, ["title"]),
196
+ createVNode(unref(Tooltip), {
197
+ title: unref(t)("sys.component.cropper.btn_zoom_out"),
198
+ placement: "bottom"
199
+ }, {
200
+ default: withCtx(() => [createVNode(_component_a_button, {
201
+ size: "small",
202
+ disabled: !src.value,
203
+ onMousedown: _cache[2] || (_cache[2] = withModifiers(() => {}, ["prevent"])),
204
+ onClick: _cache[3] || (_cache[3] = ($event) => handlerToolbar("zoom", -.1))
205
+ }, {
206
+ icon: withCtx(() => [..._cache[17] || (_cache[17] = [createElementVNode("i", { class: "iconfont icon-a-suoxiao_zoom-out1" }, null, -1)])]),
207
+ _: 1
208
+ }, 8, ["disabled"])]),
209
+ _: 1
210
+ }, 8, ["title"]),
211
+ createVNode(unref(Tooltip), {
212
+ title: unref(t)("sys.component.cropper.btn_rotate_left"),
213
+ placement: "bottom"
214
+ }, {
215
+ default: withCtx(() => [createVNode(_component_a_button, {
216
+ size: "small",
217
+ disabled: !src.value,
218
+ onMousedown: _cache[4] || (_cache[4] = withModifiers(() => {}, ["prevent"])),
219
+ onClick: _cache[5] || (_cache[5] = ($event) => handlerToolbar("rotate", -45))
220
+ }, {
221
+ icon: withCtx(() => [..._cache[18] || (_cache[18] = [createElementVNode("i", { class: "iconfont icon-xuanzhuan_rotate" }, null, -1)])]),
222
+ _: 1
223
+ }, 8, ["disabled"])]),
224
+ _: 1
225
+ }, 8, ["title"]),
226
+ createVNode(unref(Tooltip), {
227
+ title: unref(t)("sys.component.cropper.btn_rotate_right"),
228
+ placement: "bottom"
229
+ }, {
230
+ default: withCtx(() => [createVNode(_component_a_button, {
231
+ size: "small",
232
+ disabled: !src.value,
233
+ onMousedown: _cache[6] || (_cache[6] = withModifiers(() => {}, ["prevent"])),
234
+ onClick: _cache[7] || (_cache[7] = ($event) => handlerToolbar("rotate", 45))
235
+ }, {
236
+ icon: withCtx(() => [..._cache[19] || (_cache[19] = [createElementVNode("i", { class: "iconfont icon-xuanzhuan_2" }, null, -1)])]),
237
+ _: 1
238
+ }, 8, ["disabled"])]),
239
+ _: 1
240
+ }, 8, ["title"]),
241
+ createVNode(unref(Tooltip), {
242
+ title: unref(t)("sys.component.cropper.btn_scale_x"),
243
+ placement: "bottom"
244
+ }, {
245
+ default: withCtx(() => [createVNode(_component_a_button, {
246
+ size: "small",
247
+ disabled: !src.value,
248
+ onMousedown: _cache[8] || (_cache[8] = withModifiers(() => {}, ["prevent"])),
249
+ onClick: _cache[9] || (_cache[9] = ($event) => handlerToolbar("scaleX"))
250
+ }, {
251
+ icon: withCtx(() => [..._cache[20] || (_cache[20] = [createElementVNode("i", { class: "iconfont icon-shuipingfanzhuan_flip-horizontally" }, null, -1)])]),
252
+ _: 1
253
+ }, 8, ["disabled"])]),
254
+ _: 1
255
+ }, 8, ["title"]),
256
+ createVNode(unref(Tooltip), {
257
+ title: unref(t)("sys.component.cropper.btn_scale_y"),
258
+ placement: "bottom"
259
+ }, {
260
+ default: withCtx(() => [createVNode(_component_a_button, {
261
+ size: "small",
262
+ disabled: !src.value,
263
+ onMousedown: _cache[10] || (_cache[10] = withModifiers(() => {}, ["prevent"])),
264
+ onClick: _cache[11] || (_cache[11] = ($event) => handlerToolbar("scaleY"))
265
+ }, {
266
+ icon: withCtx(() => [..._cache[21] || (_cache[21] = [createElementVNode("i", { class: "iconfont icon-chuizhifanzhuan_flip-vertically" }, null, -1)])]),
267
+ _: 1
268
+ }, 8, ["disabled"])]),
269
+ _: 1
270
+ }, 8, ["title"]),
271
+ createVNode(unref(Tooltip), {
272
+ title: unref(t)("sys.component.cropper.btn_reset"),
273
+ placement: "bottom"
274
+ }, {
275
+ default: withCtx(() => [createVNode(_component_a_button, {
276
+ size: "small",
277
+ disabled: !src.value,
278
+ onMousedown: _cache[12] || (_cache[12] = withModifiers(() => {}, ["prevent"])),
279
+ onClick: _cache[13] || (_cache[13] = ($event) => handlerToolbar("reset"))
280
+ }, {
281
+ icon: withCtx(() => [createVNode(unref(ReloadOutlined))]),
282
+ _: 1
283
+ }, 8, ["disabled"])]),
284
+ _: 1
285
+ }, 8, ["title"])
286
+ ]),
287
+ _: 1
288
+ })], 2)) : createCommentVNode("", true)], 2)], 2)]),
289
+ _: 1
290
+ }, 16, [
291
+ "title",
292
+ "ok-text",
293
+ "onRegister"
294
+ ]);
295
+ };
296
+ }
297
+ });
298
+ //#endregion
299
+ export { CopperFreeModal_vue_vue_type_script_setup_true_name_CropperModal_lang_default as default };
@@ -0,0 +1,48 @@
1
+ .gct-cropper-free[data-v-28afc2ab] {
2
+ display: flex;
3
+ padding: 0 35px;
4
+ }
5
+ .gct-cropper-free-left[data-v-28afc2ab],
6
+ .gct-cropper-free-right[data-v-28afc2ab] {
7
+ height: 304px;
8
+ }
9
+ .gct-cropper-free-left[data-v-28afc2ab] {
10
+ width: 100%;
11
+ }
12
+ .gct-cropper-free-cropper[data-v-28afc2ab] {
13
+ position: relative;
14
+ width: 538px;
15
+ height: 304px;
16
+ background: #eee;
17
+ background-image: linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 0, transparent 75%, rgba(0, 0, 0, 0.25) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 0, transparent 75%, rgba(0, 0, 0, 0.25) 0);
18
+ background-position: 0 0,
19
+ 12px 12px;
20
+ background-size: 24px 24px;
21
+ }
22
+ .gct-cropper-free-toolbar[data-v-28afc2ab] {
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: space-between;
26
+ width: 538px;
27
+ margin-top: 10px;
28
+ }
29
+ .empty[data-v-28afc2ab] {
30
+ position: absolute;
31
+ top: 0;
32
+ left: 0;
33
+ width: 100%;
34
+ height: 100%;
35
+ }
36
+ .empty span[data-v-28afc2ab] {
37
+ display: inline-block;
38
+ width: 100%;
39
+ height: 100%;
40
+ }
41
+ .empty span[data-v-28afc2ab] .ant-upload-list {
42
+ width: 100%;
43
+ height: 100%;
44
+ }
45
+ .empty span[data-v-28afc2ab] .ant-upload-list .ant-upload-select-picture-card {
46
+ width: 100%;
47
+ height: 100%;
48
+ }
@@ -0,0 +1,7 @@
1
+ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.mjs";
2
+ import CopperModal_vue_vue_type_script_setup_true_name_CropperModal_lang_default from "./CopperModal.vue_vue_type_script_setup_true_name_CropperModal_lang.mjs";
3
+ import './CopperModal.vue_vue_type_style_index_0_scoped_f42f8311_lang.css';/* empty css */
4
+ //#region src/modules/Cropper/src/CopperModal.vue
5
+ var CopperModal_default = /* @__PURE__ */ _plugin_vue_export_helper_default(CopperModal_vue_vue_type_script_setup_true_name_CropperModal_lang_default, [["__scopeId", "data-v-f42f8311"]]);
6
+ //#endregion
7
+ export { CopperModal_default as default };
@@ -0,0 +1,283 @@
1
+ import { useDesign } from "../../../hooks/useDesign.mjs";
2
+ import "../../../hooks/index.mjs";
3
+ import { useModalInner } from "../../global-modal/src/hooks/useModal.mjs";
4
+ import { BasicModal } from "../../global-modal/index.mjs";
5
+ import Cropper_default from "./Cropper.vue.mjs";
6
+ import { createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, resolveComponent, toDisplayString, unref, withCtx, withModifiers } from "vue";
7
+ import { isFunction } from "lodash-es";
8
+ import { dataURLtoBlob, t } from "@gct-paas/core";
9
+ import { Space, Tooltip, Upload, message } from "ant-design-vue";
10
+ import { ReloadOutlined } from "@ant-design/icons-vue";
11
+ //#region src/modules/Cropper/src/CopperModal.vue?vue&type=script&setup=true&name=CropperModal&lang.ts
12
+ var _hoisted_1 = {
13
+ key: 1,
14
+ class: "empty"
15
+ };
16
+ var _hoisted_2 = { class: "flex flex-col justify-center items-center" };
17
+ var _hoisted_3 = ["title"];
18
+ var _hoisted_4 = { class: "flex-col" };
19
+ var _hoisted_5 = { class: "flex-col" };
20
+ var _hoisted_6 = { class: "flex-col text-center" };
21
+ var CopperModal_vue_vue_type_script_setup_true_name_CropperModal_lang_default = /* @__PURE__ */ defineComponent({
22
+ __name: "CopperModal",
23
+ props: {
24
+ circled: {
25
+ type: Boolean,
26
+ default: true
27
+ },
28
+ uploadApi: { type: Function },
29
+ src: { type: String },
30
+ sourceUrlValue: { type: String }
31
+ },
32
+ emits: ["uploadSuccess", "register"],
33
+ setup(__props, { emit: __emit }) {
34
+ const props = __props;
35
+ const emit = __emit;
36
+ const src = ref(props.src || "");
37
+ const previewSource = ref("");
38
+ const cropper = ref();
39
+ let scaleX = 1;
40
+ let scaleY = 1;
41
+ let filename = "";
42
+ const { prefixCls } = useDesign("cropper-am");
43
+ const [register, { closeModal, setModalProps }] = useModalInner();
44
+ function handleBeforeUpload(file) {
45
+ if (file.size / 1024 / 1024 > 4) {
46
+ message.warn(`【${file.name}】文件大小不能超过 4MB`);
47
+ return false;
48
+ }
49
+ console.log(file.type);
50
+ if (![
51
+ "image/jpg",
52
+ "image/jpeg",
53
+ "image/png",
54
+ "image/bmp"
55
+ ].includes(file.type)) {
56
+ message.warning(`【${file.name}】${t("sys.component.cropper.acceptAvatarTypeTip")}`);
57
+ return false;
58
+ }
59
+ const reader = new FileReader();
60
+ reader.readAsDataURL(file);
61
+ src.value = "";
62
+ previewSource.value = "";
63
+ reader.onload = function(e) {
64
+ src.value = e.target?.result ?? "";
65
+ filename = file.name;
66
+ };
67
+ return false;
68
+ }
69
+ function handleCropend({ imgBase64 }) {
70
+ previewSource.value = imgBase64;
71
+ }
72
+ function handleReady(cropperInstance) {
73
+ cropper.value = cropperInstance;
74
+ }
75
+ function handlerToolbar(event, arg) {
76
+ if (event === "scaleX") scaleX = arg = scaleX === -1 ? 1 : -1;
77
+ if (event === "scaleY") scaleY = arg = scaleY === -1 ? 1 : -1;
78
+ cropper.value?.[event]?.(arg);
79
+ }
80
+ async function handleOk() {
81
+ const uploadApi = props.uploadApi;
82
+ if (uploadApi && isFunction(uploadApi)) {
83
+ const blob = dataURLtoBlob(previewSource.value);
84
+ try {
85
+ setModalProps({ confirmLoading: true });
86
+ const result = await uploadApi({
87
+ name: "file",
88
+ file: blob,
89
+ filename
90
+ });
91
+ emit("uploadSuccess", {
92
+ source: previewSource.value,
93
+ data: result.data.data
94
+ });
95
+ closeModal();
96
+ } finally {
97
+ setModalProps({ confirmLoading: false });
98
+ }
99
+ }
100
+ }
101
+ return (_ctx, _cache) => {
102
+ const _component_PlusOutlined = resolveComponent("PlusOutlined");
103
+ const _component_a_button = resolveComponent("a-button");
104
+ const _component_Avatar = resolveComponent("Avatar");
105
+ return openBlock(), createBlock(unref(BasicModal), mergeProps(_ctx.$attrs, {
106
+ title: unref(t)("sys.component.cropper.modalTitle"),
107
+ width: "600px",
108
+ "min-height": "570",
109
+ "can-fullscreen": false,
110
+ "ok-text": unref(t)("sys.okText"),
111
+ onRegister: unref(register),
112
+ onOk: handleOk
113
+ }), {
114
+ default: withCtx(() => [createElementVNode("div", { class: normalizeClass(unref(prefixCls)) }, [createElementVNode("div", { class: normalizeClass(`${unref(prefixCls)}-left`) }, [createElementVNode("div", { class: normalizeClass(`${unref(prefixCls)}-cropper`) }, [src.value ? (openBlock(), createBlock(Cropper_default, {
115
+ key: 0,
116
+ src: src.value,
117
+ height: "360px",
118
+ width: "360px",
119
+ circled: __props.circled,
120
+ onCropend: handleCropend,
121
+ onReady: handleReady
122
+ }, null, 8, ["src", "circled"])) : createCommentVNode("", true), !__props.sourceUrlValue && src.value === "/404.png" ? (openBlock(), createElementBlock("div", _hoisted_1, [createVNode(unref(Upload), {
123
+ "list-type": "picture-card",
124
+ "file-list": [],
125
+ accept: "image/*",
126
+ "before-upload": handleBeforeUpload
127
+ }, {
128
+ default: withCtx(() => [createElementVNode("div", _hoisted_2, [
129
+ createVNode(_component_PlusOutlined),
130
+ _cache[14] || (_cache[14] = createElementVNode("div", { class: "mt12px" }, "点击或将图片拖拽到这里上传", -1)),
131
+ _cache[15] || (_cache[15] = createElementVNode("div", { class: "color-[#8B8B8B] mt8px" }, " 仅支持JPG、PNG、JPEG、BMP格式,文件小于4M ", -1))
132
+ ])]),
133
+ _: 1
134
+ })])) : createCommentVNode("", true)], 2), __props.sourceUrlValue || src.value !== "/404.png" ? (openBlock(), createElementBlock("div", {
135
+ key: 0,
136
+ class: normalizeClass(`${unref(prefixCls)}-toolbar`)
137
+ }, [createVNode(unref(Upload), {
138
+ "file-list": [],
139
+ accept: "image/*",
140
+ "before-upload": handleBeforeUpload
141
+ }, {
142
+ default: withCtx(() => [createElementVNode("a", {
143
+ title: unref(t)("sys.reUpload"),
144
+ placement: "bottom"
145
+ }, toDisplayString(unref(t)("sys.reUpload")), 9, _hoisted_3)]),
146
+ _: 1
147
+ }), createVNode(unref(Space), null, {
148
+ default: withCtx(() => [
149
+ createVNode(unref(Tooltip), {
150
+ title: unref(t)("sys.component.cropper.btn_zoom_in"),
151
+ placement: "bottom"
152
+ }, {
153
+ default: withCtx(() => [createVNode(_component_a_button, {
154
+ size: "small",
155
+ disabled: !src.value,
156
+ onMousedown: _cache[0] || (_cache[0] = withModifiers(() => {}, ["prevent"])),
157
+ onClick: _cache[1] || (_cache[1] = ($event) => handlerToolbar("zoom", .1))
158
+ }, {
159
+ icon: withCtx(() => [..._cache[16] || (_cache[16] = [createElementVNode("i", { class: "iconfont icon-fangda_zoom-in" }, null, -1)])]),
160
+ _: 1
161
+ }, 8, ["disabled"])]),
162
+ _: 1
163
+ }, 8, ["title"]),
164
+ createVNode(unref(Tooltip), {
165
+ title: unref(t)("sys.component.cropper.btn_zoom_out"),
166
+ placement: "bottom"
167
+ }, {
168
+ default: withCtx(() => [createVNode(_component_a_button, {
169
+ size: "small",
170
+ disabled: !src.value,
171
+ onMousedown: _cache[2] || (_cache[2] = withModifiers(() => {}, ["prevent"])),
172
+ onClick: _cache[3] || (_cache[3] = ($event) => handlerToolbar("zoom", -.1))
173
+ }, {
174
+ icon: withCtx(() => [..._cache[17] || (_cache[17] = [createElementVNode("i", { class: "iconfont icon-a-suoxiao_zoom-out1" }, null, -1)])]),
175
+ _: 1
176
+ }, 8, ["disabled"])]),
177
+ _: 1
178
+ }, 8, ["title"]),
179
+ createVNode(unref(Tooltip), {
180
+ title: unref(t)("sys.component.cropper.btn_rotate_left"),
181
+ placement: "bottom"
182
+ }, {
183
+ default: withCtx(() => [createVNode(_component_a_button, {
184
+ size: "small",
185
+ disabled: !src.value,
186
+ onMousedown: _cache[4] || (_cache[4] = withModifiers(() => {}, ["prevent"])),
187
+ onClick: _cache[5] || (_cache[5] = ($event) => handlerToolbar("rotate", -45))
188
+ }, {
189
+ icon: withCtx(() => [..._cache[18] || (_cache[18] = [createElementVNode("i", { class: "iconfont icon-xuanzhuan_rotate" }, null, -1)])]),
190
+ _: 1
191
+ }, 8, ["disabled"])]),
192
+ _: 1
193
+ }, 8, ["title"]),
194
+ createVNode(unref(Tooltip), {
195
+ title: unref(t)("sys.component.cropper.btn_rotate_right"),
196
+ placement: "bottom"
197
+ }, {
198
+ default: withCtx(() => [createVNode(_component_a_button, {
199
+ size: "small",
200
+ disabled: !src.value,
201
+ onMousedown: _cache[6] || (_cache[6] = withModifiers(() => {}, ["prevent"])),
202
+ onClick: _cache[7] || (_cache[7] = ($event) => handlerToolbar("rotate", 45))
203
+ }, {
204
+ icon: withCtx(() => [..._cache[19] || (_cache[19] = [createElementVNode("i", { class: "iconfont icon-xuanzhuan_2" }, null, -1)])]),
205
+ _: 1
206
+ }, 8, ["disabled"])]),
207
+ _: 1
208
+ }, 8, ["title"]),
209
+ createVNode(unref(Tooltip), {
210
+ title: unref(t)("sys.component.cropper.btn_scale_x"),
211
+ placement: "bottom"
212
+ }, {
213
+ default: withCtx(() => [createVNode(_component_a_button, {
214
+ size: "small",
215
+ disabled: !src.value,
216
+ onMousedown: _cache[8] || (_cache[8] = withModifiers(() => {}, ["prevent"])),
217
+ onClick: _cache[9] || (_cache[9] = ($event) => handlerToolbar("scaleX"))
218
+ }, {
219
+ icon: withCtx(() => [..._cache[20] || (_cache[20] = [createElementVNode("i", { class: "iconfont icon-shuipingfanzhuan_flip-horizontally" }, null, -1)])]),
220
+ _: 1
221
+ }, 8, ["disabled"])]),
222
+ _: 1
223
+ }, 8, ["title"]),
224
+ createVNode(unref(Tooltip), {
225
+ title: unref(t)("sys.component.cropper.btn_scale_y"),
226
+ placement: "bottom"
227
+ }, {
228
+ default: withCtx(() => [createVNode(_component_a_button, {
229
+ size: "small",
230
+ disabled: !src.value,
231
+ onMousedown: _cache[10] || (_cache[10] = withModifiers(() => {}, ["prevent"])),
232
+ onClick: _cache[11] || (_cache[11] = ($event) => handlerToolbar("scaleY"))
233
+ }, {
234
+ icon: withCtx(() => [..._cache[21] || (_cache[21] = [createElementVNode("i", { class: "iconfont icon-chuizhifanzhuan_flip-vertically" }, null, -1)])]),
235
+ _: 1
236
+ }, 8, ["disabled"])]),
237
+ _: 1
238
+ }, 8, ["title"]),
239
+ createVNode(unref(Tooltip), {
240
+ title: unref(t)("sys.component.cropper.btn_reset"),
241
+ placement: "bottom"
242
+ }, {
243
+ default: withCtx(() => [createVNode(_component_a_button, {
244
+ size: "small",
245
+ disabled: !src.value,
246
+ onMousedown: _cache[12] || (_cache[12] = withModifiers(() => {}, ["prevent"])),
247
+ onClick: _cache[13] || (_cache[13] = ($event) => handlerToolbar("reset"))
248
+ }, {
249
+ icon: withCtx(() => [createVNode(unref(ReloadOutlined))]),
250
+ _: 1
251
+ }, 8, ["disabled"])]),
252
+ _: 1
253
+ }, 8, ["title"])
254
+ ]),
255
+ _: 1
256
+ })], 2)) : createCommentVNode("", true)], 2), createElementVNode("div", { class: normalizeClass([`${unref(prefixCls)}-right`, "text-center"]) }, [_cache[22] || (_cache[22] = createTextVNode(" 预览 ", -1)), createElementVNode("div", { class: normalizeClass(`${unref(prefixCls)}-group`) }, [
257
+ createElementVNode("div", _hoisted_4, [createVNode(_component_Avatar, {
258
+ src: previewSource.value,
259
+ size: 102
260
+ }, null, 8, ["src"])]),
261
+ createElementVNode("div", _hoisted_5, [createVNode(_component_Avatar, {
262
+ src: previewSource.value,
263
+ size: 78
264
+ }, null, 8, ["src"])]),
265
+ createElementVNode("div", _hoisted_6, [createVNode(_component_Avatar, {
266
+ src: previewSource.value,
267
+ size: 28
268
+ }, null, 8, ["src"])])
269
+ ], 2)], 2)], 2), _cache[23] || (_cache[23] = createElementVNode("div", {
270
+ class: "absolute z-10 top-0 left-2/3 w-0 h-full",
271
+ style: { "border-left": "1px solid #e0e3ea" }
272
+ }, null, -1))]),
273
+ _: 1
274
+ }, 16, [
275
+ "title",
276
+ "ok-text",
277
+ "onRegister"
278
+ ]);
279
+ };
280
+ }
281
+ });
282
+ //#endregion
283
+ export { CopperModal_vue_vue_type_script_setup_true_name_CropperModal_lang_default as default };