nzk-react-components 0.4.3 → 0.4.4

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 (90) hide show
  1. package/dist/assets/icons/bear.svg +177 -0
  2. package/dist/assets/icons/bear.svg.js +606 -0
  3. package/dist/assets/icons/bear.svg.js.map +1 -0
  4. package/dist/assets/icons/flamingo.svg +85 -0
  5. package/dist/assets/icons/flamingo.svg.js +287 -0
  6. package/dist/assets/icons/flamingo.svg.js.map +1 -0
  7. package/dist/assets/icons/giraffe.svg +259 -0
  8. package/dist/assets/icons/giraffe.svg.js +756 -0
  9. package/dist/assets/icons/giraffe.svg.js.map +1 -0
  10. package/dist/assets/icons/penguin.svg +231 -0
  11. package/dist/assets/icons/penguin.svg.js +718 -0
  12. package/dist/assets/icons/penguin.svg.js.map +1 -0
  13. package/dist/components/DrawingTool/DrawingTool.d.ts +29 -0
  14. package/dist/components/DrawingTool/DrawingTool.js +277 -0
  15. package/dist/components/DrawingTool/DrawingTool.js.map +1 -0
  16. package/dist/components/DrawingTool/DrawingTool.stories.d.ts +6 -0
  17. package/dist/components/DrawingTool/DrawingTool.styles.d.ts +41 -0
  18. package/dist/components/DrawingTool/DrawingTool.styles.js +54 -0
  19. package/dist/components/DrawingTool/DrawingTool.styles.js.map +1 -0
  20. package/dist/components/DrawingTool/DrawingToolProvider.d.ts +56 -0
  21. package/dist/components/DrawingTool/DrawingToolProvider.js +182 -0
  22. package/dist/components/DrawingTool/DrawingToolProvider.js.map +1 -0
  23. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.d.ts +21 -0
  24. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.js +89 -0
  25. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.js.map +1 -0
  26. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.styles.d.ts +9 -0
  27. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.styles.js +18 -0
  28. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.styles.js.map +1 -0
  29. package/dist/components/DrawingTool/components/ColourToolbar/index.d.ts +2 -0
  30. package/dist/components/DrawingTool/components/ColourToolbar/index.js +8 -0
  31. package/dist/components/DrawingTool/components/ColourToolbar/index.js.map +1 -0
  32. package/dist/components/DrawingTool/components/FileInput/FileInput.d.ts +9 -0
  33. package/dist/components/DrawingTool/components/FileInput/FileInput.js +88 -0
  34. package/dist/components/DrawingTool/components/FileInput/FileInput.js.map +1 -0
  35. package/dist/components/DrawingTool/components/FileInput/FileInput.styles.d.ts +4 -0
  36. package/dist/components/DrawingTool/components/FileInput/FileInput.styles.js +22 -0
  37. package/dist/components/DrawingTool/components/FileInput/FileInput.styles.js.map +1 -0
  38. package/dist/components/DrawingTool/components/FileInput/index.d.ts +2 -0
  39. package/dist/components/DrawingTool/components/FileInput/index.js +8 -0
  40. package/dist/components/DrawingTool/components/FileInput/index.js.map +1 -0
  41. package/dist/components/DrawingTool/components/Header/Header.d.ts +9 -0
  42. package/dist/components/DrawingTool/components/Header/Header.js +38 -0
  43. package/dist/components/DrawingTool/components/Header/Header.js.map +1 -0
  44. package/dist/components/DrawingTool/components/Header/index.d.ts +2 -0
  45. package/dist/components/DrawingTool/components/Header/index.js +8 -0
  46. package/dist/components/DrawingTool/components/Header/index.js.map +1 -0
  47. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.d.ts +8 -0
  48. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.js +31 -0
  49. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.js.map +1 -0
  50. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.styles.d.ts +9 -0
  51. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.styles.js +18 -0
  52. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.styles.js.map +1 -0
  53. package/dist/components/DrawingTool/components/OpacityToggle/index.d.ts +2 -0
  54. package/dist/components/DrawingTool/components/OpacityToggle/index.js +8 -0
  55. package/dist/components/DrawingTool/components/OpacityToggle/index.js.map +1 -0
  56. package/dist/components/DrawingTool/components/Placeable/index.d.ts +9 -0
  57. package/dist/components/DrawingTool/components/Placeable/index.js +22 -0
  58. package/dist/components/DrawingTool/components/Placeable/index.js.map +1 -0
  59. package/dist/components/DrawingTool/index.d.ts +2 -0
  60. package/dist/components/DrawingTool/lib/Sketch.d.ts +90 -0
  61. package/dist/components/DrawingTool/lib/Sketch.js +414 -0
  62. package/dist/components/DrawingTool/lib/Sketch.js.map +1 -0
  63. package/dist/components/DrawingTool/lib/SketchCut.d.ts +22 -0
  64. package/dist/components/DrawingTool/lib/SketchCut.js +98 -0
  65. package/dist/components/DrawingTool/lib/SketchCut.js.map +1 -0
  66. package/dist/components/DrawingTool/lib/SketchCutModel.d.ts +6 -0
  67. package/dist/components/DrawingTool/lib/SketchCutModel.js +20 -0
  68. package/dist/components/DrawingTool/lib/SketchCutModel.js.map +1 -0
  69. package/dist/components/DrawingTool/lib/SketchLayer.d.ts +27 -0
  70. package/dist/components/DrawingTool/lib/SketchLayer.js +59 -0
  71. package/dist/components/DrawingTool/lib/SketchLayer.js.map +1 -0
  72. package/dist/components/DrawingTool/lib/SketchModel.d.ts +65 -0
  73. package/dist/components/DrawingTool/lib/SketchModel.js +137 -0
  74. package/dist/components/DrawingTool/lib/SketchModel.js.map +1 -0
  75. package/dist/components/DrawingTool/lib/SketchStrokeModel.d.ts +33 -0
  76. package/dist/components/DrawingTool/lib/SketchStrokeModel.js +48 -0
  77. package/dist/components/DrawingTool/lib/SketchStrokeModel.js.map +1 -0
  78. package/dist/components/DrawingTool/lib/createInteractionSurface.d.ts +16 -0
  79. package/dist/components/DrawingTool/lib/createInteractionSurface.js +56 -0
  80. package/dist/components/DrawingTool/lib/createInteractionSurface.js.map +1 -0
  81. package/dist/components/DrawingTool/lib/trace.d.ts +3 -0
  82. package/dist/components/DrawingTool/lib/trace.js +24 -0
  83. package/dist/components/DrawingTool/lib/trace.js.map +1 -0
  84. package/dist/components/DrawingTool/lib/trimCanvas.d.ts +2 -0
  85. package/dist/components/DrawingTool/lib/trimCanvas.js +42 -0
  86. package/dist/components/DrawingTool/lib/trimCanvas.js.map +1 -0
  87. package/dist/components/Icon/icons.d.ts +4 -0
  88. package/dist/components/Icon/icons.js +8 -0
  89. package/dist/components/Icon/icons.js.map +1 -1
  90. package/package.json +1 -1
