@opentinyvue/vue-crop 2.21.0 → 3.21.0

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/lib/index.js CHANGED
@@ -3,39 +3,43 @@ import { renderless, api } from '@opentinyvue/vue-renderless/crop/vue';
3
3
  import { iconConmentRefresh, iconNew, iconZoomIn, iconZoomOut, iconRepeat, iconRefres, iconClose, iconYes, iconCrop } from '@opentinyvue/vue-icon';
4
4
  import Cropper from 'cropperjs';
5
5
  import 'cropperjs/dist/cropper.css';
6
+ import { openBlock, createElementBlock, withDirectives, createElementVNode, Fragment, renderList, createBlock, resolveDynamicComponent, withModifiers, vShow } from 'vue';
6
7
  import '@opentinyvue/vue-theme/crop/index.css';
7
8
 
8
- function normalizeComponent(scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {
9
- var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports;
10
- if (render) {
11
- options.render = render;
12
- options.staticRenderFns = staticRenderFns;
13
- options._compiled = true;
9
+ function _createForOfIteratorHelperLoose(r, e) {
10
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
11
+ if (t) return (t = t.call(r)).next.bind(t);
12
+ if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
13
+ t && (r = t);
14
+ var o = 0;
15
+ return function() {
16
+ return o >= r.length ? { done: true } : { done: false, value: r[o++] };
17
+ };
14
18
  }
15
- var hook;
16
- if (injectStyles) {
17
- hook = injectStyles;
18
- }
19
- if (hook) {
20
- if (options.functional) {
21
- options._injectStyles = hook;
22
- var originalRender = options.render;
23
- options.render = function renderWithStyleInjection(h, context) {
24
- hook.call(context);
25
- return originalRender(h, context);
26
- };
27
- } else {
28
- var existing = options.beforeCreate;
29
- options.beforeCreate = existing ? [].concat(existing, hook) : [hook];
30
- }
19
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
20
+ }
21
+ function _unsupportedIterableToArray(r, a) {
22
+ if (r) {
23
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
24
+ var t = {}.toString.call(r).slice(8, -1);
25
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
31
26
  }
32
- return {
33
- exports: scriptExports,
34
- options
35
- };
36
27
  }
28
+ function _arrayLikeToArray(r, a) {
29
+ (null == a || a > r.length) && (a = r.length);
30
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
31
+ return n;
32
+ }
33
+ var _export_sfc = function _export_sfc2(sfc, props) {
34
+ var target = sfc.__vccOpts || sfc;
35
+ for (var _iterator = _createForOfIteratorHelperLoose(props), _step; !(_step = _iterator()).done; ) {
36
+ var _step$value = _step.value, key = _step$value[0], val = _step$value[1];
37
+ target[key] = val;
38
+ }
39
+ return target;
40
+ };
37
41
 
38
- var __vue2_script = defineComponent({
42
+ var _sfc_main = defineComponent({
39
43
  name: $prefix + "Crop",
40
44
  components: {
41
45
  IconConmentRefresh: iconConmentRefresh(),
@@ -190,79 +194,77 @@ var __vue2_script = defineComponent({
190
194
  });
191
195
  }
192
196
  });
193
- var render = function render2() {
194
- var _vm = this;
195
- var _h = _vm.$createElement;
196
- var _c = _vm._self._c || _h;
197
- return _c("div", {
198
- staticClass: "tiny-crop__wrapper"
199
- }, [_c("div", {
200
- directives: [{
201
- name: "show",
202
- rawName: "v-show",
203
- value: _vm.state.cropvisible,
204
- expression: "state.cropvisible"
205
- }],
206
- staticClass: "tiny-crop"
207
- }, [_c("div", {
208
- staticClass: "tiny-crop__dialog"
209
- }, [_c("input", {
210
- ref: "cropInput",
211
- attrs: {
212
- "type": "file",
213
- "name": "image",
214
- "accept": "image/*"
215
- },
216
- on: {
217
- "change": _vm.setImage
218
- }
219
- }), _c("div", {
220
- staticClass: "tiny-crop__dialog-cropper"
221
- }, [_c("img", {
222
- ref: "cropImage",
223
- attrs: {
224
- "src": _vm.state.src,
225
- "id": "crops",
226
- "alt": _vm.alt
227
- }
228
- })]), _c("div", {
229
- staticClass: "tiny-crop__dialog-content__handle"
230
- }, [_c("div", {
231
- staticClass: "tiny-crop__dialog-content__handle__button"
232
- }, _vm._l(_vm.state.renderIcon, function(item, index) {
233
- return _c("div", {
234
- key: index,
235
- staticClass: "iconButton"
236
- }, [!item.split ? _c("div", {
237
- attrs: {
238
- "title": item.title
239
- }
240
- }, [_c(item.icon, {
241
- tag: "component",
242
- staticClass: "iconButtonset",
243
- on: {
244
- "click": function click($event) {
245
- $event.preventDefault();
246
- return item.method.apply(null, arguments);
247
- }
248
- }
249
- })], 1) : _c("div", {
250
- staticClass: "iconButton__split"
251
- })]);
252
- }), 0)])])])]);
197
+ var _hoisted_1 = {
198
+ class: "tiny-crop__wrapper"
253
199
  };
254
- var staticRenderFns = [];
255
- var __cssModules = {};
256
- var __component__ = /* @__PURE__ */ normalizeComponent(__vue2_script, render, staticRenderFns, false, __vue2_injectStyles);
257
- function __vue2_injectStyles(context) {
258
- for (var o in __cssModules) {
259
- this[o] = __cssModules[o];
260
- }
200
+ var _hoisted_2 = {
201
+ class: "tiny-crop"
202
+ };
203
+ var _hoisted_3 = {
204
+ class: "tiny-crop__dialog"
205
+ };
206
+ var _hoisted_4 = {
207
+ class: "tiny-crop__dialog-cropper"
208
+ };
209
+ var _hoisted_5 = ["src", "alt"];
210
+ var _hoisted_6 = {
211
+ class: "tiny-crop__dialog-content__handle"
212
+ };
213
+ var _hoisted_7 = {
214
+ class: "tiny-crop__dialog-content__handle__button"
215
+ };
216
+ var _hoisted_8 = ["title"];
217
+ var _hoisted_9 = {
218
+ key: 1,
219
+ class: "iconButton__split"
220
+ };
221
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
222
+ return openBlock(), createElementBlock("div", _hoisted_1, [withDirectives(createElementVNode(
223
+ "div",
224
+ _hoisted_2,
225
+ [createElementVNode("div", _hoisted_3, [createElementVNode(
226
+ "input",
227
+ {
228
+ ref: "cropInput",
229
+ type: "file",
230
+ name: "image",
231
+ accept: "image/*",
232
+ onChange: _cache[0] || (_cache[0] = function() {
233
+ return _ctx.setImage && _ctx.setImage.apply(_ctx, arguments);
234
+ })
235
+ },
236
+ null,
237
+ 544
238
+ /* NEED_HYDRATION, NEED_PATCH */
239
+ ), createElementVNode("div", _hoisted_4, [createElementVNode("img", {
240
+ src: _ctx.state.src,
241
+ ref: "cropImage",
242
+ id: "crops",
243
+ alt: _ctx.alt
244
+ }, null, 8, _hoisted_5)]), createElementVNode("div", _hoisted_6, [createElementVNode("div", _hoisted_7, [(openBlock(true), createElementBlock(
245
+ Fragment,
246
+ null,
247
+ renderList(_ctx.state.renderIcon, function(item, index) {
248
+ return openBlock(), createElementBlock("div", {
249
+ class: "iconButton",
250
+ key: index
251
+ }, [!item.split ? (openBlock(), createElementBlock("div", {
252
+ key: 0,
253
+ title: item.title
254
+ }, [(openBlock(), createBlock(resolveDynamicComponent(item.icon), {
255
+ onClick: withModifiers(item.method, ["prevent"]),
256
+ class: "iconButtonset"
257
+ }, null, 8, ["onClick"]))], 8, _hoisted_8)) : (openBlock(), createElementBlock("div", _hoisted_9))]);
258
+ }),
259
+ 128
260
+ /* KEYED_FRAGMENT */
261
+ ))])])])],
262
+ 512
263
+ /* NEED_PATCH */
264
+ ), [[vShow, _ctx.state.cropvisible]])]);
261
265
  }
262
- var Crop = /* @__PURE__ */ function() {
263
- return __component__.exports;
264
- }();
265
- var version = "2.21.0";
266
+ var Crop = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
267
+ var version = "3.21.0";
266
268
  Crop.install = function(Vue) {
267
269
  Vue.component(Crop.name, Crop);
268
270
  };
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@opentinyvue/vue-crop",
3
- "version": "2.21.0",
3
+ "version": "3.21.0",
4
4
  "description": "",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./lib/index.js",
7
7
  "sideEffects": false,
8
8
  "type": "module",
9
9
  "dependencies": {
10
- "@opentinyvue/vue-common": "~2.21.0",
10
+ "@opentinyvue/vue-common": "~3.21.0",
11
11
  "@opentinyvue/vue-renderless": "~3.21.0",
12
- "@opentinyvue/vue-icon": "~2.21.0",
12
+ "@opentinyvue/vue-icon": "~3.21.0",
13
13
  "cropperjs": "1.5.7",
14
14
  "@opentinyvue/vue-theme": "~3.21.0"
15
15
  },
package/src/pc.vue.d.ts CHANGED
@@ -1,2 +1,300 @@
1
- declare const _default: any;
1
+ /// <reference types="node_modules/.pnpm/cropperjs@1.5.12/node_modules/cropperjs/types" />
2
+ import Cropper from 'cropperjs';
3
+ declare const _default: import("@vue/runtime-core").DefineComponent<{
4
+ /** 设置图片上的alt属性 */
5
+ alt: {
6
+ type: StringConstructor;
7
+ default: string;
8
+ };
9
+ /** 裁剪框的宽高比,默认 16/9 */
10
+ aspectRatio: {
11
+ type: NumberConstructor;
12
+ default: number;
13
+ };
14
+ /** 初始化时,是否自动显示裁剪框,默认 true */
15
+ autoCrop: {
16
+ type: BooleanConstructor;
17
+ default: boolean;
18
+ };
19
+ /** 定义自动裁剪面积大小(百分比) 默认0.8 */
20
+ autoCropArea: {
21
+ type: NumberConstructor;
22
+ default: number;
23
+ };
24
+ /** 是否显示容器的网格背景 默认true */
25
+ background: {
26
+ type: BooleanConstructor;
27
+ default: boolean;
28
+ };
29
+ /** 裁剪框是否在图片正中心,并显示一个 + 号 默认false */
30
+ center: {
31
+ type: BooleanConstructor;
32
+ default: boolean;
33
+ };
34
+ /** 设置图片裁剪后返回的类型,可配置为 blob 和 base64 默认 base64 */
35
+ cropType: {
36
+ type: StringConstructor;
37
+ default: string;
38
+ };
39
+ /** 设置裁剪弹框是否可见 默认false */
40
+ cropvisible: {
41
+ type: BooleanConstructor;
42
+ default: boolean;
43
+ };
44
+ /** 定义 cropper 的拖拽模式,默认 crop ;'crop': 可以产生一个新的裁剪框 3 。'move':只可以移动图片 3 。'none': 什么也不处理 */
45
+ dragMode: {
46
+ type: StringConstructor;
47
+ default: string;
48
+ };
49
+ /** 是否在裁剪框上方显示虚线 默认true */
50
+ guides: {
51
+ type: BooleanConstructor;
52
+ default: boolean;
53
+ };
54
+ /** 设置待裁剪图片的最大大小,默认为 1M */
55
+ maxSize: {
56
+ type: StringConstructor;
57
+ default: string;
58
+ };
59
+ /** 容器的最小高度 默认 300 */
60
+ minContainerHeight: {
61
+ type: NumberConstructor;
62
+ default: number;
63
+ };
64
+ /** 容器的最小宽度 默认 652 */
65
+ minContainerWidth: {
66
+ type: NumberConstructor;
67
+ default: number;
68
+ };
69
+ /** 裁剪层的最小高度 默认0 */
70
+ minCropBoxHeight: {
71
+ type: NumberConstructor;
72
+ default: number;
73
+ };
74
+ /** 裁剪层的最小宽度 默认0 */
75
+ minCropBoxWidth: {
76
+ type: NumberConstructor;
77
+ default: number;
78
+ };
79
+ /** 是否显示图片上方裁剪框下方的黑色模态 默认true */
80
+ modal: {
81
+ type: BooleanConstructor;
82
+ default: boolean;
83
+ };
84
+ /** 是否允许可以移动后面的图片 默认true */
85
+ movable: {
86
+ type: BooleanConstructor;
87
+ default: boolean;
88
+ };
89
+ plugin: {
90
+ type: (ObjectConstructor | FunctionConstructor)[];
91
+ default: () => typeof Cropper;
92
+ };
93
+ /** 设置图片裁剪后的压缩比例,值在 0-1 之间 默认0.92 */
94
+ quality: {
95
+ type: NumberConstructor;
96
+ default: number;
97
+ validator: (value: number) => boolean;
98
+ };
99
+ /** 是否允许旋转图像;默认为 true */
100
+ rotatable: {
101
+ type: BooleanConstructor;
102
+ default: boolean;
103
+ };
104
+ /** 默认裁剪的源图片 */
105
+ src: {
106
+ type: StringConstructor;
107
+ default: string;
108
+ };
109
+ /** 定义 cropper 的视图模式,默认 0 ;0:没有限制,3 可以移动到 2 外。1:3 只能在 2 内移动。2:2 图片不全部铺满 1 (即缩小时可以有一边出现空隙)。3:2 图片填充整个 1 */
110
+ viewMode: {
111
+ type: NumberConstructor;
112
+ default: number;
113
+ };
114
+ /** 用鼠标移动图像时,定义缩放比例 默认 0.1 */
115
+ wheelZoomRatio: {
116
+ type: NumberConstructor;
117
+ default: number;
118
+ };
119
+ /** 是否可以通过滚动鼠标滚轮来缩放图像 默认true */
120
+ zoomOnWheel: {
121
+ type: BooleanConstructor;
122
+ default: boolean;
123
+ };
124
+ /** 是否允许放大图像 默认true */
125
+ zoomable: {
126
+ type: BooleanConstructor;
127
+ default: boolean;
128
+ };
129
+ }, {
130
+ t: (this: any, path: any, options?: any) => any;
131
+ vm: any;
132
+ f: (props: any, attrs?: {}) => {};
133
+ a: (attrs: any, filters: any, include: any) => {};
134
+ d: (props: any) => void;
135
+ dp: (props: any) => void;
136
+ gcls: (key: any) => any;
137
+ m: (...cssClasses: any[]) => string;
138
+ }, unknown, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, ("update:visible" | "ready" | "update:cropvisible" | "cropdata" | "cropstart" | "cropmove" | "cropend" | "crop")[], "update:visible" | "ready" | "update:cropvisible" | "cropdata" | "cropstart" | "cropmove" | "cropend" | "crop", import("@vue/runtime-core").PublicProps, Readonly<import("@vue/runtime-core").ExtractPropTypes<{
139
+ /** 设置图片上的alt属性 */
140
+ alt: {
141
+ type: StringConstructor;
142
+ default: string;
143
+ };
144
+ /** 裁剪框的宽高比,默认 16/9 */
145
+ aspectRatio: {
146
+ type: NumberConstructor;
147
+ default: number;
148
+ };
149
+ /** 初始化时,是否自动显示裁剪框,默认 true */
150
+ autoCrop: {
151
+ type: BooleanConstructor;
152
+ default: boolean;
153
+ };
154
+ /** 定义自动裁剪面积大小(百分比) 默认0.8 */
155
+ autoCropArea: {
156
+ type: NumberConstructor;
157
+ default: number;
158
+ };
159
+ /** 是否显示容器的网格背景 默认true */
160
+ background: {
161
+ type: BooleanConstructor;
162
+ default: boolean;
163
+ };
164
+ /** 裁剪框是否在图片正中心,并显示一个 + 号 默认false */
165
+ center: {
166
+ type: BooleanConstructor;
167
+ default: boolean;
168
+ };
169
+ /** 设置图片裁剪后返回的类型,可配置为 blob 和 base64 默认 base64 */
170
+ cropType: {
171
+ type: StringConstructor;
172
+ default: string;
173
+ };
174
+ /** 设置裁剪弹框是否可见 默认false */
175
+ cropvisible: {
176
+ type: BooleanConstructor;
177
+ default: boolean;
178
+ };
179
+ /** 定义 cropper 的拖拽模式,默认 crop ;'crop': 可以产生一个新的裁剪框 3 。'move':只可以移动图片 3 。'none': 什么也不处理 */
180
+ dragMode: {
181
+ type: StringConstructor;
182
+ default: string;
183
+ };
184
+ /** 是否在裁剪框上方显示虚线 默认true */
185
+ guides: {
186
+ type: BooleanConstructor;
187
+ default: boolean;
188
+ };
189
+ /** 设置待裁剪图片的最大大小,默认为 1M */
190
+ maxSize: {
191
+ type: StringConstructor;
192
+ default: string;
193
+ };
194
+ /** 容器的最小高度 默认 300 */
195
+ minContainerHeight: {
196
+ type: NumberConstructor;
197
+ default: number;
198
+ };
199
+ /** 容器的最小宽度 默认 652 */
200
+ minContainerWidth: {
201
+ type: NumberConstructor;
202
+ default: number;
203
+ };
204
+ /** 裁剪层的最小高度 默认0 */
205
+ minCropBoxHeight: {
206
+ type: NumberConstructor;
207
+ default: number;
208
+ };
209
+ /** 裁剪层的最小宽度 默认0 */
210
+ minCropBoxWidth: {
211
+ type: NumberConstructor;
212
+ default: number;
213
+ };
214
+ /** 是否显示图片上方裁剪框下方的黑色模态 默认true */
215
+ modal: {
216
+ type: BooleanConstructor;
217
+ default: boolean;
218
+ };
219
+ /** 是否允许可以移动后面的图片 默认true */
220
+ movable: {
221
+ type: BooleanConstructor;
222
+ default: boolean;
223
+ };
224
+ plugin: {
225
+ type: (ObjectConstructor | FunctionConstructor)[];
226
+ default: () => typeof Cropper;
227
+ };
228
+ /** 设置图片裁剪后的压缩比例,值在 0-1 之间 默认0.92 */
229
+ quality: {
230
+ type: NumberConstructor;
231
+ default: number;
232
+ validator: (value: number) => boolean;
233
+ };
234
+ /** 是否允许旋转图像;默认为 true */
235
+ rotatable: {
236
+ type: BooleanConstructor;
237
+ default: boolean;
238
+ };
239
+ /** 默认裁剪的源图片 */
240
+ src: {
241
+ type: StringConstructor;
242
+ default: string;
243
+ };
244
+ /** 定义 cropper 的视图模式,默认 0 ;0:没有限制,3 可以移动到 2 外。1:3 只能在 2 内移动。2:2 图片不全部铺满 1 (即缩小时可以有一边出现空隙)。3:2 图片填充整个 1 */
245
+ viewMode: {
246
+ type: NumberConstructor;
247
+ default: number;
248
+ };
249
+ /** 用鼠标移动图像时,定义缩放比例 默认 0.1 */
250
+ wheelZoomRatio: {
251
+ type: NumberConstructor;
252
+ default: number;
253
+ };
254
+ /** 是否可以通过滚动鼠标滚轮来缩放图像 默认true */
255
+ zoomOnWheel: {
256
+ type: BooleanConstructor;
257
+ default: boolean;
258
+ };
259
+ /** 是否允许放大图像 默认true */
260
+ zoomable: {
261
+ type: BooleanConstructor;
262
+ default: boolean;
263
+ };
264
+ }>> & {
265
+ "onUpdate:visible"?: ((...args: any[]) => any) | undefined;
266
+ onReady?: ((...args: any[]) => any) | undefined;
267
+ onCrop?: ((...args: any[]) => any) | undefined;
268
+ "onUpdate:cropvisible"?: ((...args: any[]) => any) | undefined;
269
+ onCropdata?: ((...args: any[]) => any) | undefined;
270
+ onCropstart?: ((...args: any[]) => any) | undefined;
271
+ onCropmove?: ((...args: any[]) => any) | undefined;
272
+ onCropend?: ((...args: any[]) => any) | undefined;
273
+ }, {
274
+ center: boolean;
275
+ plugin: Function | Record<string, any>;
276
+ background: boolean;
277
+ aspectRatio: number;
278
+ src: string;
279
+ modal: boolean;
280
+ alt: string;
281
+ autoCrop: boolean;
282
+ autoCropArea: number;
283
+ cropType: string;
284
+ cropvisible: boolean;
285
+ dragMode: string;
286
+ guides: boolean;
287
+ maxSize: string;
288
+ minContainerHeight: number;
289
+ minContainerWidth: number;
290
+ minCropBoxHeight: number;
291
+ minCropBoxWidth: number;
292
+ movable: boolean;
293
+ quality: number;
294
+ rotatable: boolean;
295
+ viewMode: number;
296
+ wheelZoomRatio: number;
297
+ zoomOnWheel: boolean;
298
+ zoomable: boolean;
299
+ }, {}>;
2
300
  export default _default;