@yorab/react-paint 0.7.6 → 0.9.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 (153) hide show
  1. package/README.md +1 -11
  2. package/dist/components/App.d.ts +20 -0
  3. package/dist/components/Canvas.d.ts +38 -0
  4. package/dist/components/common/Button.d.ts +16 -0
  5. package/dist/components/common/Loading.d.ts +7 -0
  6. package/dist/components/common/Modal.d.ts +10 -0
  7. package/dist/components/common/Panel.d.ts +13 -0
  8. package/dist/components/common/Snackbar.d.ts +8 -0
  9. package/dist/components/settings/ColorField.d.ts +15 -0
  10. package/dist/components/settings/DeleteButton.d.ts +9 -0
  11. package/dist/components/settings/FontFamilyField.d.ts +12 -0
  12. package/dist/components/settings/LayoutButton.d.ts +8 -0
  13. package/dist/components/settings/Layouts.d.ts +19 -0
  14. package/dist/components/settings/LineArrowField.d.ts +12 -0
  15. package/dist/components/settings/LineTypeField.d.ts +16 -0
  16. package/dist/components/settings/PointsNumberField.d.ts +13 -0
  17. package/dist/components/settings/RangeField.d.ts +18 -0
  18. package/dist/components/settings/SelectField.d.ts +18 -0
  19. package/dist/components/settings/SettingsBar.d.ts +21 -0
  20. package/dist/components/settings/ToggleField.d.ts +12 -0
  21. package/dist/components/toolbox/EditTextBox.d.ts +14 -0
  22. package/dist/components/toolbox/LoadFileTool.d.ts +12 -0
  23. package/dist/components/toolbox/MenuGroup.d.ts +35 -0
  24. package/dist/components/toolbox/PictureUrlInput.d.ts +8 -0
  25. package/dist/components/toolbox/Tool.d.ts +12 -0
  26. package/dist/components/toolbox/Toolbar.d.ts +27 -0
  27. package/dist/components/toolbox/ToolbarGroup.d.ts +18 -0
  28. package/dist/constants/app.d.ts +41 -0
  29. package/dist/constants/icons.d.ts +41 -0
  30. package/dist/constants/loading.d.ts +1 -0
  31. package/dist/constants/picture.d.ts +1 -0
  32. package/dist/constants/shapes.d.ts +8 -0
  33. package/dist/constants/snackbar.d.ts +7 -0
  34. package/dist/constants/style.d.ts +17 -0
  35. package/dist/constants/tools.d.ts +32 -0
  36. package/dist/hooks/useComponent.d.ts +9 -0
  37. package/dist/hooks/useDoubleClick.d.ts +5 -0
  38. package/dist/hooks/useDrag.d.ts +15 -0
  39. package/dist/hooks/useDrawableCanvas.d.ts +37 -0
  40. package/dist/hooks/useKeyboard.d.ts +20 -0
  41. package/dist/hooks/useResizeObserver.d.ts +7 -0
  42. package/dist/hooks/useShapes.d.ts +26 -0
  43. package/dist/hooks/useSnackbar.d.ts +10 -0
  44. package/dist/react-paint.css +1 -0
  45. package/dist/react-paint.js +8887 -0
  46. package/dist/react-paint.umd.cjs +27 -0
  47. package/dist/types/Mode.d.ts +43 -0
  48. package/dist/types/Shapes.d.ts +128 -0
  49. package/dist/types/react.d.ts +7 -0
  50. package/dist/types/snackbar.d.ts +7 -0
  51. package/dist/types/tools.d.ts +125 -0
  52. package/dist/types/utils.d.ts +4 -0
  53. package/dist/utils/canvas.d.ts +10 -0
  54. package/dist/utils/data.d.ts +4 -0
  55. package/dist/utils/dom.d.ts +1 -0
  56. package/dist/utils/file.d.ts +10 -0
  57. package/dist/utils/grid.d.ts +3 -0
  58. package/dist/utils/intersect.d.ts +6 -0
  59. package/dist/utils/migration.d.ts +147 -0
  60. package/dist/utils/selection/lineSelection.d.ts +12 -0
  61. package/dist/utils/selection/rectSelection.d.ts +13 -0
  62. package/dist/utils/selection.d.ts +7 -0
  63. package/dist/utils/shapes/brush.d.ts +20 -0
  64. package/dist/utils/shapes/circle.d.ts +17 -0
  65. package/dist/utils/shapes/curve.d.ts +16 -0
  66. package/dist/utils/shapes/ellipse.d.ts +17 -0
  67. package/dist/utils/shapes/index.d.ts +29 -0
  68. package/dist/utils/shapes/line.d.ts +17 -0
  69. package/dist/utils/shapes/path.d.ts +9 -0
  70. package/dist/utils/shapes/picture.d.ts +12 -0
  71. package/dist/utils/shapes/polygon.d.ts +17 -0
  72. package/dist/utils/shapes/rectangle.d.ts +20 -0
  73. package/dist/utils/shapes/text.d.ts +19 -0
  74. package/dist/utils/shapes/triangle.d.ts +3 -0
  75. package/dist/utils/string.d.ts +3 -0
  76. package/dist/utils/style.d.ts +2 -0
  77. package/dist/utils/toolbar.d.ts +13 -0
  78. package/dist/utils/transform.d.ts +9 -0
  79. package/dist/utils/trigo.d.ts +16 -0
  80. package/package.json +52 -57
  81. package/dist/components/App.js +0 -496
  82. package/dist/components/Canvas.js +0 -194
  83. package/dist/components/common/Button.js +0 -88
  84. package/dist/components/common/Loading.js +0 -57
  85. package/dist/components/common/Modal.js +0 -46
  86. package/dist/components/common/Panel.js +0 -43
  87. package/dist/components/common/Snackbar.js +0 -68
  88. package/dist/components/settings/ColorField.js +0 -125
  89. package/dist/components/settings/DeleteButton.js +0 -37
  90. package/dist/components/settings/FontFamilyField.js +0 -67
  91. package/dist/components/settings/LayoutButton.js +0 -39
  92. package/dist/components/settings/Layouts.js +0 -214
  93. package/dist/components/settings/LineArrowField.js +0 -67
  94. package/dist/components/settings/LineTypeField.js +0 -65
  95. package/dist/components/settings/PointsNumberField.js +0 -45
  96. package/dist/components/settings/RangeField.js +0 -82
  97. package/dist/components/settings/SelectField.js +0 -81
  98. package/dist/components/settings/SettingsBar.js +0 -383
  99. package/dist/components/settings/ToggleField.js +0 -49
  100. package/dist/components/toolbox/EditTextBox.js +0 -138
  101. package/dist/components/toolbox/LoadFileTool.js +0 -58
  102. package/dist/components/toolbox/MenuGroup.js +0 -173
  103. package/dist/components/toolbox/PictureUrlInput.js +0 -68
  104. package/dist/components/toolbox/Tool.js +0 -41
  105. package/dist/components/toolbox/Toolbar.js +0 -203
  106. package/dist/components/toolbox/ToolbarGroup.js +0 -134
  107. package/dist/constants/app.js +0 -51
  108. package/dist/constants/icons.js +0 -88
  109. package/dist/constants/loading.js +0 -8
  110. package/dist/constants/picture.js +0 -8
  111. package/dist/constants/shapes.js +0 -20
  112. package/dist/constants/snackbar.js +0 -15
  113. package/dist/constants/style.js +0 -35
  114. package/dist/constants/tools.js +0 -424
  115. package/dist/hooks/useComponent.js +0 -47
  116. package/dist/hooks/useDoubleClick.js +0 -46
  117. package/dist/hooks/useDrag.js +0 -92
  118. package/dist/hooks/useDrawableCanvas.js +0 -230
  119. package/dist/hooks/useKeyboard.js +0 -142
  120. package/dist/hooks/useResizeObserver.js +0 -42
  121. package/dist/hooks/useShapes.js +0 -184
  122. package/dist/hooks/useSnackbar.js +0 -56
  123. package/dist/styles.css +0 -91
  124. package/dist/types/Mode.js +0 -5
  125. package/dist/types/Shapes.js +0 -5
  126. package/dist/types/snackbar.js +0 -5
  127. package/dist/types/tools.js +0 -5
  128. package/dist/types/utils.js +0 -5
  129. package/dist/utils/canvas.js +0 -49
  130. package/dist/utils/data.js +0 -49
  131. package/dist/utils/dom.js +0 -12
  132. package/dist/utils/file.js +0 -177
  133. package/dist/utils/intersect.js +0 -122
  134. package/dist/utils/migration.js +0 -59
  135. package/dist/utils/selection.js +0 -86
  136. package/dist/utils/shapes/brush.js +0 -135
  137. package/dist/utils/shapes/circle.js +0 -93
  138. package/dist/utils/shapes/curve.js +0 -55
  139. package/dist/utils/shapes/default.js +0 -73
  140. package/dist/utils/shapes/ellipse.js +0 -101
  141. package/dist/utils/shapes/grid.js +0 -36
  142. package/dist/utils/shapes/index.js +0 -341
  143. package/dist/utils/shapes/line.js +0 -179
  144. package/dist/utils/shapes/picture.js +0 -109
  145. package/dist/utils/shapes/polygon.js +0 -69
  146. package/dist/utils/shapes/rectangle.js +0 -100
  147. package/dist/utils/shapes/text.js +0 -128
  148. package/dist/utils/shapes/triangle.js +0 -24
  149. package/dist/utils/string.js +0 -36
  150. package/dist/utils/style.js +0 -46
  151. package/dist/utils/toolbar.js +0 -78
  152. package/dist/utils/transform.js +0 -109
  153. package/dist/utils/trigo.js +0 -42