@@ -0,0 +1,182 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var unstatedNext = require('unstated-next');
7
+ var Sketch = require('./lib/Sketch.js');
8
+ var SketchCut = require('./lib/SketchCut.js');
9
+
10
+ var BrushSize = {
11
+ small: 7,
12
+ medium: 21,
13
+ large: 42
14
+ };
15
+ var Colours = [
16
+ { rgb: [53, 162, 218], hex: '#35a2da' },
17
+ { rgb: [0, 156, 149], hex: '#009c95' },
18
+ { rgb: [0, 137, 54], hex: '#008936' },
19
+ { rgb: [147, 192, 31], hex: '#93c01f' },
20
+ { rgb: [201, 216, 0], hex: '#c9d800' },
21
+ { rgb: [255, 236, 0], hex: '#ffec00' },
22
+ { rgb: [255, 145, 0], hex: '#ff9100' },
23
+ { rgb: [255, 0, 25], hex: '#ff0019' },
24
+ { rgb: [255, 0, 164], hex: '#ff00a4' },
25
+ { rgb: [186, 13, 108], hex: '#ba0d6c' },
26
+ { rgb: [135, 0, 198], hex: '#8700c6' },
27
+ { rgb: [104, 59, 17], hex: '#683b11' },
28
+ { rgb: [29, 29, 27], hex: '#1d1d1b' },
29
+ { rgb: [134, 134, 134], hex: '#868686' },
30
+ { rgb: [255, 255, 255], hex: '#FFFFFF' },
31
+ ];
32
+ var DrawingToolState = function (props) {
33
+ var sketchRef = React.useRef();
34
+ var sketchCutRef = React.useRef();
35
+ var _a = React.useState(true), autoCache = _a[0], setAutoCache = _a[1];
36
+ var _b = React.useState('nzk-sketch-cache'), cacheKey = _b[0], setCacheKey = _b[1];
37
+ var _c = React.useState(BrushSize.small), brushSize = _c[0], setBrushSize = _c[1];
38
+ var _d = React.useState('line'), brushType = _d[0], setBrushType = _d[1];
39
+ var _e = React.useState(Colours[0]), currentColour = _e[0], setCurrentColour = _e[1];
40
+ var _f = React.useState(1), brushOpacity = _f[0], setBruchOpacity = _f[1];
41
+ var _g = React.useState('LOADING'), toolMode = _g[0], setToolMode = _g[1];
42
+ var setSketchRef = React.useCallback(function (node) {
43
+ sketchRef.current = node;
44
+ if (sketchRef.current) {
45
+ sketchRef.current.setBrush({
46
+ size: brushSize,
47
+ colour: currentColour.rgb,
48
+ opacity: brushOpacity,
49
+ fill: brushType === 'fill',
50
+ eraser: brushType === 'eraser'
51
+ });
52
+ }
53
+ }, []);
54
+ var setSketchCutRef = React.useCallback(function (node) {
55
+ sketchCutRef.current = node;
56
+ }, []);
57
+ React.useEffect(function () {
58
+ if (sketchRef && sketchRef.current)
59
+ sketchRef.current.setBrush({
60
+ size: brushSize,
61
+ colour: currentColour.rgb,
62
+ opacity: brushType === 'eraser' ? 1 : brushOpacity,
63
+ fill: brushType === 'fill',
64
+ eraser: brushType === 'eraser'
65
+ });
66
+ }, [sketchRef.current, brushSize, currentColour, brushOpacity, brushType]);
67
+ var onSketchChange = function () {
68
+ if (!autoCache || !sketchRef.current)
69
+ return;
70
+ window.localStorage.setItem(cacheKey, JSON.stringify(sketchRef.current.serialize()));
71
+ };
72
+ var clearCache = function () {
73
+ window.localStorage.removeItem(cacheKey);
74
+ };
75
+ var getCache = function () {
76
+ return (props && props.cache) || window.localStorage.getItem(cacheKey);
77
+ };
78
+ var initSketch = function (containerEl) {
79
+ var data;
80
+ if (sketchRef.current) {
81
+ data = sketchRef.current.serialize();
82
+ }
83
+ else {
84
+ var cachedRawData = getCache();
85
+ if (cachedRawData) {
86
+ data = JSON.parse(cachedRawData);
87
+ }
88
+ }
89
+ setSketchRef(new Sketch({
90
+ containerEl: containerEl,
91
+ sketchData: data,
92
+ onChange: onSketchChange,
93
+ onReady: function () {
94
+ setToolMode('DRAW');
95
+ }
96
+ }));
97
+ };
98
+ var initSketchCut = function (containerEl, imageToCut, onImageCut) {
99
+ setSketchCutRef(new SketchCut({
100
+ containerEl: containerEl,
101
+ imageToCut: imageToCut,
102
+ onImageCut: onImageCut
103
+ }));
104
+ };
105
+ var resetCut = function () {
106
+ if (sketchCutRef && sketchCutRef.current) {
107
+ sketchCutRef.current.resetCut();
108
+ }
109
+ };
110
+ var exportSketch = function (options) {
111
+ if (options === void 0) { options = { crop: true }; }
112
+ if (sketchRef.current) {
113
+ return sketchRef.current.export(options);
114
+ }
115
+ return '';
116
+ };
117
+ var exportSketchCut = function () {
118
+ if (sketchCutRef.current) {
119
+ return sketchCutRef.current.export({ crop: true });
120
+ }
121
+ return '';
122
+ };
123
+ var exportCache = function () {
124
+ if (sketchRef.current) {
125
+ return JSON.stringify(sketchRef.current.serialize());
126
+ }
127
+ return null;
128
+ };
129
+ var mergeImage = function (data) {
130
+ if (sketchRef.current) {
131
+ return sketchRef.current.mergeImage(data);
132
+ }
133
+ return null;
134
+ };
135
+ var undo = function () {
136
+ if (sketchRef.current)
137
+ sketchRef.current.undo();
138
+ };
139
+ var redo = function () {
140
+ if (sketchRef.current)
141
+ sketchRef.current.redo();
142
+ };
143
+ var restart = function () {
144
+ if (sketchRef.current)
145
+ sketchRef.current.restart();
146
+ };
147
+ return {
148
+ initSketch: initSketch,
149
+ initSketchCut: initSketchCut,
150
+ exportSketch: exportSketch,
151
+ exportSketchCut: exportSketchCut,
152
+ currentColour: currentColour,
153
+ setCurrentColour: setCurrentColour,
154
+ brushOpacity: brushOpacity,
155
+ setBruchOpacity: setBruchOpacity,
156
+ brushSize: brushSize,
157
+ setBrushSize: setBrushSize,
158
+ brushType: brushType,
159
+ setBrushType: setBrushType,
160
+ undo: undo,
161
+ redo: redo,
162
+ restart: restart,
163
+ onSketchChange: onSketchChange,
164
+ setCacheKey: setCacheKey,
165
+ setAutoCache: setAutoCache,
166
+ clearCache: clearCache,
167
+ resetCut: resetCut,
168
+ mergeImage: mergeImage,
169
+ setToolMode: setToolMode,
170
+ toolMode: toolMode,
171
+ exportCache: exportCache
172
+ };
173
+ };
174
+ var DrawingToolProviderContainer = unstatedNext.createContainer(DrawingToolState);
175
+ var DrawingToolProvider = DrawingToolProviderContainer.Provider;
176
+ var useDrawingTool = DrawingToolProviderContainer.useContainer;
177
+
178
+ exports.BrushSize = BrushSize;
179
+ exports.Colours = Colours;
180
+ exports.DrawingToolProvider = DrawingToolProvider;
181
+ exports.useDrawingTool = useDrawingTool;
182
+ //# sourceMappingURL=DrawingToolProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrawingToolProvider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,21 @@
1
+ /// <reference types="react" />
2
+ import { Orientation } from '../../DrawingTool';
3
+ import { Colour } from '../../DrawingToolProvider';
4
+ export interface Props {
5
+ size: number;
6
+ orientation: Orientation;
7
+ currentColour: Colour;
8
+ }
9
+ declare const ColourToolbar: {
10
+ (props: Props): JSX.Element;
11
+ defaultProps: {
12
+ mode: string;
13
+ size: number;
14
+ onSelectColour: () => void;
15
+ currentColor: {
16
+ rgb: number[];
17
+ hex: string;
18
+ };
19
+ };
20
+ };
21
+ export default ColourToolbar;
@@ -0,0 +1,89 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var ColourToolbar_styles = require('./ColourToolbar.styles.js');
5
+ var Button = require('../../../Button/Button.js');
6
+ var Icon = require('../../../Icon/Icon.js');
7
+ var DrawingToolProvider = require('../../DrawingToolProvider.js');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
+
11
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
+
13
+ var ColourToolbar = function (props) {
14
+ var scrollRef = React.useRef(null);
15
+ var _a = React.useState(true), disableScrollUp = _a[0], setDisableScrollUp = _a[1];
16
+ var _b = React.useState(false), disableScrollDown = _b[0], setDisableScrollDown = _b[1];
17
+ var _c = DrawingToolProvider.useDrawingTool(), setCurrentColour = _c.setCurrentColour, brushType = _c.brushType, setBrushType = _c.setBrushType;
18
+ var onSetColour = function (colour) {
19
+ if (brushType === 'eraser') {
20
+ setBrushType('line');
21
+ }
22
+ setCurrentColour(colour);
23
+ };
24
+ var onScroll = function (e) {
25
+ if (props.orientation === 'LANDSCAPE') {
26
+ if (e.target.scrollTop === 0) {
27
+ setDisableScrollUp(true);
28
+ }
29
+ else if (disableScrollUp) {
30
+ setDisableScrollUp(false);
31
+ }
32
+ if ((e.target.scrollHeight - e.target.scrollTop) <= e.target.clientHeight + 3) {
33
+ setDisableScrollDown(true);
34
+ }
35
+ else {
36
+ setDisableScrollDown(false);
37
+ }
38
+ }
39
+ else {
40
+ if (e.target.scrollLeft === 0) {
41
+ setDisableScrollUp(true);
42
+ }
43
+ else if (disableScrollUp) {
44
+ setDisableScrollUp(false);
45
+ }
46
+ if ((e.target.scrollWidth - e.target.scrollLeft) <= e.target.clientWidth + 3) {
47
+ setDisableScrollDown(true);
48
+ }
49
+ else {
50
+ setDisableScrollDown(false);
51
+ }
52
+ }
53
+ };
54
+ var onClickUp = function () {
55
+ if (!disableScrollUp && scrollRef && scrollRef.current) {
56
+ if (props.orientation === 'LANDSCAPE') {
57
+ scrollRef.current.scrollTop = Math.max(0, scrollRef.current.scrollTop - props.size * 3);
58
+ }
59
+ else {
60
+ scrollRef.current.scrollLeft = Math.max(0, scrollRef.current.scrollLeft - props.size * 3);
61
+ }
62
+ }
63
+ };
64
+ var onClickDown = function () {
65
+ if (!disableScrollDown && scrollRef && scrollRef.current) {
66
+ if (props.orientation === 'LANDSCAPE') {
67
+ scrollRef.current.scrollTop = Math.min(scrollRef.current.scrollHeight, scrollRef.current.scrollTop + props.size * 3);
68
+ }
69
+ else {
70
+ scrollRef.current.scrollLeft = Math.min(scrollRef.current.scrollWidth, scrollRef.current.scrollLeft + props.size * 3);
71
+ }
72
+ }
73
+ };
74
+ return React__default['default'].createElement(ColourToolbar_styles.Container, { orientation: props.orientation, size: props.size },
75
+ React__default['default'].createElement(Button, { disabled: disableScrollUp, round: true, height: props.size, theme: "white", onClick: onClickUp },
76
+ React__default['default'].createElement(Icon, { name: props.orientation === 'LANDSCAPE' ? 'drawing-tool-arrow-up' : 'drawing-tool-arrow-left', fill: disableScrollUp ? '#c2bebe' : props.currentColour.hex })),
77
+ React__default['default'].createElement(ColourToolbar_styles.ScrollContainer, { ref: scrollRef, onScroll: onScroll, orientation: props.orientation, size: props.size }, DrawingToolProvider.Colours.map(function (c) { return (React__default['default'].createElement(Button, { key: c.hex, height: Math.floor(props.size * .9), round: true, dropShadowColor: "transparent", backgroundColor: c.hex, strokeColor: c.hex, onClick: function () { return onSetColour(c); } })); })),
78
+ React__default['default'].createElement(Button, { disabled: disableScrollDown, round: true, height: props.size, theme: "white", onClick: onClickDown },
79
+ React__default['default'].createElement(Icon, { name: props.orientation === 'LANDSCAPE' ? 'drawing-tool-arrow-down' : 'drawing-tool-arrow-right', fill: disableScrollDown ? '#c2bebe' : props.currentColour.hex })));
80
+ };
81
+ ColourToolbar.defaultProps = {
82
+ mode: 'landcape',
83
+ size: 80,
84
+ onSelectColour: function () { },
85
+ currentColor: DrawingToolProvider.Colours[0]
86
+ };
87
+
88
+ module.exports = ColourToolbar;
89
+ //# sourceMappingURL=ColourToolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColourToolbar.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,9 @@
1
+ import { Orientation } from '../../DrawingTool';
2
+ export declare const Container: import("styled-components").StyledComponent<"div", any, {
3
+ orientation: Orientation;
4
+ size: number;
5
+ }, never>;
6
+ export declare const ScrollContainer: import("styled-components").StyledComponent<"div", any, {
7
+ orientation: Orientation;
8
+ size: number;
9
+ }, never>;
@@ -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 align-content: flex-start;\n flex-wrap: ", ";\n height: ", ";\n width: ", ";\n"], ["\n display: flex;\n justify-content: center;\n align-items: center;\n align-content: flex-start;\n flex-wrap: ", ";\n height: ", ";\n width: ", ";\n"])), function (props) { return props.orientation === 'LANDSCAPE' ? 'wrap' : 'no-wrap'; }, function (props) { return props.orientation === 'PORTRAIT' ? 'auto' : '80%'; }, function (props) { return props.orientation === 'PORTRAIT' ? '80%' : 'auto'; });
13
+ var ScrollContainer = styled__default['default'].div(templateObject_2 || (templateObject_2 = tslib.__makeTemplateObject(["\n height: ", ";\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 margin-bottom: ", ";\n margin-left: ", ";\n margin-right: ", ";\n position: relative;\n flex: 1 1 auto;\n display: flex;\n flex-wrap: ", ";\n justify-content: ", ";;\n align-items: center;\n -ms-overflow-style: none;\n scrollbar-width: none;\n overflow: scroll;\n scroll-behavior: smooth;\n &::-webkit-scrollbar {\n display: none;\n }\n > div {\n margin-bottom: ", ";\n margin-right: ", ";\n }\n"], ["\n height: ", ";\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 margin-bottom: ", ";\n margin-left: ", ";\n margin-right: ", ";\n position: relative;\n flex: 1 1 auto;\n display: flex;\n flex-wrap: ", ";\n justify-content: ", ";;\n align-items: center;\n -ms-overflow-style: none;\n scrollbar-width: none;\n overflow: scroll;\n scroll-behavior: smooth;\n &::-webkit-scrollbar {\n display: none;\n }\n > div {\n margin-bottom: ", ";\n margin-right: ", ";\n }\n"])), function (props) { return "calc(100% - " + 3.5 * props.size + "px)"; }, function (props) { return props.size; }, function (props) { return props.orientation === 'PORTRAIT' ? '8px' : 0; }, function (props) { return props.orientation === 'PORTRAIT' ? '8px' : 0; }, function (props) { return props.orientation === 'PORTRAIT' ? '0px' : '7px'; }, function (props) { return props.orientation === 'PORTRAIT' ? '7px' : '0px'; }, function (props) { return props.orientation === 'PORTRAIT' ? '7px' : '0px'; }, function (props) { return props.orientation === 'LANDSCAPE' ? 'wrap' : 'no-wrap'; }, function (props) { return props.orientation === 'LANDSCAPE' ? 'center' : 'flex-start'; }, function (props) { return props.orientation === 'LANDSCAPE' ? Math.floor(props.size / 5) + "px" : 0; }, function (props) { return props.orientation === 'PORTRAIT' ? Math.floor(props.size / 5) + "px" : 0; });
14
+ var templateObject_1, templateObject_2;
15
+
16
+ exports.Container = Container;
17
+ exports.ScrollContainer = ScrollContainer;
18
+ //# sourceMappingURL=ColourToolbar.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColourToolbar.styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ import ColourToolbar from "./ColourToolbar";
2
+ export default ColourToolbar;
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var ColourToolbar = require('./ColourToolbar.js');
4
+
5
+
6
+
7
+ module.exports = ColourToolbar;
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ export interface Props {
3
+ dismiss?: () => void;
4
+ onImageUploaded?: (image: HTMLImageElement) => void;
5
+ minImageSize?: number;
6
+ isMobile: boolean;
7
+ }
8
+ declare const _default: (props: Props) => JSX.Element;
9
+ export default _default;
@@ -0,0 +1,88 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var React = require('react');
5
+ var reactDropzone = require('react-dropzone');
6
+ var FileInput_styles = require('./FileInput.styles.js');
7
+ var Button = require('../../../Button/Button.js');
8
+ var Icon = require('../../../Icon/Icon.js');
9
+
10
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
+
12
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
13
+
14
+ var bytesForHuman = function (bytes) {
15
+ var bytes$ = bytes;
16
+ var units = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];
17
+ var i = 0;
18
+ for (i; bytes$ > 1024; i += 1) {
19
+ bytes$ /= 1024;
20
+ }
21
+ return "" + parseFloat(bytes$.toFixed(1)) + units[i];
22
+ };
23
+ var FileInput = (function (props) {
24
+ function fileSizeValidator(file) {
25
+ var minSize = props.minImageSize || 1024 * 10;
26
+ if (file.size < minSize) {
27
+ return {
28
+ code: "image-to-small",
29
+ message: "This image is too small. Please pick an image over " + bytesForHuman(minSize)
30
+ };
31
+ }
32
+ return null;
33
+ }
34
+ var _a = reactDropzone.useDropzone({
35
+ accept: 'image/jpeg, image/png',
36
+ maxFiles: 1,
37
+ validator: fileSizeValidator
38
+ }), acceptedFiles = _a.acceptedFiles, fileRejections = _a.fileRejections, getRootProps = _a.getRootProps, getInputProps = _a.getInputProps, isDragActive = _a.isDragActive;
39
+ var _b = React.useState(true), supportDragAndDrop = _b[0], setSupportDragAndDrop = _b[1];
40
+ React.useEffect(function () {
41
+ if ('draggable' in document.createElement('span')) {
42
+ setSupportDragAndDrop(true);
43
+ }
44
+ else {
45
+ setSupportDragAndDrop(false);
46
+ }
47
+ }, []);
48
+ React.useEffect(function () {
49
+ if (acceptedFiles && acceptedFiles.length) {
50
+ var img_1 = new Image();
51
+ img_1.onload = function () {
52
+ if (props.onImageUploaded) {
53
+ props.onImageUploaded(img_1);
54
+ }
55
+ };
56
+ var reader = new FileReader();
57
+ reader.readAsDataURL(acceptedFiles[0]);
58
+ reader.onloadend = function (e) {
59
+ if (e.target) {
60
+ img_1.src = e.target.result;
61
+ }
62
+ };
63
+ }
64
+ }, [acceptedFiles]);
65
+ var ErrorMessage = fileRejections && fileRejections.length
66
+ ? React__default['default'].createElement(FileInput_styles.ErrorMessage, null, fileRejections[0].errors[0].message)
67
+ : null;
68
+ var onDismiss = function (ev) {
69
+ ev.stopPropagation();
70
+ if (props.dismiss)
71
+ props.dismiss();
72
+ };
73
+ return React__default['default'].createElement(FileInput_styles.Container, tslib.__assign({}, getRootProps()),
74
+ React__default['default'].createElement(FileInput_styles.QuitButton, { onClick: onDismiss },
75
+ React__default['default'].createElement(Button, { round: true, theme: 'red', size: props.isMobile ? "small" : "regular" },
76
+ React__default['default'].createElement(Icon, { name: 'close' }))),
77
+ React__default['default'].createElement("input", tslib.__assign({}, getInputProps())),
78
+ isDragActive
79
+ ? React__default['default'].createElement("p", null, "Drop your image here...")
80
+ : (React__default['default'].createElement(FileInput_styles.Instructions, null,
81
+ ErrorMessage,
82
+ React__default['default'].createElement("p", null, !supportDragAndDrop ? "Upload a drawing" : "Drag and drop a drawing here"),
83
+ supportDragAndDrop && React__default['default'].createElement("p", null, "Or"),
84
+ React__default['default'].createElement(Button, { theme: "primary", size: props.isMobile ? "small" : "regular" }, "Select Image"))));
85
+ });
86
+
87
+ module.exports = FileInput;
88
+ //# sourceMappingURL=FileInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileInput.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 QuitButton: 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 position: relative;\n display: flex;\n width: 100%;\n height: 100%;\n max-width: 900px;\n max-height: 675px;\n border-radius: 50px;\n justify-content: center;\n align-items: center;\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: 36px;\n @media (max-width: 768px) {\n font-size: 18px;\n max-width: 95%;\n max-height: 95%;\n }\n\n @media (max-height: 500px) {\n font-size: 18px;\n max-width: 90%;\n max-height: 90%;\n }\n"], ["\n position: relative;\n display: flex;\n width: 100%;\n height: 100%;\n max-width: 900px;\n max-height: 675px;\n border-radius: 50px;\n justify-content: center;\n align-items: center;\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: 36px;\n @media (max-width: 768px) {\n font-size: 18px;\n max-width: 95%;\n max-height: 95%;\n }\n\n @media (max-height: 500px) {\n font-size: 18px;\n max-width: 90%;\n max-height: 90%;\n }\n"])));
13
+ var Instructions = styled__default['default'].div(templateObject_2 || (templateObject_2 = tslib.__makeTemplateObject(["\n text-align: center;\n @media (max-width: 768px) {\n font-size: 20px;\n }\n"], ["\n text-align: center;\n @media (max-width: 768px) {\n font-size: 20px;\n }\n"])));
14
+ var QuitButton = styled__default['default'].div(templateObject_3 || (templateObject_3 = tslib.__makeTemplateObject(["\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(15px, -15px);\n @media (max-width: 768px) {\n transform: translate(10px, -10px);\n }\n"], ["\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(15px, -15px);\n @media (max-width: 768px) {\n transform: translate(10px, -10px);\n }\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 font-size: 20px;\n"], ["\n padding: 15px;\n border-radius: 10px;\n background-color: #E30514;\n color: white;\n font-size: 20px;\n"])));
16
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
17
+
18
+ exports.Container = Container;
19
+ exports.ErrorMessage = ErrorMessage;
20
+ exports.Instructions = Instructions;
21
+ exports.QuitButton = QuitButton;
22
+ //# sourceMappingURL=FileInput.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileInput.styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ import FileInput from "./FileInput";
2
+ export default FileInput;
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var FileInput = require('./FileInput.js');
4
+
5
+
6
+
7
+ module.exports = FileInput;
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ interface Props {
3
+ onBack: () => void;
4
+ onSave: () => void;
5
+ prompt: string;
6
+ height: number;
7
+ }
8
+ declare const _default: (props: Props) => JSX.Element;
9
+ export default _default;
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var React = require('react');
5
+ var styled = require('styled-components');
6
+ var DrawingToolProvider = require('../../DrawingToolProvider.js');
7
+ var Icon = require('../../../Icon/Icon.js');
8
+ var IconButton = require('../../../IconButton/IconButton.js');
9
+
10
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
+
12
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
13
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
14
+
15
+ var Container = styled__default['default'].div(templateObject_1 || (templateObject_1 = tslib.__makeTemplateObject(["\n position: relative;\n width: 100%;\n height: ", "px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 36px;\n color: white;\n font-family: 'Rammetto One';\n text-align: center;\n @media (max-width: 1024px) {\n font-size: 28px;\n }\n @media (max-width: 760px) {\n font-size: 20px;\n }\n @media (max-width: 560px) {\n > :nth-child(2) {\n display: none;\n } \n }\n"], ["\n position: relative;\n width: 100%;\n height: ", "px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 36px;\n color: white;\n font-family: 'Rammetto One';\n text-align: center;\n @media (max-width: 1024px) {\n font-size: 28px;\n }\n @media (max-width: 760px) {\n font-size: 20px;\n }\n @media (max-width: 560px) {\n > :nth-child(2) {\n display: none;\n } \n }\n"])), function (props) { return props.height; });
16
+ var getButtonSizeForHeight = function (height) {
17
+ if (height <= 50)
18
+ return 'x-small';
19
+ if (height <= 70)
20
+ return 'small';
21
+ return 'regular';
22
+ };
23
+ var Header = (function (props) {
24
+ var toolMode = DrawingToolProvider.useDrawingTool().toolMode;
25
+ var disableButtons = toolMode !== 'DRAW';
26
+ var onSave = function () {
27
+ if (!disableButtons)
28
+ props.onSave();
29
+ };
30
+ return React__default['default'].createElement(Container, { height: props.height },
31
+ React__default['default'].createElement(IconButton, { disabled: disableButtons, onClick: props.onBack, size: getButtonSizeForHeight(props.height), icon: React__default['default'].createElement(Icon, { name: 'arrow-left' }), theme: 'primary' }, "Back"),
32
+ props.prompt && (React__default['default'].createElement("div", null, props.prompt)),
33
+ React__default['default'].createElement(IconButton, { disabled: disableButtons, onClick: onSave, size: getButtonSizeForHeight(props.height), icon: React__default['default'].createElement(Icon, { name: 'tick' }), theme: 'confirm' }, "Save"));
34
+ });
35
+ var templateObject_1;
36
+
37
+ module.exports = Header;
38
+ //# sourceMappingURL=Header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ import Header from "./Header";
2
+ export default Header;
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var Header = require('./Header.js');
4
+
5
+
6
+
7
+ module.exports = Header;
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { Orientation } from '../../DrawingTool';
3
+ export interface Props {
4
+ orientation: Orientation;
5
+ buttonSize: number;
6
+ }
7
+ declare const _default: (props: Props) => JSX.Element;
8
+ export default _default;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var ReactTooltip = require('react-tooltip');
5
+ var Icon = require('../../../Icon/Icon.js');
6
+ var OpacityToggle_styles = require('./OpacityToggle.styles.js');
7
+ var DrawingToolProvider = require('../../DrawingToolProvider.js');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
+
11
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
+ var ReactTooltip__default = /*#__PURE__*/_interopDefaultLegacy(ReactTooltip);
13
+
14
+ var OpacityToggle = (function (props) {
15
+ var _a = DrawingToolProvider.useDrawingTool(), brushOpacity = _a.brushOpacity, setBruchOpacity = _a.setBruchOpacity, currentColour = _a.currentColour;
16
+ var toggleOpacity = function () {
17
+ setBruchOpacity(brushOpacity === 1 ? 0.5 : 1);
18
+ };
19
+ return React__default['default'].createElement("div", null,
20
+ React__default['default'].createElement(ReactTooltip__default['default'], { effect: "solid", delayShow: 750, multiline: true }),
21
+ React__default['default'].createElement(OpacityToggle_styles.Container, { "data-tip": brushOpacity === 0.5
22
+ ? 'Switch OFF color mixer'
23
+ : 'Switch ON color mixer', orientation: props.orientation, buttonSize: Math.floor(props.buttonSize * .8), onClick: toggleOpacity },
24
+ React__default['default'].createElement(OpacityToggle_styles.OpacityButton, { orientation: props.orientation, buttonSize: Math.floor(props.buttonSize * .9) },
25
+ React__default['default'].createElement(Icon, { fill: brushOpacity === 1 ? '#7A7A79' : currentColour.hex, name: 'drawing-tool-opacity-half' })),
26
+ React__default['default'].createElement(OpacityToggle_styles.OpacityButton, { orientation: props.orientation, buttonSize: Math.floor(props.buttonSize * .9) },
27
+ React__default['default'].createElement(Icon, { fill: brushOpacity < 1 ? '#7A7A79' : currentColour.hex, name: 'drawing-tool-opacity-full' }))));
28
+ });
29
+
30
+ module.exports = OpacityToggle;
31
+ //# sourceMappingURL=OpacityToggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpacityToggle.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,9 @@
1
+ import { Orientation } from '../../DrawingTool';
2
+ export declare const Container: import("styled-components").StyledComponent<"div", any, {
3
+ orientation: Orientation;
4
+ buttonSize: number;
5
+ }, never>;
6
+ export declare const OpacityButton: import("styled-components").StyledComponent<"div", any, {
7
+ orientation: Orientation;
8
+ buttonSize: number;
9
+ }, never>;