ll-plus 2.4.5 → 2.4.8
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/es/component.mjs +3 -0
- package/es/component.mjs.map +1 -1
- package/es/components/advanced-filtering/index.d.ts +34 -16
- package/es/components/advanced-filtering/src/advanced-filtering.d.ts +1 -1
- package/es/components/advanced-filtering/src/advanced-filtering.vue.d.ts +17 -8
- package/es/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +18 -8
- package/es/components/avatar/index.d.ts +66 -31
- package/es/components/avatar/src/avatar.d.ts +33 -30
- package/es/components/avatar/src/avatar.vue.d.ts +66 -31
- package/es/components/cropper/index.d.ts +1485 -0
- package/es/components/cropper/src/cropper-image.d.ts +51 -0
- package/es/components/cropper/src/cropper-image.vue.d.ts +93 -0
- package/es/components/cropper/src/cropper-modal.vue.d.ts +1391 -0
- package/es/components/empty/index.d.ts +4 -0
- package/es/components/empty/src/empty.d.ts +1 -0
- package/es/components/empty/src/empty.vue.d.ts +4 -0
- package/es/components/form/index.d.ts +24 -8
- package/es/components/form/src/components/form-component.vue.d.ts +9 -2
- package/es/components/form/src/config/form-component.d.ts +4 -1
- package/es/components/form/src/config/form.d.ts +7 -1
- package/es/components/form/src/form.vue.d.ts +15 -6
- package/es/components/index.d.ts +1 -0
- package/es/components/key-value/index.d.ts +90 -36
- package/es/components/key-value/src/components/key-value-item.vue.d.ts +30 -12
- package/es/components/key-value/src/key-value.vue.d.ts +90 -36
- package/es/components/select-group/index.d.ts +5 -4
- package/es/components/select-group/src/select-group.d.ts +7 -1
- package/es/components/select-group/src/select-group.vue.d.ts +5 -4
- package/es/index.mjs +3 -1
- package/es/index.mjs.map +1 -1
- package/es/node_modules/.pnpm/@vueuse_shared@10.9.0_vue@3.4.25/node_modules/@vueuse/shared/index.mjs +1576 -0
- package/es/node_modules/.pnpm/@vueuse_shared@10.9.0_vue@3.4.25/node_modules/@vueuse/shared/index.mjs.map +1 -0
- package/es/node_modules/.pnpm/vue-demi@0.14.7_vue@3.4.25/node_modules/vue-demi/lib/index.mjs +30 -0
- package/es/node_modules/.pnpm/vue-demi@0.14.7_vue@3.4.25/node_modules/vue-demi/lib/index.mjs.map +1 -0
- package/es/packages/components/advanced-filtering/src/advanced-filtering.mjs +4 -1
- package/es/packages/components/advanced-filtering/src/advanced-filtering.mjs.map +1 -1
- package/es/packages/components/advanced-filtering/src/advanced-filtering.vue2.mjs +3 -4
- package/es/packages/components/advanced-filtering/src/advanced-filtering.vue2.mjs.map +1 -1
- package/es/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue2.mjs +9 -18
- package/es/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue2.mjs.map +1 -1
- package/es/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue2.mjs +1 -1
- package/es/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue2.mjs.map +1 -1
- package/es/packages/components/avatar/src/avatar.mjs +39 -13
- package/es/packages/components/avatar/src/avatar.mjs.map +1 -1
- package/es/packages/components/avatar/src/avatar.vue2.mjs +40 -127
- package/es/packages/components/avatar/src/avatar.vue2.mjs.map +1 -1
- package/es/packages/components/checkbox/index.mjs.map +1 -1
- package/es/packages/components/cropper/index.mjs +12 -0
- package/es/packages/components/cropper/index.mjs.map +1 -0
- package/es/packages/components/cropper/src/cropper-image.mjs +77 -0
- package/es/packages/components/cropper/src/cropper-image.mjs.map +1 -0
- package/es/packages/components/cropper/src/cropper-image.vue.mjs +8 -0
- package/es/packages/components/cropper/src/cropper-image.vue.mjs.map +1 -0
- package/es/packages/components/cropper/src/cropper-image.vue2.mjs +137 -0
- package/es/packages/components/cropper/src/cropper-image.vue2.mjs.map +1 -0
- package/es/packages/components/cropper/src/cropper-modal.vue.mjs +8 -0
- package/es/packages/components/cropper/src/cropper-modal.vue.mjs.map +1 -0
- package/es/packages/components/cropper/src/cropper-modal.vue2.mjs +407 -0
- package/es/packages/components/cropper/src/cropper-modal.vue2.mjs.map +1 -0
- package/es/packages/components/empty/src/empty.mjs +7 -0
- package/es/packages/components/empty/src/empty.mjs.map +1 -1
- package/es/packages/components/empty/src/empty.vue2.mjs +4 -4
- package/es/packages/components/empty/src/empty.vue2.mjs.map +1 -1
- package/es/packages/components/form/index.mjs +1 -1
- package/es/packages/components/form/src/components/form-component.vue2.mjs +14 -9
- package/es/packages/components/form/src/components/form-component.vue2.mjs.map +1 -1
- package/es/packages/components/form/src/config/form-component.mjs +4 -1
- package/es/packages/components/form/src/config/form-component.mjs.map +1 -1
- package/es/packages/components/form/src/config/form.mjs +1 -1
- package/es/packages/components/form/src/config/form.mjs.map +1 -1
- package/es/packages/components/form/src/config/index.mjs +1 -1
- package/es/packages/components/form/src/form.vue2.mjs +12 -15
- package/es/packages/components/form/src/form.vue2.mjs.map +1 -1
- package/es/packages/components/index.mjs +3 -1
- package/es/packages/components/index.mjs.map +1 -1
- package/es/packages/components/number-range/src/number-range.vue2.mjs +6 -5
- package/es/packages/components/number-range/src/number-range.vue2.mjs.map +1 -1
- package/es/packages/components/rich-text-editor/src/rich-text-editor.vue2.mjs +31 -22
- package/es/packages/components/rich-text-editor/src/rich-text-editor.vue2.mjs.map +1 -1
- package/es/packages/components/select-group/src/select-group.mjs +6 -0
- package/es/packages/components/select-group/src/select-group.mjs.map +1 -1
- package/es/packages/components/select-group/src/select-group.vue2.mjs +6 -6
- package/es/packages/components/select-group/src/select-group.vue2.mjs.map +1 -1
- package/es/packages/utils/file.mjs +13 -1
- package/es/packages/utils/file.mjs.map +1 -1
- package/es/packages/utils/index.mjs +1 -1
- package/es/utils/file.d.ts +4 -0
- package/global.d.ts +2 -0
- package/index.full.js +3981 -656
- package/index.full.min.js +41 -28
- package/index.full.min.js.map +1 -1
- package/index.full.min.mjs +40 -27
- package/index.full.min.mjs.map +1 -1
- package/index.full.mjs +3975 -658
- package/lib/component.js +92 -89
- package/lib/component.js.map +1 -1
- package/lib/components/advanced-filtering/index.d.ts +34 -16
- package/lib/components/advanced-filtering/src/advanced-filtering.d.ts +1 -1
- package/lib/components/advanced-filtering/src/advanced-filtering.vue.d.ts +17 -8
- package/lib/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +18 -8
- package/lib/components/avatar/index.d.ts +66 -31
- package/lib/components/avatar/src/avatar.d.ts +33 -30
- package/lib/components/avatar/src/avatar.vue.d.ts +66 -31
- package/lib/components/cropper/index.d.ts +1485 -0
- package/lib/components/cropper/src/cropper-image.d.ts +51 -0
- package/lib/components/cropper/src/cropper-image.vue.d.ts +93 -0
- package/lib/components/cropper/src/cropper-modal.vue.d.ts +1391 -0
- package/lib/components/empty/index.d.ts +4 -0
- package/lib/components/empty/src/empty.d.ts +1 -0
- package/lib/components/empty/src/empty.vue.d.ts +4 -0
- package/lib/components/form/index.d.ts +24 -8
- package/lib/components/form/src/components/form-component.vue.d.ts +9 -2
- package/lib/components/form/src/config/form-component.d.ts +4 -1
- package/lib/components/form/src/config/form.d.ts +7 -1
- package/lib/components/form/src/form.vue.d.ts +15 -6
- package/lib/components/index.d.ts +1 -0
- package/lib/components/key-value/index.d.ts +90 -36
- package/lib/components/key-value/src/components/key-value-item.vue.d.ts +30 -12
- package/lib/components/key-value/src/key-value.vue.d.ts +90 -36
- package/lib/components/select-group/index.d.ts +5 -4
- package/lib/components/select-group/src/select-group.d.ts +7 -1
- package/lib/components/select-group/src/select-group.vue.d.ts +5 -4
- package/lib/index.js +101 -91
- package/lib/index.js.map +1 -1
- package/lib/node_modules/.pnpm/@vueuse_shared@10.9.0_vue@3.4.25/node_modules/@vueuse/shared/index.js +1696 -0
- package/lib/node_modules/.pnpm/@vueuse_shared@10.9.0_vue@3.4.25/node_modules/@vueuse/shared/index.js.map +1 -0
- package/lib/node_modules/.pnpm/vue-demi@0.14.7_vue@3.4.25/node_modules/vue-demi/lib/index.js +61 -0
- package/lib/node_modules/.pnpm/vue-demi@0.14.7_vue@3.4.25/node_modules/vue-demi/lib/index.js.map +1 -0
- package/lib/packages/components/advanced-filtering/src/advanced-filtering.js +4 -1
- package/lib/packages/components/advanced-filtering/src/advanced-filtering.js.map +1 -1
- package/lib/packages/components/advanced-filtering/src/advanced-filtering.vue2.js +2 -3
- package/lib/packages/components/advanced-filtering/src/advanced-filtering.vue2.js.map +1 -1
- package/lib/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue2.js +9 -18
- package/lib/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue2.js.map +1 -1
- package/lib/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue2.js +1 -1
- package/lib/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue2.js.map +1 -1
- package/lib/packages/components/avatar/src/avatar.js +39 -13
- package/lib/packages/components/avatar/src/avatar.js.map +1 -1
- package/lib/packages/components/avatar/src/avatar.vue2.js +39 -126
- package/lib/packages/components/avatar/src/avatar.vue2.js.map +1 -1
- package/lib/packages/components/checkbox/index.js.map +1 -1
- package/lib/packages/components/cropper/index.js +20 -0
- package/lib/packages/components/cropper/index.js.map +1 -0
- package/lib/packages/components/cropper/src/cropper-image.js +83 -0
- package/lib/packages/components/cropper/src/cropper-image.js.map +1 -0
- package/lib/packages/components/cropper/src/cropper-image.vue.js +12 -0
- package/lib/packages/components/cropper/src/cropper-image.vue.js.map +1 -0
- package/lib/packages/components/cropper/src/cropper-image.vue2.js +141 -0
- package/lib/packages/components/cropper/src/cropper-image.vue2.js.map +1 -0
- package/lib/packages/components/cropper/src/cropper-modal.vue.js +12 -0
- package/lib/packages/components/cropper/src/cropper-modal.vue.js.map +1 -0
- package/lib/packages/components/cropper/src/cropper-modal.vue2.js +411 -0
- package/lib/packages/components/cropper/src/cropper-modal.vue2.js.map +1 -0
- package/lib/packages/components/empty/src/empty.js +7 -0
- package/lib/packages/components/empty/src/empty.js.map +1 -1
- package/lib/packages/components/empty/src/empty.vue2.js +3 -3
- package/lib/packages/components/empty/src/empty.vue2.js.map +1 -1
- package/lib/packages/components/form/index.js +1 -0
- package/lib/packages/components/form/index.js.map +1 -1
- package/lib/packages/components/form/src/components/form-component.vue2.js +12 -7
- package/lib/packages/components/form/src/components/form-component.vue2.js.map +1 -1
- package/lib/packages/components/form/src/config/form-component.js +4 -0
- package/lib/packages/components/form/src/config/form-component.js.map +1 -1
- package/lib/packages/components/form/src/config/form.js +1 -1
- package/lib/packages/components/form/src/config/form.js.map +1 -1
- package/lib/packages/components/form/src/config/index.js +1 -0
- package/lib/packages/components/form/src/config/index.js.map +1 -1
- package/lib/packages/components/form/src/form.vue2.js +12 -15
- package/lib/packages/components/form/src/form.vue2.js.map +1 -1
- package/lib/packages/components/index.js +101 -91
- package/lib/packages/components/index.js.map +1 -1
- package/lib/packages/components/number-range/src/number-range.vue2.js +6 -5
- package/lib/packages/components/number-range/src/number-range.vue2.js.map +1 -1
- package/lib/packages/components/rich-text-editor/src/rich-text-editor.vue2.js +30 -21
- package/lib/packages/components/rich-text-editor/src/rich-text-editor.vue2.js.map +1 -1
- package/lib/packages/components/select-group/src/select-group.js +6 -0
- package/lib/packages/components/select-group/src/select-group.js.map +1 -1
- package/lib/packages/components/select-group/src/select-group.vue2.js +6 -6
- package/lib/packages/components/select-group/src/select-group.vue2.js.map +1 -1
- package/lib/packages/utils/file.js +13 -0
- package/lib/packages/utils/file.js.map +1 -1
- package/lib/packages/utils/index.js +1 -0
- package/lib/packages/utils/index.js.map +1 -1
- package/lib/utils/file.d.ts +4 -0
- package/package.json +2 -1
- package/theme-chalk/css/avatar.css +1 -1
- package/theme-chalk/css/cropper.css +13 -0
- package/theme-chalk/css/index.css +9 -1
- package/theme-chalk/css/rich-text-editor.css +1 -1
- package/types/packages/components/advanced-filtering/index.d.ts +34 -16
- package/types/packages/components/advanced-filtering/src/advanced-filtering.d.ts +1 -1
- package/types/packages/components/advanced-filtering/src/advanced-filtering.vue.d.ts +17 -8
- package/types/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +18 -8
- package/types/packages/components/avatar/index.d.ts +66 -31
- package/types/packages/components/avatar/src/avatar.d.ts +33 -30
- package/types/packages/components/avatar/src/avatar.vue.d.ts +66 -31
- package/types/packages/components/cropper/index.d.ts +1485 -0
- package/types/packages/components/cropper/src/cropper-image.d.ts +51 -0
- package/types/packages/components/cropper/src/cropper-image.vue.d.ts +93 -0
- package/types/packages/components/cropper/src/cropper-modal.vue.d.ts +1391 -0
- package/types/packages/components/empty/index.d.ts +4 -0
- package/types/packages/components/empty/src/empty.d.ts +1 -0
- package/types/packages/components/empty/src/empty.vue.d.ts +4 -0
- package/types/packages/components/form/index.d.ts +24 -8
- package/types/packages/components/form/src/components/form-component.vue.d.ts +9 -2
- package/types/packages/components/form/src/config/form-component.d.ts +4 -1
- package/types/packages/components/form/src/config/form.d.ts +7 -1
- package/types/packages/components/form/src/form.vue.d.ts +15 -6
- package/types/packages/components/index.d.ts +1 -0
- package/types/packages/components/key-value/index.d.ts +90 -36
- package/types/packages/components/key-value/src/components/key-value-item.vue.d.ts +30 -12
- package/types/packages/components/key-value/src/key-value.vue.d.ts +90 -36
- package/types/packages/components/select-group/index.d.ts +5 -4
- package/types/packages/components/select-group/src/select-group.d.ts +7 -1
- package/types/packages/components/select-group/src/select-group.vue.d.ts +5 -4
- package/types/packages/utils/file.d.ts +4 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createCommentVNode, createBlock,
|
|
1
|
+
import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createCommentVNode, createBlock, mergeProps, Fragment, createVNode, normalizeProps, guardReactiveProps, withCtx, renderSlot, renderList } from 'vue';
|
|
2
2
|
import { avatarProps, avatarEmits, AVATAR_IMG } from './avatar.mjs';
|
|
3
3
|
import '../../../utils/index.mjs';
|
|
4
4
|
import { createNamespace } from '../../../utils/create-namespace.mjs';
|
|
@@ -13,145 +13,58 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13
13
|
const props = __props;
|
|
14
14
|
const emits = __emit;
|
|
15
15
|
const bem = createNamespace("avatar");
|
|
16
|
-
const
|
|
17
|
-
|
|
16
|
+
const getSrc = computed(() => props.src ? props.src : AVATAR_IMG);
|
|
17
|
+
const handleAvatarClick = (item, src, index) => {
|
|
18
|
+
emits("click", item, src, index);
|
|
18
19
|
};
|
|
19
20
|
return (_ctx, _cache) => {
|
|
20
21
|
const _component_a_avatar = resolveComponent("a-avatar");
|
|
21
22
|
const _component_a_avatar_group = resolveComponent("a-avatar-group");
|
|
22
|
-
const _component_ll_upload_drag = resolveComponent("ll-upload-drag");
|
|
23
23
|
return openBlock(), createElementBlock(
|
|
24
24
|
"div",
|
|
25
25
|
{
|
|
26
26
|
class: normalizeClass(unref(bem).b())
|
|
27
27
|
},
|
|
28
28
|
[
|
|
29
|
-
createCommentVNode(" \
|
|
30
|
-
_ctx.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
createCommentVNode(" \u5355\u4E2A\u5934\u50CF "),
|
|
36
|
-
_ctx.type === "single" ? (openBlock(), createBlock(_component_a_avatar, mergeProps({ key: 0 }, props.avatarProps, {
|
|
37
|
-
src: unref(AVATAR_IMG),
|
|
38
|
-
onClick: _cache[0] || (_cache[0] = ($event) => handleAvatarClick(props.avatarProps))
|
|
39
|
-
}), {
|
|
40
|
-
icon: withCtx(() => [
|
|
41
|
-
renderSlot(_ctx.$slots, "icon")
|
|
42
|
-
]),
|
|
43
|
-
_: 3
|
|
44
|
-
/* FORWARDED */
|
|
45
|
-
}, 16, ["src"])) : (openBlock(), createElementBlock(
|
|
46
|
-
Fragment,
|
|
47
|
-
{ key: 1 },
|
|
48
|
-
[
|
|
49
|
-
createCommentVNode(" \u591A\u4E2A\u5934\u50CF\u7EC4\u5408 "),
|
|
50
|
-
createVNode(
|
|
51
|
-
_component_a_avatar_group,
|
|
52
|
-
normalizeProps(guardReactiveProps(_ctx.avatarGroupProps)),
|
|
53
|
-
{
|
|
54
|
-
default: withCtx(() => [
|
|
55
|
-
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
56
|
-
(openBlock(true), createElementBlock(
|
|
57
|
-
Fragment,
|
|
58
|
-
null,
|
|
59
|
-
renderList(_ctx.groupList, (item, index) => {
|
|
60
|
-
return openBlock(), createBlock(_component_a_avatar, mergeProps({
|
|
61
|
-
key: index,
|
|
62
|
-
ref_for: true
|
|
63
|
-
}, item, {
|
|
64
|
-
src: unref(AVATAR_IMG),
|
|
65
|
-
onClick: ($event) => handleAvatarClick(item, index)
|
|
66
|
-
}), {
|
|
67
|
-
icon: withCtx(() => [
|
|
68
|
-
renderSlot(_ctx.$slots, "icon")
|
|
69
|
-
]),
|
|
70
|
-
_: 2
|
|
71
|
-
/* DYNAMIC */
|
|
72
|
-
}, 1040, ["src", "onClick"]);
|
|
73
|
-
}),
|
|
74
|
-
128
|
|
75
|
-
/* KEYED_FRAGMENT */
|
|
76
|
-
))
|
|
77
|
-
])
|
|
78
|
-
]),
|
|
79
|
-
_: 3
|
|
80
|
-
/* FORWARDED */
|
|
81
|
-
},
|
|
82
|
-
16
|
|
83
|
-
/* FULL_PROPS */
|
|
84
|
-
)
|
|
85
|
-
],
|
|
86
|
-
64
|
|
87
|
-
/* STABLE_FRAGMENT */
|
|
88
|
-
))
|
|
89
|
-
]),
|
|
90
|
-
_: 3
|
|
91
|
-
/* FORWARDED */
|
|
92
|
-
},
|
|
93
|
-
16
|
|
94
|
-
/* FULL_PROPS */
|
|
95
|
-
)) : (openBlock(), createElementBlock(
|
|
29
|
+
createCommentVNode(" \u5355\u4E2A\u5934\u50CF "),
|
|
30
|
+
_ctx.type === "single" ? (openBlock(), createBlock(_component_a_avatar, mergeProps({ key: 0 }, props, {
|
|
31
|
+
size: props.size,
|
|
32
|
+
src: getSrc.value,
|
|
33
|
+
onClick: _cache[0] || (_cache[0] = ($event) => handleAvatarClick(props, getSrc.value))
|
|
34
|
+
}), null, 16, ["size", "src"])) : (openBlock(), createElementBlock(
|
|
96
35
|
Fragment,
|
|
97
36
|
{ key: 1 },
|
|
98
37
|
[
|
|
99
|
-
createCommentVNode(" \
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
shape: "square",
|
|
130
|
-
src: unref(AVATAR_IMG),
|
|
131
|
-
onClick: ($event) => handleAvatarClick(item, index)
|
|
132
|
-
}), {
|
|
133
|
-
icon: withCtx(() => [
|
|
134
|
-
renderSlot(_ctx.$slots, "icon")
|
|
135
|
-
]),
|
|
136
|
-
_: 2
|
|
137
|
-
/* DYNAMIC */
|
|
138
|
-
}, 1040, ["src", "onClick"]);
|
|
139
|
-
}),
|
|
140
|
-
128
|
|
141
|
-
/* KEYED_FRAGMENT */
|
|
142
|
-
))
|
|
143
|
-
])
|
|
144
|
-
]),
|
|
145
|
-
_: 3
|
|
146
|
-
/* FORWARDED */
|
|
147
|
-
},
|
|
148
|
-
16
|
|
149
|
-
/* FULL_PROPS */
|
|
150
|
-
)
|
|
151
|
-
],
|
|
152
|
-
64
|
|
153
|
-
/* STABLE_FRAGMENT */
|
|
154
|
-
))
|
|
38
|
+
createCommentVNode(" \u591A\u4E2A\u5934\u50CF\u7EC4\u5408 "),
|
|
39
|
+
createVNode(
|
|
40
|
+
_component_a_avatar_group,
|
|
41
|
+
normalizeProps(guardReactiveProps(_ctx.avatarGroupProps)),
|
|
42
|
+
{
|
|
43
|
+
default: withCtx(() => [
|
|
44
|
+
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
45
|
+
(openBlock(true), createElementBlock(
|
|
46
|
+
Fragment,
|
|
47
|
+
null,
|
|
48
|
+
renderList(_ctx.groupList, (item, index) => {
|
|
49
|
+
return openBlock(), createBlock(_component_a_avatar, mergeProps({
|
|
50
|
+
key: index,
|
|
51
|
+
ref_for: true
|
|
52
|
+
}, item, {
|
|
53
|
+
src: item.src ? item.src : unref(AVATAR_IMG),
|
|
54
|
+
onClick: ($event) => handleAvatarClick(item, getSrc.value, index)
|
|
55
|
+
}), null, 16, ["src", "onClick"]);
|
|
56
|
+
}),
|
|
57
|
+
128
|
|
58
|
+
/* KEYED_FRAGMENT */
|
|
59
|
+
))
|
|
60
|
+
])
|
|
61
|
+
]),
|
|
62
|
+
_: 3
|
|
63
|
+
/* FORWARDED */
|
|
64
|
+
},
|
|
65
|
+
16
|
|
66
|
+
/* FULL_PROPS */
|
|
67
|
+
)
|
|
155
68
|
],
|
|
156
69
|
64
|
|
157
70
|
/* STABLE_FRAGMENT */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.vue2.mjs","sources":["../../../../../../packages/components/avatar/src/avatar.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <!--
|
|
1
|
+
{"version":3,"file":"avatar.vue2.mjs","sources":["../../../../../../packages/components/avatar/src/avatar.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <!-- 单个头像 -->\n <template v-if=\"type === 'single'\">\n <a-avatar\n v-bind=\"props\"\n :size=\"props.size\"\n :src=\"getSrc\"\n @click=\"handleAvatarClick(props, getSrc)\"\n >\n </a-avatar>\n </template>\n <!-- 多个头像组合 -->\n <template v-else>\n <a-avatar-group v-bind=\"avatarGroupProps\">\n <slot>\n <a-avatar\n v-for=\"(item, index) in groupList\"\n :key=\"index\"\n v-bind=\"item\"\n :src=\"item.src ? item.src : AVATAR_IMG\"\n @click=\"handleAvatarClick(item, getSrc, index)\"\n >\n </a-avatar>\n </slot>\n </a-avatar-group>\n </template>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { avatarProps, avatarEmits, AVATAR_IMG } from './avatar'\nimport { createNamespace } from '@ll-plus/utils'\n\n// 1.defineOptions\ndefineOptions({ name: 'LlAvatar' })\n\n// 2.props/emits\nconst props = defineProps(avatarProps)\nconst emits = defineEmits(avatarEmits)\n\n// 3.const\nconst bem = createNamespace('avatar')\nconst getSrc = computed(() => (props.src ? props.src : AVATAR_IMG))\n\n// 4.methods\nconst handleAvatarClick = (item: any, src, index?: number) => {\n emits('click', item, src, index)\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;AAsCA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAGd,IAAM,MAAA,GAAA,GAAM,gBAAgB,QAAQ,CAAA,CAAA;AACpC,IAAA,MAAM,SAAS,QAAS,CAAA,MAAO,MAAM,GAAM,GAAA,KAAA,CAAM,MAAM,UAAW,CAAA,CAAA;AAGlE,IAAA,MAAM,iBAAoB,GAAA,CAAC,IAAW,EAAA,GAAA,EAAK,KAAmB,KAAA;AAC5D,MAAM,KAAA,CAAA,OAAA,EAAS,IAAM,EAAA,GAAA,EAAK,KAAK,CAAA,CAAA;AAAA,KACjC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/checkbox/index.ts"],"sourcesContent":["import { withInstall } from '@ll-plus/utils'\
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/checkbox/index.ts"],"sourcesContent":["import { withInstall } from '@ll-plus/utils'\n\nimport Checkbox from './src/checkbox.vue'\nimport CheckboxGroup from './src/checkbox-group.vue'\n\nexport const LlCheckbox = withInstall(Checkbox)\nexport const LlCheckboxGroup = withInstall(CheckboxGroup)\n\nexport * from './src/checkbox'\n\ndeclare module 'vue' {\n export interface GlobalComponents {\n LlCheckbox: typeof Checkbox\n LlCheckboxGroup: typeof CheckboxGroup\n }\n}\n"],"names":[],"mappings":";;;;;;;AAKa,MAAA,UAAA,GAAa,YAAY,QAAQ,EAAA;AACjC,MAAA,eAAA,GAAkB,YAAY,aAAa;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import '../../utils/index.mjs';
|
|
2
|
+
import CropperImage from './src/cropper-image.vue.mjs';
|
|
3
|
+
import CropperModal from './src/cropper-modal.vue.mjs';
|
|
4
|
+
export { cropperImageEmits, cropperImageProps, cropperModalEmits, cropperModalProps, defaultCropperOptions } from './src/cropper-image.mjs';
|
|
5
|
+
import { withInstall } from '../../utils/with-install.mjs';
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
const LlCropperImage = withInstall(CropperImage);
|
|
9
|
+
const LlCropperModal = withInstall(CropperModal);
|
|
10
|
+
|
|
11
|
+
export { LlCropperImage, LlCropperModal };
|
|
12
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/cropper/index.ts"],"sourcesContent":["import { withInstall } from '@ll-plus/utils'\n\nimport CropperImage from './src/cropper-image.vue'\nimport CropperModal from './src/cropper-modal.vue'\n\nexport const LlCropperImage = withInstall(CropperImage)\nexport const LlCropperModal = withInstall(CropperModal)\n\nexport * from './src/cropper-image'\n\ndeclare module 'vue' {\n export interface GlobalComponents {\n LlCropperImage: typeof CropperImage\n LlCropperModal: typeof CropperModal\n }\n}\n"],"names":[],"mappings":";;;;;;;AAKa,MAAA,cAAA,GAAiB,YAAY,YAAY,EAAA;AACzC,MAAA,cAAA,GAAiB,YAAY,YAAY;;;;"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import '../../../utils/index.mjs';
|
|
2
|
+
import { buildProps, definePropType } from '../../../utils/props/runtime.mjs';
|
|
3
|
+
|
|
4
|
+
"use strict";
|
|
5
|
+
const defaultCropperOptions = {
|
|
6
|
+
aspectRatio: 1,
|
|
7
|
+
zoomable: true,
|
|
8
|
+
zoomOnTouch: true,
|
|
9
|
+
zoomOnWheel: true,
|
|
10
|
+
cropBoxMovable: true,
|
|
11
|
+
cropBoxResizable: true,
|
|
12
|
+
toggleDragModeOnDblclick: true,
|
|
13
|
+
autoCrop: true,
|
|
14
|
+
background: true,
|
|
15
|
+
highlight: true,
|
|
16
|
+
center: true,
|
|
17
|
+
responsive: true,
|
|
18
|
+
restore: true,
|
|
19
|
+
checkCrossOrigin: true,
|
|
20
|
+
checkOrientation: true,
|
|
21
|
+
scalable: true,
|
|
22
|
+
modal: true,
|
|
23
|
+
guides: true,
|
|
24
|
+
movable: true,
|
|
25
|
+
rotatable: true
|
|
26
|
+
};
|
|
27
|
+
const cropperImageProps = buildProps({
|
|
28
|
+
src: {
|
|
29
|
+
type: String,
|
|
30
|
+
required: true
|
|
31
|
+
},
|
|
32
|
+
alt: {
|
|
33
|
+
type: String
|
|
34
|
+
},
|
|
35
|
+
circled: {
|
|
36
|
+
type: Boolean,
|
|
37
|
+
default: false
|
|
38
|
+
},
|
|
39
|
+
realTimePreview: {
|
|
40
|
+
type: Boolean,
|
|
41
|
+
default: true
|
|
42
|
+
},
|
|
43
|
+
height: {
|
|
44
|
+
type: [String, Number],
|
|
45
|
+
default: "360px"
|
|
46
|
+
},
|
|
47
|
+
crossorigin: {
|
|
48
|
+
type: definePropType(
|
|
49
|
+
String
|
|
50
|
+
),
|
|
51
|
+
default: void 0
|
|
52
|
+
},
|
|
53
|
+
imageStyle: {
|
|
54
|
+
type: definePropType(Object),
|
|
55
|
+
default: () => ({})
|
|
56
|
+
},
|
|
57
|
+
options: {
|
|
58
|
+
type: definePropType(Object),
|
|
59
|
+
default: () => ({})
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
const cropperImageEmits = {
|
|
63
|
+
cropend: (params) => !!params,
|
|
64
|
+
onReady: (cropper) => !!cropper,
|
|
65
|
+
cropendError: () => true
|
|
66
|
+
};
|
|
67
|
+
const cropperModalProps = buildProps({
|
|
68
|
+
circled: { type: Boolean, default: true },
|
|
69
|
+
disabled: { type: Boolean, default: false },
|
|
70
|
+
avatar: { type: String, default: "" }
|
|
71
|
+
});
|
|
72
|
+
const cropperModalEmits = {
|
|
73
|
+
confirm: (params) => !!params
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export { cropperImageEmits, cropperImageProps, cropperModalEmits, cropperModalProps, defaultCropperOptions };
|
|
77
|
+
//# sourceMappingURL=cropper-image.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cropper-image.mjs","sources":["../../../../../../packages/components/cropper/src/cropper-image.ts"],"sourcesContent":["import { buildProps, definePropType } from '@ll-plus/utils'\n\nimport type { ExtractPropTypes, CSSProperties } from 'vue'\nimport type Cropper from 'cropperjs'\nimport type CropperImage from './cropper-image.vue'\nimport type CropperModal from './cropper-modal.vue'\n\nexport interface CropendResult {\n imgBase64: string\n imgInfo: Cropper.Data\n}\n\nexport const defaultCropperOptions: Cropper.Options = {\n aspectRatio: 1,\n zoomable: true,\n zoomOnTouch: true,\n zoomOnWheel: true,\n cropBoxMovable: true,\n cropBoxResizable: true,\n toggleDragModeOnDblclick: true,\n autoCrop: true,\n background: true,\n highlight: true,\n center: true,\n responsive: true,\n restore: true,\n checkCrossOrigin: true,\n checkOrientation: true,\n scalable: true,\n modal: true,\n guides: true,\n movable: true,\n rotatable: true\n}\n\nexport const cropperImageProps = buildProps({\n src: {\n type: String,\n required: true\n },\n alt: {\n type: String\n },\n circled: {\n type: Boolean,\n default: false\n },\n realTimePreview: {\n type: Boolean,\n default: true\n },\n height: {\n type: [String, Number],\n default: '360px'\n },\n crossorigin: {\n type: definePropType<'' | 'anonymous' | 'use-credentials' | undefined>(\n String\n ),\n default: undefined\n },\n imageStyle: {\n type: definePropType<CSSProperties>(Object),\n default: () => ({})\n },\n options: {\n type: definePropType<Cropper.Options>(Object),\n default: () => ({})\n }\n} as const)\n\nexport const cropperImageEmits = {\n cropend: (params: CropendResult) => !!params,\n onReady: (cropper: Cropper) => !!cropper,\n cropendError: () => true\n} as const\n\nexport const cropperModalProps = buildProps({\n circled: { type: Boolean, default: true },\n disabled: { type: Boolean, default: false },\n avatar: { type: String, default: '' }\n} as const)\n\nexport const cropperModalEmits = {\n confirm: (params: { blob: Blob; previewSource: string }) => !!params\n} as const\n\n// props\nexport type CropperImageProps = ExtractPropTypes<typeof cropperImageProps>\nexport type CropperModalProps = ExtractPropTypes<typeof cropperModalProps>\n\n// emits\nexport type CropperImageEmits = typeof cropperImageEmits\nexport type CropperModalEmits = typeof cropperModalEmits\n\n// instance\nexport type CropperImageInstance = InstanceType<typeof CropperImage>\nexport type CropperModalInstance = InstanceType<typeof CropperModal>\n"],"names":[],"mappings":";;;;AAYO,MAAM,qBAAyC,GAAA;AAAA,EACpD,WAAa,EAAA,CAAA;AAAA,EACb,QAAU,EAAA,IAAA;AAAA,EACV,WAAa,EAAA,IAAA;AAAA,EACb,WAAa,EAAA,IAAA;AAAA,EACb,cAAgB,EAAA,IAAA;AAAA,EAChB,gBAAkB,EAAA,IAAA;AAAA,EAClB,wBAA0B,EAAA,IAAA;AAAA,EAC1B,QAAU,EAAA,IAAA;AAAA,EACV,UAAY,EAAA,IAAA;AAAA,EACZ,SAAW,EAAA,IAAA;AAAA,EACX,MAAQ,EAAA,IAAA;AAAA,EACR,UAAY,EAAA,IAAA;AAAA,EACZ,OAAS,EAAA,IAAA;AAAA,EACT,gBAAkB,EAAA,IAAA;AAAA,EAClB,gBAAkB,EAAA,IAAA;AAAA,EAClB,QAAU,EAAA,IAAA;AAAA,EACV,KAAO,EAAA,IAAA;AAAA,EACP,MAAQ,EAAA,IAAA;AAAA,EACR,OAAS,EAAA,IAAA;AAAA,EACT,SAAW,EAAA,IAAA;AACb,EAAA;AAEO,MAAM,oBAAoB,UAAW,CAAA;AAAA,EAC1C,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EACA,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,GACR;AAAA,EACA,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,IACrB,OAAS,EAAA,OAAA;AAAA,GACX;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,cAAA;AAAA,MACJ,MAAA;AAAA,KACF;AAAA,IACA,OAAS,EAAA,KAAA,CAAA;AAAA,GACX;AAAA,EACA,UAAY,EAAA;AAAA,IACV,IAAA,EAAM,eAA8B,MAAM,CAAA;AAAA,IAC1C,OAAA,EAAS,OAAO,EAAC,CAAA;AAAA,GACnB;AAAA,EACA,OAAS,EAAA;AAAA,IACP,IAAA,EAAM,eAAgC,MAAM,CAAA;AAAA,IAC5C,OAAA,EAAS,OAAO,EAAC,CAAA;AAAA,GACnB;AACF,CAAU,EAAA;AAEH,MAAM,iBAAoB,GAAA;AAAA,EAC/B,OAAS,EAAA,CAAC,MAA0B,KAAA,CAAC,CAAC,MAAA;AAAA,EACtC,OAAS,EAAA,CAAC,OAAqB,KAAA,CAAC,CAAC,OAAA;AAAA,EACjC,cAAc,MAAM,IAAA;AACtB,EAAA;AAEO,MAAM,oBAAoB,UAAW,CAAA;AAAA,EAC1C,OAAS,EAAA,EAAE,IAAM,EAAA,OAAA,EAAS,SAAS,IAAK,EAAA;AAAA,EACxC,QAAU,EAAA,EAAE,IAAM,EAAA,OAAA,EAAS,SAAS,KAAM,EAAA;AAAA,EAC1C,MAAQ,EAAA,EAAE,IAAM,EAAA,MAAA,EAAQ,SAAS,EAAG,EAAA;AACtC,CAAU,EAAA;AAEH,MAAM,iBAAoB,GAAA;AAAA,EAC/B,OAAS,EAAA,CAAC,MAAkD,KAAA,CAAC,CAAC,MAAA;AAChE;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import _sfc_main from './cropper-image.vue2.mjs';
|
|
2
|
+
import _export_sfc from '../../../../_virtual/_plugin-vue_export-helper.mjs';
|
|
3
|
+
|
|
4
|
+
"use strict";
|
|
5
|
+
var CropperImage = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "cropper-image.vue"]]);
|
|
6
|
+
|
|
7
|
+
export { CropperImage as default };
|
|
8
|
+
//# sourceMappingURL=cropper-image.vue.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cropper-image.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { defineComponent, ref, computed, onMounted, onUnmounted, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, withDirectives, createElementVNode, vShow } from 'vue';
|
|
2
|
+
import '../../../utils/index.mjs';
|
|
3
|
+
import Cropper from 'cropperjs';
|
|
4
|
+
import { useDebounceFn } from '../../../../node_modules/.pnpm/@vueuse_shared@10.9.0_vue@3.4.25/node_modules/@vueuse/shared/index.mjs';
|
|
5
|
+
import { cropperImageProps, cropperImageEmits, defaultCropperOptions } from './cropper-image.mjs';
|
|
6
|
+
import { createNamespace } from '../../../utils/create-namespace.mjs';
|
|
7
|
+
|
|
8
|
+
"use strict";
|
|
9
|
+
const _hoisted_1 = ["src", "alt", "crossorigin"];
|
|
10
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
11
|
+
...{ name: "CropperImage" },
|
|
12
|
+
__name: "cropper-image",
|
|
13
|
+
props: cropperImageProps,
|
|
14
|
+
emits: cropperImageEmits,
|
|
15
|
+
setup(__props, { emit: __emit }) {
|
|
16
|
+
const props = __props;
|
|
17
|
+
const emits = __emit;
|
|
18
|
+
const bem = createNamespace("cropper-image");
|
|
19
|
+
const imgElRef = ref();
|
|
20
|
+
const cropper = ref();
|
|
21
|
+
const isReady = ref(false);
|
|
22
|
+
const getImageStyle = computed(() => {
|
|
23
|
+
return {
|
|
24
|
+
height: props.height,
|
|
25
|
+
maxWidth: "100%",
|
|
26
|
+
...props.imageStyle
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
const getWrapperStyle = computed(() => {
|
|
30
|
+
return { height: `${props.height}`.replace(/px/, "") + "px" };
|
|
31
|
+
});
|
|
32
|
+
const init = async () => {
|
|
33
|
+
const imgEl = imgElRef.value;
|
|
34
|
+
if (!imgEl) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
cropper.value = new Cropper(imgEl, {
|
|
38
|
+
...defaultCropperOptions,
|
|
39
|
+
ready() {
|
|
40
|
+
isReady.value = true;
|
|
41
|
+
realTimeCroppered();
|
|
42
|
+
emits("onReady", cropper.value);
|
|
43
|
+
},
|
|
44
|
+
crop() {
|
|
45
|
+
debounceRealTimeCroppered();
|
|
46
|
+
},
|
|
47
|
+
zoom() {
|
|
48
|
+
debounceRealTimeCroppered();
|
|
49
|
+
},
|
|
50
|
+
cropmove() {
|
|
51
|
+
debounceRealTimeCroppered();
|
|
52
|
+
},
|
|
53
|
+
...props.options
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
const realTimeCroppered = () => {
|
|
57
|
+
props.realTimePreview && croppered();
|
|
58
|
+
};
|
|
59
|
+
const debounceRealTimeCroppered = useDebounceFn(realTimeCroppered, 80);
|
|
60
|
+
const croppered = () => {
|
|
61
|
+
if (!cropper.value) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const imgInfo = cropper.value.getData();
|
|
65
|
+
const canvas = props.circled ? getRoundedCanvas() : cropper.value.getCroppedCanvas();
|
|
66
|
+
canvas.toBlob((blob) => {
|
|
67
|
+
if (!blob) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const fileReader = new FileReader();
|
|
71
|
+
fileReader.readAsDataURL(blob);
|
|
72
|
+
fileReader.onloadend = (e) => {
|
|
73
|
+
emits("cropend", {
|
|
74
|
+
imgBase64: e.target?.result ?? "",
|
|
75
|
+
imgInfo
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
fileReader.onerror = () => {
|
|
79
|
+
emits("cropendError");
|
|
80
|
+
};
|
|
81
|
+
}, "image/png");
|
|
82
|
+
};
|
|
83
|
+
const getRoundedCanvas = () => {
|
|
84
|
+
const sourceCanvas = cropper.value.getCroppedCanvas();
|
|
85
|
+
const canvas = document.createElement("canvas");
|
|
86
|
+
const context = canvas.getContext("2d");
|
|
87
|
+
const width = sourceCanvas.width;
|
|
88
|
+
const height = sourceCanvas.height;
|
|
89
|
+
canvas.width = width;
|
|
90
|
+
canvas.height = height;
|
|
91
|
+
context.imageSmoothingEnabled = true;
|
|
92
|
+
context.drawImage(sourceCanvas, 0, 0, width, height);
|
|
93
|
+
context.globalCompositeOperation = "destination-in";
|
|
94
|
+
context.beginPath();
|
|
95
|
+
context.arc(
|
|
96
|
+
width / 2,
|
|
97
|
+
height / 2,
|
|
98
|
+
Math.min(width, height) / 2,
|
|
99
|
+
0,
|
|
100
|
+
2 * Math.PI,
|
|
101
|
+
true
|
|
102
|
+
);
|
|
103
|
+
context.fill();
|
|
104
|
+
return canvas;
|
|
105
|
+
};
|
|
106
|
+
onMounted(init);
|
|
107
|
+
onUnmounted(() => {
|
|
108
|
+
cropper.value?.destroy();
|
|
109
|
+
});
|
|
110
|
+
return (_ctx, _cache) => {
|
|
111
|
+
return openBlock(), createElementBlock(
|
|
112
|
+
"div",
|
|
113
|
+
{
|
|
114
|
+
class: normalizeClass([unref(bem).b(), props.circled ? unref(bem).is("circled") : ""]),
|
|
115
|
+
style: normalizeStyle(getWrapperStyle.value)
|
|
116
|
+
},
|
|
117
|
+
[
|
|
118
|
+
withDirectives(createElementVNode("img", {
|
|
119
|
+
ref_key: "imgElRef",
|
|
120
|
+
ref: imgElRef,
|
|
121
|
+
src: _ctx.src,
|
|
122
|
+
alt: _ctx.alt,
|
|
123
|
+
crossorigin: _ctx.crossorigin,
|
|
124
|
+
style: normalizeStyle(getImageStyle.value)
|
|
125
|
+
}, null, 12, _hoisted_1), [
|
|
126
|
+
[vShow, isReady.value]
|
|
127
|
+
])
|
|
128
|
+
],
|
|
129
|
+
6
|
|
130
|
+
/* CLASS, STYLE */
|
|
131
|
+
);
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
export { _sfc_main as default };
|
|
137
|
+
//# sourceMappingURL=cropper-image.vue2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cropper-image.vue2.mjs","sources":["../../../../../../packages/components/cropper/src/cropper-image.vue"],"sourcesContent":["<template>\n <div\n :class=\"[bem.b(), props.circled ? bem.is('circled') : '']\"\n :style=\"getWrapperStyle\"\n >\n <img\n v-show=\"isReady\"\n ref=\"imgElRef\"\n :src=\"src\"\n :alt=\"alt\"\n :crossorigin=\"crossorigin\"\n :style=\"getImageStyle\"\n />\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { onMounted, ref, computed, onUnmounted, type CSSProperties } from 'vue'\nimport { createNamespace } from '@ll-plus/utils'\n//@ts-ignore\nimport Cropper from 'cropperjs'\n// import 'cropperjs/dist/cropper.css'\nimport { useDebounceFn } from '@vueuse/shared'\nimport {\n cropperImageProps,\n cropperImageEmits,\n defaultCropperOptions,\n type CropendResult\n} from './cropper-image'\n\ndefineOptions({ name: 'CropperImage' })\nconst props = defineProps(cropperImageProps)\nconst emits = defineEmits(cropperImageEmits)\n\nconst bem = createNamespace('cropper-image')\n\nconst imgElRef = ref<HTMLImageElement>()\nconst cropper = ref<Cropper>()\nconst isReady = ref(false)\nconst getImageStyle = computed((): CSSProperties => {\n return {\n height: props.height,\n maxWidth: '100%',\n ...props.imageStyle\n }\n})\nconst getWrapperStyle = computed((): CSSProperties => {\n return { height: `${props.height}`.replace(/px/, '') + 'px' }\n})\n\nconst init = async () => {\n const imgEl = imgElRef.value\n if (!imgEl) {\n return\n }\n cropper.value = new Cropper(imgEl, {\n ...defaultCropperOptions,\n ready() {\n isReady.value = true\n realTimeCroppered()\n //@ts-ignore\n emits('onReady', cropper.value)\n },\n crop() {\n debounceRealTimeCroppered()\n },\n zoom() {\n debounceRealTimeCroppered()\n },\n cropmove() {\n debounceRealTimeCroppered()\n },\n ...props.options\n })\n}\n\n// Real-time display preview\nconst realTimeCroppered = () => {\n props.realTimePreview && croppered()\n}\n\nconst debounceRealTimeCroppered = useDebounceFn(realTimeCroppered, 80)\n\n// event: return base64 and width and height information after cropping\nconst croppered = () => {\n if (!cropper.value) {\n return\n }\n const imgInfo = cropper.value.getData()\n const canvas = props.circled\n ? getRoundedCanvas()\n : cropper.value.getCroppedCanvas()\n canvas.toBlob(blob => {\n if (!blob) {\n return\n }\n const fileReader: FileReader = new FileReader()\n fileReader.readAsDataURL(blob)\n fileReader.onloadend = e => {\n emits('cropend', {\n imgBase64: e.target?.result ?? '',\n imgInfo\n } as CropendResult)\n }\n fileReader.onerror = () => {\n emits('cropendError')\n }\n }, 'image/png')\n}\n\n// Get a circular picture canvas\nconst getRoundedCanvas = () => {\n const sourceCanvas = cropper.value!.getCroppedCanvas()\n const canvas = document.createElement('canvas')\n const context = canvas.getContext('2d')!\n const width = sourceCanvas.width\n const height = sourceCanvas.height\n canvas.width = width\n canvas.height = height\n context.imageSmoothingEnabled = true\n context.drawImage(sourceCanvas, 0, 0, width, height)\n context.globalCompositeOperation = 'destination-in'\n context.beginPath()\n context.arc(\n width / 2,\n height / 2,\n Math.min(width, height) / 2,\n 0,\n 2 * Math.PI,\n true\n )\n context.fill()\n return canvas\n}\n\nonMounted(init)\n\nonUnmounted(() => {\n cropper.value?.destroy()\n})\n</script>\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import _sfc_main from './cropper-modal.vue2.mjs';
|
|
2
|
+
import _export_sfc from '../../../../_virtual/_plugin-vue_export-helper.mjs';
|
|
3
|
+
|
|
4
|
+
"use strict";
|
|
5
|
+
var CropperModal = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "cropper-modal.vue"]]);
|
|
6
|
+
|
|
7
|
+
export { CropperModal as default };
|
|
8
|
+
//# sourceMappingURL=cropper-modal.vue.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cropper-modal.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|