@gct-paas/core-web 0.1.4-dev.12 → 0.1.4-dev.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/de_DE-CYotlhMS.js +1 -0
- package/dist/en_US-DjLwq3RF.js +1 -0
- package/dist/es_ES-0UhVFVHw.js +1 -0
- package/dist/fr_FR-Xgsbf3iG.js +1 -0
- package/dist/index.min.css +1 -1
- package/dist/ja_JP-3aUbzjBv.js +1 -0
- package/dist/loader.esm.min.js +1 -0
- package/dist/monaco-editor-DKwtDu2R.js +1 -0
- package/dist/objectSpread2-BL8YUfIz.js +1 -0
- package/dist/pt_PT-BzMPT58e.js +1 -0
- package/dist/ru_RU-BRHq1RXx.js +1 -0
- package/dist/tr_TR-CPqM558w.js +1 -0
- package/dist/useMonacoEditor-DrIqFqr0.js +1 -0
- package/dist/vi_VN-BOKGrWoY.js +1 -0
- package/dist/zh_CN-upOsz50m.js +1 -0
- package/dist/zh_TW-jlmatmAz.js +1 -0
- package/es/components/UserPick/index.d.ts +46 -0
- package/es/components/UserPick/index.mjs +113 -0
- package/es/components/UserPick/src/components/dept-item.vue.d.ts +11 -0
- package/es/components/UserPick/src/components/dept-item.vue.mjs +7 -0
- package/es/components/UserPick/src/components/dept-item.vue_vue_type_script_setup_true_lang.mjs +32 -0
- package/es/components/UserPick/src/components/dept-item.vue_vue_type_style_index_0_scoped_075b8ce7_lang.css +3 -0
- package/es/components/UserPick/src/components/user-item.vue.d.ts +11 -0
- package/es/components/UserPick/src/components/user-item.vue.mjs +7 -0
- package/es/components/UserPick/src/components/user-item.vue_vue_type_script_setup_true_lang.mjs +33 -0
- package/es/components/UserPick/src/components/user-item.vue_vue_type_style_index_0_scoped_1456f8b9_lang.css +3 -0
- package/es/components/UserPick/src/hooks.d.ts +1 -0
- package/es/components/UserPick/src/hooks.mjs +94 -0
- package/es/components/UserPick/src/user-pick.vue.d.ts +17 -0
- package/es/components/UserPick/src/user-pick.vue.mjs +7 -0
- package/es/components/UserPick/src/user-pick.vue_vue_type_script_setup_true_lang.mjs +280 -0
- package/es/components/UserPick/src/user-pick.vue_vue_type_style_index_0_scoped_081b9663_lang.css +39 -0
- package/es/components/field-upload/index.d.ts +2 -0
- package/es/components/field-upload/index.mjs +7 -0
- package/es/components/field-upload/src/FieldUpload.vue.d.ts +37 -0
- package/es/components/field-upload/src/FieldUpload.vue.mjs +5 -0
- package/es/components/field-upload/src/FieldUpload.vue_vue_type_script_setup_true_name_FieldUpload_lang.mjs +111 -0
- package/es/components/field-upload/src/components/base-upload.vue.d.ts +21 -0
- package/es/components/field-upload/src/components/base-upload.vue.mjs +7 -0
- package/es/components/field-upload/src/components/base-upload.vue_vue_type_script_name_baseUpload_setup_true_lang.mjs +227 -0
- package/es/components/field-upload/src/components/base-upload.vue_vue_type_style_index_0_scoped_f53b6ac6_lang.css +76 -0
- package/es/components/field-upload/src/components/file-list.vue.d.ts +17 -0
- package/es/components/field-upload/src/components/file-list.vue.mjs +7 -0
- package/es/components/field-upload/src/components/file-list.vue_vue_type_script_setup_true_name_fileList_lang.mjs +129 -0
- package/es/components/field-upload/src/components/file-list.vue_vue_type_style_index_0_scoped_3918aad0_lang.css +129 -0
- package/es/components/field-upload/src/components/upload-design.vue.d.ts +5 -0
- package/es/components/field-upload/src/components/upload-design.vue.mjs +7 -0
- package/es/components/field-upload/src/components/upload-design.vue_vue_type_script_name_UploadDesign_setup_true_lang.mjs +43 -0
- package/es/components/field-upload/src/components/upload-design.vue_vue_type_style_index_0_scoped_1e5189c1_lang.css +43 -0
- package/es/components/field-upload/src/hooks/hooks.d.ts +4 -0
- package/es/components/field-upload/src/hooks/hooks.mjs +47 -0
- package/es/components/field-upload/src/types/index.d.ts +42 -0
- package/es/components/field-upload/src/types/index.mjs +24 -0
- package/es/components/image-upload/index.d.ts +2 -0
- package/es/components/image-upload/index.mjs +7 -0
- package/es/components/image-upload/src/ImageUpload.vue.d.ts +32 -0
- package/es/components/image-upload/src/ImageUpload.vue.mjs +5 -0
- package/es/components/image-upload/src/ImageUpload.vue_vue_type_script_setup_true_name_ImageUpload_lang.mjs +74 -0
- package/es/components/image-upload/src/components/base-upload.vue.d.ts +24 -0
- package/es/components/image-upload/src/components/base-upload.vue.mjs +8 -0
- package/es/components/image-upload/src/components/base-upload.vue_vue_type_script_name_baseUpload_setup_true_lang.mjs +209 -0
- package/es/components/image-upload/src/components/base-upload.vue_vue_type_style_index_0_scoped_3248e630_lang.css +73 -0
- package/es/components/image-upload/src/components/base-upload.vue_vue_type_style_index_1_lang.css +3 -0
- package/es/components/image-upload/src/components/upload-design.vue.d.ts +6 -0
- package/es/components/image-upload/src/components/upload-design.vue.mjs +7 -0
- package/es/components/image-upload/src/components/upload-design.vue_vue_type_script_name_UploadDesign_setup_true_lang.mjs +33 -0
- package/es/components/image-upload/src/components/upload-design.vue_vue_type_style_index_0_scoped_575d3a1a_lang.css +33 -0
- package/es/components/image-upload/src/hooks/hooks.d.ts +2 -0
- package/es/components/image-upload/src/types/index.d.ts +34 -0
- package/es/components/image-upload/src/types/index.mjs +8 -0
- package/es/components/index.d.ts +5 -1
- package/es/components/index.mjs +3 -0
- package/es/create-app-vue.mjs +2 -0
- package/es/hooks/index.d.ts +1 -0
- package/es/hooks/index.mjs +1 -0
- package/es/hooks/useFile.mjs +22 -0
- package/es/hooks/useLocale.d.ts +365 -1
- package/es/hooks/useLocale.mjs +20 -24
- package/es/index.d.ts +1 -0
- package/es/index.mjs +12 -6
- package/es/loader.d.ts +1 -0
- package/es/loader.mjs +92 -0
- package/es/modules/Cropper/index.mjs +11 -0
- package/es/modules/Cropper/src/CopperFreeModal.vue.mjs +7 -0
- package/es/modules/Cropper/src/CopperFreeModal.vue_vue_type_script_setup_true_name_CropperModal_lang.mjs +299 -0
- package/es/modules/Cropper/src/CopperFreeModal.vue_vue_type_style_index_0_scoped_28afc2ab_lang.css +48 -0
- package/es/modules/Cropper/src/CopperModal.vue.mjs +7 -0
- package/es/modules/Cropper/src/CopperModal.vue_vue_type_script_setup_true_name_CropperModal_lang.mjs +283 -0
- package/es/modules/Cropper/src/CopperModal.vue_vue_type_style_index_0_scoped_f42f8311_lang.css +71 -0
- package/es/modules/Cropper/src/Cropper.vue.d.ts +3 -3
- package/es/modules/Cropper/src/Cropper.vue.mjs +25 -0
- package/es/modules/Cropper/src/Cropper.vue_vue_type_script_lang.mjs +173 -0
- package/es/modules/Cropper/src/Cropper.vue_vue_type_style_index_0_lang.css +4 -0
- package/es/modules/Cropper/src/CropperAvatar.vue.mjs +7 -0
- package/es/modules/Cropper/src/CropperAvatar.vue_vue_type_script_setup_true_name_CropperAvatar_lang.mjs +116 -0
- package/es/modules/Cropper/src/CropperAvatar.vue_vue_type_style_index_0_scoped_66052c52_lang.css +39 -0
- package/es/modules/Cropper/src/CropperFree.vue.mjs +7 -0
- package/es/modules/Cropper/src/CropperFree.vue_vue_type_script_setup_true_name_CropperPhoto_lang.mjs +166 -0
- package/es/modules/Cropper/src/CropperFree.vue_vue_type_style_index_0_scoped_dc019220_lang.css +83 -0
- package/es/modules/code-editor/index.d.ts +3 -3
- package/es/modules/code-editor/monaco-editor.vue.d.ts +1 -1
- package/es/modules/code-editor/monaco-editor.vue.mjs +2 -2
- package/es/modules/code-editor/monaco-editor.vue_vue_type_script_setup_true_name_code-editor_lang.mjs +4 -3
- 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
- package/es/modules/gct-table/editor/gct-table-date/gct-table-date.mjs +1 -1
- package/es/modules/gct-table/editor/gct-table-text/gct-table-text.mjs +1 -1
- package/es/modules/global-modal/src/BasicModal.vue.d.ts +2 -2
- package/package.json +7 -14
- package/dist/index.esm.min.js +0 -9864
- package/dist/monaco-editor-BHuf3IVH.js +0 -280
- package/dist/useMonacoEditor-CfhCBaPa.js +0 -2852
- /package/es/{modules/Cropper/hooks → hooks}/useFile.d.ts +0 -0
- /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,116 @@
|
|
|
1
|
+
import { useDesign } from "../../../hooks/useDesign.mjs";
|
|
2
|
+
import { transformUrl } from "../../../hooks/useFile.mjs";
|
|
3
|
+
import "../../../hooks/index.mjs";
|
|
4
|
+
import { useModal as useModal$1 } from "../../global-modal/src/hooks/useModal.mjs";
|
|
5
|
+
import "../../global-modal/index.mjs";
|
|
6
|
+
import CopperModal_default from "./CopperModal.vue.mjs";
|
|
7
|
+
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, normalizeStyle, openBlock, ref, resolveComponent, toDisplayString, unref, watch, watchEffect, withCtx } from "vue";
|
|
8
|
+
import { t } from "@gct-paas/core";
|
|
9
|
+
//#region src/modules/Cropper/src/CropperAvatar.vue?vue&type=script&setup=true&name=CropperAvatar&lang.ts
|
|
10
|
+
var _hoisted_1 = ["src"];
|
|
11
|
+
var CropperAvatar_vue_vue_type_script_setup_true_name_CropperAvatar_lang_default = /* @__PURE__ */ defineComponent({
|
|
12
|
+
__name: "CropperAvatar",
|
|
13
|
+
props: {
|
|
14
|
+
width: {
|
|
15
|
+
type: [String, Number],
|
|
16
|
+
default: "200px"
|
|
17
|
+
},
|
|
18
|
+
value: { type: String },
|
|
19
|
+
showBtn: {
|
|
20
|
+
type: Boolean,
|
|
21
|
+
default: true
|
|
22
|
+
},
|
|
23
|
+
btnProps: { type: Object },
|
|
24
|
+
btnText: {
|
|
25
|
+
type: String,
|
|
26
|
+
default: ""
|
|
27
|
+
},
|
|
28
|
+
uploadApi: { type: Function }
|
|
29
|
+
},
|
|
30
|
+
emits: ["update:value", "change"],
|
|
31
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
32
|
+
const props = __props;
|
|
33
|
+
const emit = __emit;
|
|
34
|
+
const defaultSrc = ref("");
|
|
35
|
+
const sourceValue = ref(transformUrl(props.value) || "");
|
|
36
|
+
const sourceUrlValue = ref(props.value || "");
|
|
37
|
+
const { prefixCls } = useDesign("cropper-avatar");
|
|
38
|
+
const [register, { openModal, closeModal }] = useModal$1();
|
|
39
|
+
const getClass = computed(() => [prefixCls]);
|
|
40
|
+
const getWidth = computed(() => `${props.width}`.replace(/px/, "") + "px");
|
|
41
|
+
const getIconWidth = computed(() => parseInt(`${props.width}`.replace(/px/, "")) / 2 + "px");
|
|
42
|
+
const getStyle = computed(() => ({ width: unref(getWidth) }));
|
|
43
|
+
const getImageWrapperStyle = computed(() => ({
|
|
44
|
+
width: unref(getWidth),
|
|
45
|
+
height: unref(getWidth)
|
|
46
|
+
}));
|
|
47
|
+
watchEffect(() => {
|
|
48
|
+
sourceValue.value = transformUrl(props.value) || "";
|
|
49
|
+
sourceUrlValue.value = props.value || "";
|
|
50
|
+
});
|
|
51
|
+
watch(() => sourceUrlValue.value, (v) => {
|
|
52
|
+
emit("update:value", v);
|
|
53
|
+
});
|
|
54
|
+
function handleUploadSuccess({ source, data }) {
|
|
55
|
+
sourceValue.value = transformUrl(data);
|
|
56
|
+
sourceUrlValue.value = data;
|
|
57
|
+
emit("change", {
|
|
58
|
+
source,
|
|
59
|
+
data
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const handleClick = () => {
|
|
63
|
+
openModal();
|
|
64
|
+
};
|
|
65
|
+
__expose({
|
|
66
|
+
openModal: openModal.bind(null, true),
|
|
67
|
+
closeModal
|
|
68
|
+
});
|
|
69
|
+
return (_ctx, _cache) => {
|
|
70
|
+
const _component_Icon = resolveComponent("Icon");
|
|
71
|
+
const _component_a_button = resolveComponent("a-button");
|
|
72
|
+
return openBlock(), createElementBlock("div", {
|
|
73
|
+
class: normalizeClass(getClass.value),
|
|
74
|
+
style: normalizeStyle(getStyle.value)
|
|
75
|
+
}, [
|
|
76
|
+
createElementVNode("div", {
|
|
77
|
+
class: normalizeClass(`${unref(prefixCls)}-image-wrapper`),
|
|
78
|
+
style: normalizeStyle(getImageWrapperStyle.value),
|
|
79
|
+
onClick: handleClick
|
|
80
|
+
}, [createElementVNode("div", {
|
|
81
|
+
class: normalizeClass(`${unref(prefixCls)}-image-mask`),
|
|
82
|
+
style: normalizeStyle(getImageWrapperStyle.value)
|
|
83
|
+
}, [createVNode(_component_Icon, {
|
|
84
|
+
icon: "ant-design:edit-outlined",
|
|
85
|
+
size: getIconWidth.value,
|
|
86
|
+
style: normalizeStyle(getImageWrapperStyle.value),
|
|
87
|
+
color: "#d6d6d6"
|
|
88
|
+
}, null, 8, ["size", "style"])], 6), createElementVNode("img", {
|
|
89
|
+
src: __props.value ? sourceValue.value : defaultSrc.value,
|
|
90
|
+
alt: "avatar"
|
|
91
|
+
}, null, 8, _hoisted_1)], 6),
|
|
92
|
+
__props.showBtn ? (openBlock(), createBlock(_component_a_button, mergeProps({
|
|
93
|
+
key: 0,
|
|
94
|
+
class: `${unref(prefixCls)}-upload-btn`
|
|
95
|
+
}, __props.btnProps, { onClick: unref(openModal) }), {
|
|
96
|
+
default: withCtx(() => [createTextVNode(toDisplayString(__props.btnText ? __props.btnText : unref(t)("sys.component.cropper.selectImage")), 1)]),
|
|
97
|
+
_: 1
|
|
98
|
+
}, 16, ["class", "onClick"])) : createCommentVNode("", true),
|
|
99
|
+
createVNode(CopperModal_default, {
|
|
100
|
+
"upload-api": __props.uploadApi,
|
|
101
|
+
src: sourceValue.value,
|
|
102
|
+
"source-url-value": sourceUrlValue.value,
|
|
103
|
+
onRegister: unref(register),
|
|
104
|
+
onUploadSuccess: handleUploadSuccess
|
|
105
|
+
}, null, 8, [
|
|
106
|
+
"upload-api",
|
|
107
|
+
"src",
|
|
108
|
+
"source-url-value",
|
|
109
|
+
"onRegister"
|
|
110
|
+
])
|
|
111
|
+
], 6);
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
//#endregion
|
|
116
|
+
export { CropperAvatar_vue_vue_type_script_setup_true_name_CropperAvatar_lang_default as default };
|
package/es/modules/Cropper/src/CropperAvatar.vue_vue_type_style_index_0_scoped_66052c52_lang.css
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
.gct-cropper-avatar[data-v-66052c52] {
|
|
2
|
+
display: inline-block;
|
|
3
|
+
text-align: center;
|
|
4
|
+
}
|
|
5
|
+
.gct-cropper-avatar-image-wrapper[data-v-66052c52] {
|
|
6
|
+
overflow: hidden;
|
|
7
|
+
border: 1px solid var(--gct-color-border);
|
|
8
|
+
border-radius: 50%;
|
|
9
|
+
background: var(--gct-color-bg-1);
|
|
10
|
+
cursor: pointer;
|
|
11
|
+
position: relative;
|
|
12
|
+
}
|
|
13
|
+
.gct-cropper-avatar-image-wrapper img[data-v-66052c52] {
|
|
14
|
+
width: 100%;
|
|
15
|
+
}
|
|
16
|
+
.gct-cropper-avatar-image-mask[data-v-66052c52] {
|
|
17
|
+
position: absolute;
|
|
18
|
+
width: inherit;
|
|
19
|
+
height: inherit;
|
|
20
|
+
transition: opacity 0.4s;
|
|
21
|
+
border: inherit;
|
|
22
|
+
border-radius: inherit;
|
|
23
|
+
opacity: 0;
|
|
24
|
+
background: rgba(0, 0, 0, 0.4);
|
|
25
|
+
cursor: pointer;
|
|
26
|
+
left: -1px;
|
|
27
|
+
top: -1px;
|
|
28
|
+
}
|
|
29
|
+
.gct-cropper-avatar-image-mask[data-v-66052c52] svg {
|
|
30
|
+
margin: auto;
|
|
31
|
+
width: 24px;
|
|
32
|
+
height: 24px;
|
|
33
|
+
}
|
|
34
|
+
.gct-cropper-avatar-image-mask[data-v-66052c52]:hover {
|
|
35
|
+
opacity: 40;
|
|
36
|
+
}
|
|
37
|
+
.gct-cropper-avatar-upload-btn[data-v-66052c52] {
|
|
38
|
+
margin: 10px auto;
|
|
39
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.mjs";
|
|
2
|
+
import CropperFree_vue_vue_type_script_setup_true_name_CropperPhoto_lang_default from "./CropperFree.vue_vue_type_script_setup_true_name_CropperPhoto_lang.mjs";
|
|
3
|
+
import './CropperFree.vue_vue_type_style_index_0_scoped_dc019220_lang.css';/* empty css */
|
|
4
|
+
//#region src/modules/Cropper/src/CropperFree.vue
|
|
5
|
+
var CropperFree_default = /* @__PURE__ */ _plugin_vue_export_helper_default(CropperFree_vue_vue_type_script_setup_true_name_CropperPhoto_lang_default, [["__scopeId", "data-v-dc019220"]]);
|
|
6
|
+
//#endregion
|
|
7
|
+
export { CropperFree_default as default };
|
package/es/modules/Cropper/src/CropperFree.vue_vue_type_script_setup_true_name_CropperPhoto_lang.mjs
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { fileUrlParser } from "../../../hooks/useFile.mjs";
|
|
2
|
+
import "../../../hooks/index.mjs";
|
|
3
|
+
import { useModal as useModal$1 } from "../../global-modal/src/hooks/useModal.mjs";
|
|
4
|
+
import "../../global-modal/index.mjs";
|
|
5
|
+
import CopperFreeModal_default from "./CopperFreeModal.vue.mjs";
|
|
6
|
+
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, onBeforeUnmount, onMounted, openBlock, ref, resolveComponent, toDisplayString, unref, watch, watchEffect } from "vue";
|
|
7
|
+
import { t } from "@gct-paas/core";
|
|
8
|
+
import { message } from "ant-design-vue";
|
|
9
|
+
//#region src/modules/Cropper/src/CropperFree.vue?vue&type=script&setup=true&name=CropperPhoto&lang.ts
|
|
10
|
+
var _hoisted_1 = ["src"];
|
|
11
|
+
var _hoisted_2 = {
|
|
12
|
+
key: 0,
|
|
13
|
+
class: "iconfont icon-tupian-shili"
|
|
14
|
+
};
|
|
15
|
+
var _hoisted_3 = { class: "prompt" };
|
|
16
|
+
var _hoisted_4 = {
|
|
17
|
+
key: 0,
|
|
18
|
+
class: "auxiliary"
|
|
19
|
+
};
|
|
20
|
+
var prefixCls = "cropper-photo";
|
|
21
|
+
var CropperFree_vue_vue_type_script_setup_true_name_CropperPhoto_lang_default = /* @__PURE__ */ defineComponent({
|
|
22
|
+
__name: "CropperFree",
|
|
23
|
+
props: {
|
|
24
|
+
value: { type: String },
|
|
25
|
+
uploadApi: { type: Function },
|
|
26
|
+
aspectRatio: { type: Number },
|
|
27
|
+
auxiliary: { type: String },
|
|
28
|
+
icon: { type: String },
|
|
29
|
+
isDrag: {
|
|
30
|
+
type: Boolean,
|
|
31
|
+
default: false
|
|
32
|
+
},
|
|
33
|
+
accept: { type: Array },
|
|
34
|
+
beforeUpload: { type: Function },
|
|
35
|
+
modalTitle: { type: String },
|
|
36
|
+
uploadText: { type: String },
|
|
37
|
+
disabled: {
|
|
38
|
+
type: Boolean,
|
|
39
|
+
default: false
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
emits: ["update:value", "change"],
|
|
43
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
44
|
+
const props = __props;
|
|
45
|
+
const emit = __emit;
|
|
46
|
+
const sourceValue = ref(props.value || "");
|
|
47
|
+
const sourceValueForamtted = computed(() => {
|
|
48
|
+
return sourceValue.value ? fileUrlParser(sourceValue.value) : "";
|
|
49
|
+
});
|
|
50
|
+
const [register, { openModal, closeModal }] = useModal$1();
|
|
51
|
+
const disabled = computed(() => {
|
|
52
|
+
return props.disabled;
|
|
53
|
+
});
|
|
54
|
+
const acceptList = computed(() => {
|
|
55
|
+
return props.accept?.length ? [...new Set(props.accept?.some((i) => i === "jpg" || i === "jpeg") ? props.accept?.concat(["jpg", "jpeg"]) : props.accept)].map((i) => "image/" + i) : [
|
|
56
|
+
"image/jpg",
|
|
57
|
+
"image/jpeg",
|
|
58
|
+
"image/png"
|
|
59
|
+
];
|
|
60
|
+
});
|
|
61
|
+
watchEffect(() => {
|
|
62
|
+
sourceValue.value = props.value || "";
|
|
63
|
+
});
|
|
64
|
+
watch(() => sourceValue.value, (v) => {
|
|
65
|
+
emit("update:value", v);
|
|
66
|
+
});
|
|
67
|
+
onBeforeUnmount(() => {});
|
|
68
|
+
onMounted(() => {
|
|
69
|
+
const dropzone = document.getElementById("dropzone");
|
|
70
|
+
dropzone?.addEventListener("dragover", (e) => {
|
|
71
|
+
e.stopPropagation();
|
|
72
|
+
e.preventDefault();
|
|
73
|
+
});
|
|
74
|
+
dropzone?.addEventListener("drop", (e) => {
|
|
75
|
+
e.stopPropagation();
|
|
76
|
+
e.preventDefault();
|
|
77
|
+
const file = e.dataTransfer?.files[0];
|
|
78
|
+
console.log(e, file);
|
|
79
|
+
if (file) {
|
|
80
|
+
if (!acceptList.value.includes(file.type)) {
|
|
81
|
+
message.warning(t("sys.component.cropper.acceptTip"));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
openModal(true, { file });
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
function handleUploadSuccess({ source, data }) {
|
|
89
|
+
sourceValue.value = data;
|
|
90
|
+
emit("change", {
|
|
91
|
+
source,
|
|
92
|
+
data
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function handlePreview() {}
|
|
96
|
+
function handleDelete() {
|
|
97
|
+
sourceValue.value = "";
|
|
98
|
+
}
|
|
99
|
+
const handleClick = () => {
|
|
100
|
+
openModal();
|
|
101
|
+
};
|
|
102
|
+
__expose({
|
|
103
|
+
openModal: openModal.bind(null, true),
|
|
104
|
+
closeModal
|
|
105
|
+
});
|
|
106
|
+
return (_ctx, _cache) => {
|
|
107
|
+
const _component_Icon = resolveComponent("Icon");
|
|
108
|
+
return openBlock(), createElementBlock("div", {
|
|
109
|
+
id: "dropzone",
|
|
110
|
+
class: normalizeClass([prefixCls, disabled.value && "not-allow"])
|
|
111
|
+
}, [sourceValueForamtted.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createElementVNode("div", { class: normalizeClass(`${prefixCls}__wrapper`) }, [createElementVNode("img", { src: sourceValueForamtted.value }, null, 8, _hoisted_1)], 2), createElementVNode("div", { class: normalizeClass(`${prefixCls}__mask`) }, [
|
|
112
|
+
createVNode(_component_Icon, {
|
|
113
|
+
icon: "ant-design:eye-outlined",
|
|
114
|
+
size: 24,
|
|
115
|
+
color: "#ffffff",
|
|
116
|
+
onClick: handlePreview
|
|
117
|
+
}),
|
|
118
|
+
createVNode(_component_Icon, {
|
|
119
|
+
icon: "ant-design:edit-outlined",
|
|
120
|
+
size: 24,
|
|
121
|
+
color: "#ffffff",
|
|
122
|
+
onClick: unref(openModal)
|
|
123
|
+
}, null, 8, ["onClick"]),
|
|
124
|
+
createVNode(_component_Icon, {
|
|
125
|
+
icon: "ant-design:delete-outlined",
|
|
126
|
+
size: 24,
|
|
127
|
+
color: "#ffffff",
|
|
128
|
+
onClick: handleDelete
|
|
129
|
+
})
|
|
130
|
+
], 2)], 64)) : (openBlock(), createElementBlock("div", {
|
|
131
|
+
key: 1,
|
|
132
|
+
class: normalizeClass(`${prefixCls}__trigger`),
|
|
133
|
+
onClick: handleClick
|
|
134
|
+
}, [
|
|
135
|
+
__props.icon ? (openBlock(), createElementBlock("i", _hoisted_2)) : (openBlock(), createBlock(_component_Icon, {
|
|
136
|
+
key: 1,
|
|
137
|
+
icon: "ant-design:plus-outlined",
|
|
138
|
+
size: 36
|
|
139
|
+
})),
|
|
140
|
+
__props.isDrag ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createElementVNode("p", _hoisted_3, toDisplayString(_ctx.$t("sys.pageDesigner.clickOrDragToUpload")), 1), __props.accept ? (openBlock(), createElementBlock("p", _hoisted_4, toDisplayString(`支持${__props.accept?.join("、")}图片格式,大小100KB以内`), 1)) : createCommentVNode("", true)], 64)) : createCommentVNode("", true),
|
|
141
|
+
!__props.auxiliary ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [createTextVNode(toDisplayString(unref(t)("sys.clickToDoSth", { sth: unref(t)("sys.add") })), 1)], 64)) : createCommentVNode("", true)
|
|
142
|
+
], 2)), createVNode(CopperFreeModal_default, {
|
|
143
|
+
"upload-api": __props.uploadApi,
|
|
144
|
+
"aspect-ratio": __props.aspectRatio,
|
|
145
|
+
src: sourceValueForamtted.value,
|
|
146
|
+
accept: __props.accept,
|
|
147
|
+
"before-upload": __props.beforeUpload,
|
|
148
|
+
title: __props.modalTitle,
|
|
149
|
+
"upload-text": __props.uploadText,
|
|
150
|
+
onRegister: unref(register),
|
|
151
|
+
onUploadSuccess: handleUploadSuccess
|
|
152
|
+
}, null, 8, [
|
|
153
|
+
"upload-api",
|
|
154
|
+
"aspect-ratio",
|
|
155
|
+
"src",
|
|
156
|
+
"accept",
|
|
157
|
+
"before-upload",
|
|
158
|
+
"title",
|
|
159
|
+
"upload-text",
|
|
160
|
+
"onRegister"
|
|
161
|
+
])], 2);
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
//#endregion
|
|
166
|
+
export { CropperFree_vue_vue_type_script_setup_true_name_CropperPhoto_lang_default as default };
|
package/es/modules/Cropper/src/CropperFree.vue_vue_type_style_index_0_scoped_dc019220_lang.css
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
.cropper-photo[data-v-dc019220] {
|
|
2
|
+
display: inline-block;
|
|
3
|
+
position: relative;
|
|
4
|
+
width: var(--width, 200px);
|
|
5
|
+
height: var(--height, 120px);
|
|
6
|
+
overflow: hidden;
|
|
7
|
+
text-align: center;
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
}
|
|
10
|
+
.cropper-photo__trigger[data-v-dc019220] {
|
|
11
|
+
display: flex;
|
|
12
|
+
flex-direction: column;
|
|
13
|
+
align-items: center;
|
|
14
|
+
justify-content: center;
|
|
15
|
+
width: 100%;
|
|
16
|
+
height: 100%;
|
|
17
|
+
border: 1px dashed var(--gct-color-border);
|
|
18
|
+
border-radius: 4px;
|
|
19
|
+
background: #fbfbfc;
|
|
20
|
+
color: #9b9b9b;
|
|
21
|
+
}
|
|
22
|
+
.cropper-photo__trigger .iconfont[data-v-dc019220] {
|
|
23
|
+
color: #c3c3c3;
|
|
24
|
+
font-size: 32px;
|
|
25
|
+
}
|
|
26
|
+
.cropper-photo__trigger .ant-icon[data-v-dc019220] {
|
|
27
|
+
margin-bottom: 3px;
|
|
28
|
+
color: #666;
|
|
29
|
+
}
|
|
30
|
+
.cropper-photo__trigger .prompt[data-v-dc019220],
|
|
31
|
+
.cropper-photo__trigger .auxiliary[data-v-dc019220] {
|
|
32
|
+
margin: 0;
|
|
33
|
+
}
|
|
34
|
+
.cropper-photo__trigger .prompt[data-v-dc019220] {
|
|
35
|
+
color: #797a7d;
|
|
36
|
+
}
|
|
37
|
+
.cropper-photo__trigger .auxiliary[data-v-dc019220] {
|
|
38
|
+
color: #c3c3c3;
|
|
39
|
+
}
|
|
40
|
+
.cropper-photo__mask[data-v-dc019220] {
|
|
41
|
+
display: flex;
|
|
42
|
+
position: absolute;
|
|
43
|
+
top: 0;
|
|
44
|
+
left: 0;
|
|
45
|
+
align-items: center;
|
|
46
|
+
justify-content: center;
|
|
47
|
+
width: 100%;
|
|
48
|
+
height: 100%;
|
|
49
|
+
transition: all 0.3s;
|
|
50
|
+
border-radius: 4px;
|
|
51
|
+
opacity: 0;
|
|
52
|
+
background: rgba(0, 0, 0, 0.4);
|
|
53
|
+
}
|
|
54
|
+
.cropper-photo__mask .anticon[data-v-dc019220] {
|
|
55
|
+
margin-right: 20px;
|
|
56
|
+
}
|
|
57
|
+
.cropper-photo__mask .anticon[data-v-dc019220]:last-child {
|
|
58
|
+
margin-right: 0;
|
|
59
|
+
}
|
|
60
|
+
.cropper-photo__mask[data-v-dc019220]:hover {
|
|
61
|
+
opacity: 40;
|
|
62
|
+
}
|
|
63
|
+
.cropper-photo__wrapper[data-v-dc019220] {
|
|
64
|
+
width: 100%;
|
|
65
|
+
height: 100%;
|
|
66
|
+
border: 1px solid var(--gct-color-border);
|
|
67
|
+
border-radius: 4px;
|
|
68
|
+
}
|
|
69
|
+
.cropper-photo__wrapper img[data-v-dc019220] {
|
|
70
|
+
width: 100%;
|
|
71
|
+
height: 100%;
|
|
72
|
+
object-fit: contain;
|
|
73
|
+
}
|
|
74
|
+
.not-allow[data-v-dc019220] {
|
|
75
|
+
cursor: default;
|
|
76
|
+
pointer-events: none;
|
|
77
|
+
}
|
|
78
|
+
.defult-img[data-v-dc019220] {
|
|
79
|
+
position: absolute;
|
|
80
|
+
z-index: 2;
|
|
81
|
+
border: 1px solid #d9d9d9;
|
|
82
|
+
background: #fafafa;
|
|
83
|
+
}
|
|
@@ -19,7 +19,7 @@ export declare const MonacoEditor: {
|
|
|
19
19
|
handleFullScreenClick: () => void;
|
|
20
20
|
handleDownloadLogClick: () => void;
|
|
21
21
|
getEditorMarkers: () => any;
|
|
22
|
-
handleFormatCodeClick: () => void
|
|
22
|
+
handleFormatCodeClick: () => Promise<void>;
|
|
23
23
|
getValue: () => any;
|
|
24
24
|
setValue: (code: string) => void;
|
|
25
25
|
getSelectCode: () => {
|
|
@@ -77,7 +77,7 @@ export declare const MonacoEditor: {
|
|
|
77
77
|
handleFullScreenClick: () => void;
|
|
78
78
|
handleDownloadLogClick: () => void;
|
|
79
79
|
getEditorMarkers: () => any;
|
|
80
|
-
handleFormatCodeClick: () => void
|
|
80
|
+
handleFormatCodeClick: () => Promise<void>;
|
|
81
81
|
getValue: () => any;
|
|
82
82
|
setValue: (code: string) => void;
|
|
83
83
|
getSelectCode: () => {
|
|
@@ -123,7 +123,7 @@ export declare const MonacoEditor: {
|
|
|
123
123
|
handleFullScreenClick: () => void;
|
|
124
124
|
handleDownloadLogClick: () => void;
|
|
125
125
|
getEditorMarkers: () => any;
|
|
126
|
-
handleFormatCodeClick: () => void
|
|
126
|
+
handleFormatCodeClick: () => Promise<void>;
|
|
127
127
|
getValue: () => any;
|
|
128
128
|
setValue: (code: string) => void;
|
|
129
129
|
getSelectCode: () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
2
2
|
import monaco_editor_vue_vue_type_script_setup_true_name_code_editor_lang_default from "./monaco-editor.vue_vue_type_script_setup_true_name_code-editor_lang.mjs";
|
|
3
|
-
import './monaco-editor.
|
|
3
|
+
import './monaco-editor.vue_vue_type_style_index_0_scoped_ccf22884_lang.css';/* empty css */
|
|
4
4
|
//#region src/modules/code-editor/monaco-editor.vue
|
|
5
|
-
var monaco_editor_default = /* @__PURE__ */ _plugin_vue_export_helper_default(monaco_editor_vue_vue_type_script_setup_true_name_code_editor_lang_default, [["__scopeId", "data-v-
|
|
5
|
+
var monaco_editor_default = /* @__PURE__ */ _plugin_vue_export_helper_default(monaco_editor_vue_vue_type_script_setup_true_name_code_editor_lang_default, [["__scopeId", "data-v-ccf22884"]]);
|
|
6
6
|
//#endregion
|
|
7
7
|
export { monaco_editor_default as default };
|
|
@@ -3,7 +3,6 @@ import "../../utils/index.mjs";
|
|
|
3
3
|
import { Theme } from "./useMonacoEditor.mjs";
|
|
4
4
|
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, normalizeStyle, onMounted, onUnmounted, openBlock, ref, renderSlot, resolveComponent, toDisplayString, unref, watch, withCtx } from "vue";
|
|
5
5
|
import { ClearOutlined, CloudDownloadOutlined, DownCircleOutlined, FormatPainterOutlined, RobotOutlined, SearchOutlined, UpCircleOutlined } from "@ant-design/icons-vue";
|
|
6
|
-
import { format } from "sql-formatter";
|
|
7
6
|
//#region src/modules/code-editor/monaco-editor.vue?vue&type=script&setup=true&name=code-editor&lang.ts
|
|
8
7
|
var _hoisted_1 = { class: "hex-monaco-editor m-e w-full h-full overflow-hidden" };
|
|
9
8
|
var _hoisted_2 = { class: "m-e-main" };
|
|
@@ -217,9 +216,11 @@ var monaco_editor_vue_vue_type_script_setup_true_name_code_editor_lang_default =
|
|
|
217
216
|
/**
|
|
218
217
|
* 格式化代码
|
|
219
218
|
*/
|
|
220
|
-
function handleFormatCodeClick() {
|
|
219
|
+
async function handleFormatCodeClick() {
|
|
221
220
|
if (props.language == "sql") {
|
|
222
|
-
const
|
|
221
|
+
const sqlContent = getEditorContent();
|
|
222
|
+
const { format } = await import("sql-formatter");
|
|
223
|
+
const formattedSql = format(sqlContent);
|
|
223
224
|
monacoEditor.setValue(formattedSql);
|
|
224
225
|
} else monacoEditor.getAction("editor.action.formatDocument").run();
|
|
225
226
|
const newVal = getEditorContent();
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
.m-e[data-v-
|
|
1
|
+
.m-e[data-v-ccf22884] {
|
|
2
2
|
width: 100%;
|
|
3
3
|
height: 100%;
|
|
4
4
|
}
|
|
5
|
-
.m-e .m-e-main[data-v-
|
|
5
|
+
.m-e .m-e-main[data-v-ccf22884] {
|
|
6
6
|
display: flex;
|
|
7
7
|
flex-direction: column;
|
|
8
8
|
width: calc(100% - 2px);
|
|
9
9
|
height: calc(100% - 2px);
|
|
10
10
|
}
|
|
11
|
-
.m-e .m-e-main .m-e-main_toolbar[data-v-
|
|
11
|
+
.m-e .m-e-main .m-e-main_toolbar[data-v-ccf22884] {
|
|
12
12
|
position: relative;
|
|
13
13
|
z-index: 10;
|
|
14
14
|
height: 40px;
|
|
15
15
|
box-shadow: 0 2px 5px #000;
|
|
16
16
|
}
|
|
17
|
-
.m-e .m-e-main .m-e-main_toolbar .m-e-main_toolbar_left span[data-v-
|
|
17
|
+
.m-e .m-e-main .m-e-main_toolbar .m-e-main_toolbar_left span[data-v-ccf22884] {
|
|
18
18
|
padding-left: 10px;
|
|
19
19
|
font-size: 15px;
|
|
20
20
|
line-height: 40px;
|
|
21
21
|
user-select: none;
|
|
22
22
|
}
|
|
23
|
-
.m-e .m-e-main .m-e-main_toolbar .m-e-main_toolbar_right[data-v-
|
|
23
|
+
.m-e .m-e-main .m-e-main_toolbar .m-e-main_toolbar_right[data-v-ccf22884] {
|
|
24
24
|
display: flex;
|
|
25
25
|
align-items: center;
|
|
26
26
|
}
|
|
27
|
-
.m-e .m-e-main .m-e-main_toolbar .m-e-main_toolbar_right .icon[data-v-
|
|
27
|
+
.m-e .m-e-main .m-e-main_toolbar .m-e-main_toolbar_right .icon[data-v-ccf22884] {
|
|
28
28
|
display: inline-block;
|
|
29
29
|
margin-left: 10px;
|
|
30
30
|
transition: ease all 0.3s;
|
|
@@ -32,16 +32,16 @@
|
|
|
32
32
|
text-align: center;
|
|
33
33
|
cursor: pointer;
|
|
34
34
|
}
|
|
35
|
-
.m-e .m-e-main .m-e-main_toolbar .m-e-main_toolbar_right .icon[data-v-
|
|
35
|
+
.m-e .m-e-main .m-e-main_toolbar .m-e-main_toolbar_right .icon[data-v-ccf22884]:hover {
|
|
36
36
|
background-color: rgba(255, 255, 255, 0.1);
|
|
37
37
|
}
|
|
38
|
-
.m-e .m-e-main .m-e-main_toolbar .m-e-main_toolbar_right .icon.icon-active[data-v-
|
|
38
|
+
.m-e .m-e-main .m-e-main_toolbar .m-e-main_toolbar_right .icon.icon-active[data-v-ccf22884] {
|
|
39
39
|
color: #1890ff;
|
|
40
40
|
background-color: rgba(24, 144, 255, 0.1);
|
|
41
41
|
box-shadow: 0 0 4px rgba(24, 144, 255, 0.5);
|
|
42
42
|
transform: scale(1.1);
|
|
43
43
|
}
|
|
44
|
-
.m-e .m-e-main .m-e-main_container[data-v-
|
|
44
|
+
.m-e .m-e-main .m-e-main_container[data-v-ccf22884] {
|
|
45
45
|
flex: 1;
|
|
46
46
|
width: 100%;
|
|
47
47
|
height: 100%;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useGctFormValue } from "../../../gct-form/hooks/use-gct-form-value/use-gct-form-value.mjs";
|
|
2
2
|
import "../../../gct-form/index.mjs";
|
|
3
|
-
import '
|
|
3
|
+
import './gct-table-date.css';/* empty css */
|
|
4
4
|
import { createVNode, defineComponent, mergeProps, resolveComponent } from "vue";
|
|
5
5
|
import { useNamespace } from "@gct-paas/core";
|
|
6
6
|
//#region src/modules/gct-table/editor/gct-table-date/gct-table-date.tsx
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useGctFormValueByText } from "../../../gct-form/hooks/use-gct-form-value/use-gct-form-value.mjs";
|
|
2
2
|
import "../../../gct-form/index.mjs";
|
|
3
|
-
import '
|
|
3
|
+
import '../gct-table-date/gct-table-date.css';/* empty css */
|
|
4
4
|
import { createVNode, defineComponent, mergeProps, resolveComponent } from "vue";
|
|
5
5
|
import { useNamespace } from "@gct-paas/core";
|
|
6
6
|
//#region src/modules/gct-table/editor/gct-table-text/gct-table-text.tsx
|
|
@@ -246,8 +246,8 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
246
246
|
cancel: (...args: any[]) => void;
|
|
247
247
|
"visible-change": (...args: any[]) => void;
|
|
248
248
|
ok: (...args: any[]) => void;
|
|
249
|
-
"height-change": (...args: any[]) => void;
|
|
250
249
|
register: (...args: any[]) => void;
|
|
250
|
+
"height-change": (...args: any[]) => void;
|
|
251
251
|
"update:visible": (...args: any[]) => void;
|
|
252
252
|
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
253
253
|
visible: {
|
|
@@ -365,8 +365,8 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
365
365
|
onCancel?: ((...args: any[]) => any) | undefined;
|
|
366
366
|
"onVisible-change"?: ((...args: any[]) => any) | undefined;
|
|
367
367
|
onOk?: ((...args: any[]) => any) | undefined;
|
|
368
|
-
"onHeight-change"?: ((...args: any[]) => any) | undefined;
|
|
369
368
|
onRegister?: ((...args: any[]) => any) | undefined;
|
|
369
|
+
"onHeight-change"?: ((...args: any[]) => any) | undefined;
|
|
370
370
|
"onUpdate:visible"?: ((...args: any[]) => any) | undefined;
|
|
371
371
|
}>, {
|
|
372
372
|
visible: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gct-paas/core-web",
|
|
3
|
-
"version": "0.1.4-dev.
|
|
3
|
+
"version": "0.1.4-dev.14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "paas 平台网页端核心包",
|
|
6
6
|
"main": "dist/index.min.cjs",
|
|
@@ -50,14 +50,14 @@
|
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@ant-design/icons-vue": "^6.1.0",
|
|
52
52
|
"@gct-paas/api": "^0.1.1",
|
|
53
|
-
"@gct-paas/core": "0.1.4-dev.
|
|
53
|
+
"@gct-paas/core": "0.1.4-dev.14",
|
|
54
54
|
"@gct-paas/platform-icons": "^0.0.2",
|
|
55
|
-
"@gct-paas/scss": "0.1.4-dev.
|
|
55
|
+
"@gct-paas/scss": "0.1.4-dev.14",
|
|
56
56
|
"@icon-park/vue-next": "^1.4.2",
|
|
57
57
|
"@monaco-editor/loader": "^1.7.0",
|
|
58
58
|
"@vueuse/core": "^14.1.0",
|
|
59
|
-
"ant-design-vue": "3.2.20",
|
|
60
|
-
"bignumber.js": "^9.1
|
|
59
|
+
"ant-design-vue": "~3.2.20",
|
|
60
|
+
"bignumber.js": "^9.3.1",
|
|
61
61
|
"cropperjs": "^1.5.13",
|
|
62
62
|
"dayjs": "^1.11.19",
|
|
63
63
|
"lodash-es": "^4.17.23",
|
|
@@ -67,18 +67,11 @@
|
|
|
67
67
|
"qx-util": "^0.4.8",
|
|
68
68
|
"react-dnd-html5-backend": "^16.0.1",
|
|
69
69
|
"sql-formatter": "^15.7.2",
|
|
70
|
-
"vue": "^3.5.
|
|
70
|
+
"vue": "^3.5.30",
|
|
71
71
|
"vue3-dnd": "^2.1.0",
|
|
72
72
|
"vuedraggable": "^2.24.3",
|
|
73
73
|
"wujie": "^1.0.29",
|
|
74
74
|
"wujie-vue3": "^1.0.29"
|
|
75
75
|
},
|
|
76
|
-
"
|
|
77
|
-
"@gct-paas/build": "^0.1.6-dev.1",
|
|
78
|
-
"vue-tsc": "^3.2.5"
|
|
79
|
-
},
|
|
80
|
-
"peerDependencies": {
|
|
81
|
-
"vue": "^3.x"
|
|
82
|
-
},
|
|
83
|
-
"gitHead": "0a7f1a0388cb21eb1c3a4868b14d664a5a3152ed"
|
|
76
|
+
"gitHead": "d03e6d5c7bd1c3edf73777ce40e0c0ed4982622f"
|
|
84
77
|
}
|