nzk-react-components 0.2.19-0 → 0.2.19-12

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 (119) hide show
  1. package/dist/_virtual/index.js_commonjs-module +4 -0
  2. package/dist/_virtual/index.js_commonjs-module.map +1 -0
  3. package/dist/_virtual/index2.js_commonjs-module +4 -0
  4. package/dist/_virtual/index2.js_commonjs-module.map +1 -0
  5. package/dist/_virtual/index3.js_commonjs-module +4 -0
  6. package/dist/_virtual/index3.js_commonjs-module.map +1 -0
  7. package/dist/_virtual/react-is.development.js_commonjs-exports +4 -0
  8. package/dist/_virtual/react-is.development.js_commonjs-exports.map +1 -0
  9. package/dist/_virtual/react-is.production.min.js_commonjs-exports +4 -0
  10. package/dist/_virtual/react-is.production.min.js_commonjs-exports.map +1 -0
  11. package/dist/components/Avatar/Avatar.js +43 -0
  12. package/dist/components/Avatar/Avatar.js.map +1 -0
  13. package/dist/components/Avatar/Avatar.styles.js +10 -0
  14. package/dist/components/Avatar/Avatar.styles.js.map +1 -0
  15. package/dist/components/Avatar/index.js +3 -0
  16. package/dist/components/Avatar/index.js.map +1 -0
  17. package/dist/components/Button/Button.js +15 -0
  18. package/dist/components/Button/Button.js.map +1 -0
  19. package/dist/components/Button/Button.styles.js +23 -0
  20. package/dist/components/Button/Button.styles.js.map +1 -0
  21. package/dist/components/Button/constants.js +67 -0
  22. package/dist/components/Button/constants.js.map +1 -0
  23. package/dist/components/Button/index.js +3 -0
  24. package/dist/components/Button/index.js.map +1 -0
  25. package/dist/components/Button/utils.js +25 -0
  26. package/dist/components/Button/utils.js.map +1 -0
  27. package/dist/components/DrawingTool/DrawingTool.d.ts +8 -3
  28. package/dist/components/DrawingTool/DrawingTool.js +268 -0
  29. package/dist/components/DrawingTool/DrawingTool.js.map +1 -0
  30. package/dist/components/DrawingTool/DrawingTool.styles.d.ts +2 -1
  31. package/dist/components/DrawingTool/DrawingTool.styles.js +34 -0
  32. package/dist/components/DrawingTool/DrawingTool.styles.js.map +1 -0
  33. package/dist/components/DrawingTool/DrawingToolProvider.js +172 -0
  34. package/dist/components/DrawingTool/DrawingToolProvider.js.map +1 -0
  35. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.js +83 -0
  36. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.js.map +1 -0
  37. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.styles.js +9 -0
  38. package/dist/components/DrawingTool/components/ColourToolbar/ColourToolbar.styles.js.map +1 -0
  39. package/dist/components/DrawingTool/components/ColourToolbar/index.js +3 -0
  40. package/dist/components/DrawingTool/components/ColourToolbar/index.js.map +1 -0
  41. package/dist/components/DrawingTool/components/FileInput/FileInput.js +62 -0
  42. package/dist/components/DrawingTool/components/FileInput/FileInput.js.map +1 -0
  43. package/dist/components/DrawingTool/components/FileInput/FileInput.styles.js +11 -0
  44. package/dist/components/DrawingTool/components/FileInput/FileInput.styles.js.map +1 -0
  45. package/dist/components/DrawingTool/components/FileInput/index.js +3 -0
  46. package/dist/components/DrawingTool/components/FileInput/index.js.map +1 -0
  47. package/dist/components/DrawingTool/components/Header/Header.d.ts +9 -0
  48. package/dist/components/DrawingTool/components/Header/Header.js +24 -0
  49. package/dist/components/DrawingTool/components/Header/Header.js.map +1 -0
  50. package/dist/components/DrawingTool/components/Header/index.d.ts +2 -0
  51. package/dist/components/DrawingTool/components/Header/index.js +3 -0
  52. package/dist/components/DrawingTool/components/Header/index.js.map +1 -0
  53. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.js +24 -0
  54. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.js.map +1 -0
  55. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.styles.js +9 -0
  56. package/dist/components/DrawingTool/components/OpacityToggle/OpacityToggle.styles.js.map +1 -0
  57. package/dist/components/DrawingTool/components/OpacityToggle/index.js +3 -0
  58. package/dist/components/DrawingTool/components/OpacityToggle/index.js.map +1 -0
  59. package/dist/components/DrawingTool/components/Placeable/index.js +20 -0
  60. package/dist/components/DrawingTool/components/Placeable/index.js.map +1 -0
  61. package/dist/components/DrawingTool/lib/Sketch.js +382 -0
  62. package/dist/components/DrawingTool/lib/Sketch.js.map +1 -0
  63. package/dist/components/DrawingTool/lib/SketchCut.js +96 -0
  64. package/dist/components/DrawingTool/lib/SketchCut.js.map +1 -0
  65. package/dist/components/DrawingTool/lib/SketchCutModel.js +18 -0
  66. package/dist/components/DrawingTool/lib/SketchCutModel.js.map +1 -0
  67. package/dist/components/DrawingTool/lib/SketchLayer.js +56 -0
  68. package/dist/components/DrawingTool/lib/SketchLayer.js.map +1 -0
  69. package/dist/components/DrawingTool/lib/SketchModel.js +135 -0
  70. package/dist/components/DrawingTool/lib/SketchModel.js.map +1 -0
  71. package/dist/components/DrawingTool/lib/SketchStrokeModel.js +46 -0
  72. package/dist/components/DrawingTool/lib/SketchStrokeModel.js.map +1 -0
  73. package/dist/components/DrawingTool/lib/createInteractionSurface.js +54 -0
  74. package/dist/components/DrawingTool/lib/createInteractionSurface.js.map +1 -0
  75. package/dist/components/DrawingTool/lib/trace.js +22 -0
  76. package/dist/components/DrawingTool/lib/trace.js.map +1 -0
  77. package/dist/components/DrawingTool/lib/trimCanvas.js +40 -0
  78. package/dist/components/DrawingTool/lib/trimCanvas.js.map +1 -0
  79. package/dist/components/Icon/Icon.js +16 -0
  80. package/dist/components/Icon/Icon.js.map +1 -0
  81. package/dist/components/Icon/icons.js +241 -0
  82. package/dist/components/Icon/icons.js.map +1 -0
  83. package/dist/components/Icon/index.js +3 -0
  84. package/dist/components/Icon/index.js.map +1 -0
  85. package/dist/components/IconButton/IconButton.js +17 -0
  86. package/dist/components/IconButton/IconButton.js.map +1 -0
  87. package/dist/components/IconButton/index.js +3 -0
  88. package/dist/components/IconButton/index.js.map +1 -0
  89. package/dist/components/Modal/Modal.js +34 -0
  90. package/dist/components/Modal/Modal.js.map +1 -0
  91. package/dist/components/Modal/Modal.styles.js +12 -0
  92. package/dist/components/Modal/Modal.styles.js.map +1 -0
  93. package/dist/components/Modal/ModalState.js +55 -0
  94. package/dist/components/Modal/ModalState.js.map +1 -0
  95. package/dist/components/Modal/index.js +3 -0
  96. package/dist/components/Modal/index.js.map +1 -0
  97. package/dist/hooks/useAsync.js +53 -0
  98. package/dist/hooks/useAsync.js.map +1 -0
  99. package/dist/hooks/useCloudinary/index.js +45 -0
  100. package/dist/hooks/useCloudinary/index.js.map +1 -0
  101. package/dist/hooks/useConfettis/animations.js +67 -0
  102. package/dist/hooks/useConfettis/animations.js.map +1 -0
  103. package/dist/hooks/useConfettis/index.js +20 -0
  104. package/dist/hooks/useConfettis/index.js.map +1 -0
  105. package/dist/hooks/useDebounce.js +15 -0
  106. package/dist/hooks/useDebounce.js.map +1 -0
  107. package/dist/hooks/useElementSize.js +26 -0
  108. package/dist/hooks/useElementSize.js.map +1 -0
  109. package/dist/hooks/useEventListener.js +26 -0
  110. package/dist/hooks/useEventListener.js.map +1 -0
  111. package/dist/hooks/useMountState.js +13 -0
  112. package/dist/hooks/useMountState.js.map +1 -0
  113. package/dist/index.js +67 -46
  114. package/dist/index.js.map +1 -1
  115. package/package.json +5 -4
  116. package/dist/index.esm.js +0 -36543
  117. package/dist/index.esm.js.map +0 -1
  118. package/dist/nzk-react-components.min.js +0 -36586
  119. package/dist/nzk-react-components.min.js.map +0 -1
