nzk-react-components 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/DrawingTool/DrawingTool.d.ts +3 -0
- package/dist/components/DrawingTool/DrawingTool.js +72 -47
- package/dist/components/DrawingTool/DrawingTool.js.map +1 -1
- package/dist/components/DrawingTool/DrawingTool.styles.d.ts +1 -0
- package/dist/components/DrawingTool/DrawingTool.styles.js +5 -4
- package/dist/components/DrawingTool/DrawingTool.styles.js.map +1 -1
- package/dist/components/DrawingTool/DrawingToolProvider.d.ts +5 -4
- package/dist/components/DrawingTool/DrawingToolProvider.js +15 -10
- package/dist/components/DrawingTool/DrawingToolProvider.js.map +1 -1
- package/dist/components/DrawingTool/components/CropChoicePopup/CropChoicePopup.d.ts +8 -0
- package/dist/components/DrawingTool/components/CropChoicePopup/CropChoicePopup.js +27 -0
- package/dist/components/DrawingTool/components/CropChoicePopup/CropChoicePopup.js.map +1 -0
- package/dist/components/DrawingTool/components/CropChoicePopup/CropChoicePopup.styles.d.ts +5 -0
- package/dist/components/DrawingTool/components/CropChoicePopup/CropChoicePopup.styles.js +20 -0
- package/dist/components/DrawingTool/components/CropChoicePopup/CropChoicePopup.styles.js.map +1 -0
- package/dist/components/DrawingTool/components/CropChoicePopup/index.d.ts +2 -0
- package/dist/components/DrawingTool/components/CropChoicePopup/index.js +8 -0
- package/dist/components/DrawingTool/components/CropChoicePopup/index.js.map +1 -0
- package/dist/components/DrawingTool/components/Header/Header.js +2 -2
- package/dist/components/DrawingTool/components/ImageInputPopup/ImageInputPopup.d.ts +9 -0
- package/dist/components/DrawingTool/components/ImageInputPopup/ImageInputPopup.js +83 -0
- package/dist/components/DrawingTool/components/ImageInputPopup/ImageInputPopup.js.map +1 -0
- package/dist/components/DrawingTool/components/ImageInputPopup/ImageInputPopup.styles.d.ts +4 -0
- package/dist/components/DrawingTool/components/ImageInputPopup/ImageInputPopup.styles.js +22 -0
- package/dist/components/DrawingTool/components/ImageInputPopup/ImageInputPopup.styles.js.map +1 -0
- package/dist/components/DrawingTool/components/ImageInputPopup/index.d.ts +2 -0
- package/dist/components/DrawingTool/components/ImageInputPopup/index.js +8 -0
- package/dist/components/DrawingTool/components/ImageInputPopup/index.js.map +1 -0
- package/dist/components/DrawingTool/components/Loader.d.ts +19 -0
- package/dist/components/DrawingTool/components/Loader.js +35 -0
- package/dist/components/DrawingTool/components/Loader.js.map +1 -0
- package/dist/components/DrawingTool/components/MagicCropPopup/MagicCropPopup.d.ts +8 -0
- package/dist/components/DrawingTool/components/MagicCropPopup/MagicCropPopup.js +82 -0
- package/dist/components/DrawingTool/components/MagicCropPopup/MagicCropPopup.js.map +1 -0
- package/dist/components/DrawingTool/components/MagicCropPopup/MagicCropPopup.styles.d.ts +8 -0
- package/dist/components/DrawingTool/components/MagicCropPopup/MagicCropPopup.styles.js +26 -0
- package/dist/components/DrawingTool/components/MagicCropPopup/MagicCropPopup.styles.js.map +1 -0
- package/dist/components/DrawingTool/components/MagicCropPopup/index.d.ts +2 -0
- package/dist/components/DrawingTool/components/MagicCropPopup/index.js +8 -0
- package/dist/components/DrawingTool/components/MagicCropPopup/index.js.map +1 -0
- package/dist/components/DrawingTool/components/ManualCropPopup/ManualCropPopup.d.ts +7 -0
- package/dist/components/DrawingTool/components/ManualCropPopup/ManualCropPopup.js +25 -0
- package/dist/components/DrawingTool/components/ManualCropPopup/ManualCropPopup.js.map +1 -0
- package/dist/components/DrawingTool/components/ManualCropPopup/ManualCropPopup.styles.d.ts +4 -0
- package/dist/components/DrawingTool/components/ManualCropPopup/ManualCropPopup.styles.js +18 -0
- package/dist/components/DrawingTool/components/ManualCropPopup/ManualCropPopup.styles.js.map +1 -0
- package/dist/components/DrawingTool/components/ManualCropPopup/index.d.ts +2 -0
- package/dist/components/DrawingTool/components/ManualCropPopup/index.js +8 -0
- package/dist/components/DrawingTool/components/ManualCropPopup/index.js.map +1 -0
- package/dist/components/DrawingTool/components/Popup.d.ts +13 -0
- package/dist/components/DrawingTool/components/Popup.js +34 -0
- package/dist/components/DrawingTool/components/Popup.js.map +1 -0
- package/dist/components/DrawingTool/lib/Sketch.js +1 -4
- package/dist/components/DrawingTool/lib/Sketch.js.map +1 -1
- package/dist/hooks/useInterval.js +20 -0
- package/dist/hooks/useInterval.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,8 @@ export interface Props {
|
|
|
9
9
|
minImageUploadSize?: number;
|
|
10
10
|
disableAutoCache?: boolean;
|
|
11
11
|
openUploadPopupOnStart?: boolean;
|
|
12
|
+
enableMagicCrop?: boolean;
|
|
13
|
+
magicCropUploadPreset?: string;
|
|
12
14
|
cacheKey?: string;
|
|
13
15
|
}
|
|
14
16
|
export declare type Orientation = 'LANDSCAPE' | 'PORTRAIT';
|
|
@@ -24,6 +26,7 @@ declare const Drawing: {
|
|
|
24
26
|
disableAutoCache: boolean;
|
|
25
27
|
cacheKey: string;
|
|
26
28
|
openUploadPopupOnStart: boolean;
|
|
29
|
+
enableMagicCrop: boolean;
|
|
27
30
|
};
|
|
28
31
|
};
|
|
29
32
|
export default Drawing;
|
|
@@ -15,10 +15,14 @@ var IconButton = require('../IconButton/IconButton.js');
|
|
|
15
15
|
var ColourToolbar = require('./components/ColourToolbar/ColourToolbar.js');
|
|
16
16
|
var Modal = require('../Modal/Modal.js');
|
|
17
17
|
var DrawingToolProvider = require('./DrawingToolProvider.js');
|
|
18
|
-
var
|
|
18
|
+
var ImageInputPopup = require('./components/ImageInputPopup/ImageInputPopup.js');
|
|
19
19
|
var index = require('./components/Placeable/index.js');
|
|
20
20
|
var OpacityToggle = require('./components/OpacityToggle/OpacityToggle.js');
|
|
21
21
|
var Header = require('./components/Header/Header.js');
|
|
22
|
+
var CropChoicePopup = require('./components/CropChoicePopup/CropChoicePopup.js');
|
|
23
|
+
var ManualCropPopup = require('./components/ManualCropPopup/ManualCropPopup.js');
|
|
24
|
+
var MagicCropPopup = require('./components/MagicCropPopup/MagicCropPopup.js');
|
|
25
|
+
var Loader = require('./components/Loader.js');
|
|
22
26
|
|
|
23
27
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
24
28
|
|
|
@@ -47,13 +51,14 @@ var Drawing = function (props) {
|
|
|
47
51
|
var _g = React.useState(50), buttonSize = _g[0], setButtonSize = _g[1];
|
|
48
52
|
var _h = React.useState(false), isMobile = _h[0], setIsMobile = _h[1];
|
|
49
53
|
var _j = React.useState(true), resizing = _j[0], setResizing = _j[1];
|
|
50
|
-
var _k = React.useState(false),
|
|
51
|
-
var _l = React.useState(props.openUploadPopupOnStart),
|
|
52
|
-
var _m = React.useState(),
|
|
53
|
-
var _o = React.useState(
|
|
54
|
-
var _p = React.useState(false),
|
|
55
|
-
var _q = React.useState(),
|
|
56
|
-
var _r =
|
|
54
|
+
var _k = React.useState(false), showRestartConfirmPopup = _k[0], setShowRestartConfirmPopup = _k[1];
|
|
55
|
+
var _l = React.useState(props.openUploadPopupOnStart), showImageInputPopup = _l[0], setShowImageInputPopup = _l[1];
|
|
56
|
+
var _m = React.useState(false), showCropChoicePopup = _m[0], setShowCropChoicePopup = _m[1];
|
|
57
|
+
var _o = React.useState(false), showMagicCropPopup = _o[0], setShowMagicCropPopup = _o[1];
|
|
58
|
+
var _p = React.useState(false), showManualCropPopup = _p[0], setShowManualCropPopup = _p[1];
|
|
59
|
+
var _q = React.useState(false), showManualCropTool = _q[0], setShowManualCropTool = _q[1];
|
|
60
|
+
var _r = React.useState(false), showSaveCropAction = _r[0], setShowSaveCropAction = _r[1];
|
|
61
|
+
var _s = DrawingToolProvider.useDrawingTool(), initSketch = _s.initSketch, initSketchCut = _s.initSketchCut, sketchLoading = _s.sketchLoading, exportSketchCut = _s.exportSketchCut, currentColour = _s.currentColour, brushSize = _s.brushSize, setBrushSize = _s.setBrushSize, brushType = _s.brushType, setBrushType = _s.setBrushType, undo = _s.undo, redo = _s.redo, restart = _s.restart, setCacheKey = _s.setCacheKey, setAutoCache = _s.setAutoCache, resetCut = _s.resetCut, mergeImage = _s.mergeImage, imageToCrop = _s.imageToCrop, setImageToCrop = _s.setImageToCrop, imageToPlace = _s.imageToPlace, setImageToPlace = _s.setImageToPlace;
|
|
57
62
|
React.useEffect(function () {
|
|
58
63
|
if (typeof props.disableAutoCache === 'boolean') {
|
|
59
64
|
setAutoCache(!props.disableAutoCache);
|
|
@@ -96,28 +101,22 @@ var Drawing = function (props) {
|
|
|
96
101
|
}
|
|
97
102
|
}, [containerWidth, containerHeight]);
|
|
98
103
|
React.useEffect(function () {
|
|
99
|
-
if (!
|
|
104
|
+
if (!showManualCropTool && !resizing && sketchInnerRef.current) {
|
|
100
105
|
initSketch(sketchInnerRef.current);
|
|
101
106
|
}
|
|
102
|
-
}, [resizing, sketchInnerRef,
|
|
107
|
+
}, [resizing, sketchInnerRef, imageToCrop, showManualCropTool]);
|
|
103
108
|
React.useEffect(function () {
|
|
104
|
-
if (!resizing && sketchCutInnerRef.current &&
|
|
105
|
-
initSketchCut(sketchCutInnerRef.current,
|
|
106
|
-
|
|
109
|
+
if (!resizing && sketchCutInnerRef.current && imageToCrop && showManualCropTool) {
|
|
110
|
+
initSketchCut(sketchCutInnerRef.current, imageToCrop, function () {
|
|
111
|
+
setShowSaveCropAction(true);
|
|
107
112
|
});
|
|
108
113
|
}
|
|
109
|
-
}, [resizing, sketchCutInnerRef,
|
|
114
|
+
}, [resizing, sketchCutInnerRef, imageToCrop, showManualCropTool]);
|
|
110
115
|
var onClickRestart = function () {
|
|
111
|
-
|
|
116
|
+
setShowRestartConfirmPopup(true);
|
|
112
117
|
};
|
|
113
118
|
var onClickCamera = function () {
|
|
114
|
-
|
|
115
|
-
};
|
|
116
|
-
var onImageUploaded = function (image) {
|
|
117
|
-
setShowFileInput(false);
|
|
118
|
-
setImageToCut(image);
|
|
119
|
-
setShowCutTutorial(true);
|
|
120
|
-
setToolMode("CUT");
|
|
119
|
+
setShowImageInputPopup(true);
|
|
121
120
|
};
|
|
122
121
|
var getImageToPlaceSize = function (img) {
|
|
123
122
|
var ratio = 0.8;
|
|
@@ -156,26 +155,25 @@ var Drawing = function (props) {
|
|
|
156
155
|
left: '0px'
|
|
157
156
|
};
|
|
158
157
|
}
|
|
159
|
-
var disableToolbars = (
|
|
158
|
+
var disableToolbars = (showImageInputPopup || showRestartConfirmPopup || imageToCrop || imageToPlace);
|
|
160
159
|
var inSketchActions = [];
|
|
161
|
-
if (
|
|
160
|
+
if (showSaveCropAction) {
|
|
162
161
|
inSketchActions.push({
|
|
163
162
|
key: 'retry-cut',
|
|
164
163
|
component: React__default['default'].createElement(IconButton, { icon: React__default['default'].createElement(Icon, { name: "drawing-tool-undo", fill: "white" }), theme: 'orange', size: isMobile ? "small" : "regular", onClick: function () {
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
setShowSaveCropAction(false);
|
|
165
|
+
setShowManualCropPopup(true);
|
|
167
166
|
resetCut();
|
|
168
167
|
} }, "Retry")
|
|
169
168
|
}, {
|
|
170
169
|
key: 'save-cut',
|
|
171
170
|
component: React__default['default'].createElement(IconButton, { icon: React__default['default'].createElement(Icon, { name: "tick" }), theme: 'confirm', size: isMobile ? "small" : "regular", onClick: function () {
|
|
172
|
-
|
|
173
|
-
|
|
171
|
+
setShowSaveCropAction(false);
|
|
172
|
+
setShowManualCropTool(false);
|
|
173
|
+
setImageToCrop(undefined);
|
|
174
174
|
var newImage = new Image;
|
|
175
175
|
newImage.onload = function () {
|
|
176
|
-
setShowCutTutorial(true);
|
|
177
176
|
setImageToPlace(newImage);
|
|
178
|
-
setToolMode('PLACE');
|
|
179
177
|
};
|
|
180
178
|
newImage.src = exportSketchCut();
|
|
181
179
|
} }, "Save")
|
|
@@ -186,7 +184,6 @@ var Drawing = function (props) {
|
|
|
186
184
|
key: 'cancel-place',
|
|
187
185
|
component: React__default['default'].createElement(IconButton, { icon: React__default['default'].createElement(Icon, { name: "close" }), theme: 'red', size: isMobile ? "small" : "regular", onClick: function () {
|
|
188
186
|
setImageToPlace(undefined);
|
|
189
|
-
setToolMode('DRAW');
|
|
190
187
|
} }, "Cancel")
|
|
191
188
|
}, {
|
|
192
189
|
key: 'save-place',
|
|
@@ -202,7 +199,6 @@ var Drawing = function (props) {
|
|
|
202
199
|
height: Math.hypot(rect.pos3[0] - rect.pos2[0], rect.pos3[1] - rect.pos2[1]),
|
|
203
200
|
rotation: rect.rotation
|
|
204
201
|
});
|
|
205
|
-
setToolMode('DRAW');
|
|
206
202
|
setImageToPlace(undefined);
|
|
207
203
|
}
|
|
208
204
|
} }, "Save")
|
|
@@ -243,36 +239,64 @@ var Drawing = function (props) {
|
|
|
243
239
|
React__default['default'].createElement(Button, tslib.__assign({ height: buttonSize, round: true }, largeLineColourProps, { onClick: function () { return setBrushSize(DrawingToolProvider.BrushSize.large); } }),
|
|
244
240
|
React__default['default'].createElement(Icon, { fill: brushSize === DrawingToolProvider.BrushSize.large ? 'white' : currentColour.hex, name: 'drawing-tool-large-line' })))),
|
|
245
241
|
React__default['default'].createElement(DrawingTool_styles.SketchContainer, { orientation: orientation, ref: sketchOuterRef },
|
|
246
|
-
props.showPaperBackground && React__default['default'].createElement(DrawingTool_styles.PaperBackground, { cutMode:
|
|
247
|
-
!
|
|
248
|
-
|
|
242
|
+
props.showPaperBackground && React__default['default'].createElement(DrawingTool_styles.PaperBackground, { cutMode: imageToCrop && true }),
|
|
243
|
+
!showManualCropTool && sketchStyles && React__default['default'].createElement("div", { style: sketchStyles, ref: sketchInnerRef }),
|
|
244
|
+
showManualCropTool && imageToCrop && sketchStyles && React__default['default'].createElement("div", { style: sketchStyles, ref: sketchCutInnerRef }),
|
|
249
245
|
imageToPlace && sketchStyles && (React__default['default'].createElement("div", { style: tslib.__assign(tslib.__assign({}, sketchStyles), { zIndex: '101' }) },
|
|
250
246
|
React__default['default'].createElement(DrawingTool_styles.ImageToPlaceContainer, null,
|
|
251
247
|
React__default['default'].createElement(DrawingTool_styles.ImageToPlace, { size: getImageToPlaceSize(imageToPlace), ref: imageToPlaceContainerRef, src: imageToPlace.src })),
|
|
252
248
|
React__default['default'].createElement(Moveable__default['default'], { ref: moveableRef, target: imageToPlaceContainerRef, ables: [index], props: {
|
|
253
249
|
placeable: true,
|
|
254
250
|
}, snappable: true, bounds: { left: 0, top: 0, bottom: (_a = sketchOuterRef.current) === null || _a === void 0 ? void 0 : _a.offsetHeight, right: (_b = sketchOuterRef.current) === null || _b === void 0 ? void 0 : _b.offsetWidth }, draggable: true, scalable: true, keepRatio: true, rotatable: true, onDragStart: helper.onDragStart, onDrag: helper.onDrag, onScaleStart: helper.onScaleStart, onScale: helper.onScale, onRotateStart: helper.onRotateStart, onRotate: helper.onRotate }))),
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
React__default['default'].createElement("img", { alt: "crop example", src: "https://cdn.nightzookeeper.com/nzk-assets/crop-tutorial.png" }),
|
|
259
|
-
React__default['default'].createElement("div", null,
|
|
260
|
-
React__default['default'].createElement(Button, { size: isMobile ? "small" : "regular", theme: "primary" }, "Ok")))),
|
|
251
|
+
sketchLoading && React__default['default'].createElement(DrawingTool_styles.LoaderOverlay, null,
|
|
252
|
+
React__default['default'].createElement(Loader, { placeholder: "Loading drawing...", color: 'white' })),
|
|
253
|
+
inSketchActions.length && (React__default['default'].createElement(DrawingTool_styles.InSketchActions, null, inSketchActions.map(function (action) { return (React__default['default'].createElement(DrawingTool_styles.InSketchAction, { key: action.key }, action.component)); })))),
|
|
261
254
|
React__default['default'].createElement(DrawingTool_styles.RightToolbarContainer, { orientation: orientation, buttonSize: buttonSize, disabled: disableToolbars },
|
|
262
255
|
React__default['default'].createElement(ColourToolbar, { orientation: orientation, size: buttonSize, currentColour: currentColour }),
|
|
263
256
|
React__default['default'].createElement(OpacityToggle, { orientation: orientation, buttonSize: buttonSize }))),
|
|
264
|
-
|
|
257
|
+
showRestartConfirmPopup && React__default['default'].createElement(DrawingTool_styles.ModalOverlay, null,
|
|
265
258
|
React__default['default'].createElement(Modal, { title: "Are you sure?", actions: [
|
|
266
259
|
React__default['default'].createElement(Button, { key: 'cancel', size: isMobile ? "small" : "regular", theme: "red", onClick: function () {
|
|
267
|
-
|
|
260
|
+
setShowRestartConfirmPopup(false);
|
|
268
261
|
} }, "No"),
|
|
269
262
|
React__default['default'].createElement(Button, { key: 'confirm', size: isMobile ? "small" : "regular", theme: "confirm", onClick: function () {
|
|
270
263
|
restart();
|
|
271
|
-
|
|
264
|
+
setShowRestartConfirmPopup(false);
|
|
272
265
|
} }, "Yes"),
|
|
273
266
|
] })),
|
|
274
|
-
|
|
275
|
-
|
|
267
|
+
showImageInputPopup && React__default['default'].createElement(ImageInputPopup, { isMobile: isMobile, onDismiss: function () { return setShowImageInputPopup(false); }, minImageSize: props.minImageUploadSize, onImageSelected: function () {
|
|
268
|
+
setShowImageInputPopup(false);
|
|
269
|
+
if (props.enableMagicCrop) {
|
|
270
|
+
setShowCropChoicePopup(true);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
setShowManualCropTool(true);
|
|
274
|
+
setShowManualCropPopup(true);
|
|
275
|
+
}
|
|
276
|
+
} }),
|
|
277
|
+
showCropChoicePopup && React__default['default'].createElement(CropChoicePopup, { onDismiss: function () {
|
|
278
|
+
setShowCropChoicePopup(false);
|
|
279
|
+
setImageToCrop(undefined);
|
|
280
|
+
}, onMagicCrop: function () {
|
|
281
|
+
setShowCropChoicePopup(false);
|
|
282
|
+
setShowMagicCropPopup(true);
|
|
283
|
+
}, onManualCrop: function () {
|
|
284
|
+
setShowCropChoicePopup(false);
|
|
285
|
+
setShowManualCropPopup(true);
|
|
286
|
+
setShowManualCropTool(true);
|
|
287
|
+
} }),
|
|
288
|
+
showMagicCropPopup && props.magicCropUploadPreset && React__default['default'].createElement(MagicCropPopup, { cloudinaryUploadPreset: props.magicCropUploadPreset, onManual: function () {
|
|
289
|
+
setShowMagicCropPopup(false);
|
|
290
|
+
setShowManualCropPopup(true);
|
|
291
|
+
setShowManualCropTool(true);
|
|
292
|
+
}, onDismiss: function () {
|
|
293
|
+
setImageToCrop(undefined);
|
|
294
|
+
setShowMagicCropPopup(false);
|
|
295
|
+
} }),
|
|
296
|
+
showManualCropPopup && React__default['default'].createElement(ManualCropPopup, { onNext: function () { return setShowManualCropPopup(false); }, onDismiss: function () {
|
|
297
|
+
setShowManualCropPopup(false);
|
|
298
|
+
setImageToCrop(undefined);
|
|
299
|
+
} }));
|
|
276
300
|
};
|
|
277
301
|
Drawing.defaultProps = {
|
|
278
302
|
prompt: 'Draw your Animal',
|
|
@@ -283,7 +307,8 @@ Drawing.defaultProps = {
|
|
|
283
307
|
disableCameraUpload: false,
|
|
284
308
|
disableAutoCache: false,
|
|
285
309
|
cacheKey: 'nzk-sketch-cache',
|
|
286
|
-
openUploadPopupOnStart: false
|
|
310
|
+
openUploadPopupOnStart: false,
|
|
311
|
+
enableMagicCrop: false
|
|
287
312
|
};
|
|
288
313
|
|
|
289
314
|
module.exports = Drawing;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawingTool.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DrawingTool.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -44,3 +44,4 @@ export declare const ImageToPlace: import("styled-components").StyledComponent<"
|
|
|
44
44
|
};
|
|
45
45
|
}, never>;
|
|
46
46
|
export declare const CutImageTutorial: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
47
|
+
export declare const LoaderOverlay: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
@@ -32,20 +32,21 @@ var PaperBackground = styled__default['default'].div(templateObject_9 || (templa
|
|
|
32
32
|
: '#ebebeb'; });
|
|
33
33
|
var InSketchActions = styled__default['default'].div(templateObject_10 || (templateObject_10 = tslib.__makeTemplateObject(["\n position: absolute;\n width: 100%;\n bottom: 20px;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 102;\n @media (max-width: 768px) {\n bottom: 10px;\n }\n @media (max-height: 500px) {\n bottom: 10px;\n }\n"], ["\n position: absolute;\n width: 100%;\n bottom: 20px;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 102;\n @media (max-width: 768px) {\n bottom: 10px;\n }\n @media (max-height: 500px) {\n bottom: 10px;\n }\n"])));
|
|
34
34
|
var InSketchAction = styled__default['default'].div(templateObject_11 || (templateObject_11 = tslib.__makeTemplateObject(["\n position: relative;\n margin-right: 20px;\n"], ["\n position: relative;\n margin-right: 20px;\n"])));
|
|
35
|
-
var ModalOverlay = styled__default['default'].div(templateObject_12 || (templateObject_12 = tslib.__makeTemplateObject(["\n position:
|
|
35
|
+
var ModalOverlay = styled__default['default'].div(templateObject_12 || (templateObject_12 = tslib.__makeTemplateObject(["\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n z-index: 100;\n display: flex;\n justify-content: center;\n align-items: center;\n"], ["\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n z-index: 100;\n display: flex;\n justify-content: center;\n align-items: center;\n"])));
|
|
36
36
|
var ImageToPlaceContainer = styled__default['default'].div(templateObject_13 || (templateObject_13 = tslib.__makeTemplateObject(["\n position: absolute;\n left: 0;\n top: 0;\n z-index: 101;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}"], ["\n position: absolute;\n left: 0;\n top: 0;\n z-index: 101;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}"])));
|
|
37
37
|
var ImageToPlace = styled__default['default'].img(templateObject_14 || (templateObject_14 = tslib.__makeTemplateObject(["\n position: absolute;\n width: ", "px;\n height: ", "px;\n}\n"], ["\n position: absolute;\n width: ", "px;\n height: ", "px;\n}\n"])), function (props) { return props.size.width; }, function (props) { return props.size.height; });
|
|
38
|
-
|
|
39
|
-
var
|
|
38
|
+
styled__default['default'].div(templateObject_15 || (templateObject_15 = tslib.__makeTemplateObject(["\n position: absolute;\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n left: 50%;\n top: 50%;\n width: 90%;\n height: 90%;\n transform: translate(-50%, -50%);\n max-width: 800px;\n max-height: 600px;\n background-color: white;\n z-index: 101;\n border-radius: 50px;\n padding: 40px;\n background-color: #341644;\n box-shadow: 0 -5px 0 #531D75, 0 10px 0 #1C042B, 0 14px 0 rgba(0,0,0,0.3);\n box-sizing: border-box;\n color: white;\n font-size: 30px;\n text-align: center;\n\n @media (max-width: 960px) {\n font-size: 24px;\n }\n\n @media (max-width: 760px), (max-height: 600px) {\n font-size: 16px;\n width: 95%;\n padding: 30px;\n }\n\n img {\n width: 100%;\n max-width: 350px;\n @media (max-width: 960px) {\n max-width: 250px;\n }\n @media (max-width: 760px), (max-height: 600px) {\n max-width: 120px;\n }\n }\n > :last-child {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n"], ["\n position: absolute;\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n left: 50%;\n top: 50%;\n width: 90%;\n height: 90%;\n transform: translate(-50%, -50%);\n max-width: 800px;\n max-height: 600px;\n background-color: white;\n z-index: 101;\n border-radius: 50px;\n padding: 40px;\n background-color: #341644;\n box-shadow: 0 -5px 0 #531D75, 0 10px 0 #1C042B, 0 14px 0 rgba(0,0,0,0.3);\n box-sizing: border-box;\n color: white;\n font-size: 30px;\n text-align: center;\n\n @media (max-width: 960px) {\n font-size: 24px;\n }\n\n @media (max-width: 760px), (max-height: 600px) {\n font-size: 16px;\n width: 95%;\n padding: 30px;\n }\n\n img {\n width: 100%;\n max-width: 350px;\n @media (max-width: 960px) {\n max-width: 250px;\n }\n @media (max-width: 760px), (max-height: 600px) {\n max-width: 120px;\n }\n }\n > :last-child {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n"])));
|
|
39
|
+
var LoaderOverlay = styled__default['default'].div(templateObject_16 || (templateObject_16 = tslib.__makeTemplateObject(["\n background-color: rgba(0,0,0,.5);\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0px;\n left: 0px;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n z-index: 10;\n font-size: 24px;\n"], ["\n background-color: rgba(0,0,0,.5);\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0px;\n left: 0px;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n z-index: 10;\n font-size: 24px;\n"])));
|
|
40
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16;
|
|
40
41
|
|
|
41
42
|
exports.ButtonGroup = ButtonGroup;
|
|
42
43
|
exports.Container = Container;
|
|
43
|
-
exports.CutImageTutorial = CutImageTutorial;
|
|
44
44
|
exports.ImageToPlace = ImageToPlace;
|
|
45
45
|
exports.ImageToPlaceContainer = ImageToPlaceContainer;
|
|
46
46
|
exports.InSketchAction = InSketchAction;
|
|
47
47
|
exports.InSketchActions = InSketchActions;
|
|
48
48
|
exports.LeftToolbarContainer = LeftToolbarContainer;
|
|
49
|
+
exports.LoaderOverlay = LoaderOverlay;
|
|
49
50
|
exports.ModalOverlay = ModalOverlay;
|
|
50
51
|
exports.PaperBackground = PaperBackground;
|
|
51
52
|
exports.RightToolbarContainer = RightToolbarContainer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawingTool.styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DrawingTool.styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -14,7 +14,6 @@ export interface Colour {
|
|
|
14
14
|
rgb: number[];
|
|
15
15
|
hex: string;
|
|
16
16
|
}
|
|
17
|
-
declare type ToolMode = 'LOADING' | 'DRAW' | 'CUT' | 'PLACE';
|
|
18
17
|
export interface Props {
|
|
19
18
|
cache?: string;
|
|
20
19
|
}
|
|
@@ -22,6 +21,7 @@ export declare const DrawingToolProvider: import("react").ComponentType<import("
|
|
|
22
21
|
export declare const useDrawingTool: () => {
|
|
23
22
|
initSketch: (containerEl: any) => void;
|
|
24
23
|
initSketchCut: (containerEl: any, imageToCut: HTMLImageElement, onImageCut: () => void) => void;
|
|
24
|
+
sketchLoading: boolean;
|
|
25
25
|
exportSketch: (options?: {
|
|
26
26
|
crop: boolean;
|
|
27
27
|
}) => string;
|
|
@@ -49,8 +49,9 @@ export declare const useDrawingTool: () => {
|
|
|
49
49
|
clearCache: () => void;
|
|
50
50
|
resetCut: () => void;
|
|
51
51
|
mergeImage: (data: SketchActionMergeData) => void | null;
|
|
52
|
-
setToolMode: import("react").Dispatch<import("react").SetStateAction<ToolMode>>;
|
|
53
|
-
toolMode: ToolMode;
|
|
54
52
|
exportCache: () => string | null;
|
|
53
|
+
imageToCrop: HTMLImageElement | undefined;
|
|
54
|
+
setImageToCrop: import("react").Dispatch<import("react").SetStateAction<HTMLImageElement | undefined>>;
|
|
55
|
+
imageToPlace: HTMLImageElement | undefined;
|
|
56
|
+
setImageToPlace: import("react").Dispatch<import("react").SetStateAction<HTMLImageElement | undefined>>;
|
|
55
57
|
};
|
|
56
|
-
export {};
|
|
@@ -34,11 +34,13 @@ var DrawingToolState = function (props) {
|
|
|
34
34
|
var sketchCutRef = React.useRef();
|
|
35
35
|
var _a = React.useState(true), autoCache = _a[0], setAutoCache = _a[1];
|
|
36
36
|
var _b = React.useState('nzk-sketch-cache'), cacheKey = _b[0], setCacheKey = _b[1];
|
|
37
|
-
var _c = React.useState(
|
|
38
|
-
var _d = React.useState(
|
|
39
|
-
var _e = React.useState(
|
|
40
|
-
var _f = React.useState(
|
|
41
|
-
var _g = React.useState(
|
|
37
|
+
var _c = React.useState(false), sketchLoading = _c[0], setSketchLoading = _c[1];
|
|
38
|
+
var _d = React.useState(BrushSize.small), brushSize = _d[0], setBrushSize = _d[1];
|
|
39
|
+
var _e = React.useState('line'), brushType = _e[0], setBrushType = _e[1];
|
|
40
|
+
var _f = React.useState(Colours[0]), currentColour = _f[0], setCurrentColour = _f[1];
|
|
41
|
+
var _g = React.useState(1), brushOpacity = _g[0], setBruchOpacity = _g[1];
|
|
42
|
+
var _h = React.useState(), imageToCrop = _h[0], setImageToCrop = _h[1];
|
|
43
|
+
var _j = React.useState(), imageToPlace = _j[0], setImageToPlace = _j[1];
|
|
42
44
|
var setSketchRef = React.useCallback(function (node) {
|
|
43
45
|
sketchRef.current = node;
|
|
44
46
|
if (sketchRef.current) {
|
|
@@ -76,8 +78,8 @@ var DrawingToolState = function (props) {
|
|
|
76
78
|
return (props && props.cache) || window.localStorage.getItem(cacheKey);
|
|
77
79
|
};
|
|
78
80
|
var initSketch = function (containerEl) {
|
|
79
|
-
setToolMode('LOADING');
|
|
80
81
|
var data;
|
|
82
|
+
setSketchLoading(true);
|
|
81
83
|
if (sketchRef.current) {
|
|
82
84
|
data = sketchRef.current.serialize();
|
|
83
85
|
}
|
|
@@ -92,7 +94,7 @@ var DrawingToolState = function (props) {
|
|
|
92
94
|
sketchData: data,
|
|
93
95
|
onChange: onSketchChange,
|
|
94
96
|
onReady: function () {
|
|
95
|
-
|
|
97
|
+
setSketchLoading(false);
|
|
96
98
|
}
|
|
97
99
|
}));
|
|
98
100
|
};
|
|
@@ -148,6 +150,7 @@ var DrawingToolState = function (props) {
|
|
|
148
150
|
return {
|
|
149
151
|
initSketch: initSketch,
|
|
150
152
|
initSketchCut: initSketchCut,
|
|
153
|
+
sketchLoading: sketchLoading,
|
|
151
154
|
exportSketch: exportSketch,
|
|
152
155
|
exportSketchCut: exportSketchCut,
|
|
153
156
|
currentColour: currentColour,
|
|
@@ -167,9 +170,11 @@ var DrawingToolState = function (props) {
|
|
|
167
170
|
clearCache: clearCache,
|
|
168
171
|
resetCut: resetCut,
|
|
169
172
|
mergeImage: mergeImage,
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
+
exportCache: exportCache,
|
|
174
|
+
imageToCrop: imageToCrop,
|
|
175
|
+
setImageToCrop: setImageToCrop,
|
|
176
|
+
imageToPlace: imageToPlace,
|
|
177
|
+
setImageToPlace: setImageToPlace
|
|
173
178
|
};
|
|
174
179
|
};
|
|
175
180
|
var DrawingToolProviderContainer = unstatedNext.createContainer(DrawingToolState);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawingToolProvider.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DrawingToolProvider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var CropChoicePopup_styles = require('./CropChoicePopup.styles.js');
|
|
5
|
+
var Button = require('../../../Button/Button.js');
|
|
6
|
+
var Popup = require('../Popup.js');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
11
|
+
|
|
12
|
+
var CropChoicePopup = (function (props) {
|
|
13
|
+
return React__default['default'].createElement(Popup['default'], { onDismiss: props.onDismiss },
|
|
14
|
+
React__default['default'].createElement(CropChoicePopup_styles.Title, null, "Cut-Out Your Drawing"),
|
|
15
|
+
React__default['default'].createElement(CropChoicePopup_styles.Container, null,
|
|
16
|
+
React__default['default'].createElement("div", null,
|
|
17
|
+
React__default['default'].createElement(CropChoicePopup_styles.Image, { src: "https://cdn.nightzookeeper.com/nzk-assets/auto-crop-tutorial.png" }),
|
|
18
|
+
React__default['default'].createElement(Button, { size: 'regular', theme: 'primary', onClick: props.onMagicCrop }, "Auto cut-out"),
|
|
19
|
+
React__default['default'].createElement("div", null, "Automatically removes the background.")),
|
|
20
|
+
React__default['default'].createElement("div", null,
|
|
21
|
+
React__default['default'].createElement(CropChoicePopup_styles.Image, { src: "https://cdn.nightzookeeper.com/nzk-assets/crop-tutorial.png" }),
|
|
22
|
+
React__default['default'].createElement(Button, { size: 'regular', theme: 'primary', onClick: props.onManualCrop }, "Manual cut-out"),
|
|
23
|
+
React__default['default'].createElement("div", null, "Drag round the drawing edge to cut it out."))));
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
module.exports = CropChoicePopup;
|
|
27
|
+
//# sourceMappingURL=CropChoicePopup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CropChoicePopup.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const Container: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
|
+
export declare const Title: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
export declare const Image: import("styled-components").StyledComponent<"div", any, {
|
|
4
|
+
src: string;
|
|
5
|
+
}, never>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var styled = require('styled-components');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
11
|
+
|
|
12
|
+
var Container = styled__default['default'].div(templateObject_1 || (templateObject_1 = tslib.__makeTemplateObject(["\n position: relative;\n width: 100%;\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n align-items: center;\n @media (max-width: 700px) and (min-height: 400px) {\n flex-direction: column;\n }\n & > div {\n width: 50%;\n text-align: center;\n font-size: 24px;\n & > :last-child {\n max-width: 250px;\n margin-left: auto;\n margin-right: auto;\n margin-top: 10px;\n }\n @media (max-width: 700px) and (min-height: 400px) {\n width: 100%;\n }\n @media (max-width: 700px) and (max-height: 700px) {\n font-size: 18px;\n }\n }\n"], ["\n position: relative;\n width: 100%;\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n align-items: center;\n @media (max-width: 700px) and (min-height: 400px) {\n flex-direction: column;\n }\n & > div {\n width: 50%;\n text-align: center;\n font-size: 24px;\n & > :last-child {\n max-width: 250px;\n margin-left: auto;\n margin-right: auto;\n margin-top: 10px;\n }\n @media (max-width: 700px) and (min-height: 400px) {\n width: 100%;\n }\n @media (max-width: 700px) and (max-height: 700px) {\n font-size: 18px;\n }\n }\n"])));
|
|
13
|
+
var Title = styled__default['default'].div(templateObject_2 || (templateObject_2 = tslib.__makeTemplateObject(["\n font-size: 44px;\n font-family: 'Rammetto One';\n text-shadow: 0px 3px 0px #A6A6A6, 0px 6px 0px rgba(0,0,0, .5);\n margin-bottom: 20px;\n text-align: center;\n width: 100%;\n @media (max-width: 850px) and (max-height: 850px), (max-width: 700px) {\n font-size: 28px;\n text-shadow: 0px 2px 0px #A6A6A6, 0px 2px 0px rgba(0,0,0, .5);\n margin-bottom: 10px;\n }\n @media (max-width: 500px) {\n max-width: 250px;\n margin-left: auto;\n margin-right: auto;\n }\n"], ["\n font-size: 44px;\n font-family: 'Rammetto One';\n text-shadow: 0px 3px 0px #A6A6A6, 0px 6px 0px rgba(0,0,0, .5);\n margin-bottom: 20px;\n text-align: center;\n width: 100%;\n @media (max-width: 850px) and (max-height: 850px), (max-width: 700px) {\n font-size: 28px;\n text-shadow: 0px 2px 0px #A6A6A6, 0px 2px 0px rgba(0,0,0, .5);\n margin-bottom: 10px;\n }\n @media (max-width: 500px) {\n max-width: 250px;\n margin-left: auto;\n margin-right: auto;\n }\n"])));
|
|
14
|
+
var Image = styled__default['default'].div(templateObject_3 || (templateObject_3 = tslib.__makeTemplateObject(["\n position: relative;\n background-image: url(", ");\n background-position: center;\n background-size: contain;\n background-repeat: no-repeat;\n height: 250px;\n @media (max-width: 850px) and (max-height: 900px) {\n height: 200px;\n }\n @media (max-width: 815px) and (max-height: 900px) {\n height: 180px;\n }\n @media (max-width: 700px) and (max-height: 700px) {\n height: 120px;\n }\n"], ["\n position: relative;\n background-image: url(", ");\n background-position: center;\n background-size: contain;\n background-repeat: no-repeat;\n height: 250px;\n @media (max-width: 850px) and (max-height: 900px) {\n height: 200px;\n }\n @media (max-width: 815px) and (max-height: 900px) {\n height: 180px;\n }\n @media (max-width: 700px) and (max-height: 700px) {\n height: 120px;\n }\n"])), function (props) { return props.src; });
|
|
15
|
+
var templateObject_1, templateObject_2, templateObject_3;
|
|
16
|
+
|
|
17
|
+
exports.Container = Container;
|
|
18
|
+
exports.Image = Image;
|
|
19
|
+
exports.Title = Title;
|
|
20
|
+
//# sourceMappingURL=CropChoicePopup.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CropChoicePopup.styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -21,8 +21,8 @@ var getButtonSizeForHeight = function (height) {
|
|
|
21
21
|
return 'regular';
|
|
22
22
|
};
|
|
23
23
|
var Header = (function (props) {
|
|
24
|
-
var
|
|
25
|
-
var disableButtons =
|
|
24
|
+
var _a = DrawingToolProvider.useDrawingTool(), imageToCrop = _a.imageToCrop, imageToPlace = _a.imageToPlace;
|
|
25
|
+
var disableButtons = (imageToCrop || imageToPlace) && true;
|
|
26
26
|
var onSave = function () {
|
|
27
27
|
if (!disableButtons)
|
|
28
28
|
props.onSave();
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib = require('tslib');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var reactDropzone = require('react-dropzone');
|
|
6
|
+
var ImageInputPopup_styles = require('./ImageInputPopup.styles.js');
|
|
7
|
+
var Button = require('../../../Button/Button.js');
|
|
8
|
+
var Popup = require('../Popup.js');
|
|
9
|
+
var DrawingToolProvider = require('../../DrawingToolProvider.js');
|
|
10
|
+
|
|
11
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
|
+
|
|
13
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
14
|
+
|
|
15
|
+
var bytesForHuman = function (bytes) {
|
|
16
|
+
var bytes$ = bytes;
|
|
17
|
+
var units = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];
|
|
18
|
+
var i = 0;
|
|
19
|
+
for (i; bytes$ > 1024; i += 1) {
|
|
20
|
+
bytes$ /= 1024;
|
|
21
|
+
}
|
|
22
|
+
return "" + parseFloat(bytes$.toFixed(1)) + units[i];
|
|
23
|
+
};
|
|
24
|
+
var ImageInputPopup = (function (props) {
|
|
25
|
+
function fileSizeValidator(file) {
|
|
26
|
+
var minSize = props.minImageSize || 1024 * 10;
|
|
27
|
+
if (file.size < minSize) {
|
|
28
|
+
return {
|
|
29
|
+
code: "image-to-small",
|
|
30
|
+
message: "This image is too small. Please pick an image over " + bytesForHuman(minSize)
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
var _a = reactDropzone.useDropzone({
|
|
36
|
+
accept: 'image/jpeg, image/png',
|
|
37
|
+
maxFiles: 1,
|
|
38
|
+
validator: fileSizeValidator
|
|
39
|
+
}), acceptedFiles = _a.acceptedFiles, fileRejections = _a.fileRejections, getRootProps = _a.getRootProps, getInputProps = _a.getInputProps, isDragActive = _a.isDragActive;
|
|
40
|
+
var setImageToCrop = DrawingToolProvider.useDrawingTool().setImageToCrop;
|
|
41
|
+
var _b = React.useState(true), supportDragAndDrop = _b[0], setSupportDragAndDrop = _b[1];
|
|
42
|
+
React.useEffect(function () {
|
|
43
|
+
if ('draggable' in document.createElement('span')) {
|
|
44
|
+
setSupportDragAndDrop(true);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
setSupportDragAndDrop(false);
|
|
48
|
+
}
|
|
49
|
+
}, []);
|
|
50
|
+
React.useEffect(function () {
|
|
51
|
+
if (acceptedFiles && acceptedFiles.length) {
|
|
52
|
+
var img_1 = new Image();
|
|
53
|
+
img_1.onload = function () {
|
|
54
|
+
setImageToCrop(img_1);
|
|
55
|
+
props.onImageSelected();
|
|
56
|
+
};
|
|
57
|
+
var reader = new FileReader();
|
|
58
|
+
reader.readAsDataURL(acceptedFiles[0]);
|
|
59
|
+
reader.onloadend = function (e) {
|
|
60
|
+
if (e.target) {
|
|
61
|
+
img_1.src = e.target.result;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}, [acceptedFiles]);
|
|
66
|
+
var ErrorMessage = fileRejections && fileRejections.length
|
|
67
|
+
? React__default['default'].createElement(ImageInputPopup_styles.ErrorMessage, null, fileRejections[0].errors[0].message)
|
|
68
|
+
: null;
|
|
69
|
+
return React__default['default'].createElement(Popup['default'], { onDismiss: props.onDismiss },
|
|
70
|
+
React__default['default'].createElement(ImageInputPopup_styles.Container, tslib.__assign({}, getRootProps()),
|
|
71
|
+
React__default['default'].createElement("input", tslib.__assign({}, getInputProps())),
|
|
72
|
+
isDragActive
|
|
73
|
+
? React__default['default'].createElement("p", null, "Drop your image here...")
|
|
74
|
+
: (React__default['default'].createElement(ImageInputPopup_styles.Instructions, null,
|
|
75
|
+
ErrorMessage,
|
|
76
|
+
React__default['default'].createElement("p", null, !supportDragAndDrop ? "Upload a drawing" : "Drag and drop a drawing here"),
|
|
77
|
+
supportDragAndDrop && React__default['default'].createElement("p", null, "Or"),
|
|
78
|
+
React__default['default'].createElement(Button, { theme: "primary", size: props.isMobile ? "small" : "regular" }, "Select Image"),
|
|
79
|
+
React__default['default'].createElement(ImageInputPopup_styles.Copyright, null, "Please do not upload copyrighted images.")))));
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
module.exports = ImageInputPopup;
|
|
83
|
+
//# sourceMappingURL=ImageInputPopup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageInputPopup.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const Container: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
|
+
export declare const Instructions: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
export declare const Copyright: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
4
|
+
export declare const ErrorMessage: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var styled = require('styled-components');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
11
|
+
|
|
12
|
+
var Container = styled__default['default'].div(templateObject_1 || (templateObject_1 = tslib.__makeTemplateObject(["\n min-height: 400px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 24px;\n @media (max-width: 850px) and (max-height: 850px), (max-width: 700px) {\n min-height: 300px;\n height: 100%;\n }\n"], ["\n min-height: 400px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 24px;\n @media (max-width: 850px) and (max-height: 850px), (max-width: 700px) {\n min-height: 300px;\n height: 100%;\n }\n"])));
|
|
13
|
+
var Instructions = styled__default['default'].div(templateObject_2 || (templateObject_2 = tslib.__makeTemplateObject(["\n text-align: center;\n"], ["\n text-align: center;\n"])));
|
|
14
|
+
var Copyright = styled__default['default'].div(templateObject_3 || (templateObject_3 = tslib.__makeTemplateObject(["\n margin-top: 20px;\n text-align: center;\n"], ["\n margin-top: 20px;\n text-align: center;\n"])));
|
|
15
|
+
var ErrorMessage = styled__default['default'].div(templateObject_4 || (templateObject_4 = tslib.__makeTemplateObject(["\n padding: 15px;\n border-radius: 10px;\n background-color: #E30514;\n color: white;\n"], ["\n padding: 15px;\n border-radius: 10px;\n background-color: #E30514;\n color: white;\n"])));
|
|
16
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
|
|
17
|
+
|
|
18
|
+
exports.Container = Container;
|
|
19
|
+
exports.Copyright = Copyright;
|
|
20
|
+
exports.ErrorMessage = ErrorMessage;
|
|
21
|
+
exports.Instructions = Instructions;
|
|
22
|
+
//# sourceMappingURL=ImageInputPopup.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageInputPopup.styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface ILoaderProps {
|
|
3
|
+
bgColor?: string;
|
|
4
|
+
color?: string;
|
|
5
|
+
size?: number;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
minHeight?: number;
|
|
8
|
+
}
|
|
9
|
+
declare const Loader: {
|
|
10
|
+
(props: ILoaderProps): JSX.Element;
|
|
11
|
+
defaultProps: {
|
|
12
|
+
color: string;
|
|
13
|
+
size: number;
|
|
14
|
+
bgColor: null;
|
|
15
|
+
placeholder: null;
|
|
16
|
+
minHeight: null;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export default Loader;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib = require('tslib');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var styled = require('styled-components');
|
|
6
|
+
|
|
7
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
+
|
|
9
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
10
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
11
|
+
|
|
12
|
+
var LoaderWrap = styled__default['default'].div(templateObject_1 || (templateObject_1 = tslib.__makeTemplateObject(["\n position: relative;\n color: ", ";\n width: 100%;\n min-height: ", "px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n z-index: 99991;\n animation: fadein 1s;\n @keyframes fadein {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n"], ["\n position: relative;\n color: ", ";\n width: 100%;\n min-height: ", "px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n z-index: 99991;\n animation: fadein 1s;\n @keyframes fadein {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n"])), function (props) { return props.color; }, function (props) { return props.minHeight; });
|
|
13
|
+
var LoaderAnimate = styled__default['default'].div(templateObject_2 || (templateObject_2 = tslib.__makeTemplateObject(["\n\tbackground: inherit;\n flex: 1;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n"], ["\n\tbackground: inherit;\n flex: 1;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n"])));
|
|
14
|
+
var StyledLoader = styled__default['default'].div(templateObject_3 || (templateObject_3 = tslib.__makeTemplateObject(["\n & > svg {\n display: inline-block;\n overflow: show;\n margin: auto;\n text-indent: -9999em;\n animation: spin 1.5s linear infinite;\n fill: ", ";\n height: ", "px;\n width: ", "px;\n @keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } }\n };\n"], ["\n & > svg {\n display: inline-block;\n overflow: show;\n margin: auto;\n text-indent: -9999em;\n animation: spin 1.5s linear infinite;\n fill: ", ";\n height: ", "px;\n width: ", "px;\n @keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } }\n };\n"])), function (props) { return props.color; }, function (props) { return props.size; }, function (props) { return props.size; });
|
|
15
|
+
var Placeholder = styled__default['default'].div(templateObject_4 || (templateObject_4 = tslib.__makeTemplateObject(["\n margin-top: 10px;\n"], ["\n margin-top: 10px;\n"])));
|
|
16
|
+
var Loader = function (props) {
|
|
17
|
+
var color = props.color, size = props.size, minHeight = props.minHeight, placeholder = props.placeholder;
|
|
18
|
+
return (React__default['default'].createElement(LoaderWrap, { color: color, minHeight: minHeight || size },
|
|
19
|
+
React__default['default'].createElement(LoaderAnimate, null,
|
|
20
|
+
React__default['default'].createElement(StyledLoader, { color: color, size: size },
|
|
21
|
+
React__default['default'].createElement("svg", { version: "1.1", id: "Layer_1", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", x: "0px", y: "0px", viewBox: "0 0 64 64", xmlSpace: "preserve" },
|
|
22
|
+
React__default['default'].createElement("path", { d: "M32,0C14.4,0,0,14.4,0,32s14.3,32,32,32s32-14.3,32-32C64,14.4,49.6,0,32,0z M36.3,21.2L35,22.9c-0.9,1.2-2,2.5-3,3.6c-1-1.2-2-2.5-3-3.6l-1.4-1.7c-3.6-4.4-3.6-10.1-3.3-13.1c4.9-1.6,10.4-1.6,15.2,0C39.9,11.1,39.9,16.8,36.3,21.2z M17.7,11.3c0.1,4,1.2,9.4,4.9,14l1.4,1.7c1.3,1.6,2.6,3.1,3.8,4.7c-2.9,3.5-4.9,6.2-5.2,6.5c-3.9,4.8-4.8,10.3-4.9,14.4C10.9,48,6.8,40.3,6.8,32C6.9,23.7,10.9,16,17.7,11.3z M27.7,42.3L27.7,42.3c0.4-0.4,2.1-2.5,4.3-5.5c2.5,3.1,4.3,5.3,4.3,5.5c3.8,4.7,3.6,10.8,3.3,13.7c-4.9,1.6-10.3,1.6-15.2,0C24.1,53.1,23.8,47.1,27.7,42.3z M46.3,52.7c0-4.2-1-9.6-4.9-14.4v-0.1c-0.4-0.5-2.5-3.1-5.2-6.5c1.3-1.6,2.6-3.1,3.8-4.7l1.4-1.7c3.8-4.7,4.8-10,4.9-14c6.8,4.7,10.9,12.4,10.9,20.7C57.1,40.3,53.1,48,46.3,52.7z" })))),
|
|
23
|
+
placeholder && React__default['default'].createElement(Placeholder, null, placeholder)));
|
|
24
|
+
};
|
|
25
|
+
Loader.defaultProps = {
|
|
26
|
+
color: '#EC5E2E',
|
|
27
|
+
size: 70,
|
|
28
|
+
bgColor: null,
|
|
29
|
+
placeholder: null,
|
|
30
|
+
minHeight: null
|
|
31
|
+
};
|
|
32
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
|
|
33
|
+
|
|
34
|
+
module.exports = Loader;
|
|
35
|
+
//# sourceMappingURL=Loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loader.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var MagicCropPopup_styles = require('./MagicCropPopup.styles.js');
|
|
5
|
+
var Button = require('../../../Button/Button.js');
|
|
6
|
+
var index = require('../../../../hooks/useCloudinary/index.js');
|
|
7
|
+
var DrawingToolProvider = require('../../DrawingToolProvider.js');
|
|
8
|
+
var Loader = require('../Loader.js');
|
|
9
|
+
var Popup = require('../Popup.js');
|
|
10
|
+
|
|
11
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
|
+
|
|
13
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
14
|
+
|
|
15
|
+
function changeExt(fileName, newExt) {
|
|
16
|
+
var pos = fileName.includes(".") ? fileName.lastIndexOf(".") : fileName.length;
|
|
17
|
+
var fileRoot = fileName.substr(0, pos);
|
|
18
|
+
return fileRoot + "." + newExt;
|
|
19
|
+
}
|
|
20
|
+
var MagicCropPopup = (function (props) {
|
|
21
|
+
var uploadImage = index({
|
|
22
|
+
unsignedUploadPreset: props.cloudinaryUploadPreset
|
|
23
|
+
}).uploadImage;
|
|
24
|
+
var _a = DrawingToolProvider.useDrawingTool(), imageToCrop = _a.imageToCrop, setImageToCrop = _a.setImageToCrop, setImageToPlace = _a.setImageToPlace;
|
|
25
|
+
var _b = React.useState(), croppedImage = _b[0], setCroppedImage = _b[1];
|
|
26
|
+
var checkImageIsReady = function (imageUrl, size, retries) {
|
|
27
|
+
if (size === void 0) { size = 0; }
|
|
28
|
+
if (retries === void 0) { retries = 0; }
|
|
29
|
+
var img = new Image();
|
|
30
|
+
img.onload = function () {
|
|
31
|
+
fetch(img.src).then(function (resp) { return resp.blob(); }).then(function (blob) {
|
|
32
|
+
if (retries === 0 || size === blob.size) {
|
|
33
|
+
var delay = retries === 0 ? 10000 : 4000;
|
|
34
|
+
setTimeout(function () { return checkImageIsReady(imageUrl, blob.size, retries + 1); }, delay);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
var croppedImg_1 = new Image();
|
|
38
|
+
croppedImg_1.crossOrigin = "Anonymous";
|
|
39
|
+
croppedImg_1.onload = function () {
|
|
40
|
+
setCroppedImage(croppedImg_1);
|
|
41
|
+
};
|
|
42
|
+
croppedImg_1.src = changeExt(imageUrl.replace('/image/upload', '/image/upload/e_trim:10'), 'png');
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
img.crossOrigin = "Anonymous";
|
|
47
|
+
img.src = changeExt(imageUrl.replace('/image/upload', '/image/upload/w_150'), 'png') + "?" + Date.now();
|
|
48
|
+
};
|
|
49
|
+
React.useEffect(function () {
|
|
50
|
+
if (imageToCrop) {
|
|
51
|
+
uploadImage(imageToCrop.src, checkImageIsReady);
|
|
52
|
+
}
|
|
53
|
+
}, []);
|
|
54
|
+
var onNext = function () {
|
|
55
|
+
if (!croppedImage)
|
|
56
|
+
return;
|
|
57
|
+
setImageToCrop(undefined);
|
|
58
|
+
setImageToPlace(croppedImage);
|
|
59
|
+
props.onDismiss();
|
|
60
|
+
};
|
|
61
|
+
return React__default['default'].createElement(Popup['default'], { onDismiss: props.onDismiss },
|
|
62
|
+
React__default['default'].createElement(MagicCropPopup_styles.Title, null, "Your Drawing"),
|
|
63
|
+
React__default['default'].createElement(MagicCropPopup_styles.Container, null,
|
|
64
|
+
React__default['default'].createElement(MagicCropPopup_styles.DrawingContainer, null, croppedImage
|
|
65
|
+
? React__default['default'].createElement(MagicCropPopup_styles.Image, { src: croppedImage.src })
|
|
66
|
+
: React__default['default'].createElement("div", null,
|
|
67
|
+
React__default['default'].createElement(Loader, { color: "#fff" }),
|
|
68
|
+
React__default['default'].createElement("br", null),
|
|
69
|
+
"Processing your image.",
|
|
70
|
+
React__default['default'].createElement("br", null),
|
|
71
|
+
"This can take a couple of minutes.")),
|
|
72
|
+
React__default['default'].createElement(MagicCropPopup_styles.Text, null,
|
|
73
|
+
"Select next to make final edits.",
|
|
74
|
+
React__default['default'].createElement("br", null),
|
|
75
|
+
"Not happy? Try manual cut-out instead.")),
|
|
76
|
+
React__default['default'].createElement(MagicCropPopup_styles.Actions, null,
|
|
77
|
+
React__default['default'].createElement(Button, { size: 'regular', theme: 'primary', onClick: props.onManual }, "Manual cut-out"),
|
|
78
|
+
React__default['default'].createElement(Button, { size: 'regular', theme: 'confirm', disabled: !croppedImage, onClick: onNext }, "Next")));
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
module.exports = MagicCropPopup;
|
|
82
|
+
//# sourceMappingURL=MagicCropPopup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MagicCropPopup.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const Title: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
|
+
export declare const Container: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
export declare const DrawingContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
4
|
+
export declare const Text: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
5
|
+
export declare const Image: import("styled-components").StyledComponent<"div", any, {
|
|
6
|
+
src: string;
|
|
7
|
+
}, never>;
|
|
8
|
+
export declare const Actions: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var styled = require('styled-components');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
11
|
+
|
|
12
|
+
var Title = styled__default['default'].div(templateObject_1 || (templateObject_1 = tslib.__makeTemplateObject(["\n font-size: 60px;\n font-family: 'Rammetto One';\n text-shadow: 0px 4px 0px #A6A6A6, 0px 8px 0px rgba(0,0,0, .5);\n margin-bottom: 20px;\n text-align: center;\n width: 100%;\n max-width: 600px;\n margin-left: auto;\n margin-right: auto;\n @media (max-width: 850px) and (max-height: 850px), (max-width: 700px) {\n font-size: 32px;\n text-shadow: 0px 2px 0px #A6A6A6, 0px 2px 0px rgba(0,0,0, .5);\n }\n"], ["\n font-size: 60px;\n font-family: 'Rammetto One';\n text-shadow: 0px 4px 0px #A6A6A6, 0px 8px 0px rgba(0,0,0, .5);\n margin-bottom: 20px;\n text-align: center;\n width: 100%;\n max-width: 600px;\n margin-left: auto;\n margin-right: auto;\n @media (max-width: 850px) and (max-height: 850px), (max-width: 700px) {\n font-size: 32px;\n text-shadow: 0px 2px 0px #A6A6A6, 0px 2px 0px rgba(0,0,0, .5);\n }\n"])));
|
|
13
|
+
var Container = styled__default['default'].div(templateObject_2 || (templateObject_2 = tslib.__makeTemplateObject(["\n width: 100%;\n max-width: 600px;\n margin-left: auto;\n margin-right: auto;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap;\n margin-bottom: 20px;\n font-size: 24px;\n @media (max-height: 650px) {\n font-size: 20px;\n }\n @media (max-height: 370px) {\n font-size: 16px;\n }\n"], ["\n width: 100%;\n max-width: 600px;\n margin-left: auto;\n margin-right: auto;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap;\n margin-bottom: 20px;\n font-size: 24px;\n @media (max-height: 650px) {\n font-size: 20px;\n }\n @media (max-height: 370px) {\n font-size: 16px;\n }\n"])));
|
|
14
|
+
var DrawingContainer = styled__default['default'].div(templateObject_3 || (templateObject_3 = tslib.__makeTemplateObject(["\n position: relative;\n padding: 20px;\n border-radius: 50px;\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 350px;\n background-color: #701EA8;\n color: white;\n text-align: center;\n margin-bottom: 20px;\n @media (max-height: 750px) {\n height: 300px;\n }\n @media (max-height: 650px) {\n width: 50%;\n margin-bottom: 0px;\n padding: 10px;\n height: 220px;\n }\n @media (max-width: 400px) {\n height: 250px;\n padding: 10px;\n }\n @media (max-height: 450px) {\n height: 200px;\n }\n @media (max-height: 370px) {\n height: 150px;\n }\n"], ["\n position: relative;\n padding: 20px;\n border-radius: 50px;\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 350px;\n background-color: #701EA8;\n color: white;\n text-align: center;\n margin-bottom: 20px;\n @media (max-height: 750px) {\n height: 300px;\n }\n @media (max-height: 650px) {\n width: 50%;\n margin-bottom: 0px;\n padding: 10px;\n height: 220px;\n }\n @media (max-width: 400px) {\n height: 250px;\n padding: 10px;\n }\n @media (max-height: 450px) {\n height: 200px;\n }\n @media (max-height: 370px) {\n height: 150px;\n }\n"])));
|
|
15
|
+
var Text = styled__default['default'].div(templateObject_4 || (templateObject_4 = tslib.__makeTemplateObject(["\n color: white;\n width: 100%;\n text-align: center;\n @media (max-height: 650px) {\n width: 50%;\n padding-left: 40px;\n }\n @media (max-height: 370px) {\n padding-left: 20px;\n }\n"], ["\n color: white;\n width: 100%;\n text-align: center;\n @media (max-height: 650px) {\n width: 50%;\n padding-left: 40px;\n }\n @media (max-height: 370px) {\n padding-left: 20px;\n }\n"])));
|
|
16
|
+
var Image = styled__default['default'].div(templateObject_5 || (templateObject_5 = tslib.__makeTemplateObject(["\n position: relative;\n background-image: url(", ");\n background-position: center;\n background-size: contain;\n background-repeat: no-repeat;\n width: 100%;\n height: 100%;\n"], ["\n position: relative;\n background-image: url(", ");\n background-position: center;\n background-size: contain;\n background-repeat: no-repeat;\n width: 100%;\n height: 100%;\n"])), function (props) { return props.src; });
|
|
17
|
+
var Actions = styled__default['default'].div(templateObject_6 || (templateObject_6 = tslib.__makeTemplateObject(["\n position: relative;\n display: flex;\n justify-content: space-between;\n width: 100%;\n max-width: 600px;\n margin-left: auto;\n margin-right: auto;\n"], ["\n position: relative;\n display: flex;\n justify-content: space-between;\n width: 100%;\n max-width: 600px;\n margin-left: auto;\n margin-right: auto;\n"])));
|
|
18
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
|
|
19
|
+
|
|
20
|
+
exports.Actions = Actions;
|
|
21
|
+
exports.Container = Container;
|
|
22
|
+
exports.DrawingContainer = DrawingContainer;
|
|
23
|
+
exports.Image = Image;
|
|
24
|
+
exports.Text = Text;
|
|
25
|
+
exports.Title = Title;
|
|
26
|
+
//# sourceMappingURL=MagicCropPopup.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MagicCropPopup.styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var ManualCropPopup_styles = require('./ManualCropPopup.styles.js');
|
|
5
|
+
var Button = require('../../../Button/Button.js');
|
|
6
|
+
var Popup = require('../Popup.js');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
11
|
+
|
|
12
|
+
var ManualCropPopup = (function (props) {
|
|
13
|
+
return React__default['default'].createElement(Popup['default'], { onDismiss: props.onDismiss },
|
|
14
|
+
React__default['default'].createElement(ManualCropPopup_styles.Container, null,
|
|
15
|
+
React__default['default'].createElement("div", null,
|
|
16
|
+
"Cut out your animal.",
|
|
17
|
+
React__default['default'].createElement("br", null),
|
|
18
|
+
"Click, hold and make sure you draw around it."),
|
|
19
|
+
React__default['default'].createElement(ManualCropPopup_styles.Image, { src: "https://cdn.nightzookeeper.com/nzk-assets/crop-tutorial.png" }),
|
|
20
|
+
React__default['default'].createElement("div", null,
|
|
21
|
+
React__default['default'].createElement(Button, { size: 'regular', theme: "primary", onClick: props.onNext }, "Ok"))));
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
module.exports = ManualCropPopup;
|
|
25
|
+
//# sourceMappingURL=ManualCropPopup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManualCropPopup.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var styled = require('styled-components');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
11
|
+
|
|
12
|
+
var Container = styled__default['default'].div(templateObject_1 || (templateObject_1 = tslib.__makeTemplateObject(["\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n flex-wrap: wrap;\n font-size: 24px;\n text-align: center;\n > :last-child {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n"], ["\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n flex-wrap: wrap;\n font-size: 24px;\n text-align: center;\n > :last-child {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n"])));
|
|
13
|
+
var Image = styled__default['default'].div(templateObject_2 || (templateObject_2 = tslib.__makeTemplateObject(["\n width: 100%;\n height: 250px;\n background-image: url(", ");\n background-size: contain;\n background-position: center;\n background-repeat: no-repeat;\n @media (max-height: 400px) {\n height: 170px;\n }\n"], ["\n width: 100%;\n height: 250px;\n background-image: url(", ");\n background-size: contain;\n background-position: center;\n background-repeat: no-repeat;\n @media (max-height: 400px) {\n height: 170px;\n }\n"])), function (props) { return props.src; });
|
|
14
|
+
var templateObject_1, templateObject_2;
|
|
15
|
+
|
|
16
|
+
exports.Container = Container;
|
|
17
|
+
exports.Image = Image;
|
|
18
|
+
//# sourceMappingURL=ManualCropPopup.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManualCropPopup.styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const QuitButton: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
interface Props {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
onDismiss?: undefined | (() => void);
|
|
6
|
+
}
|
|
7
|
+
declare const Popup: {
|
|
8
|
+
(props: Props): JSX.Element;
|
|
9
|
+
defaultProps: {
|
|
10
|
+
onDismiss: undefined;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export default Popup;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var styled = require('styled-components');
|
|
8
|
+
var Button = require('../../Button/Button.js');
|
|
9
|
+
var Icon = require('../../Icon/Icon.js');
|
|
10
|
+
|
|
11
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
|
+
|
|
13
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
14
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
15
|
+
|
|
16
|
+
var Overlay = styled__default['default'].div(templateObject_1 || (templateObject_1 = tslib.__makeTemplateObject(["\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n z-index: 100;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: rgba(0,0,0, .4);\n"], ["\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n z-index: 100;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: rgba(0,0,0, .4);\n"])));
|
|
17
|
+
var Container = styled__default['default'].div(templateObject_2 || (templateObject_2 = tslib.__makeTemplateObject(["\n position: relative;\n width: 90%;\n max-width: 900px;\n border-radius: 50px;\n padding: 40px;\n background-color: #341644;\n box-shadow: 0 -5px 0 #531D75, 0 10px 0 #1C042B, 0 14px 0 rgba(0,0,0,0.3);\n color: white;\n * {\n box-sizing: border-box;\n }\n @media (max-width: 850px) and (max-height: 850px), (max-width: 700px) {\n width: 100%;\n height: 100%;\n border-radius: 0px;\n box-shadow: none;\n padding: 20px;\n }\n"], ["\n position: relative;\n width: 90%;\n max-width: 900px;\n border-radius: 50px;\n padding: 40px;\n background-color: #341644;\n box-shadow: 0 -5px 0 #531D75, 0 10px 0 #1C042B, 0 14px 0 rgba(0,0,0,0.3);\n color: white;\n * {\n box-sizing: border-box;\n }\n @media (max-width: 850px) and (max-height: 850px), (max-width: 700px) {\n width: 100%;\n height: 100%;\n border-radius: 0px;\n box-shadow: none;\n padding: 20px;\n }\n"])));
|
|
18
|
+
var QuitButton = styled__default['default'].div(templateObject_3 || (templateObject_3 = tslib.__makeTemplateObject(["\n position: absolute;\n top: -15px;\n right: -15px;\n @media (max-width: 850px) and (max-height: 850px), (max-width: 700px) {\n top: 15px;\n right: 15px;\n }\n"], ["\n position: absolute;\n top: -15px;\n right: -15px;\n @media (max-width: 850px) and (max-height: 850px), (max-width: 700px) {\n top: 15px;\n right: 15px;\n }\n"])));
|
|
19
|
+
var Popup = function (props) {
|
|
20
|
+
return React__default['default'].createElement(Overlay, null,
|
|
21
|
+
React__default['default'].createElement(Container, null,
|
|
22
|
+
props.onDismiss && React__default['default'].createElement(QuitButton, { onClick: props.onDismiss },
|
|
23
|
+
React__default['default'].createElement(Button, { size: "regular", round: true, theme: 'red' },
|
|
24
|
+
React__default['default'].createElement(Icon, { name: 'close' }))),
|
|
25
|
+
props.children));
|
|
26
|
+
};
|
|
27
|
+
Popup.defaultProps = {
|
|
28
|
+
onDismiss: undefined
|
|
29
|
+
};
|
|
30
|
+
var templateObject_1, templateObject_2, templateObject_3;
|
|
31
|
+
|
|
32
|
+
exports.QuitButton = QuitButton;
|
|
33
|
+
exports['default'] = Popup;
|
|
34
|
+
//# sourceMappingURL=Popup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popup.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -124,6 +124,7 @@ var Sketch = (function () {
|
|
|
124
124
|
}
|
|
125
125
|
else if (data.imageSrc) {
|
|
126
126
|
var img_1 = new Image;
|
|
127
|
+
img_1.crossOrigin = "Anonymous";
|
|
127
128
|
img_1.onload = function () { doMerge(img_1); };
|
|
128
129
|
img_1.src = data.imageSrc;
|
|
129
130
|
}
|
|
@@ -141,15 +142,11 @@ var Sketch = (function () {
|
|
|
141
142
|
return;
|
|
142
143
|
this.model.lastActionIndex -= 1;
|
|
143
144
|
this.drawingLayer.clear();
|
|
144
|
-
console.log('Last action Index before undo', this.model.lastActionIndex);
|
|
145
145
|
for (var i = 0; i <= this.model.lastActionIndex; i += 1) {
|
|
146
|
-
console.log('I=', i);
|
|
147
146
|
if (this.model.actions[i].type === 'STROKE' && this.model.actions[i].model) {
|
|
148
|
-
console.log('draw stroke');
|
|
149
147
|
this.drawUndoStroke(this.model.actions[i].model);
|
|
150
148
|
}
|
|
151
149
|
else if (this.model.actions[i].type === 'IMAGE_MERGE' && this.model.actions[i]) {
|
|
152
|
-
console.log('merge image');
|
|
153
150
|
this.mergeImage(this.model.actions[i].data, false);
|
|
154
151
|
}
|
|
155
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sketch.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Sketch.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
function useInterval(callback, delay) {
|
|
6
|
+
var savedCallback = React.useRef(callback);
|
|
7
|
+
React.useLayoutEffect(function () {
|
|
8
|
+
savedCallback.current = callback;
|
|
9
|
+
}, [callback]);
|
|
10
|
+
React.useEffect(function () {
|
|
11
|
+
if (!delay) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
var id = setInterval(function () { return savedCallback.current(); }, delay);
|
|
15
|
+
return function () { return clearInterval(id); };
|
|
16
|
+
}, [delay]);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
module.exports = useInterval;
|
|
20
|
+
//# sourceMappingURL=useInterval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInterval.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,10 @@ import useAsync from './hooks/useAsync';
|
|
|
8
8
|
import useConfettis from './hooks/useConfettis';
|
|
9
9
|
import useMountState from './hooks/useMountState';
|
|
10
10
|
import useCloudinary from './hooks/useCloudinary';
|
|
11
|
+
import useInterval from './hooks/useInterval';
|
|
12
|
+
import useEventListener from './hooks/useEventListener';
|
|
13
|
+
import useElementSize from './hooks/useElementSize';
|
|
14
|
+
import useDebounce from './hooks/useDebounce';
|
|
11
15
|
import DrawingTool from './components/DrawingTool/DrawingTool';
|
|
12
16
|
import { DrawingToolProvider, useDrawingTool } from './components/DrawingTool/DrawingToolProvider';
|
|
13
|
-
export { Button, IconButton, Modal, Icon, Avatar, ModalProvider, DrawingTool, DrawingToolProvider, useDrawingTool, useModalState, useAsync, useMountState, useConfettis, useCloudinary };
|
|
17
|
+
export { Button, IconButton, Modal, Icon, Avatar, ModalProvider, DrawingTool, DrawingToolProvider, useDrawingTool, useModalState, useAsync, useMountState, useConfettis, useCloudinary, useInterval, useElementSize, useEventListener, useDebounce };
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,10 @@ var useAsync = require('./hooks/useAsync.js');
|
|
|
12
12
|
var index = require('./hooks/useConfettis/index.js');
|
|
13
13
|
var useMountState = require('./hooks/useMountState.js');
|
|
14
14
|
var index$1 = require('./hooks/useCloudinary/index.js');
|
|
15
|
+
var useInterval = require('./hooks/useInterval.js');
|
|
16
|
+
var useEventListener = require('./hooks/useEventListener.js');
|
|
17
|
+
var useElementSize = require('./hooks/useElementSize.js');
|
|
18
|
+
var useDebounce = require('./hooks/useDebounce.js');
|
|
15
19
|
var DrawingTool = require('./components/DrawingTool/DrawingTool.js');
|
|
16
20
|
var DrawingToolProvider = require('./components/DrawingTool/DrawingToolProvider.js');
|
|
17
21
|
|
|
@@ -28,6 +32,10 @@ exports.useAsync = useAsync;
|
|
|
28
32
|
exports.useConfettis = index;
|
|
29
33
|
exports.useMountState = useMountState;
|
|
30
34
|
exports.useCloudinary = index$1;
|
|
35
|
+
exports.useInterval = useInterval;
|
|
36
|
+
exports.useEventListener = useEventListener;
|
|
37
|
+
exports.useElementSize = useElementSize;
|
|
38
|
+
exports.useDebounce = useDebounce;
|
|
31
39
|
exports.DrawingTool = DrawingTool;
|
|
32
40
|
exports.DrawingToolProvider = DrawingToolProvider.DrawingToolProvider;
|
|
33
41
|
exports.useDrawingTool = DrawingToolProvider.useDrawingTool;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|