@@ -1,173 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _fp = _interopRequireDefault(require("lodash/fp"));
11
-
12
- var _react = _interopRequireWildcard(require("react"));
13
-
14
- var _Button = _interopRequireDefault(require("../common/Button"));
15
-
16
- var _Panel = _interopRequireDefault(require("../common/Panel"));
17
-
18
- var _react2 = require("@linaria/react");
19
-
20
- var _Tool = _interopRequireDefault(require("./Tool"));
21
-
22
- var _LoadFileTool = _interopRequireDefault(require("./LoadFileTool"));
23
-
24
- var _icons = require("../../constants/icons");
25
-
26
- var _tools = require("../../constants/tools");
27
-
28
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
-
30
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
-
32
- const StyledPanelContent = /*#__PURE__*/(0, _react2.styled)('div')({
33
- name: "StyledPanelContent",
34
- class: "s1uphjfh"
35
- });
36
- const StyledRelative = /*#__PURE__*/(0, _react2.styled)('div')({
37
- name: "StyledRelative",
38
- class: "s1e5a6k5"
39
- });
40
-
41
- const MenuGroup = _ref => {
42
- var _ref2;
43
-
44
- let {
45
- activeTool,
46
- withActionsInMenu,
47
- hasActionToUndo = false,
48
- hasActionToRedo = false,
49
- hasActionToClear = false,
50
- undoAction,
51
- redoAction,
52
- clearCanvas,
53
- alignment,
54
- group,
55
- vertical = false,
56
- disabled = false,
57
- withLoadAndSave,
58
- withExport,
59
- addPicture: addPictureFromProps,
60
- loadFile: loadFileFromProps,
61
- togglePictureUrlModal,
62
- saveFile,
63
- exportCanvasInFile,
64
- withUploadPicture,
65
- withUrlPicture
66
- } = _ref;
67
- const [isOpen, setIsOpen] = (0, _react.useState)(false);
68
- const [, startTransition] = (0, _react.useTransition)();
69
-
70
- const loadFile = file => {
71
- setIsOpen(false);
72
- loadFileFromProps(file);
73
- };
74
-
75
- const addPicture = async file => {
76
- setIsOpen(false);
77
- await addPictureFromProps(file);
78
- };
79
-
80
- const openPanel = () => {
81
- startTransition(() => {
82
- setIsOpen(true);
83
- });
84
- };
85
-
86
- const isActive = _fp.default.includes(activeTool.type, group === null || group === void 0 ? void 0 : group.tools);
87
-
88
- const groupIcon = (_ref2 = isActive ? activeTool.icon : group.img) !== null && _ref2 !== void 0 ? _ref2 : group.title;
89
- (0, _react.useEffect)(() => {
90
- if (!isOpen) return;
91
-
92
- const closePanel = () => {
93
- setIsOpen(false);
94
- };
95
-
96
- document.addEventListener('click', closePanel);
97
- return () => {
98
- document.removeEventListener('click', closePanel);
99
- };
100
- }, [isOpen]);
101
- const withMenu = withActionsInMenu || withUploadPicture || withUrlPicture || withLoadAndSave || withExport;
102
- return withMenu ? /*#__PURE__*/_react.default.createElement(StyledRelative, null, /*#__PURE__*/_react.default.createElement(_Button.default, {
103
- selected: isActive,
104
- title: group.title,
105
- disabled: disabled,
106
- onClick: openPanel,
107
- icon: groupIcon
108
- }), isOpen && /*#__PURE__*/_react.default.createElement(_Panel.default, {
109
- alignment: alignment,
110
- position: "top"
111
- }, /*#__PURE__*/_react.default.createElement(StyledPanelContent, {
112
- "data-vertical": +vertical
113
- }, withActionsInMenu && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Tool.default, {
114
- withText: true,
115
- type: _tools.UNDO_TOOL,
116
- disabled: disabled || !hasActionToUndo,
117
- img: _tools.UNDO_TOOL.icon,
118
- isActive: activeTool.id === _tools.UNDO_TOOL.id,
119
- setActive: undoAction
120
- }), /*#__PURE__*/_react.default.createElement(_Tool.default, {
121
- withText: true,
122
- type: _tools.REDO_TOOL,
123
- disabled: disabled || !hasActionToRedo,
124
- img: _tools.REDO_TOOL.icon,
125
- isActive: activeTool.id === _tools.REDO_TOOL.id,
126
- setActive: redoAction
127
- }), /*#__PURE__*/_react.default.createElement(_Tool.default, {
128
- withText: true,
129
- type: _tools.CLEAR_TOOL,
130
- disabled: disabled || !hasActionToClear,
131
- img: _tools.CLEAR_TOOL.icon,
132
- isActive: activeTool.id === _tools.CLEAR_TOOL.id,
133
- setActive: clearCanvas
134
- }), (withUploadPicture || withUrlPicture || withLoadAndSave) && /*#__PURE__*/_react.default.createElement("hr", null)), withUploadPicture && /*#__PURE__*/_react.default.createElement(_LoadFileTool.default, {
135
- withText: true,
136
- type: _tools.UPLOAD_PICTURE_TOOL,
137
- disabled: disabled,
138
- loadFile: addPicture,
139
- img: _tools.UPLOAD_PICTURE_TOOL.icon,
140
- accept: "image/png, image/gif, image/jpeg, image/svg+xml"
141
- }), withUrlPicture && /*#__PURE__*/_react.default.createElement(_Button.default, {
142
- disabled: disabled,
143
- selected: false,
144
- onClick: togglePictureUrlModal,
145
- title: "Add picture from URL",
146
- icon: _icons.publicIcon,
147
- children: "Add picture from URL"
148
- }), (withUploadPicture || withUrlPicture) && withLoadAndSave && /*#__PURE__*/_react.default.createElement("hr", null), withLoadAndSave && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_LoadFileTool.default, {
149
- withText: true,
150
- type: _tools.LOAD_TOOL,
151
- disabled: disabled,
152
- loadFile: loadFile,
153
- img: _tools.LOAD_TOOL.icon,
154
- accept: "application/JSON"
155
- }), /*#__PURE__*/_react.default.createElement(_Tool.default, {
156
- withText: true,
157
- disabled: disabled,
158
- type: _tools.SAVE_TOOL,
159
- img: _tools.SAVE_TOOL.icon,
160
- isActive: activeTool.id === _tools.SAVE_TOOL.id,
161
- setActive: saveFile
162
- })), withExport && /*#__PURE__*/_react.default.createElement(_Tool.default, {
163
- withText: true,
164
- disabled: disabled,
165
- type: _tools.EXPORT_TOOL,
166
- img: _tools.EXPORT_TOOL.icon,
167
- isActive: activeTool.id === _tools.EXPORT_TOOL.id,
168
- setActive: exportCanvasInFile
169
- })))) : null;
170
- };
171
-
172
- var _default = MenuGroup;
173
- exports.default = _default;
@@ -1,68 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _react = _interopRequireWildcard(require("react"));
11
-
12
- var _Button = _interopRequireDefault(require("../common/Button"));
13
-
14
- var _Modal = _interopRequireDefault(require("../common/Modal"));
15
-
16
- var _react2 = require("@linaria/react");
17
-
18
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
-
20
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
-
22
- const StyledInputModal = /*#__PURE__*/(0, _react2.styled)(_Modal.default)({
23
- name: "StyledInputModal",
24
- class: "s95bkm9"
25
- });
26
-
27
- const PictureUrlModal = _ref => {
28
- let {
29
- togglePictureUrlModal,
30
- addPicture
31
- } = _ref;
32
- const pictureUrlInputRef = (0, _react.useRef)(null);
33
-
34
- const addPictureFromUrl = async e => {
35
- var _pictureUrlInputRef$c;
36
-
37
- e.preventDefault();
38
- const url = (_pictureUrlInputRef$c = pictureUrlInputRef.current) === null || _pictureUrlInputRef$c === void 0 ? void 0 : _pictureUrlInputRef$c.value;
39
-
40
- if (url) {
41
- await addPicture(url);
42
- togglePictureUrlModal();
43
- }
44
-
45
- return;
46
- };
47
-
48
- (0, _react.useEffect)(() => {
49
- if (!pictureUrlInputRef.current) return;
50
- pictureUrlInputRef.current.focus();
51
- }, []);
52
- return /*#__PURE__*/_react.default.createElement(StyledInputModal, {
53
- onClose: togglePictureUrlModal
54
- }, /*#__PURE__*/_react.default.createElement("form", {
55
- onSubmit: addPictureFromUrl
56
- }, /*#__PURE__*/_react.default.createElement("label", null, "URL\xA0", /*#__PURE__*/_react.default.createElement("input", {
57
- type: "text",
58
- ref: pictureUrlInputRef
59
- })), /*#__PURE__*/_react.default.createElement(_Button.default, {
60
- onClick: togglePictureUrlModal
61
- }, "Annuler"), /*#__PURE__*/_react.default.createElement(_Button.default, {
62
- type: "submit",
63
- selected: true
64
- }, "Ajouter")));
65
- };
66
-
67
- var _default = PictureUrlModal;
68
- exports.default = _default;
@@ -1,41 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _Button = _interopRequireDefault(require("../common/Button"));
13
-
14
- const Tool = _ref => {
15
- var _type$label;
16
-
17
- let {
18
- type,
19
- img,
20
- isActive,
21
- withText = false,
22
- disabled = false,
23
- setActive
24
- } = _ref;
25
-
26
- const handleClick = () => {
27
- setActive(type);
28
- };
29
-
30
- return /*#__PURE__*/_react.default.createElement(_Button.default, {
31
- disabled: disabled,
32
- selected: isActive,
33
- onClick: handleClick,
34
- title: (_type$label = type.label) !== null && _type$label !== void 0 ? _type$label : type.type,
35
- icon: img,
36
- children: withText ? type.label : undefined
37
- });
38
- };
39
-
40
- var _default = Tool;
41
- exports.default = _default;
@@ -1,203 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _icons = require("../../constants/icons");
11
-
12
- var _react = _interopRequireWildcard(require("react"));
13
-
14
- var _react2 = require("@linaria/react");
15
-
16
- var _Button = _interopRequireDefault(require("../common/Button"));
17
-
18
- var _toolbar = require("../../utils/toolbar");
19
-
20
- var _ToolbarGroup = _interopRequireDefault(require("./ToolbarGroup"));
21
-
22
- var _MenuGroup = _interopRequireDefault(require("./MenuGroup"));
23
-
24
- var _Tool = _interopRequireDefault(require("./Tool"));
25
-
26
- var _Modal = _interopRequireDefault(require("../common/Modal"));
27
-
28
- var _PictureUrlInput = _interopRequireDefault(require("./PictureUrlInput"));
29
-
30
- var _fp = _interopRequireDefault(require("lodash/fp"));
31
-
32
- var _tools = require("../../constants/tools");
33
-
34
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
-
36
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
-
38
- const TOOL_WIDTH = 40;
39
- const StyledShrinkableTools = /*#__PURE__*/(0, _react2.styled)('div')({
40
- name: "StyledShrinkableTools",
41
- class: "so6hnjf"
42
- });
43
- const StyledToolbox = /*#__PURE__*/(0, _react2.styled)('div')({
44
- name: "StyledToolbox",
45
- class: "s1c1dllr"
46
- });
47
- const StyledToolsModal = /*#__PURE__*/(0, _react2.styled)(_Modal.default)({
48
- name: "StyledToolsModal",
49
- class: "s1g032mh"
50
- });
51
- const TOOLBAR_STRUCTURE = [{
52
- title: 'brush',
53
- toolsType: ['brush'],
54
- vertical: false
55
- }, {
56
- title: 'lines',
57
- toolsType: ['line', 'curve', 'polygon'],
58
- vertical: false
59
- }, {
60
- title: 'shapes',
61
- toolsType: ['rect', 'square', 'circle', 'ellipse'],
62
- vertical: false
63
- }, 'text'];
64
-
65
- const Toolbar = _ref => {
66
- let {
67
- width,
68
- disabled = false,
69
- activeTool,
70
- hasActionToUndo = false,
71
- hasActionToRedo = false,
72
- hasActionToClear = false,
73
- withLoadAndSave,
74
- withExport,
75
- clearCanvas,
76
- setActiveTool: setActiveToolFromProps,
77
- undoAction,
78
- redoAction,
79
- addPicture,
80
- loadFile,
81
- saveFile,
82
- exportCanvasInFile,
83
- availableTools,
84
- withUrlPicture,
85
- withUploadPicture
86
- } = _ref;
87
- const currentStructure = (0, _toolbar.getCurrentStructure)(availableTools, TOOLBAR_STRUCTURE);
88
- const fullToolbarSize = (5 + currentStructure.length) * TOOL_WIDTH;
89
- const withMenuToolbarSize = (2 + currentStructure.length) * TOOL_WIDTH;
90
- const [isMenuOpen, setIsMenuOpen] = (0, _react.useState)(false);
91
- const [isPictureUrlModalOpen, setIsPictureUrlModalOpen] = (0, _react.useState)(false);
92
- const [actionsInMenu, setActionsInMenu] = (0, _react.useState)(width < fullToolbarSize);
93
- const [toolsInMenu, setToolsInMenu] = (0, _react.useState)(width < withMenuToolbarSize);
94
-
95
- const toggleTools = () => {
96
- setIsMenuOpen(prev => !prev);
97
- };
98
-
99
- const openPictureUrlModal = () => {
100
- setIsPictureUrlModalOpen(true);
101
- };
102
-
103
- const togglePictureUrlModal = () => {
104
- setIsPictureUrlModalOpen(prev => !prev);
105
- };
106
-
107
- const setActiveTool = tool => {
108
- setActiveToolFromProps(tool);
109
- setIsMenuOpen(false);
110
- };
111
-
112
- const setActiveToolFromId = toolId => {
113
- var _availableTools$find;
114
-
115
- setActiveTool((_availableTools$find = availableTools.find(tool => tool.id === toolId)) !== null && _availableTools$find !== void 0 ? _availableTools$find : activeTool);
116
- };
117
-
118
- (0, _react.useEffect)(() => {
119
- setActionsInMenu(width < fullToolbarSize);
120
- setToolsInMenu(width < withMenuToolbarSize);
121
- }, [width, fullToolbarSize, withMenuToolbarSize]);
122
- const isAnyToolSelected = _fp.default.find({
123
- type: activeTool
124
- }, availableTools) !== undefined;
125
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(StyledToolbox, null, /*#__PURE__*/_react.default.createElement(StyledShrinkableTools, null, /*#__PURE__*/_react.default.createElement(_Tool.default, {
126
- type: _tools.SELECTION_TOOL,
127
- disabled: disabled,
128
- img: _tools.SELECTION_TOOL.icon,
129
- isActive: activeTool.id === _tools.SELECTION_TOOL.id,
130
- setActive: setActiveTool
131
- }), toolsInMenu ? /*#__PURE__*/_react.default.createElement(_Button.default, {
132
- disabled: disabled,
133
- onClick: toggleTools,
134
- title: "Toggle tools",
135
- icon: _icons.shapesIcon,
136
- selected: isAnyToolSelected
137
- }) : currentStructure.map((group, i) => /*#__PURE__*/_react.default.createElement(_ToolbarGroup.default, {
138
- disabled: disabled,
139
- key: i,
140
- activeTool: activeTool,
141
- group: group,
142
- setActiveToolFromId: setActiveToolFromId
143
- }))), !actionsInMenu && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Tool.default, {
144
- type: _tools.UNDO_TOOL,
145
- disabled: disabled || !hasActionToUndo,
146
- img: _tools.UNDO_TOOL.icon,
147
- isActive: activeTool.id === _tools.UNDO_TOOL.id,
148
- setActive: undoAction
149
- }), /*#__PURE__*/_react.default.createElement(_Tool.default, {
150
- type: _tools.REDO_TOOL,
151
- disabled: disabled || !hasActionToRedo,
152
- img: _tools.REDO_TOOL.icon,
153
- isActive: activeTool.id === _tools.REDO_TOOL.id,
154
- setActive: redoAction
155
- }), /*#__PURE__*/_react.default.createElement(_Tool.default, {
156
- type: _tools.CLEAR_TOOL,
157
- disabled: disabled || !hasActionToClear,
158
- img: _tools.CLEAR_TOOL.icon,
159
- isActive: activeTool.id === _tools.CLEAR_TOOL.id,
160
- setActive: clearCanvas
161
- })), /*#__PURE__*/_react.default.createElement(_MenuGroup.default, {
162
- withActionsInMenu: actionsInMenu,
163
- disabled: disabled,
164
- vertical: true,
165
- alignment: "right",
166
- group: {
167
- title: 'Menu',
168
- img: _icons.menuIcon
169
- },
170
- activeTool: activeTool,
171
- addPicture: addPicture,
172
- loadFile: loadFile,
173
- saveFile: saveFile,
174
- togglePictureUrlModal: openPictureUrlModal,
175
- exportCanvasInFile: exportCanvasInFile,
176
- withUploadPicture: withUploadPicture,
177
- withUrlPicture: withUrlPicture,
178
- withLoadAndSave: withLoadAndSave,
179
- withExport: withExport,
180
- hasActionToUndo: hasActionToUndo,
181
- hasActionToRedo: hasActionToRedo,
182
- hasActionToClear: hasActionToClear,
183
- undoAction: undoAction,
184
- redoAction: redoAction,
185
- clearCanvas: clearCanvas
186
- })), isMenuOpen && /*#__PURE__*/_react.default.createElement(StyledToolsModal, {
187
- onClose: toggleTools
188
- }, availableTools.map((toolType, index) => toolType.type === 'picture' ? null : /*#__PURE__*/_react.default.createElement(_Tool.default, {
189
- disabled: disabled,
190
- key: index,
191
- type: toolType,
192
- img: toolType.icon,
193
- withText: false,
194
- isActive: activeTool.id === toolType.id,
195
- setActive: setActiveTool
196
- }))), isPictureUrlModalOpen && /*#__PURE__*/_react.default.createElement(_PictureUrlInput.default, {
197
- togglePictureUrlModal: togglePictureUrlModal,
198
- addPicture: addPicture
199
- }));
200
- };
201
-
202
- var _default = Toolbar;
203
- exports.default = _default;
@@ -1,134 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _fp = _interopRequireDefault(require("lodash/fp"));
11
-
12
- var _react = _interopRequireWildcard(require("react"));
13
-
14
- var _Button = _interopRequireDefault(require("../common/Button"));
15
-
16
- var _Panel = _interopRequireDefault(require("../common/Panel"));
17
-
18
- var _react2 = require("@linaria/react");
19
-
20
- var _Tool = _interopRequireDefault(require("./Tool"));
21
-
22
- var _dom = require("../../utils/dom");
23
-
24
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
-
26
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
-
28
- const StyledPanelContent = /*#__PURE__*/(0, _react2.styled)('div')({
29
- name: "StyledPanelContent",
30
- class: "s1bvz4xj"
31
- });
32
- const StyledRelative = /*#__PURE__*/(0, _react2.styled)('div')({
33
- name: "StyledRelative",
34
- class: "siejlch"
35
- });
36
-
37
- const ToolbarGroup = _ref => {
38
- var _group$toolsType, _ref2;
39
-
40
- let {
41
- activeTool,
42
- alignment,
43
- group,
44
- disabled = false,
45
- setActiveToolFromId
46
- } = _ref;
47
- const panelRef = (0, _react.useRef)(null);
48
- const [isOpen, setIsOpen] = (0, _react.useState)(false);
49
- const [, startTransition] = (0, _react.useTransition)();
50
- const [localActiveTool, setLocalActiveTool] = (0, _react.useState)(undefined);
51
-
52
- const setActiveTool = tool => {
53
- setLocalActiveTool(tool);
54
- setActiveToolFromId(tool.id);
55
- };
56
-
57
- (0, _react.useEffect)(() => {
58
- if (!isOpen) return;
59
-
60
- const closePanel = event => {
61
- const isClickInsideToolbarGroup = (0, _dom.isEventInsideNode)(event, panelRef.current);
62
- !isClickInsideToolbarGroup && setIsOpen(false);
63
- };
64
-
65
- document.addEventListener('mousedown', closePanel, {
66
- passive: false
67
- });
68
- document.addEventListener('touchstart', closePanel, {
69
- passive: false
70
- });
71
- return () => {
72
- document.removeEventListener('mousedown', closePanel);
73
- document.removeEventListener('touchstart', closePanel);
74
- };
75
- }, [isOpen]);
76
-
77
- if ('type' in group) {
78
- return /*#__PURE__*/_react.default.createElement(_Tool.default, {
79
- disabled: disabled,
80
- type: group,
81
- img: group.icon,
82
- isActive: activeTool.id === group.id,
83
- setActive: setActiveTool
84
- });
85
- }
86
-
87
- if (_fp.default.isEmpty(group.toolsType)) return null;
88
-
89
- if (((_group$toolsType = group.toolsType) === null || _group$toolsType === void 0 ? void 0 : _group$toolsType.length) === 1) {
90
- return /*#__PURE__*/_react.default.createElement(_Tool.default, {
91
- disabled: disabled,
92
- type: group.toolsType[0],
93
- img: group.toolsType[0].icon,
94
- isActive: activeTool.id === group.toolsType[0].id,
95
- setActive: setActiveTool
96
- });
97
- }
98
-
99
- const isActive = _fp.default.find({
100
- type: activeTool.type
101
- }, group === null || group === void 0 ? void 0 : group.toolsType) !== undefined;
102
- const groupIcon = (_ref2 = localActiveTool ? localActiveTool.icon : group.toolsType && group.toolsType[0] && group.toolsType[0].icon) !== null && _ref2 !== void 0 ? _ref2 : group.title;
103
-
104
- const openPanel = () => {
105
- if (localActiveTool) setActiveToolFromId(localActiveTool.id);else group.toolsType && group.toolsType[0] && setActiveTool(group.toolsType[0]);
106
- startTransition(() => {
107
- setIsOpen(true);
108
- });
109
- };
110
-
111
- return /*#__PURE__*/_react.default.createElement(StyledRelative, null, /*#__PURE__*/_react.default.createElement(_Button.default, {
112
- selected: isActive,
113
- title: group.title,
114
- disabled: disabled,
115
- onClick: openPanel,
116
- icon: groupIcon
117
- }), isOpen && /*#__PURE__*/_react.default.createElement(_Panel.default, {
118
- alignment: alignment,
119
- position: "top"
120
- }, /*#__PURE__*/_react.default.createElement(StyledPanelContent, {
121
- "data-vertical": +group.vertical,
122
- ref: panelRef
123
- }, group.toolsType.map((toolType, i) => /*#__PURE__*/_react.default.createElement(_Tool.default, {
124
- disabled: disabled,
125
- key: i,
126
- type: toolType,
127
- img: toolType.icon,
128
- isActive: activeTool.id === toolType.id,
129
- setActive: setActiveTool
130
- })))));
131
- };
132
-
133
- var _default = ToolbarGroup;
134
- exports.default = _default;
@@ -1,51 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.GRID_SMALL = exports.GRID_NONE = exports.GRID_MEDIUM = exports.GRID_LARGE = exports.DEFAULT_OPTIONS = exports.APP_NAME = void 0;
7
-
8
- var _shapes = require("./shapes");
9
-
10
- var _tools = require("./tools");
11
-
12
- const APP_NAME = 'react_paint';
13
- exports.APP_NAME = APP_NAME;
14
- const GRID_NONE = 0;
15
- exports.GRID_NONE = GRID_NONE;
16
- const GRID_SMALL = 1;
17
- exports.GRID_SMALL = GRID_SMALL;
18
- const GRID_MEDIUM = 2;
19
- exports.GRID_MEDIUM = GRID_MEDIUM;
20
- const GRID_LARGE = 3;
21
- exports.GRID_LARGE = GRID_LARGE;
22
- const DEFAULT_OPTIONS = {
23
- layersManipulation: true,
24
- grid: GRID_NONE,
25
- canGrow: false,
26
- canShrink: true,
27
- withExport: true,
28
- withLoadAndSave: true,
29
- withUploadPicture: true,
30
- withUrlPicture: false,
31
- availableTools: _tools.DEFAULT_SHAPE_TOOLS,
32
- clearCallback: 'empty',
33
- uiStyle: {
34
- toolbarBackgroundColor: 'white',
35
- dividerColor: '#36418129',
36
- fontRadius: 8,
37
- fontDisabledColor: '#3641812b',
38
- fontDisabledBackgroundColor: 'transparent',
39
- fontColor: '#364181',
40
- fontBackgroundColor: 'transparent',
41
- fontSelectedColor: 'white',
42
- fontSelectedBackgroundColor: '#364181',
43
- fontHoverColor: '#364181',
44
- fontHoverBackgroundColor: '#afd8d8',
45
- canvasBackgroundColor: 'white',
46
- canvasSelectionColor: _shapes.SELECTION_DEFAULT_COLOR,
47
- canvasSelectionWidth: _shapes.SELECTION_DEFAULT_WIDTH,
48
- canvasSelectionPadding: _shapes.SELECTION_DEFAULT_PADDING
49
- }
50
- };
51
- exports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;