@@ -0,0 +1,4 @@
1
+ var lib = {exports: {}};
2
+
3
+ export { lib as l };
4
+ //# sourceMappingURL=index.js_commonjs-module.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js_commonjs-module","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,4 @@
1
+ var propTypes = {exports: {}};
2
+
3
+ export { propTypes as p };
4
+ //# sourceMappingURL=index2.js_commonjs-module.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.js_commonjs-module","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,4 @@
1
+ var reactIs = {exports: {}};
2
+
3
+ export { reactIs as r };
4
+ //# sourceMappingURL=index3.js_commonjs-module.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index3.js_commonjs-module","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,4 @@
1
+ var reactIs_development = {};
2
+
3
+ export { reactIs_development as __exports };
4
+ //# sourceMappingURL=react-is.development.js_commonjs-exports.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-is.development.js_commonjs-exports","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,4 @@
1
+ var reactIs_production_min = {};
2
+
3
+ export { reactIs_production_min as __exports };
4
+ //# sourceMappingURL=react-is.production.min.js_commonjs-exports.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-is.production.min.js_commonjs-exports","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,43 @@
1
+ import React__default, { useMemo } from 'react';
2
+ import { Wrapper, Flag, AvatarImage } from './Avatar.styles.js';
3
+
4
+ var Avatar = function (props) {
5
+ var countryCode = useMemo(function () {
6
+ var _a;
7
+ return ((_a = props.user) === null || _a === void 0 ? void 0 : _a.countryCode) || props.countryCode;
8
+ }, [props]);
9
+ var avatarUrl = useMemo(function () {
10
+ var _a, _b, _c;
11
+ var avatarUrl = ((_b = (_a = props.user) === null || _a === void 0 ? void 0 : _a.avatar) === null || _b === void 0 ? void 0 : _b.url) || props.src;
12
+ if (avatarUrl)
13
+ return avatarUrl;
14
+ if (!avatarUrl && ((_c = props.user) === null || _c === void 0 ? void 0 : _c.type) === 'student')
15
+ return 'https://cdn.nightzookeeper.com/edu-assets/images/empty-avatar.png';
16
+ return 'https://cdn.nightzookeeper.com/nzk-assets/empty-avatar.png';
17
+ }, [props]);
18
+ var flagUrl = useMemo(function () {
19
+ if (!countryCode)
20
+ return undefined;
21
+ return "https://cdn.nightzookeeper.com/edu-assets/images/flags/" + countryCode + ".png";
22
+ }, [countryCode]);
23
+ var flagShown = useMemo(function () {
24
+ if (flagUrl && !props.flagHidden)
25
+ return true;
26
+ return false;
27
+ }, [flagUrl, props]);
28
+ return React__default.createElement(Wrapper, { size: props.size, colors: props.colors },
29
+ flagShown && React__default.createElement(Flag, { src: flagUrl }),
30
+ React__default.createElement(AvatarImage, { src: avatarUrl }));
31
+ };
32
+ Avatar.defaultProps = {
33
+ size: '60px',
34
+ flagHidden: false,
35
+ colors: {
36
+ border: '#8B26D4',
37
+ shadow: '#53167E',
38
+ dropshadow: 'rgba(0,0,0,0.4)'
39
+ }
40
+ };
41
+
42
+ export { Avatar as default };
43
+ //# sourceMappingURL=Avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,10 @@
1
+ import { __makeTemplateObject } from '../../node_modules/tslib/tslib.es6.js';
2
+ import styled from '../../node_modules/styled-components/dist/styled-components.browser.esm.js';
3
+
4
+ var Wrapper = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: relative;\n --border-color: ", ";\n --shadow-color: ", ";\n --dropshadow-color: ", ";\n --size: ", ";\n height: calc(var(--size) + calc(var(--size) * 0.1));\n width: var(--size);\n box-sizing: content-box !important;\n > * {\n box-sizing: content-box !important;\n }\n"], ["\n position: relative;\n --border-color: ", ";\n --shadow-color: ", ";\n --dropshadow-color: ", ";\n --size: ", ";\n height: calc(var(--size) + calc(var(--size) * 0.1));\n width: var(--size);\n box-sizing: content-box !important;\n > * {\n box-sizing: content-box !important;\n }\n"])), function (props) { var _a; return (_a = props.colors) === null || _a === void 0 ? void 0 : _a.border; }, function (props) { var _a; return (_a = props.colors) === null || _a === void 0 ? void 0 : _a.shadow; }, function (props) { var _a; return (_a = props.colors) === null || _a === void 0 ? void 0 : _a.dropshadow; }, function (props) { return props.size; });
5
+ var AvatarImage = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n height: calc(var(--size) - calc(var(--size) * 0.1));\n width: calc(100% - calc(var(--size) * 0.1));\n background-image: url(", ");\n background-size: cover;\n background-position: center;\n border: calc(var(--size) * 0.05) solid var(--border-color);\n box-shadow: 0 calc(var(--size) * 0.05) 0 var(--shadow-color), 0 calc(var(--size) * 0.1) 0 var(--dropshadow-color);\n background-color: #ebebeb;\n border-radius: 50%;\n overflow: hidden;\n"], ["\n height: calc(var(--size) - calc(var(--size) * 0.1));\n width: calc(100% - calc(var(--size) * 0.1));\n background-image: url(", ");\n background-size: cover;\n background-position: center;\n border: calc(var(--size) * 0.05) solid var(--border-color);\n box-shadow: 0 calc(var(--size) * 0.05) 0 var(--shadow-color), 0 calc(var(--size) * 0.1) 0 var(--dropshadow-color);\n background-color: #ebebeb;\n border-radius: 50%;\n overflow: hidden;\n"])), function (props) { return props.src; });
6
+ var Flag = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: absolute;\n height: calc(var(--size) * 0.35);\n width: calc(var(--size) * 0.35);\n top: 0;\n right: 0;\n background-image: url(", ");\n background-size: cover;\n background-position: center;\n border-radius: 50%;\n border: calc(var(--size) * 0.6 * 0.05) solid var(--border-color);\n box-shadow: 0 calc(var(--size) * 0.6 * 0.05) 0 var(--shadow-color), 0 calc(var(--size) * 0.6 * 0.1) 0 var(--dropshadow-color);\n \n"], ["\n position: absolute;\n height: calc(var(--size) * 0.35);\n width: calc(var(--size) * 0.35);\n top: 0;\n right: 0;\n background-image: url(", ");\n background-size: cover;\n background-position: center;\n border-radius: 50%;\n border: calc(var(--size) * 0.6 * 0.05) solid var(--border-color);\n box-shadow: 0 calc(var(--size) * 0.6 * 0.05) 0 var(--shadow-color), 0 calc(var(--size) * 0.6 * 0.1) 0 var(--dropshadow-color);\n \n"])), function (props) { return props.src; });
7
+ var templateObject_1, templateObject_2, templateObject_3;
8
+
9
+ export { AvatarImage, Flag, Wrapper };
10
+ //# sourceMappingURL=Avatar.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -0,0 +1,3 @@
1
+ import Avatar from './Avatar.js';
2
+ export { default } from './Avatar.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,15 @@
1
+ import { __assign } from '../../node_modules/tslib/tslib.es6.js';
2
+ import React__default from 'react';
3
+ import { Wrapper } from './Button.styles.js';
4
+ import { SIZES, THEMES } from './constants.js';
5
+
6
+ var Button = function (props) {
7
+ return (React__default.createElement(Wrapper, __assign({ height: props.size && SIZES[props.size] }, props, (props.theme ? THEMES[props.theme] : {}), { onClick: function () {
8
+ if (props.onClick) {
9
+ props.onClick();
10
+ }
11
+ } })));
12
+ };
13
+
14
+ export { Button as default };
15
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
@@ -0,0 +1,23 @@
1
+ import { __makeTemplateObject } from '../../node_modules/tslib/tslib.es6.js';
2
+ import { getLuminance, darken as curriedDarken, lighten as curriedLighten } from '../../node_modules/polished/dist/polished.esm.js';
3
+ import styled, { css as Ae } from '../../node_modules/styled-components/dist/styled-components.browser.esm.js';
4
+ import { getSizeComparedToBase, getPadding, getTextSize, getTextColor } from './utils.js';
5
+
6
+ var getShadows = function (props) {
7
+ var light = getLuminance(props.backgroundColor);
8
+ var shadowColor = props.shadowColor
9
+ || light && curriedDarken(0.2, props.backgroundColor)
10
+ || !light && curriedLighten(0.2, props.backgroundColor);
11
+ var dropShadowColor = props.dropShadowColor || "rgba(0,0,0,0.3)";
12
+ var strokeColor = props.strokeColor
13
+ || light && curriedLighten(0.1, props.backgroundColor)
14
+ || !light && curriedDarken(0.1, props.backgroundColor);
15
+ return Ae(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n box-shadow: 0 ", "px 0 ", ",\n 0 ", "px 0 ", ",\n inset 0 0px 0px ", "px ", ";\n\n :active {\n transform: translateY(", "px);\n box-shadow: 0 ", "px 0 ", ",\n inset 0 0px 0px ", "px ", ";\n }\n "], ["\n box-shadow: 0 ", "px 0 ", ",\n 0 ", "px 0 ", ",\n inset 0 0px 0px ", "px ", ";\n\n :active {\n transform: translateY(", "px);\n box-shadow: 0 ", "px 0 ", ",\n inset 0 0px 0px ", "px ", ";\n }\n "])), getSizeComparedToBase(props, 5), shadowColor, getSizeComparedToBase(props, 12), dropShadowColor, getSizeComparedToBase(props, 5), strokeColor, getSizeComparedToBase(props, 7), getSizeComparedToBase(props, 5), shadowColor, getSizeComparedToBase(props, 5), strokeColor);
16
+ };
17
+ var Wrapper = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-family: 'Rammetto One';\n border-radius: 1000px;\n cursor: pointer;\n user-select: none;\n ", ";\n ", "\n ", "\n ", "\n\n svg {\n height: 100%;\n width: 100%;\n }\n"], ["\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-family: 'Rammetto One';\n border-radius: 1000px;\n cursor: pointer;\n user-select: none;\n ", ";\n ", "\n ", "\n ", "\n\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) { return Ae(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background-color: ", ";\n height: ", "px;\n margin-bottom: ", "px;\n color: ", ";\n font-size: ", ";\n padding: ", ";\n ", ";\n filter: ", ";\n "], ["\n background-color: ", ";\n height: ", "px;\n margin-bottom: ", "px;\n color: ", ";\n font-size: ", ";\n padding: ", ";\n ", ";\n filter: ", ";\n "])), props.backgroundColor, props.height, getSizeComparedToBase(props, 12), getTextColor(props), getTextSize(props), getPadding(props), getShadows(props), props.disabled ? 'grayscale(100%)' : 'none'); }, function (props) { return props.fullWidth && Ae(templateObject_3 || (templateObject_3 = __makeTemplateObject(["width: 100%;"], ["width: 100%;"]))); }, function (props) { return props.wiggle && Ae(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n animation: wiggle alternate-reverse 2s linear infinite;\n animation-delay: ", "s;\n @keyframes wiggle {\n 0% {\n transform: rotate(-3deg);\n }\n 10% {\n transform: rotate(3deg);\n }\n 20% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n }\n "], ["\n animation: wiggle alternate-reverse 2s linear infinite;\n animation-delay: ", "s;\n @keyframes wiggle {\n 0% {\n transform: rotate(-3deg);\n }\n 10% {\n transform: rotate(3deg);\n }\n 20% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n }\n "])), Math.random()); }, function (props) {
18
+ return props.round && Ae(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n width: ", "px;\n padding: 0;\n flex-shrink: 0;\n "], ["\n width: ", "px;\n padding: 0;\n flex-shrink: 0;\n "])), props.height);
19
+ });
20
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
21
+
22
+ export { Wrapper, getShadows };
23
+ //# sourceMappingURL=Button.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,67 @@
1
+ var THEMES = {
2
+ primary: {
3
+ backgroundColor: '#009EE2',
4
+ color: '#fff',
5
+ strokeColor: '#00C5ED',
6
+ shadowColor: '#025899'
7
+ },
8
+ confirm: {
9
+ backgroundColor: '#8CC63F',
10
+ color: '#fff',
11
+ strokeColor: '#AFD752',
12
+ shadowColor: '#579800'
13
+ },
14
+ 'the-pink': {
15
+ backgroundColor: '#E40071',
16
+ color: '',
17
+ shadowColor: '',
18
+ strokeColor: ''
19
+ },
20
+ 'purple': {
21
+ backgroundColor: '#701EA8',
22
+ color: '',
23
+ shadowColor: '#4E1B6D',
24
+ strokeColor: '#9026C1'
25
+ },
26
+ 'red': {
27
+ color: 'white',
28
+ backgroundColor: '#E20514',
29
+ strokeColor: '#F60A21',
30
+ shadowColor: '#931120'
31
+ },
32
+ 'orange': {
33
+ color: 'white',
34
+ backgroundColor: '#F29226',
35
+ strokeColor: '#F6B230',
36
+ shadowColor: '#CB6217'
37
+ },
38
+ 'green': {
39
+ color: 'white',
40
+ backgroundColor: '#8DC63F',
41
+ strokeColor: '#AED752',
42
+ shadowColor: '#58981F'
43
+ },
44
+ 'yellow': {
45
+ color: 'white',
46
+ backgroundColor: '#FEC532',
47
+ strokeColor: '#FEE13A',
48
+ shadowColor: '#C59928'
49
+ },
50
+ 'white': {
51
+ color: '',
52
+ backgroundColor: '#EEEEEE',
53
+ strokeColor: '#D9D9D9',
54
+ shadowColor: '#8E9197'
55
+ }
56
+ };
57
+ var SIZES = {
58
+ 'xx-large': 142,
59
+ 'x-large': 109,
60
+ large: 71,
61
+ regular: 50,
62
+ small: 39,
63
+ 'x-small': 30
64
+ };
65
+
66
+ export { SIZES, THEMES };
67
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,3 @@
1
+ import Button from './Button.js';
2
+ export { default } from './Button.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,25 @@
1
+ import { getLuminance } from '../../node_modules/polished/dist/polished.esm.js';
2
+
3
+ var getTextColor = function (props) {
4
+ if (props.color) {
5
+ return props.color;
6
+ }
7
+ if (getLuminance(props.backgroundColor) <= 0.5)
8
+ return '#fff';
9
+ return '#000';
10
+ };
11
+ var getTextSize = function (props) {
12
+ if (props.fontSize) {
13
+ return props.fontSize;
14
+ }
15
+ return props.height / 2.5 + "px";
16
+ };
17
+ var getPadding = function (props) {
18
+ return 0.001 * props.height + "px " + props.height / 2 + "px";
19
+ };
20
+ var getSizeComparedToBase = function (props, originalValue) {
21
+ return (props.height * originalValue) / 64;
22
+ };
23
+
24
+ export { getPadding, getSizeComparedToBase, getTextColor, getTextSize };
25
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,8 +1,9 @@
1
- import React from 'react';
1
+ /// <reference types="react" />
2
2
  export interface Props {
3
3
  prompt: string;
4
- backButton: React.ReactNode;
5
- saveButton: React.ReactNode;
4
+ showHeader: boolean;
5
+ onBack: () => void;
6
+ onSave: () => void;
6
7
  showPaperBackground?: boolean;
7
8
  disableCameraUpload?: boolean;
8
9
  disableAutoCache?: boolean;
@@ -13,6 +14,10 @@ export declare type Orientation = 'LANDSCAPE' | 'PORTRAIT';
13
14
  declare const Drawing: {
14
15
  (props: Props): JSX.Element;
15
16
  defaultProps: {
17
+ prompt: string;
18
+ showHeader: boolean;
19
+ onBack: () => void;
20
+ onSave: () => void;
16
21
  showPaperBackground: boolean;
17
22
  disableCameraUpload: boolean;
18
23
  disableAutoCache: boolean;
@@ -0,0 +1,268 @@
1
+ import { __assign } from '../../node_modules/tslib/tslib.es6.js';
2
+ import React__default, { useRef, useState, useEffect, useLayoutEffect } from 'react';
3
+ import { getLuminance, darken as curriedDarken, lighten as curriedLighten } from '../../node_modules/polished/dist/polished.esm.js';
4
+ import Moveable from '../../node_modules/react-moveable/dist/moveable.esm.js';
5
+ import MoveableHelper from '../../node_modules/moveable-helper/dist/moveable-helper.esm.js';
6
+ import ReactTooltip from '../../node_modules/react-tooltip/dist/index.es.js';
7
+ import { Container, Tool, LeftToolbarContainer, ButtonGroup, SketchContainer, PaperBackground, ImageToPlaceContainer, ImageToPlace, InSketchActions, InSketchAction, CutImageTutorial, RightToolbarContainer, ModalOverlay } from './DrawingTool.styles.js';
8
+ import useDebounce from '../../hooks/useDebounce.js';
9
+ import useElementSize from '../../hooks/useElementSize.js';
10
+ import Button from '../Button/Button.js';
11
+ import Icon from '../Icon/Icon.js';
12
+ import IconButton from '../IconButton/IconButton.js';
13
+ import ColourToolbar from './components/ColourToolbar/ColourToolbar.js';
14
+ import Modal from '../Modal/Modal.js';
15
+ import { useDrawingTool, BrushSize } from './DrawingToolProvider.js';
16
+ import FileInput from './components/FileInput/FileInput.js';
17
+ import Placeable from './components/Placeable/index.js';
18
+ import OpacityToggle from './components/OpacityToggle/OpacityToggle.js';
19
+ import Header from './components/Header/Header.js';
20
+
21
+ var Drawing = function (props) {
22
+ var _a, _b;
23
+ var containerRef = useRef(null);
24
+ var sketchOuterRef = useRef(null);
25
+ var sketchInnerRef = useRef(null);
26
+ var sketchCutInnerRef = useRef(null);
27
+ var imageToPlaceContainerRef = useRef(null);
28
+ var moveableRef = useRef(null);
29
+ var helper = useState(function () {
30
+ return new MoveableHelper();
31
+ })[0];
32
+ var _c = useElementSize(containerRef), containerWidth = _c.width, containerHeight = _c.height;
33
+ var debouncedContainerWidth = useDebounce(containerWidth, 1000);
34
+ var debouncedContainerHeight = useDebounce(containerHeight, 1000);
35
+ var _d = useState('LANDSCAPE'), orientation = _d[0], setOrientation = _d[1];
36
+ var _e = useState(1280), maxContainerWidth = _e[0], setMaxContainerWidth = _e[1];
37
+ var _f = useState(960), maxContainerHeight = _f[0], setMaxContainerHeight = _f[1];
38
+ var _g = useState(50), buttonSize = _g[0], setButtonSize = _g[1];
39
+ var _h = useState(false), isMobile = _h[0], setIsMobile = _h[1];
40
+ var _j = useState(true), resizing = _j[0], setResizing = _j[1];
41
+ var _k = useState(false), showRestartConfirmModal = _k[0], setShowRestartConfirmModal = _k[1];
42
+ var _l = useState(props.openUploadPopupOnStart), showFileInput = _l[0], setShowFileInput = _l[1];
43
+ var _m = useState(), imageToCut = _m[0], setImageToCut = _m[1];
44
+ var _o = useState(true), showCutTutorial = _o[0], setShowCutTutorial = _o[1];
45
+ var _p = useState(false), showSaveCutAction = _p[0], setShowSaveCutAction = _p[1];
46
+ var _q = useState(), imageToPlace = _q[0], setImageToPlace = _q[1];
47
+ var _r = 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;
48
+ useEffect(function () {
49
+ if (typeof props.disableAutoCache === 'boolean') {
50
+ setAutoCache(!props.disableAutoCache);
51
+ }
52
+ if (props.cacheKey)
53
+ setCacheKey(props.cacheKey);
54
+ }, []);
55
+ useLayoutEffect(function () {
56
+ if (debouncedContainerHeight !== containerHeight || debouncedContainerWidth !== containerWidth) {
57
+ setResizing(true);
58
+ }
59
+ else if (containerWidth > 0 && containerHeight > 0) {
60
+ setResizing(false);
61
+ if (containerWidth < 768) {
62
+ setIsMobile(true);
63
+ }
64
+ else {
65
+ setIsMobile(false);
66
+ }
67
+ }
68
+ }, [debouncedContainerWidth, debouncedContainerHeight, containerWidth, containerHeight]);
69
+ useLayoutEffect(function () {
70
+ setMaxContainerHeight(containerWidth * 1.4);
71
+ setMaxContainerWidth(containerHeight * 1.4);
72
+ if (containerWidth < containerHeight && containerWidth < 1024) {
73
+ setButtonSize(Math.floor(containerWidth / 11) * 0.85);
74
+ setOrientation('PORTRAIT');
75
+ }
76
+ else {
77
+ if (containerHeight < 420) {
78
+ setButtonSize(Math.floor(containerHeight / 13) * 0.85);
79
+ }
80
+ else if (containerHeight < 1024) {
81
+ setButtonSize(Math.floor(containerHeight / 12) * 0.85);
82
+ }
83
+ else {
84
+ setButtonSize(Math.floor(containerHeight / 11) * 0.85);
85
+ }
86
+ setOrientation('LANDSCAPE');
87
+ }
88
+ }, [containerWidth, containerHeight]);
89
+ useEffect(function () {
90
+ if (!imageToCut && !resizing && sketchInnerRef.current) {
91
+ initSketch(sketchInnerRef.current);
92
+ }
93
+ }, [resizing, sketchInnerRef, imageToCut]);
94
+ useEffect(function () {
95
+ if (!resizing && sketchCutInnerRef.current && imageToCut) {
96
+ initSketchCut(sketchCutInnerRef.current, imageToCut, function () {
97
+ setShowSaveCutAction(true);
98
+ });
99
+ }
100
+ }, [resizing, sketchCutInnerRef, imageToCut]);
101
+ var onClickRestart = function () {
102
+ setShowRestartConfirmModal(true);
103
+ };
104
+ var onClickCamera = function () {
105
+ setShowFileInput(true);
106
+ };
107
+ var onImageUploaded = function (image) {
108
+ setShowFileInput(false);
109
+ setImageToCut(image);
110
+ setToolMode("CUT");
111
+ };
112
+ var strokeBrushColour = getLuminance(currentColour.hex) > 0.05 ? curriedDarken(0.15, currentColour.hex) : curriedLighten(0.1, currentColour.hex);
113
+ var deselectedButtonColourProps = {
114
+ theme: 'white'
115
+ };
116
+ var selectedButtonColourProps = {
117
+ backgroundColor: currentColour.hex,
118
+ strokeColor: strokeBrushColour,
119
+ dropShadowColor: 'rgba(0,0,0,.3)',
120
+ shadowColor: 'rgba(0,0,0,.5)'
121
+ };
122
+ var eraserBrushColourProps = (brushType === 'eraser' ? selectedButtonColourProps : deselectedButtonColourProps);
123
+ var fillBrushColourProps = (brushType === 'fill' ? selectedButtonColourProps : deselectedButtonColourProps);
124
+ var lineBrushColourProps = (brushType === 'line' ? selectedButtonColourProps : deselectedButtonColourProps);
125
+ var smallLineColourProps = (brushSize === BrushSize.small ? selectedButtonColourProps : deselectedButtonColourProps);
126
+ var mediumLineColourProps = (brushSize === BrushSize.medium ? selectedButtonColourProps : deselectedButtonColourProps);
127
+ var largeLineColourProps = (brushSize === BrushSize.large ? selectedButtonColourProps : deselectedButtonColourProps);
128
+ var sketchStyles;
129
+ if (!resizing && sketchOuterRef && sketchOuterRef.current) {
130
+ sketchStyles = {
131
+ width: sketchOuterRef.current.offsetWidth + "px",
132
+ height: sketchOuterRef.current.offsetHeight + "px",
133
+ position: 'absolute',
134
+ top: '0px',
135
+ left: '0px'
136
+ };
137
+ }
138
+ var disableToolbars = (showFileInput || showRestartConfirmModal || imageToCut || imageToPlace);
139
+ var inSketchActions = [];
140
+ if (showSaveCutAction) {
141
+ inSketchActions.push({
142
+ key: 'retry-cut',
143
+ component: React__default.createElement(IconButton, { icon: React__default.createElement(Icon, { name: "drawing-tool-undo", fill: "white" }), theme: 'orange', size: isMobile ? "small" : "regular", onClick: function () {
144
+ setShowSaveCutAction(false);
145
+ setShowCutTutorial(true);
146
+ resetCut();
147
+ } }, "Retry")
148
+ }, {
149
+ key: 'save-cut',
150
+ component: React__default.createElement(IconButton, { icon: React__default.createElement(Icon, { name: "tick" }), theme: 'confirm', size: isMobile ? "small" : "regular", onClick: function () {
151
+ setShowSaveCutAction(false);
152
+ setImageToCut(undefined);
153
+ var newImage = new Image;
154
+ newImage.onload = function () {
155
+ setImageToPlace(newImage);
156
+ setToolMode('PLACE');
157
+ };
158
+ newImage.src = exportSketchCut();
159
+ } }, "Save")
160
+ });
161
+ }
162
+ else if (imageToPlace) {
163
+ inSketchActions.push({
164
+ key: 'cancel-place',
165
+ component: React__default.createElement(IconButton, { icon: React__default.createElement(Icon, { name: "close" }), theme: 'red', size: isMobile ? "small" : "regular", onClick: function () {
166
+ setImageToPlace(undefined);
167
+ setToolMode('DRAW');
168
+ } }, "Cancel")
169
+ }, {
170
+ key: 'save-place',
171
+ component: React__default.createElement(IconButton, { icon: React__default.createElement(Icon, { name: "tick" }), theme: 'confirm', size: isMobile ? "small" : "regular", onClick: function () {
172
+ if (moveableRef.current) {
173
+ var rect = moveableRef.current.getRect();
174
+ mergeImage({
175
+ image: imageToPlace,
176
+ x: rect.left,
177
+ y: rect.top,
178
+ origin: rect.origin,
179
+ width: Math.hypot(rect.pos2[0] - rect.pos1[0], rect.pos2[1] - rect.pos1[1]),
180
+ height: Math.hypot(rect.pos3[0] - rect.pos2[0], rect.pos3[1] - rect.pos2[1]),
181
+ rotation: rect.rotation
182
+ });
183
+ setToolMode('DRAW');
184
+ setImageToPlace(undefined);
185
+ }
186
+ } }, "Save")
187
+ });
188
+ }
189
+ var headerHeight = 90;
190
+ if (containerHeight < 800 || containerWidth < 728)
191
+ headerHeight = 70;
192
+ if (containerHeight < 500 || containerWidth < 500)
193
+ headerHeight = 50;
194
+ return React__default.createElement(Container, { ref: containerRef, maxWidth: maxContainerWidth, maxHeight: maxContainerHeight },
195
+ props.showHeader && React__default.createElement(Header, { height: headerHeight, prompt: props.prompt, onBack: props.onBack, onSave: props.onSave }),
196
+ React__default.createElement(Tool, { hasHeader: props.showHeader, headerHeight: headerHeight, orientation: orientation },
197
+ React__default.createElement(ReactTooltip, { effect: "solid", delayShow: 750, multiline: true }),
198
+ React__default.createElement(LeftToolbarContainer, { orientation: orientation, buttonSize: buttonSize, disabled: disableToolbars },
199
+ React__default.createElement(ButtonGroup, { orientation: orientation, buttonSize: buttonSize },
200
+ React__default.createElement(Button, { "data-tip": "Start again?", height: buttonSize, round: true, theme: 'red', onClick: onClickRestart },
201
+ React__default.createElement(Icon, { name: 'trash-white' }))),
202
+ React__default.createElement(ButtonGroup, { orientation: orientation, buttonSize: buttonSize },
203
+ React__default.createElement(Button, { height: buttonSize, round: true, theme: "white", onClick: undo },
204
+ React__default.createElement(Icon, { fill: currentColour.hex, name: 'drawing-tool-undo' })),
205
+ React__default.createElement(Button, { height: buttonSize, round: true, theme: "white", onClick: redo },
206
+ React__default.createElement(Icon, { fill: currentColour.hex, name: 'drawing-tool-redo' }))),
207
+ !props.disableCameraUpload && React__default.createElement(ButtonGroup, { orientation: orientation, buttonSize: buttonSize },
208
+ React__default.createElement(Button, { "data-tip": "Upload a drawing", height: buttonSize, round: true, theme: 'purple', onClick: onClickCamera },
209
+ React__default.createElement(Icon, { name: 'drawing-tool-camera' }))),
210
+ React__default.createElement(ButtonGroup, { orientation: orientation, buttonSize: buttonSize },
211
+ React__default.createElement(Button, __assign({ height: buttonSize, round: true }, eraserBrushColourProps, { onClick: function () { return setBrushType('eraser'); } }),
212
+ React__default.createElement(Icon, { "data-tip": "Eraser", fill: brushType === 'eraser' ? 'white' : currentColour.hex, name: 'drawing-tool-eraser' })),
213
+ React__default.createElement(Button, __assign({ "data-tip": "Fill brush", height: buttonSize, round: true }, fillBrushColourProps, { onClick: function () { return setBrushType('fill'); } }),
214
+ React__default.createElement(Icon, { fill: brushType === 'fill' ? 'white' : currentColour.hex, name: 'drawing-tool-fill-brush' })),
215
+ React__default.createElement(Button, __assign({ "data-tip": "Line brush", height: buttonSize, round: true }, lineBrushColourProps, { onClick: function () { return setBrushType('line'); } }),
216
+ React__default.createElement(Icon, { fill: brushType === 'line' ? 'white' : currentColour.hex, name: 'drawing-tool-line-brush' })),
217
+ React__default.createElement(Button, __assign({ height: buttonSize, round: true }, smallLineColourProps, { onClick: function () { return setBrushSize(BrushSize.small); } }),
218
+ React__default.createElement(Icon, { fill: brushSize === BrushSize.small ? 'white' : currentColour.hex, name: 'drawing-tool-small-line' })),
219
+ React__default.createElement(Button, __assign({ height: buttonSize, round: true }, mediumLineColourProps, { onClick: function () { return setBrushSize(BrushSize.medium); } }),
220
+ React__default.createElement(Icon, { fill: brushSize === BrushSize.medium ? 'white' : currentColour.hex, name: 'drawing-tool-medium-line' })),
221
+ React__default.createElement(Button, __assign({ height: buttonSize, round: true }, largeLineColourProps, { onClick: function () { return setBrushSize(BrushSize.large); } }),
222
+ React__default.createElement(Icon, { fill: brushSize === BrushSize.large ? 'white' : currentColour.hex, name: 'drawing-tool-large-line' })))),
223
+ React__default.createElement(SketchContainer, { orientation: orientation, ref: sketchOuterRef },
224
+ props.showPaperBackground && React__default.createElement(PaperBackground, { cutMode: imageToCut && true }),
225
+ !imageToCut && sketchStyles && React__default.createElement("div", { style: sketchStyles, ref: sketchInnerRef }),
226
+ imageToCut && sketchStyles && React__default.createElement("div", { style: sketchStyles, ref: sketchCutInnerRef }),
227
+ imageToPlace && sketchStyles && (React__default.createElement("div", { style: __assign(__assign({}, sketchStyles), { zIndex: '101' }) },
228
+ React__default.createElement(ImageToPlaceContainer, null,
229
+ React__default.createElement(ImageToPlace, { ref: imageToPlaceContainerRef, src: imageToPlace.src })),
230
+ React__default.createElement(Moveable, { ref: moveableRef, target: imageToPlaceContainerRef, ables: [Placeable], props: {
231
+ placeable: true,
232
+ }, 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 }))),
233
+ inSketchActions.length && (React__default.createElement(InSketchActions, null, inSketchActions.map(function (action) { return (React__default.createElement(InSketchAction, { key: action.key }, action.component)); }))),
234
+ imageToCut && showCutTutorial && React__default.createElement(CutImageTutorial, { onClick: function () { return setShowCutTutorial(false); } },
235
+ React__default.createElement("div", null, "Now cut out your animal: Click, hold and make sure you draw around it."),
236
+ React__default.createElement("img", { alt: "crop example", src: "https://cdn.nightzookeeper.com/nzk-assets/crop-tutorial.png" }),
237
+ React__default.createElement("div", null,
238
+ React__default.createElement(Button, { size: isMobile ? "small" : "regular", theme: "primary" }, "Ok")))),
239
+ React__default.createElement(RightToolbarContainer, { orientation: orientation, buttonSize: buttonSize, disabled: disableToolbars },
240
+ React__default.createElement(ColourToolbar, { orientation: orientation, size: buttonSize, currentColour: currentColour }),
241
+ React__default.createElement(OpacityToggle, { orientation: orientation, buttonSize: buttonSize }))),
242
+ showRestartConfirmModal && React__default.createElement(ModalOverlay, null,
243
+ React__default.createElement(Modal, { title: "Are you sure?", actions: [
244
+ React__default.createElement(Button, { key: 'cancel', size: isMobile ? "small" : "regular", theme: "red", onClick: function () {
245
+ setShowRestartConfirmModal(false);
246
+ } }, "No"),
247
+ React__default.createElement(Button, { key: 'confirm', size: isMobile ? "small" : "regular", theme: "confirm", onClick: function () {
248
+ restart();
249
+ setShowRestartConfirmModal(false);
250
+ } }, "Yes"),
251
+ ] })),
252
+ showFileInput && React__default.createElement(ModalOverlay, null,
253
+ React__default.createElement(FileInput, { isMobile: isMobile, dismiss: function () { return setShowFileInput(false); }, onImageUploaded: onImageUploaded })));
254
+ };
255
+ Drawing.defaultProps = {
256
+ prompt: 'Draw your Animal',
257
+ showHeader: true,
258
+ onBack: function () { },
259
+ onSave: function () { },
260
+ showPaperBackground: true,
261
+ disableCameraUpload: false,
262
+ disableAutoCache: false,
263
+ cacheKey: 'nzk-sketch-cache',
264
+ openUploadPopupOnStart: false
265
+ };
266
+
267
+ export { Drawing as default };
268
+ //# sourceMappingURL=DrawingTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrawingTool.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,9 +3,10 @@ export declare const Container: import("styled-components").StyledComponent<"div
3
3
  maxWidth: number;
4
4
  maxHeight: number;
5
5
  }, never>;
6
- export declare const Header: import("styled-components").StyledComponent<"div", any, {}, never>;
7
6
  export declare const Tool: import("styled-components").StyledComponent<"div", any, {
8
7
  orientation: Orientation;
8
+ hasHeader: boolean;
9
+ headerHeight: number;
9
10
  }, never>;
10
11
  export declare const ButtonGroup: import("styled-components").StyledComponent<"div", any, {
11
12
  orientation: Orientation;