nzk-react-components 0.4.1 → 0.4.2-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/components/DrawingTool/DrawingTool.d.ts +29 -0
  2. package/dist/components/DrawingTool/DrawingTool.js +277 -0
  3. package/dist/components/DrawingTool/DrawingTool.js.map +1 -0
  4. package/dist/components/DrawingTool/DrawingTool.stories.d.ts +6 -0
  5. package/dist/components/DrawingTool/DrawingTool.styles.d.ts +41 -0
  6. package/dist/components/DrawingTool/DrawingTool.styles.js +54 -0
  7. package/dist/components/DrawingTool/DrawingTool.styles.js.map +1 -0
  8. package/dist/components/DrawingTool/DrawingToolProvider.d.ts +56 -0
  9. package/dist/components/DrawingTool/DrawingToolProvider.js +182 -0
  10. package/dist/components/DrawingTool/DrawingToolProvider.js.map +1 -0
  11. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.d.ts +21 -0
  12. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.js +89 -0
  13. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.js.map +1 -0
  14. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.styles.d.ts +9 -0
  15. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.styles.js +18 -0
  16. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.styles.js.map +1 -0
  17. package/dist/components/DrawingTool/components/ColourToolbar/index.d.ts +2 -0
  18. package/dist/components/DrawingTool/components/ColourToolbar/index.js +8 -0
  19. package/dist/components/DrawingTool/components/ColourToolbar/index.js.map +1 -0
  20. package/dist/components/DrawingTool/components/FileInput/FileInput.d.ts +9 -0
  21. package/dist/components/DrawingTool/components/FileInput/FileInput.js +88 -0
  22. package/dist/components/DrawingTool/components/FileInput/FileInput.js.map +1 -0
  23. package/dist/components/DrawingTool/components/FileInput/FileInput.styles.d.ts +4 -0
  24. package/dist/components/DrawingTool/components/FileInput/FileInput.styles.js +22 -0
  25. package/dist/components/DrawingTool/components/FileInput/FileInput.styles.js.map +1 -0
  26. package/dist/components/DrawingTool/components/FileInput/index.d.ts +2 -0
  27. package/dist/components/DrawingTool/components/FileInput/index.js +8 -0
  28. package/dist/components/DrawingTool/components/FileInput/index.js.map +1 -0
  29. package/dist/components/DrawingTool/components/Header/Header.d.ts +9 -0
  30. package/dist/components/DrawingTool/components/Header/Header.js +38 -0
  31. package/dist/components/DrawingTool/components/Header/Header.js.map +1 -0
  32. package/dist/components/DrawingTool/components/Header/index.d.ts +2 -0
  33. package/dist/components/DrawingTool/components/Header/index.js +8 -0
  34. package/dist/components/DrawingTool/components/Header/index.js.map +1 -0
  35. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.d.ts +8 -0
  36. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.js +31 -0
  37. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.js.map +1 -0
  38. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.styles.d.ts +9 -0
  39. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.styles.js +18 -0
  40. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.styles.js.map +1 -0
  41. package/dist/components/DrawingTool/components/OpacityToggle/index.d.ts +2 -0
  42. package/dist/components/DrawingTool/components/OpacityToggle/index.js +8 -0
  43. package/dist/components/DrawingTool/components/OpacityToggle/index.js.map +1 -0
  44. package/dist/components/DrawingTool/components/Placeable/index.d.ts +9 -0
  45. package/dist/components/DrawingTool/components/Placeable/index.js +22 -0
  46. package/dist/components/DrawingTool/components/Placeable/index.js.map +1 -0
  47. package/dist/components/DrawingTool/index.d.ts +2 -0
  48. package/dist/components/DrawingTool/lib/Sketch.d.ts +90 -0
  49. package/dist/components/DrawingTool/lib/Sketch.js +414 -0
  50. package/dist/components/DrawingTool/lib/Sketch.js.map +1 -0
  51. package/dist/components/DrawingTool/lib/SketchCut.d.ts +22 -0
  52. package/dist/components/DrawingTool/lib/SketchCut.js +98 -0
  53. package/dist/components/DrawingTool/lib/SketchCut.js.map +1 -0
  54. package/dist/components/DrawingTool/lib/SketchCutModel.d.ts +6 -0
  55. package/dist/components/DrawingTool/lib/SketchCutModel.js +20 -0
  56. package/dist/components/DrawingTool/lib/SketchCutModel.js.map +1 -0
  57. package/dist/components/DrawingTool/lib/SketchLayer.d.ts +27 -0
  58. package/dist/components/DrawingTool/lib/SketchLayer.js +59 -0
  59. package/dist/components/DrawingTool/lib/SketchLayer.js.map +1 -0
  60. package/dist/components/DrawingTool/lib/SketchModel.d.ts +65 -0
  61. package/dist/components/DrawingTool/lib/SketchModel.js +137 -0
  62. package/dist/components/DrawingTool/lib/SketchModel.js.map +1 -0
  63. package/dist/components/DrawingTool/lib/SketchStrokeModel.d.ts +33 -0
  64. package/dist/components/DrawingTool/lib/SketchStrokeModel.js +48 -0
  65. package/dist/components/DrawingTool/lib/SketchStrokeModel.js.map +1 -0
  66. package/dist/components/DrawingTool/lib/createInteractionSurface.d.ts +16 -0
  67. package/dist/components/DrawingTool/lib/createInteractionSurface.js +56 -0
  68. package/dist/components/DrawingTool/lib/createInteractionSurface.js.map +1 -0
  69. package/dist/components/DrawingTool/lib/trace.d.ts +3 -0
  70. package/dist/components/DrawingTool/lib/trace.js +24 -0
  71. package/dist/components/DrawingTool/lib/trace.js.map +1 -0
  72. package/dist/components/DrawingTool/lib/trimCanvas.d.ts +2 -0
  73. package/dist/components/DrawingTool/lib/trimCanvas.js +42 -0
  74. package/dist/components/DrawingTool/lib/trimCanvas.js.map +1 -0
  75. package/package.json +1 -1
