@frollo/frollo-web-ui 9.0.1 → 9.0.3
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/cjs/index.js +10733 -3062
- package/esm/{_rollupPluginBabelHelpers-DODWUb5N.js → _rollupPluginBabelHelpers-BKlDnZ7n.js} +1 -1
- package/esm/fw-accordion.js +15 -18
- package/esm/fw-alert.js +32 -25
- package/esm/fw-bar-chart.js +265 -93
- package/esm/fw-button-DZTHZLjk.js +318 -0
- package/esm/fw-button.js +2 -2
- package/esm/{fw-card-D45R4kN-.js → fw-card-XGtsK2bM.js} +7 -10
- package/esm/fw-card.js +2 -2
- package/esm/fw-checkbox.js +8 -11
- package/esm/fw-date-picker.js +85 -49
- package/esm/fw-drawer.js +9 -9
- package/esm/{fw-dropdown-58wyuzsW.js → fw-dropdown-CSmYTm5O.js} +11 -14
- package/esm/fw-dropdown.js +7 -6
- package/esm/fw-form.js +1 -1
- package/esm/fw-icons.js +11 -12
- package/esm/fw-image-A2lXYs0u.js +325 -0
- package/esm/fw-image.js +5 -4
- package/esm/{fw-input-C2-cZ-BY.js → fw-input-BiPWWfK3.js} +12 -19
- package/esm/fw-input.js +3 -3
- package/esm/fw-loading-bar-3x4tkF1B.js +37 -0
- package/esm/fw-loading.js +89 -40
- package/esm/fw-media-picker.js +10 -653
- package/esm/fw-modal.js +11 -10
- package/esm/fw-navigation-menu.js +36 -41
- package/esm/fw-popover-BZ-zqUme.js +330 -0
- package/esm/fw-popover.js +2 -3
- package/esm/fw-progress-bar.js +1 -1
- package/esm/fw-provider-list.js +108 -88
- package/esm/fw-sidebar-menu.js +58 -51
- package/esm/fw-slider.js +64 -61
- package/esm/fw-switch.js +76 -49
- package/esm/fw-table-row-BU0xaybR.js +447 -0
- package/esm/fw-table.js +5 -6
- package/esm/fw-tabs.js +87 -35
- package/esm/fw-tag-BRxPc4zc.js +199 -0
- package/esm/fw-tag.js +4 -4
- package/esm/fw-toast.js +58 -76
- package/esm/fw-transactions-card.js +20 -20
- package/esm/{get-root-colours-DCjlYelc.js → get-root-colours-DCCAnRF4.js} +3 -1
- package/esm/index-C8z11jcJ.js +7583 -0
- package/esm/index-DHyRsKsZ.js +843 -0
- package/esm/index-eP2GMSdQ.js +755 -0
- package/esm/index.js +54 -61
- package/esm/{uniqueId-DZdGzBh8.js → uniqueId-DK6xzFd8.js} +1 -1
- package/esm/{vee-validate.esm-3ptvCDR1.js → vee-validate-0dtT5GSQ.js} +182 -305
- package/frollo-web-ui.esm.js +10790 -3117
- package/icons/circle-check.svg +4 -0
- package/index.d.ts +1522 -586
- package/package.json +11 -11
- package/styles/tailwind.css +34 -2
- package/types/components/fw-accordion/fw-accordion.vue.d.ts +9 -7
- package/types/components/fw-alert/fw-alert.vue.d.ts +11 -6
- package/types/components/fw-bar-chart/fw-bar-chart.vue.d.ts +15 -64
- package/types/components/fw-button/fw-button.vue.d.ts +11 -7
- package/types/components/fw-card/fw-card.vue.d.ts +6 -6
- package/types/components/fw-checkbox/fw-checkbox.vue.d.ts +365 -5
- package/types/components/fw-date-picker/fw-date-picker.vue.d.ts +3 -242
- package/types/components/fw-drawer/fw-drawer.vue.d.ts +11 -8
- package/types/components/fw-dropdown/fw-dropdown.vue.d.ts +20 -12
- package/types/components/fw-icons/fw-success-animation.vue.d.ts +1 -1
- package/types/components/fw-image/fw-image.vue.d.ts +33 -7
- package/types/components/fw-input/fw-input.vue.d.ts +368 -10
- package/types/components/fw-loading/fw-loading-bar.vue.d.ts +7 -5
- package/types/components/fw-loading/fw-loading-card.vue.d.ts +3 -1
- package/types/components/fw-loading/fw-loading-dots.vue.d.ts +8 -1
- package/types/components/fw-loading/fw-loading-table.vue.d.ts +11 -6
- package/types/components/fw-media-picker/fw-media-picker.vue.d.ts +27 -18
- package/types/components/fw-modal/fw-modal.vue.d.ts +11 -7
- package/types/components/fw-navigation-menu/fw-navigation-menu.vue.d.ts +12 -8
- package/types/components/fw-popover/fw-popover.vue.d.ts +16 -21
- package/types/components/fw-progress-bar/fw-progress-bar.vue.d.ts +6 -4
- package/types/components/fw-provider-list/fw-provider-list.vue.d.ts +20 -45
- package/types/components/fw-sidebar-menu/fw-sidebar-menu.vue.d.ts +13 -7
- package/types/components/fw-slider/fw-slider.vue.d.ts +11 -8
- package/types/components/fw-switch/fw-switch.vue.d.ts +383 -9
- package/types/components/fw-switch/index.types.d.ts +1 -0
- package/types/components/fw-table/fw-table-head.vue.d.ts +1 -1
- package/types/components/fw-table/fw-table-row.vue.d.ts +1 -1
- package/types/components/fw-table/fw-table.vue.d.ts +40 -19
- package/types/components/fw-table/index.types.d.ts +36 -2
- package/types/components/fw-tabs/fw-tab.vue.d.ts +4 -8
- package/types/components/fw-tabs/fw-tabs.vue.d.ts +11 -8
- package/types/components/fw-tabs/index.types.d.ts +14 -4
- package/types/components/fw-tag/fw-tag.vue.d.ts +14 -8
- package/types/components/fw-toast/fw-toast.vue.d.ts +17 -22
- package/types/components/fw-transactions-card/fw-transactions-card.vue.d.ts +6 -3
- package/types/directives/lazy-loader.d.ts +11 -2
- package/types/helpers/get-root-colours.d.ts +1 -0
- package/web-components/index.js +16793 -7702
- package/esm/fw-button-YMoW4x4c.js +0 -296
- package/esm/fw-image-D-OHafdw.js +0 -217
- package/esm/fw-loading-bar-DecYSBC_.js +0 -45
- package/esm/fw-popover-B4bsfuxm.js +0 -620
- package/esm/fw-table-row-Cgi8871h.js +0 -389
- package/esm/fw-tag-fDo50Nw7.js +0 -177
- package/esm/index-BsEH8YYr.js +0 -979
package/esm/fw-media-picker.js
CHANGED
|
@@ -1,654 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
1
|
+
export { s as FwMediaPicker } from './index-eP2GMSdQ.js';
|
|
2
|
+
import './_rollupPluginBabelHelpers-BKlDnZ7n.js';
|
|
3
|
+
import 'vue';
|
|
4
|
+
import './index-DHyRsKsZ.js';
|
|
5
|
+
import './fw-modal.js';
|
|
6
|
+
import './fw-button-DZTHZLjk.js';
|
|
7
|
+
import './style-inject.es-tgCJW-Cu.js';
|
|
8
|
+
import './fw-image-A2lXYs0u.js';
|
|
9
|
+
import './fw-loading-bar-3x4tkF1B.js';
|
|
10
|
+
import './get-root-colours-DCCAnRF4.js';
|
|
5
11
|
import './fw-button.js';
|
|
6
|
-
import { s as script$1 } from './fw-button-YMoW4x4c.js';
|
|
7
|
-
import { s as styleInject } from './style-inject.es-tgCJW-Cu.js';
|
|
8
|
-
import './fw-image-D-OHafdw.js';
|
|
9
|
-
import './fw-loading-bar-DecYSBC_.js';
|
|
10
|
-
import './get-root-colours-DCjlYelc.js';
|
|
11
|
-
|
|
12
|
-
var script = defineComponent({
|
|
13
|
-
name: 'MediaPicker',
|
|
14
|
-
components: {
|
|
15
|
-
FwModal: __default__,
|
|
16
|
-
FwButton: script$1,
|
|
17
|
-
ArrowRotateSvg: render$6,
|
|
18
|
-
CloudArrowUpSvg: render$5,
|
|
19
|
-
GuideSvg: render$4,
|
|
20
|
-
LoadingSvg: render$3,
|
|
21
|
-
PenSvg: render$2,
|
|
22
|
-
PlusSvg: render$1
|
|
23
|
-
},
|
|
24
|
-
emits: [/** Fired when media is selected */
|
|
25
|
-
'selected'],
|
|
26
|
-
props: {
|
|
27
|
-
/**
|
|
28
|
-
* The accepted file types for the media picker
|
|
29
|
-
*/
|
|
30
|
-
acceptedFileTypes: {
|
|
31
|
-
type: String,
|
|
32
|
-
"default": 'image/png, image/jpeg'
|
|
33
|
-
},
|
|
34
|
-
/**
|
|
35
|
-
* The maximum file size in bytes
|
|
36
|
-
*/
|
|
37
|
-
maxFileSize: {
|
|
38
|
-
type: Number,
|
|
39
|
-
"default": 8 * 1024 * 1024 // 8 MB
|
|
40
|
-
},
|
|
41
|
-
/**
|
|
42
|
-
* The title of the picker tile
|
|
43
|
-
*/
|
|
44
|
-
title: {
|
|
45
|
-
type: String
|
|
46
|
-
},
|
|
47
|
-
/**
|
|
48
|
-
* The image URL to display in the media picker
|
|
49
|
-
*/
|
|
50
|
-
imageUrl: {
|
|
51
|
-
type: String
|
|
52
|
-
},
|
|
53
|
-
/**
|
|
54
|
-
* The header text for the upload modal
|
|
55
|
-
*/
|
|
56
|
-
uploadHeaderText: {
|
|
57
|
-
type: String,
|
|
58
|
-
"default": 'Upload Image'
|
|
59
|
-
},
|
|
60
|
-
/**
|
|
61
|
-
* The header text for the edit modal
|
|
62
|
-
*/
|
|
63
|
-
editHeaderText: {
|
|
64
|
-
type: String,
|
|
65
|
-
"default": 'Edit Image'
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
setup: function setup(props, ctx) {
|
|
69
|
-
var initialImageUrl = ref(props.imageUrl);
|
|
70
|
-
var isSelectMediaModalOpen = ref(false);
|
|
71
|
-
var isEditMediaModalOpen = ref(false);
|
|
72
|
-
var fileInput = ref(null);
|
|
73
|
-
var editorCanvas = ref(null);
|
|
74
|
-
var selectedFile = ref(null);
|
|
75
|
-
var dragging = ref(false);
|
|
76
|
-
var loading = ref(false);
|
|
77
|
-
var openFilePicker = function openFilePicker() {
|
|
78
|
-
var _fileInput$value;
|
|
79
|
-
return (_fileInput$value = fileInput.value) === null || _fileInput$value === void 0 ? void 0 : _fileInput$value.click();
|
|
80
|
-
};
|
|
81
|
-
var fileSelected = function fileSelected(event) {
|
|
82
|
-
var target = event.target;
|
|
83
|
-
if (target.files && target.files.length > 0) {
|
|
84
|
-
selectedFile.value = target.files[0];
|
|
85
|
-
if (!isInvalidFile.value) showEditor();
|
|
86
|
-
} else {
|
|
87
|
-
selectedFile.value = null;
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
var dragDropFile = function dragDropFile(event) {
|
|
91
|
-
var target = event.dataTransfer;
|
|
92
|
-
if (target !== null && target !== void 0 && target.files && target.files.length > 0) {
|
|
93
|
-
selectedFile.value = target.files[0];
|
|
94
|
-
fileInput.value.files = target.files;
|
|
95
|
-
if (!isInvalidFile.value) showEditor();
|
|
96
|
-
} else {
|
|
97
|
-
selectedFile.value = null;
|
|
98
|
-
}
|
|
99
|
-
dragging.value = false;
|
|
100
|
-
};
|
|
101
|
-
var acceptedTypes = computed(function () {
|
|
102
|
-
return props.acceptedFileTypes.split(',').map(function (type) {
|
|
103
|
-
return type.trim();
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
var isInvalidFile = computed(function () {
|
|
107
|
-
return selectedFile.value && (selectedFile.value.size > props.maxFileSize || acceptedTypes.value.includes(selectedFile.value.type) === false);
|
|
108
|
-
});
|
|
109
|
-
watch(initialImageUrl, /*#__PURE__*/function () {
|
|
110
|
-
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(newVal, oldVal) {
|
|
111
|
-
var response, blob, mimeType;
|
|
112
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
113
|
-
while (1) switch (_context.prev = _context.next) {
|
|
114
|
-
case 0:
|
|
115
|
-
if (!(newVal === oldVal)) {
|
|
116
|
-
_context.next = 2;
|
|
117
|
-
break;
|
|
118
|
-
}
|
|
119
|
-
return _context.abrupt("return");
|
|
120
|
-
case 2:
|
|
121
|
-
if (!initialImageUrl.value) {
|
|
122
|
-
_context.next = 21;
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
_context.prev = 3;
|
|
126
|
-
loading.value = true;
|
|
127
|
-
_context.next = 7;
|
|
128
|
-
return fetch(initialImageUrl.value);
|
|
129
|
-
case 7:
|
|
130
|
-
response = _context.sent;
|
|
131
|
-
_context.next = 10;
|
|
132
|
-
return response.blob();
|
|
133
|
-
case 10:
|
|
134
|
-
blob = _context.sent;
|
|
135
|
-
mimeType = response.headers.get('Content-Type') || blob.type;
|
|
136
|
-
selectedFile.value = new File([blob], 'image', {
|
|
137
|
-
type: mimeType
|
|
138
|
-
});
|
|
139
|
-
_context.next = 18;
|
|
140
|
-
break;
|
|
141
|
-
case 15:
|
|
142
|
-
_context.prev = 15;
|
|
143
|
-
_context.t0 = _context["catch"](3);
|
|
144
|
-
console.error('Error fetching image:', _context.t0);
|
|
145
|
-
case 18:
|
|
146
|
-
_context.prev = 18;
|
|
147
|
-
loading.value = false;
|
|
148
|
-
return _context.finish(18);
|
|
149
|
-
case 21:
|
|
150
|
-
case "end":
|
|
151
|
-
return _context.stop();
|
|
152
|
-
}
|
|
153
|
-
}, _callee, null, [[3, 15, 18, 21]]);
|
|
154
|
-
}));
|
|
155
|
-
return function (_x, _x2) {
|
|
156
|
-
return _ref.apply(this, arguments);
|
|
157
|
-
};
|
|
158
|
-
}(), {
|
|
159
|
-
immediate: true
|
|
160
|
-
});
|
|
161
|
-
var previewImageUrl = computed(function () {
|
|
162
|
-
if (selectedFile.value && selectedFile.value.size < props.maxFileSize) {
|
|
163
|
-
return URL.createObjectURL(selectedFile.value);
|
|
164
|
-
}
|
|
165
|
-
return undefined;
|
|
166
|
-
});
|
|
167
|
-
var previewImageBitmap = computed(function () {
|
|
168
|
-
if (selectedFile.value) {
|
|
169
|
-
return createImageBitmap(selectedFile.value);
|
|
170
|
-
}
|
|
171
|
-
return undefined;
|
|
172
|
-
});
|
|
173
|
-
var acceptedFileTypesText = computed(function () {
|
|
174
|
-
return props.acceptedFileTypes.split(',').map(function (type) {
|
|
175
|
-
return type.replace('image/', '').toUpperCase().trim();
|
|
176
|
-
}).join(', ');
|
|
177
|
-
});
|
|
178
|
-
var maxFileSizeText = computed(function () {
|
|
179
|
-
var sizeInMB = Math.floor(props.maxFileSize / (1024 * 1024));
|
|
180
|
-
return "".concat(sizeInMB, "MB");
|
|
181
|
-
});
|
|
182
|
-
var showEditor = function showEditor() {
|
|
183
|
-
isSelectMediaModalOpen.value = false;
|
|
184
|
-
isEditMediaModalOpen.value = true;
|
|
185
|
-
drawImageOnCanvas();
|
|
186
|
-
};
|
|
187
|
-
var imageX = ref(0);
|
|
188
|
-
var imageY = ref(0);
|
|
189
|
-
var scaledHeight = ref(0);
|
|
190
|
-
var scaledWidth = ref(0);
|
|
191
|
-
var interactionOffsetX = ref(0);
|
|
192
|
-
var interactionOffsetY = ref(0);
|
|
193
|
-
var interactionImageX = ref(0);
|
|
194
|
-
var interactionImageY = ref(0);
|
|
195
|
-
var interactionWidth = ref(0);
|
|
196
|
-
var interactionHeight = ref(0);
|
|
197
|
-
var isEditingImage = ref(false);
|
|
198
|
-
var interactionType = ref(null);
|
|
199
|
-
var drawImageOnCanvas = /*#__PURE__*/function () {
|
|
200
|
-
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
201
|
-
var save,
|
|
202
|
-
ctx,
|
|
203
|
-
imageBitmap,
|
|
204
|
-
imageHeight,
|
|
205
|
-
imageWidth,
|
|
206
|
-
_editorCanvas$value,
|
|
207
|
-
editorHeight,
|
|
208
|
-
editorWidth,
|
|
209
|
-
scale,
|
|
210
|
-
squareSize,
|
|
211
|
-
halfSquareSize,
|
|
212
|
-
corners,
|
|
213
|
-
_args2 = arguments;
|
|
214
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
215
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
216
|
-
case 0:
|
|
217
|
-
save = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : false;
|
|
218
|
-
if (!(!editorCanvas.value || !previewImageBitmap.value)) {
|
|
219
|
-
_context2.next = 3;
|
|
220
|
-
break;
|
|
221
|
-
}
|
|
222
|
-
return _context2.abrupt("return");
|
|
223
|
-
case 3:
|
|
224
|
-
ctx = editorCanvas.value.getContext('2d');
|
|
225
|
-
if (ctx) {
|
|
226
|
-
_context2.next = 6;
|
|
227
|
-
break;
|
|
228
|
-
}
|
|
229
|
-
return _context2.abrupt("return");
|
|
230
|
-
case 6:
|
|
231
|
-
_context2.next = 8;
|
|
232
|
-
return previewImageBitmap.value;
|
|
233
|
-
case 8:
|
|
234
|
-
imageBitmap = _context2.sent;
|
|
235
|
-
imageHeight = imageBitmap.height, imageWidth = imageBitmap.width;
|
|
236
|
-
_editorCanvas$value = editorCanvas.value, editorHeight = _editorCanvas$value.height, editorWidth = _editorCanvas$value.width;
|
|
237
|
-
ctx.clearRect(0, 0, editorWidth, editorHeight);
|
|
238
|
-
if (imageX.value === 0 && imageY.value === 0) {
|
|
239
|
-
scale = Math.min(editorWidth / imageWidth, editorHeight / imageHeight);
|
|
240
|
-
scaledWidth.value = imageWidth * scale;
|
|
241
|
-
scaledHeight.value = imageHeight * scale;
|
|
242
|
-
imageX.value = editorWidth / 2 - scaledWidth.value / 2;
|
|
243
|
-
imageY.value = editorHeight / 2 - scaledHeight.value / 2;
|
|
244
|
-
}
|
|
245
|
-
ctx.drawImage(imageBitmap, imageX.value, imageY.value, scaledWidth.value, scaledHeight.value);
|
|
246
|
-
if (!save) {
|
|
247
|
-
ctx.strokeStyle = '#4BF0C8';
|
|
248
|
-
ctx.lineWidth = 2;
|
|
249
|
-
ctx.strokeRect(imageX.value, imageY.value, scaledWidth.value, scaledHeight.value);
|
|
250
|
-
squareSize = 5;
|
|
251
|
-
halfSquareSize = squareSize / 2;
|
|
252
|
-
corners = [[imageX.value - halfSquareSize, imageY.value - halfSquareSize], [imageX.value + scaledWidth.value - halfSquareSize, imageY.value - halfSquareSize], [imageX.value - halfSquareSize, imageY.value + scaledHeight.value - halfSquareSize], [imageX.value + scaledWidth.value - halfSquareSize, imageY.value + scaledHeight.value - halfSquareSize]];
|
|
253
|
-
ctx.fillStyle = '#4BF0C8';
|
|
254
|
-
corners.forEach(function (_ref3) {
|
|
255
|
-
var _ref4 = _slicedToArray(_ref3, 2),
|
|
256
|
-
cx = _ref4[0],
|
|
257
|
-
cy = _ref4[1];
|
|
258
|
-
ctx.fillRect(cx, cy, squareSize, squareSize);
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
case 15:
|
|
262
|
-
case "end":
|
|
263
|
-
return _context2.stop();
|
|
264
|
-
}
|
|
265
|
-
}, _callee2);
|
|
266
|
-
}));
|
|
267
|
-
return function drawImageOnCanvas() {
|
|
268
|
-
return _ref2.apply(this, arguments);
|
|
269
|
-
};
|
|
270
|
-
}();
|
|
271
|
-
var pointerType = {
|
|
272
|
-
'top-left': 'nwse-resize',
|
|
273
|
-
'top-right': 'nesw-resize',
|
|
274
|
-
'bottom-left': 'nesw-resize',
|
|
275
|
-
'bottom-right': 'nwse-resize',
|
|
276
|
-
inside: 'move'
|
|
277
|
-
};
|
|
278
|
-
var isResizeOrMove = function isResizeOrMove(pointerX, pointerY, imageX, imageY, imageWidth, imageHeight) {
|
|
279
|
-
var squareSize = 5;
|
|
280
|
-
if (pointerX < imageX || pointerX > imageX + imageWidth || pointerY < imageY || pointerY > imageY + imageHeight) return null;
|
|
281
|
-
if (pointerX <= imageX + squareSize && pointerY <= imageY + squareSize) return 'top-left';
|
|
282
|
-
if (pointerX >= imageX + imageWidth - squareSize && pointerY <= imageY + squareSize) return 'top-right';
|
|
283
|
-
if (pointerX <= imageX + squareSize && pointerY >= imageY + imageHeight - squareSize) return 'bottom-left';
|
|
284
|
-
if (pointerX >= imageX + imageWidth - squareSize && pointerY >= imageY + imageHeight - squareSize) return 'bottom-right';
|
|
285
|
-
return 'inside';
|
|
286
|
-
};
|
|
287
|
-
var startEditImage = function startEditImage(_ref5) {
|
|
288
|
-
var button = _ref5.button,
|
|
289
|
-
offsetX = _ref5.offsetX,
|
|
290
|
-
offsetY = _ref5.offsetY;
|
|
291
|
-
if (button !== 0) return;
|
|
292
|
-
interactionType.value = isResizeOrMove(offsetX, offsetY, imageX.value, imageY.value, scaledWidth.value, scaledHeight.value);
|
|
293
|
-
if (!interactionType.value) return;
|
|
294
|
-
isEditingImage.value = true;
|
|
295
|
-
if (interactionType.value === 'inside') {
|
|
296
|
-
interactionOffsetX.value = offsetX - imageX.value;
|
|
297
|
-
interactionOffsetY.value = offsetY - imageY.value;
|
|
298
|
-
} else {
|
|
299
|
-
interactionOffsetX.value = offsetX;
|
|
300
|
-
interactionOffsetY.value = offsetY;
|
|
301
|
-
interactionImageX.value = imageX.value;
|
|
302
|
-
interactionImageY.value = imageY.value;
|
|
303
|
-
interactionWidth.value = scaledWidth.value;
|
|
304
|
-
interactionHeight.value = scaledHeight.value;
|
|
305
|
-
}
|
|
306
|
-
};
|
|
307
|
-
var stopEditImage = function stopEditImage() {
|
|
308
|
-
isEditingImage.value = false;
|
|
309
|
-
interactionType.value = null;
|
|
310
|
-
if (editorCanvas.value) {
|
|
311
|
-
editorCanvas.value.style.cursor = 'default';
|
|
312
|
-
}
|
|
313
|
-
};
|
|
314
|
-
var editImage = function editImage(_ref6) {
|
|
315
|
-
var offsetX = _ref6.offsetX,
|
|
316
|
-
offsetY = _ref6.offsetY;
|
|
317
|
-
if (!editorCanvas.value) return;
|
|
318
|
-
if (isEditingImage.value) {
|
|
319
|
-
if (interactionType.value === 'inside') {
|
|
320
|
-
imageX.value = offsetX - interactionOffsetX.value;
|
|
321
|
-
imageY.value = offsetY - interactionOffsetY.value;
|
|
322
|
-
} else {
|
|
323
|
-
var deltaX = offsetX - interactionOffsetX.value;
|
|
324
|
-
var deltaY = offsetY - interactionOffsetY.value;
|
|
325
|
-
switch (interactionType.value) {
|
|
326
|
-
case 'top-left':
|
|
327
|
-
imageX.value = interactionImageX.value + deltaX;
|
|
328
|
-
imageY.value = interactionImageY.value + deltaY;
|
|
329
|
-
scaledWidth.value = interactionWidth.value - deltaX;
|
|
330
|
-
scaledHeight.value = interactionHeight.value - deltaY;
|
|
331
|
-
break;
|
|
332
|
-
case 'top-right':
|
|
333
|
-
imageY.value = interactionImageY.value + deltaY;
|
|
334
|
-
scaledWidth.value = interactionWidth.value + deltaX;
|
|
335
|
-
scaledHeight.value = interactionHeight.value - deltaY;
|
|
336
|
-
break;
|
|
337
|
-
case 'bottom-left':
|
|
338
|
-
imageX.value = interactionImageX.value + deltaX;
|
|
339
|
-
scaledWidth.value = interactionWidth.value - deltaX;
|
|
340
|
-
scaledHeight.value = interactionHeight.value + deltaY;
|
|
341
|
-
break;
|
|
342
|
-
case 'bottom-right':
|
|
343
|
-
scaledWidth.value = interactionWidth.value + deltaX;
|
|
344
|
-
scaledHeight.value = interactionHeight.value + deltaY;
|
|
345
|
-
break;
|
|
346
|
-
}
|
|
347
|
-
var MIN_SIZE = 10;
|
|
348
|
-
scaledWidth.value = Math.max(scaledWidth.value, MIN_SIZE);
|
|
349
|
-
scaledHeight.value = Math.max(scaledHeight.value, MIN_SIZE);
|
|
350
|
-
}
|
|
351
|
-
drawImageOnCanvas();
|
|
352
|
-
} else {
|
|
353
|
-
interactionType.value = isResizeOrMove(offsetX, offsetY, imageX.value, imageY.value, scaledWidth.value, scaledHeight.value);
|
|
354
|
-
if (!interactionType.value) editorCanvas.value.style.cursor = 'default';else if (interactionType.value === 'inside') editorCanvas.value.style.cursor = pointerType.inside;else editorCanvas.value.style.cursor = pointerType[interactionType.value];
|
|
355
|
-
}
|
|
356
|
-
};
|
|
357
|
-
var clearEdits = function clearEdits() {
|
|
358
|
-
imageX.value = 0;
|
|
359
|
-
imageY.value = 0;
|
|
360
|
-
scaledWidth.value = 0;
|
|
361
|
-
scaledHeight.value = 0;
|
|
362
|
-
interactionOffsetX.value = 0;
|
|
363
|
-
interactionOffsetY.value = 0;
|
|
364
|
-
interactionImageX.value = 0;
|
|
365
|
-
interactionImageY.value = 0;
|
|
366
|
-
interactionWidth.value = 0;
|
|
367
|
-
interactionHeight.value = 0;
|
|
368
|
-
};
|
|
369
|
-
var change = function change() {
|
|
370
|
-
clearEdits();
|
|
371
|
-
selectedFile.value = null;
|
|
372
|
-
isSelectMediaModalOpen.value = true;
|
|
373
|
-
isEditMediaModalOpen.value = false;
|
|
374
|
-
};
|
|
375
|
-
var reset = function reset() {
|
|
376
|
-
clearEdits();
|
|
377
|
-
drawImageOnCanvas();
|
|
378
|
-
};
|
|
379
|
-
var save = /*#__PURE__*/function () {
|
|
380
|
-
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
381
|
-
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
382
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
383
|
-
case 0:
|
|
384
|
-
if (editorCanvas.value) {
|
|
385
|
-
_context3.next = 2;
|
|
386
|
-
break;
|
|
387
|
-
}
|
|
388
|
-
return _context3.abrupt("return");
|
|
389
|
-
case 2:
|
|
390
|
-
_context3.next = 4;
|
|
391
|
-
return drawImageOnCanvas(true);
|
|
392
|
-
case 4:
|
|
393
|
-
editorCanvas.value.toBlob(function (blob) {
|
|
394
|
-
if (blob) {
|
|
395
|
-
selectedFile.value = new File([blob], 'edited-image.png', {
|
|
396
|
-
type: 'image/png'
|
|
397
|
-
});
|
|
398
|
-
ctx.emit('selected', selectedFile.value);
|
|
399
|
-
isEditMediaModalOpen.value = false;
|
|
400
|
-
imageX.value = 0;
|
|
401
|
-
imageY.value = 0;
|
|
402
|
-
}
|
|
403
|
-
}, 'image/png');
|
|
404
|
-
case 5:
|
|
405
|
-
case "end":
|
|
406
|
-
return _context3.stop();
|
|
407
|
-
}
|
|
408
|
-
}, _callee3);
|
|
409
|
-
}));
|
|
410
|
-
return function save() {
|
|
411
|
-
return _ref7.apply(this, arguments);
|
|
412
|
-
};
|
|
413
|
-
}();
|
|
414
|
-
return {
|
|
415
|
-
previewImageUrl: previewImageUrl,
|
|
416
|
-
fileInput: fileInput,
|
|
417
|
-
editorCanvas: editorCanvas,
|
|
418
|
-
isSelectMediaModalOpen: isSelectMediaModalOpen,
|
|
419
|
-
isEditMediaModalOpen: isEditMediaModalOpen,
|
|
420
|
-
acceptedFileTypesText: acceptedFileTypesText,
|
|
421
|
-
maxFileSizeText: maxFileSizeText,
|
|
422
|
-
openFilePicker: openFilePicker,
|
|
423
|
-
fileSelected: fileSelected,
|
|
424
|
-
dragging: dragging,
|
|
425
|
-
loading: loading,
|
|
426
|
-
dragDropFile: dragDropFile,
|
|
427
|
-
isInvalidFile: isInvalidFile,
|
|
428
|
-
showEditor: showEditor,
|
|
429
|
-
change: change,
|
|
430
|
-
reset: reset,
|
|
431
|
-
save: save,
|
|
432
|
-
startEditImage: startEditImage,
|
|
433
|
-
stopEditImage: stopEditImage,
|
|
434
|
-
editImage: editImage
|
|
435
|
-
};
|
|
436
|
-
}
|
|
437
|
-
});
|
|
438
|
-
|
|
439
|
-
var _hoisted_1 = ["accept"];
|
|
440
|
-
var _hoisted_2 = {
|
|
441
|
-
"class": "cursor-pointer w-[160px] h-[160px] bg-white"
|
|
442
|
-
};
|
|
443
|
-
var _hoisted_3 = ["src"];
|
|
444
|
-
var _hoisted_4 = {
|
|
445
|
-
key: 1,
|
|
446
|
-
"class": "flex flex-col w-full h-full items-center justify-center gap-2 border border-grey-100 rounded"
|
|
447
|
-
};
|
|
448
|
-
var _hoisted_5 = {
|
|
449
|
-
"class": "text-brand-text3 group-hover:text-brand-text2"
|
|
450
|
-
};
|
|
451
|
-
var _hoisted_6 = {
|
|
452
|
-
"class": "pt-[23px] px-4 pb-2 mb-0 text-left"
|
|
453
|
-
};
|
|
454
|
-
var _hoisted_7 = {
|
|
455
|
-
"class": "h-[360px] px-10 pb-10"
|
|
456
|
-
};
|
|
457
|
-
var _hoisted_8 = /*#__PURE__*/createElementVNode("br", null, null, -1);
|
|
458
|
-
var _hoisted_9 = /*#__PURE__*/createElementVNode("br", null, null, -1);
|
|
459
|
-
var _hoisted_10 = {
|
|
460
|
-
key: 0,
|
|
461
|
-
"class": "text-error"
|
|
462
|
-
};
|
|
463
|
-
var _hoisted_11 = {
|
|
464
|
-
"class": "pt-[23px] px-4 pb-2 mb-0 text-left"
|
|
465
|
-
};
|
|
466
|
-
var _hoisted_12 = {
|
|
467
|
-
"class": "flex flex-col items-center justify-center p-10 bg-black gap-1"
|
|
468
|
-
};
|
|
469
|
-
var _hoisted_13 = {
|
|
470
|
-
"class": "w-[300px] h-[300px] rounded bg-white relative"
|
|
471
|
-
};
|
|
472
|
-
var _hoisted_14 = /*#__PURE__*/createElementVNode("p", {
|
|
473
|
-
"class": "text-white text-sm"
|
|
474
|
-
}, "Drag to reposition or resize", -1);
|
|
475
|
-
var _hoisted_15 = {
|
|
476
|
-
"class": "flex px-6 py-4 gap-2 w-full justify-between flex-col sm:flex-row"
|
|
477
|
-
};
|
|
478
|
-
var _hoisted_16 = {
|
|
479
|
-
"class": "flex justify-start gap-2 flex-col sm:flex-row"
|
|
480
|
-
};
|
|
481
|
-
var _hoisted_17 = {
|
|
482
|
-
"class": "flex flex-row items-center gap-2"
|
|
483
|
-
};
|
|
484
|
-
var _hoisted_18 = {
|
|
485
|
-
"class": "flex justify-end flex-col sm:flex-row"
|
|
486
|
-
};
|
|
487
|
-
function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
488
|
-
var _component_PenSvg = resolveComponent("PenSvg");
|
|
489
|
-
var _component_LoadingSvg = resolveComponent("LoadingSvg");
|
|
490
|
-
var _component_PlusSvg = resolveComponent("PlusSvg");
|
|
491
|
-
var _component_CloudArrowUpSvg = resolveComponent("CloudArrowUpSvg");
|
|
492
|
-
var _component_FwButton = resolveComponent("FwButton");
|
|
493
|
-
var _component_FwModal = resolveComponent("FwModal");
|
|
494
|
-
var _component_GuideSvg = resolveComponent("GuideSvg");
|
|
495
|
-
var _component_ArrowRotateSvg = resolveComponent("ArrowRotateSvg");
|
|
496
|
-
return openBlock(), createElementBlock(Fragment, null, [createElementVNode("input", {
|
|
497
|
-
ref: "fileInput",
|
|
498
|
-
type: "file",
|
|
499
|
-
accept: _ctx.acceptedFileTypes,
|
|
500
|
-
"class": "hidden",
|
|
501
|
-
onChange: _cache[0] || (_cache[0] = function () {
|
|
502
|
-
return _ctx.fileSelected && _ctx.fileSelected.apply(_ctx, arguments);
|
|
503
|
-
})
|
|
504
|
-
}, null, 40, _hoisted_1), createElementVNode("div", _hoisted_2, [_ctx.previewImageUrl ? (openBlock(), createElementBlock("div", {
|
|
505
|
-
key: 0,
|
|
506
|
-
"class": "w-full h-full relative",
|
|
507
|
-
onClick: _cache[1] || (_cache[1] = function () {
|
|
508
|
-
return _ctx.showEditor && _ctx.showEditor.apply(_ctx, arguments);
|
|
509
|
-
})
|
|
510
|
-
}, [createVNode(_component_PenSvg, {
|
|
511
|
-
name: "pen",
|
|
512
|
-
"class": "absolute bottom-[-8px] right-[-8px] w-8 h-8 p-2 text-white bg-primary rounded-full"
|
|
513
|
-
}), createElementVNode("img", {
|
|
514
|
-
src: _ctx.previewImageUrl,
|
|
515
|
-
"class": "object-cover rounded w-full h-full"
|
|
516
|
-
}, null, 8, _hoisted_3)])) : _ctx.loading ? (openBlock(), createElementBlock("div", _hoisted_4, [createVNode(_component_LoadingSvg, {
|
|
517
|
-
name: "loading",
|
|
518
|
-
"class": "w-8 h-8 text-brand-text2 animate-spin"
|
|
519
|
-
})])) : (openBlock(), createElementBlock("div", {
|
|
520
|
-
key: 2,
|
|
521
|
-
"class": "fw-media-picker--empty group",
|
|
522
|
-
onClick: _cache[2] || (_cache[2] = function ($event) {
|
|
523
|
-
return _ctx.isSelectMediaModalOpen = true;
|
|
524
|
-
})
|
|
525
|
-
}, [createVNode(_component_PlusSvg, {
|
|
526
|
-
name: "plus",
|
|
527
|
-
"class": "w-8 h-8 p-1 text-brand-text3 rounded-full border border-brand-text3 group-hover:border-brand-text2 group-hover:text-brand-text2"
|
|
528
|
-
}), createElementVNode("p", _hoisted_5, toDisplayString(_ctx.title), 1)]))]), createVNode(_component_FwModal, {
|
|
529
|
-
modelValue: _ctx.isSelectMediaModalOpen,
|
|
530
|
-
"onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
|
|
531
|
-
return _ctx.isSelectMediaModalOpen = $event;
|
|
532
|
-
}),
|
|
533
|
-
"show-confirm": false,
|
|
534
|
-
"show-cancel": false,
|
|
535
|
-
"show-close-button": true,
|
|
536
|
-
padding: false,
|
|
537
|
-
"footer-class": "px-4 pb-8",
|
|
538
|
-
onCancel: _cache[8] || (_cache[8] = function ($event) {
|
|
539
|
-
return _ctx.isSelectMediaModalOpen = false;
|
|
540
|
-
})
|
|
541
|
-
}, {
|
|
542
|
-
header: withCtx(function () {
|
|
543
|
-
return [createElementVNode("h4", _hoisted_6, toDisplayString(_ctx.uploadHeaderText), 1)];
|
|
544
|
-
}),
|
|
545
|
-
body: withCtx(function () {
|
|
546
|
-
return [createElementVNode("div", _hoisted_7, [createElementVNode("div", {
|
|
547
|
-
"class": normalizeClass(["flex flex-col border border-1 border-dashed border-grey-40 rounded h-full items-center justify-center gap-1 bg-white", {
|
|
548
|
-
'border-primary !bg-grey-40/60': _ctx.dragging,
|
|
549
|
-
'!border-error': _ctx.isInvalidFile
|
|
550
|
-
}]),
|
|
551
|
-
onDragenter: _cache[3] || (_cache[3] = withModifiers(function ($event) {
|
|
552
|
-
return _ctx.dragging = true;
|
|
553
|
-
}, ["prevent"])),
|
|
554
|
-
onDragover: _cache[4] || (_cache[4] = withModifiers(function ($event) {
|
|
555
|
-
return _ctx.dragging = true;
|
|
556
|
-
}, ["prevent"])),
|
|
557
|
-
onDragleave: _cache[5] || (_cache[5] = withModifiers(function ($event) {
|
|
558
|
-
return _ctx.dragging = false;
|
|
559
|
-
}, ["prevent"])),
|
|
560
|
-
onDrop: _cache[6] || (_cache[6] = withModifiers(function () {
|
|
561
|
-
return _ctx.dragDropFile && _ctx.dragDropFile.apply(_ctx, arguments);
|
|
562
|
-
}, ["prevent"]))
|
|
563
|
-
}, [createVNode(_component_CloudArrowUpSvg, {
|
|
564
|
-
name: "cloud-arrow-up",
|
|
565
|
-
"class": "w-12 h-12 p-1 text-grey-80"
|
|
566
|
-
}), createElementVNode("p", null, [createTextVNode(" Select file to "), createVNode(_component_FwButton, {
|
|
567
|
-
variant: "link",
|
|
568
|
-
onClick: withModifiers(_ctx.openFilePicker, ["prevent"])
|
|
569
|
-
}, {
|
|
570
|
-
"default": withCtx(function () {
|
|
571
|
-
return [createTextVNode("upload")];
|
|
572
|
-
}),
|
|
573
|
-
_: 1
|
|
574
|
-
}, 8, ["onClick"]), createTextVNode(" or drag-and-drop a file. "), _hoisted_8, createElementVNode("span", null, toDisplayString(_ctx.acceptedFileTypesText) + " files only", 1), createTextVNode(". "), _hoisted_9, createTextVNode(" Recommended 300 x 300 or larger. Max " + toDisplayString(_ctx.maxFileSizeText) + ". ", 1)]), _ctx.isInvalidFile ? (openBlock(), createElementBlock("p", _hoisted_10, "Please upload a valid file")) : createCommentVNode("", true)], 34)])];
|
|
575
|
-
}),
|
|
576
|
-
_: 1
|
|
577
|
-
}, 8, ["modelValue"]), createVNode(_component_FwModal, {
|
|
578
|
-
modelValue: _ctx.isEditMediaModalOpen,
|
|
579
|
-
"onUpdate:modelValue": _cache[12] || (_cache[12] = function ($event) {
|
|
580
|
-
return _ctx.isEditMediaModalOpen = $event;
|
|
581
|
-
}),
|
|
582
|
-
"show-confirm": false,
|
|
583
|
-
"show-cancel": false,
|
|
584
|
-
"show-close-button": true,
|
|
585
|
-
padding: false,
|
|
586
|
-
"container-class": "!bg-[#F7F7F7] w-full",
|
|
587
|
-
"footer-class": "px-4 pb-8",
|
|
588
|
-
onCancel: _cache[13] || (_cache[13] = function ($event) {
|
|
589
|
-
return _ctx.isEditMediaModalOpen = false;
|
|
590
|
-
})
|
|
591
|
-
}, {
|
|
592
|
-
header: withCtx(function () {
|
|
593
|
-
return [createElementVNode("h4", _hoisted_11, toDisplayString(_ctx.editHeaderText), 1)];
|
|
594
|
-
}),
|
|
595
|
-
body: withCtx(function () {
|
|
596
|
-
return [createElementVNode("div", _hoisted_12, [createElementVNode("div", _hoisted_13, [createVNode(_component_GuideSvg, {
|
|
597
|
-
name: "guide",
|
|
598
|
-
"class": "absolute pointer-events-none"
|
|
599
|
-
}), createElementVNode("canvas", {
|
|
600
|
-
ref: "editorCanvas",
|
|
601
|
-
width: "300",
|
|
602
|
-
height: "300",
|
|
603
|
-
onPointerdown: _cache[9] || (_cache[9] = function () {
|
|
604
|
-
return _ctx.startEditImage && _ctx.startEditImage.apply(_ctx, arguments);
|
|
605
|
-
}),
|
|
606
|
-
onPointerup: _cache[10] || (_cache[10] = function () {
|
|
607
|
-
return _ctx.stopEditImage && _ctx.stopEditImage.apply(_ctx, arguments);
|
|
608
|
-
}),
|
|
609
|
-
onPointermove: _cache[11] || (_cache[11] = function () {
|
|
610
|
-
return _ctx.editImage && _ctx.editImage.apply(_ctx, arguments);
|
|
611
|
-
})
|
|
612
|
-
}, null, 544)]), _hoisted_14]), createElementVNode("div", _hoisted_15, [createElementVNode("div", _hoisted_16, [createVNode(_component_FwButton, {
|
|
613
|
-
variant: "tertiary",
|
|
614
|
-
size: "md",
|
|
615
|
-
onClick: _ctx.change
|
|
616
|
-
}, {
|
|
617
|
-
"default": withCtx(function () {
|
|
618
|
-
return [createTextVNode("Change")];
|
|
619
|
-
}),
|
|
620
|
-
_: 1
|
|
621
|
-
}, 8, ["onClick"]), createVNode(_component_FwButton, {
|
|
622
|
-
variant: "tertiary",
|
|
623
|
-
size: "md",
|
|
624
|
-
onClick: _ctx.reset
|
|
625
|
-
}, {
|
|
626
|
-
"default": withCtx(function () {
|
|
627
|
-
return [createElementVNode("div", _hoisted_17, [createTextVNode(" Reset "), createVNode(_component_ArrowRotateSvg, {
|
|
628
|
-
name: "arrow-rotate",
|
|
629
|
-
"class": "inline-block ml-1 w-4 h-4"
|
|
630
|
-
})])];
|
|
631
|
-
}),
|
|
632
|
-
_: 1
|
|
633
|
-
}, 8, ["onClick"])]), createElementVNode("div", _hoisted_18, [createVNode(_component_FwButton, {
|
|
634
|
-
variant: "primary",
|
|
635
|
-
size: "md",
|
|
636
|
-
onClick: _ctx.save
|
|
637
|
-
}, {
|
|
638
|
-
"default": withCtx(function () {
|
|
639
|
-
return [createTextVNode("Save")];
|
|
640
|
-
}),
|
|
641
|
-
_: 1
|
|
642
|
-
}, 8, ["onClick"])])])];
|
|
643
|
-
}),
|
|
644
|
-
_: 1
|
|
645
|
-
}, 8, ["modelValue"])], 64);
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
var css_248z = ".fw-media-picker--empty{-webkit-box-orient:vertical;-webkit-box-direction:normal;-moz-box-orient:vertical;-moz-box-direction:normal;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-moz-box-pack:center;-ms-flex-pack:center;--tw-border-opacity:1;-webkit-align-items:center;align-items:center;border-color:rgb(200 203 208/var(--tw-border-opacity));border-radius:.25rem;border-width:1px;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:.5rem;height:100%;-webkit-justify-content:center;justify-content:center;text-align:center;width:100%}.fw-media-picker--empty:hover{border-color:var(--colorText2);color:var(--colorText2)}";
|
|
649
|
-
var stylesheet = ".fw-media-picker--empty{-webkit-box-orient:vertical;-webkit-box-direction:normal;-moz-box-orient:vertical;-moz-box-direction:normal;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;-webkit-box-pack:center;-moz-box-pack:center;-ms-flex-pack:center;--tw-border-opacity:1;-webkit-align-items:center;align-items:center;border-color:rgb(200 203 208/var(--tw-border-opacity));border-radius:.25rem;border-width:1px;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:.5rem;height:100%;-webkit-justify-content:center;justify-content:center;text-align:center;width:100%}.fw-media-picker--empty:hover{border-color:var(--colorText2);color:var(--colorText2)}";
|
|
650
|
-
styleInject(css_248z);
|
|
651
|
-
|
|
652
|
-
script.render = render;
|
|
653
|
-
|
|
654
|
-
export { script as FwMediaPicker };
|