@@ -0,0 +1,29 @@
1
+ /// <reference types="react" />
2
+ export interface Props {
3
+ prompt: string;
4
+ showHeader: boolean;
5
+ onBack: () => void;
6
+ onSave: () => void;
7
+ showPaperBackground?: boolean;
8
+ disableCameraUpload?: boolean;
9
+ minImageUploadSize?: number;
10
+ disableAutoCache?: boolean;
11
+ openUploadPopupOnStart?: boolean;
12
+ cacheKey?: string;
13
+ }
14
+ export declare type Orientation = 'LANDSCAPE' | 'PORTRAIT';
15
+ declare const Drawing: {
16
+ (props: Props): JSX.Element;
17
+ defaultProps: {
18
+ prompt: string;
19
+ showHeader: boolean;
20
+ onBack: () => void;
21
+ onSave: () => void;
22
+ showPaperBackground: boolean;
23
+ disableCameraUpload: boolean;
24
+ disableAutoCache: boolean;
25
+ cacheKey: string;
26
+ openUploadPopupOnStart: boolean;
27
+ };
28
+ };
29
+ export default Drawing;
@@ -0,0 +1,277 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var React = require('react');
5
+ var polished = require('polished');
6
+ var Moveable = require('react-moveable');
7
+ var MoveableHelper = require('moveable-helper');
8
+ var ReactTooltip = require('react-tooltip');
9
+ var DrawingTool_styles = require('./DrawingTool.styles.js');
10
+ var useDebounce = require('../../hooks/useDebounce.js');
11
+ var useElementSize = require('../../hooks/useElementSize.js');
12
+ var Button = require('../Button/Button.js');
13
+ var Icon = require('../Icon/Icon.js');
14
+ var IconButton = require('../IconButton/IconButton.js');
15
+ var ColourToolbar = require('./components/ColourToolbar/ColourToolbar.js');
16
+ var Modal = require('../Modal/Modal.js');
17
+ var DrawingToolProvider = require('./DrawingToolProvider.js');
18
+ var FileInput = require('./components/FileInput/FileInput.js');
19
+ var index = require('./components/Placeable/index.js');
20
+ var OpacityToggle = require('./components/OpacityToggle/OpacityToggle.js');
21
+ var Header = require('./components/Header/Header.js');
22
+
23
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
24
+
25
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
26
+ var Moveable__default = /*#__PURE__*/_interopDefaultLegacy(Moveable);
27
+ var MoveableHelper__default = /*#__PURE__*/_interopDefaultLegacy(MoveableHelper);
28
+ var ReactTooltip__default = /*#__PURE__*/_interopDefaultLegacy(ReactTooltip);
29
+
30
+ var Drawing = function (props) {
31
+ var _a, _b;
32
+ var containerRef = React.useRef(null);
33
+ var sketchOuterRef = React.useRef(null);
34
+ var sketchInnerRef = React.useRef(null);
35
+ var sketchCutInnerRef = React.useRef(null);
36
+ var imageToPlaceContainerRef = React.useRef(null);
37
+ var moveableRef = React.useRef(null);
38
+ var helper = React.useState(function () {
39
+ return new MoveableHelper__default['default']();
40
+ })[0];
41
+ var _c = useElementSize(containerRef), containerWidth = _c.width, containerHeight = _c.height;
42
+ var debouncedContainerWidth = useDebounce(containerWidth, 1000);
43
+ var debouncedContainerHeight = useDebounce(containerHeight, 1000);
44
+ var _d = React.useState('LANDSCAPE'), orientation = _d[0], setOrientation = _d[1];
45
+ var _e = React.useState(1280), maxContainerWidth = _e[0], setMaxContainerWidth = _e[1];
46
+ var _f = React.useState(960), maxContainerHeight = _f[0], setMaxContainerHeight = _f[1];
47
+ var _g = React.useState(50), buttonSize = _g[0], setButtonSize = _g[1];
48
+ var _h = React.useState(false), isMobile = _h[0], setIsMobile = _h[1];
49
+ var _j = React.useState(true), resizing = _j[0], setResizing = _j[1];
50
+ var _k = React.useState(false), showRestartConfirmModal = _k[0], setShowRestartConfirmModal = _k[1];
51
+ var _l = React.useState(props.openUploadPopupOnStart), showFileInput = _l[0], setShowFileInput = _l[1];
52
+ var _m = React.useState(), imageToCut = _m[0], setImageToCut = _m[1];
53
+ var _o = React.useState(true), showCutTutorial = _o[0], setShowCutTutorial = _o[1];
54
+ var _p = React.useState(false), showSaveCutAction = _p[0], setShowSaveCutAction = _p[1];
55
+ var _q = React.useState(), imageToPlace = _q[0], setImageToPlace = _q[1];
56
+ var _r = DrawingToolProvider.useDrawingTool(), initSketch = _r.initSketch, initSketchCut = _r.initSketchCut, exportSketchCut = _r.exportSketchCut, currentColour = _r.currentColour, brushSize = _r.brushSize, setBrushSize = _r.setBrushSize, brushType = _r.brushType, setBrushType = _r.setBrushType, undo = _r.undo, redo = _r.redo, restart = _r.restart, setCacheKey = _r.setCacheKey, setAutoCache = _r.setAutoCache, resetCut = _r.resetCut, mergeImage = _r.mergeImage, setToolMode = _r.setToolMode;
57
+ React.useEffect(function () {
58
+ if (typeof props.disableAutoCache === 'boolean') {
59
+ setAutoCache(!props.disableAutoCache);
60
+ }
61
+ if (props.cacheKey)
62
+ setCacheKey(props.cacheKey);
63
+ }, []);
64
+ React.useLayoutEffect(function () {
65
+ if (debouncedContainerHeight !== containerHeight || debouncedContainerWidth !== containerWidth) {
66
+ setResizing(true);
67
+ }
68
+ else if (containerWidth > 0 && containerHeight > 0) {
69
+ setResizing(false);
70
+ if (containerWidth < 768) {
71
+ setIsMobile(true);
72
+ }
73
+ else {
74
+ setIsMobile(false);
75
+ }
76
+ }
77
+ }, [debouncedContainerWidth, debouncedContainerHeight, containerWidth, containerHeight]);
78
+ React.useLayoutEffect(function () {
79
+ setMaxContainerHeight(containerWidth * 1.4);
80
+ setMaxContainerWidth(containerHeight * 1.4);
81
+ if (containerWidth < containerHeight && containerWidth < 1024) {
82
+ setButtonSize(Math.floor(containerWidth / 11) * 0.85);
83
+ setOrientation('PORTRAIT');
84
+ }
85
+ else {
86
+ if (containerHeight < 420) {
87
+ setButtonSize(Math.floor(containerHeight / 13) * 0.85);
88
+ }
89
+ else if (containerHeight < 1024) {
90
+ setButtonSize(Math.floor(containerHeight / 12) * 0.85);
91
+ }
92
+ else {
93
+ setButtonSize(Math.floor(containerHeight / 11) * 0.85);
94
+ }
95
+ setOrientation('LANDSCAPE');
96
+ }
97
+ }, [containerWidth, containerHeight]);
98
+ React.useEffect(function () {
99
+ if (!imageToCut && !resizing && sketchInnerRef.current) {
100
+ initSketch(sketchInnerRef.current);
101
+ }
102
+ }, [resizing, sketchInnerRef, imageToCut]);
103
+ React.useEffect(function () {
104
+ if (!resizing && sketchCutInnerRef.current && imageToCut) {
105
+ initSketchCut(sketchCutInnerRef.current, imageToCut, function () {
106
+ setShowSaveCutAction(true);
107
+ });
108
+ }
109
+ }, [resizing, sketchCutInnerRef, imageToCut]);
110
+ var onClickRestart = function () {
111
+ setShowRestartConfirmModal(true);
112
+ };
113
+ var onClickCamera = function () {
114
+ setShowFileInput(true);
115
+ };
116
+ var onImageUploaded = function (image) {
117
+ setShowFileInput(false);
118
+ setImageToCut(image);
119
+ setToolMode("CUT");
120
+ };
121
+ var strokeBrushColour = polished.getLuminance(currentColour.hex) > 0.05 ? polished.darken(0.15, currentColour.hex) : polished.lighten(0.1, currentColour.hex);
122
+ var deselectedButtonColourProps = {
123
+ theme: 'white'
124
+ };
125
+ var selectedButtonColourProps = {
126
+ backgroundColor: currentColour.hex,
127
+ strokeColor: strokeBrushColour,
128
+ dropShadowColor: 'rgba(0,0,0,.3)',
129
+ shadowColor: 'rgba(0,0,0,.5)'
130
+ };
131
+ var eraserBrushColourProps = (brushType === 'eraser' ? selectedButtonColourProps : deselectedButtonColourProps);
132
+ var fillBrushColourProps = (brushType === 'fill' ? selectedButtonColourProps : deselectedButtonColourProps);
133
+ var lineBrushColourProps = (brushType === 'line' ? selectedButtonColourProps : deselectedButtonColourProps);
134
+ var smallLineColourProps = (brushSize === DrawingToolProvider.BrushSize.small ? selectedButtonColourProps : deselectedButtonColourProps);
135
+ var mediumLineColourProps = (brushSize === DrawingToolProvider.BrushSize.medium ? selectedButtonColourProps : deselectedButtonColourProps);
136
+ var largeLineColourProps = (brushSize === DrawingToolProvider.BrushSize.large ? selectedButtonColourProps : deselectedButtonColourProps);
137
+ var sketchStyles;
138
+ if (!resizing && sketchOuterRef && sketchOuterRef.current) {
139
+ sketchStyles = {
140
+ width: sketchOuterRef.current.offsetWidth + "px",
141
+ height: sketchOuterRef.current.offsetHeight + "px",
142
+ position: 'absolute',
143
+ top: '0px',
144
+ left: '0px'
145
+ };
146
+ }
147
+ var disableToolbars = (showFileInput || showRestartConfirmModal || imageToCut || imageToPlace);
148
+ var inSketchActions = [];
149
+ if (showSaveCutAction) {
150
+ inSketchActions.push({
151
+ key: 'retry-cut',
152
+ 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 () {
153
+ setShowSaveCutAction(false);
154
+ setShowCutTutorial(true);
155
+ resetCut();
156
+ } }, "Retry")
157
+ }, {
158
+ key: 'save-cut',
159
+ component: React__default['default'].createElement(IconButton, { icon: React__default['default'].createElement(Icon, { name: "tick" }), theme: 'confirm', size: isMobile ? "small" : "regular", onClick: function () {
160
+ setShowSaveCutAction(false);
161
+ setImageToCut(undefined);
162
+ var newImage = new Image;
163
+ newImage.onload = function () {
164
+ setImageToPlace(newImage);
165
+ setToolMode('PLACE');
166
+ };
167
+ newImage.src = exportSketchCut();
168
+ } }, "Save")
169
+ });
170
+ }
171
+ else if (imageToPlace) {
172
+ inSketchActions.push({
173
+ key: 'cancel-place',
174
+ component: React__default['default'].createElement(IconButton, { icon: React__default['default'].createElement(Icon, { name: "close" }), theme: 'red', size: isMobile ? "small" : "regular", onClick: function () {
175
+ setImageToPlace(undefined);
176
+ setToolMode('DRAW');
177
+ } }, "Cancel")
178
+ }, {
179
+ key: 'save-place',
180
+ component: React__default['default'].createElement(IconButton, { icon: React__default['default'].createElement(Icon, { name: "tick" }), theme: 'confirm', size: isMobile ? "small" : "regular", onClick: function () {
181
+ if (moveableRef.current) {
182
+ var rect = moveableRef.current.getRect();
183
+ mergeImage({
184
+ image: imageToPlace,
185
+ x: rect.left,
186
+ y: rect.top,
187
+ origin: rect.origin,
188
+ width: Math.hypot(rect.pos2[0] - rect.pos1[0], rect.pos2[1] - rect.pos1[1]),
189
+ height: Math.hypot(rect.pos3[0] - rect.pos2[0], rect.pos3[1] - rect.pos2[1]),
190
+ rotation: rect.rotation
191
+ });
192
+ setToolMode('DRAW');
193
+ setImageToPlace(undefined);
194
+ }
195
+ } }, "Save")
196
+ });
197
+ }
198
+ var headerHeight = 90;
199
+ if (containerHeight < 800 || containerWidth < 728)
200
+ headerHeight = 70;
201
+ if (containerHeight < 500 || containerWidth < 500)
202
+ headerHeight = 50;
203
+ return React__default['default'].createElement(DrawingTool_styles.Container, { ref: containerRef, maxWidth: maxContainerWidth, maxHeight: maxContainerHeight },
204
+ props.showHeader && React__default['default'].createElement(Header, { height: headerHeight, prompt: props.prompt, onBack: props.onBack, onSave: props.onSave }),
205
+ React__default['default'].createElement(DrawingTool_styles.Tool, { hasHeader: props.showHeader, headerHeight: headerHeight, orientation: orientation },
206
+ React__default['default'].createElement(ReactTooltip__default['default'], { effect: "solid", delayShow: 750, multiline: true }),
207
+ React__default['default'].createElement(DrawingTool_styles.LeftToolbarContainer, { orientation: orientation, buttonSize: buttonSize, disabled: disableToolbars },
208
+ React__default['default'].createElement(DrawingTool_styles.ButtonGroup, { orientation: orientation, buttonSize: buttonSize },
209
+ React__default['default'].createElement(Button, { "data-tip": "Start again?", height: buttonSize, round: true, theme: 'red', onClick: onClickRestart },
210
+ React__default['default'].createElement(Icon, { name: 'trash-white' }))),
211
+ React__default['default'].createElement(DrawingTool_styles.ButtonGroup, { orientation: orientation, buttonSize: buttonSize },
212
+ React__default['default'].createElement(Button, { height: buttonSize, round: true, theme: "white", onClick: undo },
213
+ React__default['default'].createElement(Icon, { fill: currentColour.hex, name: 'drawing-tool-undo' })),
214
+ React__default['default'].createElement(Button, { height: buttonSize, round: true, theme: "white", onClick: redo },
215
+ React__default['default'].createElement(Icon, { fill: currentColour.hex, name: 'drawing-tool-redo' }))),
216
+ !props.disableCameraUpload && React__default['default'].createElement(DrawingTool_styles.ButtonGroup, { orientation: orientation, buttonSize: buttonSize },
217
+ React__default['default'].createElement(Button, { "data-tip": "Upload a drawing", height: buttonSize, round: true, theme: 'purple', onClick: onClickCamera },
218
+ React__default['default'].createElement(Icon, { name: 'drawing-tool-camera' }))),
219
+ React__default['default'].createElement(DrawingTool_styles.ButtonGroup, { orientation: orientation, buttonSize: buttonSize },
220
+ React__default['default'].createElement(Button, tslib.__assign({ height: buttonSize, round: true }, eraserBrushColourProps, { onClick: function () { return setBrushType('eraser'); } }),
221
+ React__default['default'].createElement(Icon, { "data-tip": "Eraser", fill: brushType === 'eraser' ? 'white' : currentColour.hex, name: 'drawing-tool-eraser' })),
222
+ React__default['default'].createElement(Button, tslib.__assign({ "data-tip": "Fill brush", height: buttonSize, round: true }, fillBrushColourProps, { onClick: function () { return setBrushType('fill'); } }),
223
+ React__default['default'].createElement(Icon, { fill: brushType === 'fill' ? 'white' : currentColour.hex, name: 'drawing-tool-fill-brush' })),
224
+ React__default['default'].createElement(Button, tslib.__assign({ "data-tip": "Line brush", height: buttonSize, round: true }, lineBrushColourProps, { onClick: function () { return setBrushType('line'); } }),
225
+ React__default['default'].createElement(Icon, { fill: brushType === 'line' ? 'white' : currentColour.hex, name: 'drawing-tool-line-brush' })),
226
+ React__default['default'].createElement(Button, tslib.__assign({ height: buttonSize, round: true }, smallLineColourProps, { onClick: function () { return setBrushSize(DrawingToolProvider.BrushSize.small); } }),
227
+ React__default['default'].createElement(Icon, { fill: brushSize === DrawingToolProvider.BrushSize.small ? 'white' : currentColour.hex, name: 'drawing-tool-small-line' })),
228
+ React__default['default'].createElement(Button, tslib.__assign({ height: buttonSize, round: true }, mediumLineColourProps, { onClick: function () { return setBrushSize(DrawingToolProvider.BrushSize.medium); } }),
229
+ React__default['default'].createElement(Icon, { fill: brushSize === DrawingToolProvider.BrushSize.medium ? 'white' : currentColour.hex, name: 'drawing-tool-medium-line' })),
230
+ React__default['default'].createElement(Button, tslib.__assign({ height: buttonSize, round: true }, largeLineColourProps, { onClick: function () { return setBrushSize(DrawingToolProvider.BrushSize.large); } }),
231
+ React__default['default'].createElement(Icon, { fill: brushSize === DrawingToolProvider.BrushSize.large ? 'white' : currentColour.hex, name: 'drawing-tool-large-line' })))),
232
+ React__default['default'].createElement(DrawingTool_styles.SketchContainer, { orientation: orientation, ref: sketchOuterRef },
233
+ props.showPaperBackground && React__default['default'].createElement(DrawingTool_styles.PaperBackground, { cutMode: imageToCut && true }),
234
+ !imageToCut && sketchStyles && React__default['default'].createElement("div", { style: sketchStyles, ref: sketchInnerRef }),
235
+ imageToCut && sketchStyles && React__default['default'].createElement("div", { style: sketchStyles, ref: sketchCutInnerRef }),
236
+ imageToPlace && sketchStyles && (React__default['default'].createElement("div", { style: tslib.__assign(tslib.__assign({}, sketchStyles), { zIndex: '101' }) },
237
+ React__default['default'].createElement(DrawingTool_styles.ImageToPlaceContainer, null,
238
+ React__default['default'].createElement(DrawingTool_styles.ImageToPlace, { ref: imageToPlaceContainerRef, src: imageToPlace.src })),
239
+ React__default['default'].createElement(Moveable__default['default'], { ref: moveableRef, target: imageToPlaceContainerRef, ables: [index], props: {
240
+ placeable: true,
241
+ }, 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 }))),
242
+ 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)); }))),
243
+ imageToCut && showCutTutorial && React__default['default'].createElement(DrawingTool_styles.CutImageTutorial, { onClick: function () { return setShowCutTutorial(false); } },
244
+ React__default['default'].createElement("div", null, "Now cut out your animal: Click, hold and make sure you draw around it."),
245
+ React__default['default'].createElement("img", { alt: "crop example", src: "https://cdn.nightzookeeper.com/nzk-assets/crop-tutorial.png" }),
246
+ React__default['default'].createElement("div", null,
247
+ React__default['default'].createElement(Button, { size: isMobile ? "small" : "regular", theme: "primary" }, "Ok")))),
248
+ React__default['default'].createElement(DrawingTool_styles.RightToolbarContainer, { orientation: orientation, buttonSize: buttonSize, disabled: disableToolbars },
249
+ React__default['default'].createElement(ColourToolbar, { orientation: orientation, size: buttonSize, currentColour: currentColour }),
250
+ React__default['default'].createElement(OpacityToggle, { orientation: orientation, buttonSize: buttonSize }))),
251
+ showRestartConfirmModal && React__default['default'].createElement(DrawingTool_styles.ModalOverlay, null,
252
+ React__default['default'].createElement(Modal, { title: "Are you sure?", actions: [
253
+ React__default['default'].createElement(Button, { key: 'cancel', size: isMobile ? "small" : "regular", theme: "red", onClick: function () {
254
+ setShowRestartConfirmModal(false);
255
+ } }, "No"),
256
+ React__default['default'].createElement(Button, { key: 'confirm', size: isMobile ? "small" : "regular", theme: "confirm", onClick: function () {
257
+ restart();
258
+ setShowRestartConfirmModal(false);
259
+ } }, "Yes"),
260
+ ] })),
261
+ showFileInput && React__default['default'].createElement(DrawingTool_styles.ModalOverlay, null,
262
+ React__default['default'].createElement(FileInput, { isMobile: isMobile, dismiss: function () { return setShowFileInput(false); }, onImageUploaded: onImageUploaded, minImageSize: props.minImageUploadSize })));
263
+ };
264
+ Drawing.defaultProps = {
265
+ prompt: 'Draw your Animal',
266
+ showHeader: true,
267
+ onBack: function () { },
268
+ onSave: function () { },
269
+ showPaperBackground: true,
270
+ disableCameraUpload: false,
271
+ disableAutoCache: false,
272
+ cacheKey: 'nzk-sketch-cache',
273
+ openUploadPopupOnStart: false
274
+ };
275
+
276
+ module.exports = Drawing;
277
+ //# sourceMappingURL=DrawingTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrawingTool.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,6 @@
1
+ import { Story } from "@storybook/react";
2
+ import { Meta } from "@storybook/react/types-6-0";
3
+ import { Props as DrawingToolProps } from "./DrawingTool";
4
+ declare const _default: Meta<import("@storybook/react").Args>;
5
+ export default _default;
6
+ export declare const Primary: Story<DrawingToolProps>;
@@ -0,0 +1,41 @@
1
+ import { Orientation } from './DrawingTool';
2
+ export declare const Container: import("styled-components").StyledComponent<"div", any, {
3
+ maxWidth: number;
4
+ maxHeight: number;
5
+ }, never>;
6
+ export declare const Tool: import("styled-components").StyledComponent<"div", any, {
7
+ orientation: Orientation;
8
+ hasHeader: boolean;
9
+ headerHeight: number;
10
+ }, never>;
11
+ export declare const ButtonGroup: import("styled-components").StyledComponent<"div", any, {
12
+ orientation: Orientation;
13
+ buttonSize: number;
14
+ }, never>;
15
+ export declare const ColourButtonGroup: import("styled-components").StyledComponent<"div", any, {
16
+ orientation: Orientation;
17
+ buttonSize: number;
18
+ }, never>;
19
+ export declare const ScrollableColours: import("styled-components").StyledComponent<"div", any, {}, never>;
20
+ export declare const LeftToolbarContainer: import("styled-components").StyledComponent<"div", any, {
21
+ orientation: Orientation;
22
+ buttonSize: number;
23
+ disabled: boolean;
24
+ }, never>;
25
+ export declare const RightToolbarContainer: import("styled-components").StyledComponent<"div", any, {
26
+ orientation: Orientation;
27
+ buttonSize: number;
28
+ disabled: boolean;
29
+ }, never>;
30
+ export declare const SketchContainer: import("styled-components").StyledComponent<"div", any, {
31
+ orientation: Orientation;
32
+ }, never>;
33
+ export declare const PaperBackground: import("styled-components").StyledComponent<"div", any, {
34
+ cutMode?: boolean | undefined;
35
+ }, never>;
36
+ export declare const InSketchActions: import("styled-components").StyledComponent<"div", any, {}, never>;
37
+ export declare const InSketchAction: import("styled-components").StyledComponent<"div", any, {}, never>;
38
+ export declare const ModalOverlay: import("styled-components").StyledComponent<"div", any, {}, never>;
39
+ export declare const ImageToPlaceContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
40
+ export declare const ImageToPlace: import("styled-components").StyledComponent<"img", any, {}, never>;
41
+ export declare const CutImageTutorial: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -0,0 +1,54 @@
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 getToolbarWidth = function (props) {
13
+ if (props.orientation === 'PORTRAIT')
14
+ return '100%';
15
+ return props.buttonSize + 10 + "px";
16
+ };
17
+ var getToolbarHeight = function (props) {
18
+ if (props.orientation === 'LANDSCAPE')
19
+ return '100%';
20
+ return props.buttonSize + 10 + "px";
21
+ };
22
+ var Container = styled__default['default'].div(templateObject_1 || (templateObject_1 = tslib.__makeTemplateObject(["\n position: relative;\n width: calc(100% - 40px);\n height: 100%;\n margin-left: auto;\n margin-right: auto;\n max-width: ", "px;\n max-height: ", "px;\n * {\n box-sizing: border-box;\n }\n"], ["\n position: relative;\n width: calc(100% - 40px);\n height: 100%;\n margin-left: auto;\n margin-right: auto;\n max-width: ", "px;\n max-height: ", "px;\n * {\n box-sizing: border-box;\n }\n"])), function (props) { return props.maxWidth; }, function (props) { return props.maxHeight; });
23
+ var Tool = styled__default['default'].div(templateObject_2 || (templateObject_2 = tslib.__makeTemplateObject(["\n position: absolute;\n top: ", "px;\n height: ", ";\n width: 100%;\n display: flex;\n flex-shrink: none;\n flex-direction: ", ";\n"], ["\n position: absolute;\n top: ", "px;\n height: ", ";\n width: 100%;\n display: flex;\n flex-shrink: none;\n flex-direction: ", ";\n"])), function (props) { return props.hasHeader ? props.headerHeight : 0; }, function (props) { return props.hasHeader ? "calc(100% - " + (props.headerHeight + 20) + "px)" : 'calc(100% - 20px)'; }, function (props) { return props.orientation === 'LANDSCAPE' ? 'row' : 'column'; });
24
+ var ButtonGroup = styled__default['default'].div(templateObject_3 || (templateObject_3 = tslib.__makeTemplateObject(["\n display: flex;\n flex-shrink: none;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n > div {\n user-select: none;\n margin-bottom: ", ";\n margin-right: ", ";\n }\n"], ["\n display: flex;\n flex-shrink: none;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n > div {\n user-select: none;\n margin-bottom: ", ";\n margin-right: ", ";\n }\n"])), function (props) { return props.orientation === 'LANDSCAPE' ? Math.floor(props.buttonSize / 5) + "px" : 0; }, function (props) { return props.orientation === 'PORTRAIT' ? Math.floor(props.buttonSize / 5) + "px" : 0; });
25
+ styled__default['default'].div(templateObject_4 || (templateObject_4 = tslib.__makeTemplateObject(["\n background-color: rgba(255, 255, 255, .5);\n border-radius: ", "px;\n padding-top: 8px;\n padding-bottom: 8px;\n padding-left: ", ";\n padding-right: ", ";\n display: flex;\n height: 70%;\n flex-wrap: ", ";\n justify-content: center;\n align-items: center;\n overflow: hidden;\n > div {\n margin-bottom: ", ";\n margin-right: ", ";\n }\n"], ["\n background-color: rgba(255, 255, 255, .5);\n border-radius: ", "px;\n padding-top: 8px;\n padding-bottom: 8px;\n padding-left: ", ";\n padding-right: ", ";\n display: flex;\n height: 70%;\n flex-wrap: ", ";\n justify-content: center;\n align-items: center;\n overflow: hidden;\n > div {\n margin-bottom: ", ";\n margin-right: ", ";\n }\n"])), function (props) { return props.buttonSize; }, function (props) { return props.orientation === 'PORTRAIT' ? '8px' : 0; }, function (props) { return props.orientation === 'PORTRAIT' ? '8px' : 0; }, function (props) { return props.orientation === 'LANDSCAPE' ? 'wrap' : 'no-wrap'; }, function (props) { return props.orientation === 'LANDSCAPE' ? Math.floor(props.buttonSize / 5) + "px" : 0; }, function (props) { return props.orientation === 'PORTRAIT' ? Math.floor(props.buttonSize / 5) + "px" : 0; });
26
+ styled__default['default'].div(templateObject_5 || (templateObject_5 = tslib.__makeTemplateObject(["\n overflow: hidden;\n"], ["\n overflow: hidden;\n"])));
27
+ var LeftToolbarContainer = styled__default['default'].div(templateObject_6 || (templateObject_6 = tslib.__makeTemplateObject(["\n position: relative;\n pointer-events: ", ";\n opacity: ", ";\n filter: ", ";\n width: ", ";\n height: ", ";\n order: ", ";\n display: flex;\n flex-direction: ", ";\n justify-content: space-between;\n align-items: center;\n"], ["\n position: relative;\n pointer-events: ", ";\n opacity: ", ";\n filter: ", ";\n width: ", ";\n height: ", ";\n order: ", ";\n display: flex;\n flex-direction: ", ";\n justify-content: space-between;\n align-items: center;\n"])), function (props) { return props.disabled ? 'none' : 'all'; }, function (props) { return props.disabled ? 0.5 : 1; }, function (props) { return props.disabled ? 'grayscale(100%)' : 'none'; }, function (props) { return getToolbarWidth(props); }, function (props) { return getToolbarHeight(props); }, function (props) { return props.orientation === 'LANDSCAPE' ? 1 : 2; }, function (props) { return props.orientation === 'LANDSCAPE' ? 'column' : 'row'; });
28
+ var RightToolbarContainer = styled__default['default'].div(templateObject_7 || (templateObject_7 = tslib.__makeTemplateObject(["\n position: relative;\n width: ", ";\n max-height: ", ";\n opacity: ", ";\n pointer-events: ", ";\n filter: ", ";\n order: 3;\n justify-content: space-between;\n display: flex;\n flex-direction: ", ";\n margin-top: ", ";\n align-items: center;\n"], ["\n position: relative;\n width: ", ";\n max-height: ", ";\n opacity: ", ";\n pointer-events: ", ";\n filter: ", ";\n order: 3;\n justify-content: space-between;\n display: flex;\n flex-direction: ", ";\n margin-top: ", ";\n align-items: center;\n"])), function (props) { return getToolbarWidth(props); }, function (props) { return getToolbarHeight(props); }, function (props) { return props.disabled ? 0.5 : 1; }, function (props) { return props.disabled ? 'none' : 'all'; }, function (props) { return props.disabled ? 'grayscale(100%)' : 'none'; }, function (props) { return props.orientation === 'LANDSCAPE' ? 'column' : 'row'; }, function (props) { return props.orientation === 'PORTRAIT' ? '10px' : '0px'; });
29
+ var SketchContainer = styled__default['default'].div(templateObject_8 || (templateObject_8 = tslib.__makeTemplateObject(["\n position: relative;\n flex: 1 1 auto;\n margin-left: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n order: ", ";\n\n .moveable-rotation .moveable-control.moveable-rotation-control {\n border: none !important;\n width: 24px !important;\n height: 24px !important;\n margin-top: -12px !important;\n margin-left: -12px !important;\n cursor: alias;\n opacity: 0;\n }\n\n .moveable-control {\n width: 24px !important;\n height: 24px !important;\n margin-top: -12px !important;\n margin-left: -12px !important;\n border: none !important;\n }\n\n .moveable-line.moveable-rotation-line {\n width: 4px !important;\n height: 40px !important;\n margin-left: -1px;\n }\n\n .moveable-line {\n height: 4px !important;\n }\n\n .moveable-origin {\n display: none !important;\n }\n}"], ["\n position: relative;\n flex: 1 1 auto;\n margin-left: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n order: ", ";\n\n .moveable-rotation .moveable-control.moveable-rotation-control {\n border: none !important;\n width: 24px !important;\n height: 24px !important;\n margin-top: -12px !important;\n margin-left: -12px !important;\n cursor: alias;\n opacity: 0;\n }\n\n .moveable-control {\n width: 24px !important;\n height: 24px !important;\n margin-top: -12px !important;\n margin-left: -12px !important;\n border: none !important;\n }\n\n .moveable-line.moveable-rotation-line {\n width: 4px !important;\n height: 40px !important;\n margin-left: -1px;\n }\n\n .moveable-line {\n height: 4px !important;\n }\n\n .moveable-origin {\n display: none !important;\n }\n}"])), function (props) { return props.orientation === 'LANDSCAPE' ? '10px' : '0px'; }, function (props) { return props.orientation === 'LANDSCAPE' ? '20px' : '0px'; }, function (props) { return props.orientation === 'LANDSCAPE' ? '0px' : '10px'; }, function (props) { return props.orientation === 'LANDSCAPE' ? 2 : 1; });
30
+ var PaperBackground = styled__default['default'].div(templateObject_9 || (templateObject_9 = tslib.__makeTemplateObject(["\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n box-shadow: 0px 4px 0px #C7C7C6;\n background: ", ";\n\n &:before, &:after {\n z-index: -1;\n position: absolute;\n content: \"\";\n bottom: 7px;\n left: 10px;\n width: 50%;\n top: 80%;\n max-width: 300px;\n background: rgba(0,0,0,.3);\n box-shadow: 0 15px 0px rgba(0,0,0,.3);\n transform: rotate(-3deg);\n }\n &:after {\n transform: rotate(3deg);\n right: 10px;\n left: auto;\n }\n"], ["\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n box-shadow: 0px 4px 0px #C7C7C6;\n background: ", ";\n\n &:before, &:after {\n z-index: -1;\n position: absolute;\n content: \"\";\n bottom: 7px;\n left: 10px;\n width: 50%;\n top: 80%;\n max-width: 300px;\n background: rgba(0,0,0,.3);\n box-shadow: 0 15px 0px rgba(0,0,0,.3);\n transform: rotate(-3deg);\n }\n &:after {\n transform: rotate(3deg);\n right: 10px;\n left: auto;\n }\n"])), function (props) { return props.cutMode
31
+ ? 'repeating-linear-gradient(-45deg, #ebebeb, #ebebeb 20px, #dfdfdf 20px, #dfdfdf 40px)'
32
+ : '#ebebeb'; });
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
+ 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: absolute;\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: absolute;\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
+ 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
+ var ImageToPlace = styled__default['default'].img(templateObject_14 || (templateObject_14 = tslib.__makeTemplateObject(["\n position: absolute;\n width: 80%;\n max-width: 400px;\n @media (max-width: 768px) {\n max-width: 200px;\n }\n @media (max-height: 600px) {\n width: auto;\n height: 80%;\n max-width: none;\n max-height: 200px;\n }\n}\n"], ["\n position: absolute;\n width: 80%;\n max-width: 400px;\n @media (max-width: 768px) {\n max-width: 200px;\n }\n @media (max-height: 600px) {\n width: auto;\n height: 80%;\n max-width: none;\n max-height: 200px;\n }\n}\n"])));
38
+ var CutImageTutorial = 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"], ["\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"])));
39
+ 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;
40
+
41
+ exports.ButtonGroup = ButtonGroup;
42
+ exports.Container = Container;
43
+ exports.CutImageTutorial = CutImageTutorial;
44
+ exports.ImageToPlace = ImageToPlace;
45
+ exports.ImageToPlaceContainer = ImageToPlaceContainer;
46
+ exports.InSketchAction = InSketchAction;
47
+ exports.InSketchActions = InSketchActions;
48
+ exports.LeftToolbarContainer = LeftToolbarContainer;
49
+ exports.ModalOverlay = ModalOverlay;
50
+ exports.PaperBackground = PaperBackground;
51
+ exports.RightToolbarContainer = RightToolbarContainer;
52
+ exports.SketchContainer = SketchContainer;
53
+ exports.Tool = Tool;
54
+ //# sourceMappingURL=DrawingTool.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrawingTool.styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,56 @@
1
+ /// <reference types="react" />
2
+ import { SketchActionMergeData } from './lib/SketchModel';
3
+ export declare const BrushSize: {
4
+ small: number;
5
+ medium: number;
6
+ large: number;
7
+ };
8
+ export declare type BrushType = 'fill' | 'line' | 'eraser';
9
+ export declare const Colours: {
10
+ rgb: number[];
11
+ hex: string;
12
+ }[];
13
+ export interface Colour {
14
+ rgb: number[];
15
+ hex: string;
16
+ }
17
+ declare type ToolMode = 'LOADING' | 'DRAW' | 'CUT' | 'PLACE';
18
+ export interface Props {
19
+ cache?: string;
20
+ }
21
+ export declare const DrawingToolProvider: import("react").ComponentType<import("unstated-next").ContainerProviderProps<Props>>;
22
+ export declare const useDrawingTool: () => {
23
+ initSketch: (containerEl: any) => void;
24
+ initSketchCut: (containerEl: any, imageToCut: HTMLImageElement, onImageCut: () => void) => void;
25
+ exportSketch: (options?: {
26
+ crop: boolean;
27
+ }) => string;
28
+ exportSketchCut: () => string;
29
+ currentColour: {
30
+ rgb: number[];
31
+ hex: string;
32
+ };
33
+ setCurrentColour: import("react").Dispatch<import("react").SetStateAction<{
34
+ rgb: number[];
35
+ hex: string;
36
+ }>>;
37
+ brushOpacity: number;
38
+ setBruchOpacity: import("react").Dispatch<import("react").SetStateAction<number>>;
39
+ brushSize: number;
40
+ setBrushSize: import("react").Dispatch<import("react").SetStateAction<number>>;
41
+ brushType: string;
42
+ setBrushType: import("react").Dispatch<import("react").SetStateAction<string>>;
43
+ undo: () => void;
44
+ redo: () => void;
45
+ restart: () => void;
46
+ onSketchChange: () => void;
47
+ setCacheKey: import("react").Dispatch<import("react").SetStateAction<string>>;
48
+ setAutoCache: import("react").Dispatch<import("react").SetStateAction<boolean>>;
49
+ clearCache: () => void;
50
+ resetCut: () => void;
51
+ mergeImage: (data: SketchActionMergeData) => void | null;
52
+ setToolMode: import("react").Dispatch<import("react").SetStateAction<ToolMode>>;
53
+ toolMode: ToolMode;
54
+ exportCache: () => string | null;
55
+ };
56
+ export {};