@yorab/react-paint 0.18.1 → 1.0.0-beta.1

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 (247) hide show
  1. package/README.md +266 -22
  2. package/dist/_chunks/canvas-CDYlr833.js +1 -0
  3. package/dist/_chunks/editor-BARYd5Od.js +1 -0
  4. package/dist/canvas/components/Canvas.d.ts +15 -3
  5. package/dist/canvas/components/EditTextBox.d.ts +4 -4
  6. package/dist/canvas/constants/app.d.ts +32 -17
  7. package/dist/canvas/constants/grid.d.ts +7 -0
  8. package/dist/canvas/constants/picture.d.ts +8 -0
  9. package/dist/canvas/constants/shapes.d.ts +2 -2
  10. package/dist/canvas/constants/tools.d.ts +12 -2
  11. package/dist/canvas/constants/zoom.d.ts +4 -2
  12. package/dist/canvas/context/PaintContext.d.ts +9 -0
  13. package/dist/canvas/hooks/useAnnotationsStyle.d.ts +5 -0
  14. package/dist/canvas/hooks/useAutoScroll.d.ts +4 -0
  15. package/dist/canvas/hooks/useCanvasRenderer.d.ts +17 -0
  16. package/dist/canvas/hooks/useDrawableCanvas.d.ts +8 -5
  17. package/dist/canvas/hooks/useDropPicture.d.ts +7 -0
  18. package/dist/canvas/hooks/useKeyboard.d.ts +6 -32
  19. package/dist/canvas/hooks/usePaintState.d.ts +9 -0
  20. package/dist/canvas/hooks/usePinchZoomAndMove.d.ts +3 -13
  21. package/dist/canvas/hooks/useReactPaint.d.ts +11 -163
  22. package/dist/canvas/hooks/useResizeObserver.d.ts +1 -0
  23. package/dist/canvas/hooks/useShapeEvents.d.ts +7 -0
  24. package/dist/canvas/hooks/useZoom.d.ts +4 -17
  25. package/dist/canvas/index.d.ts +24 -17
  26. package/dist/canvas/index.js +1 -1
  27. package/dist/canvas/store/createStore.d.ts +14 -0
  28. package/dist/canvas/store/eventEmitter.d.ts +11 -0
  29. package/dist/canvas/store/internal.d.ts +5 -0
  30. package/dist/canvas/store/paintStore.d.ts +898 -0
  31. package/dist/canvas/store/selectors.d.ts +855 -0
  32. package/dist/canvas/store/shapesReducer.d.ts +66 -0
  33. package/dist/canvas/store/types.d.ts +72 -0
  34. package/dist/canvas/types/Canvas.d.ts +19 -0
  35. package/dist/{src/common → canvas}/types/Mode.d.ts +8 -15
  36. package/dist/{common → canvas}/types/Settings.d.ts +6 -1
  37. package/dist/{common → canvas}/types/Shapes.d.ts +27 -21
  38. package/dist/canvas/types/editor.d.ts +388 -0
  39. package/dist/{common → canvas}/types/tools.d.ts +10 -6
  40. package/dist/{common → canvas}/utils/array.d.ts +2 -0
  41. package/dist/canvas/utils/canvas.d.ts +18 -2
  42. package/dist/canvas/utils/click.d.ts +17 -0
  43. package/dist/canvas/utils/data.d.ts +6 -5
  44. package/dist/canvas/utils/equality.d.ts +5 -0
  45. package/dist/canvas/utils/file.d.ts +36 -266
  46. package/dist/canvas/utils/grid.d.ts +1 -1
  47. package/dist/canvas/utils/intersect.d.ts +24 -14
  48. package/dist/canvas/utils/object.d.ts +11 -0
  49. package/dist/{src/common/utils/selection.d.ts → canvas/utils/selectedShapes.d.ts} +2 -2
  50. package/dist/canvas/utils/selection/anchors.d.ts +16 -0
  51. package/dist/canvas/utils/selection/groupSelection.d.ts +3 -3
  52. package/dist/canvas/utils/selection/lineSelection.d.ts +3 -10
  53. package/dist/canvas/utils/selection/rectSelection.d.ts +6 -11
  54. package/dist/canvas/utils/selection/selectionFrame.d.ts +2 -2
  55. package/dist/canvas/utils/selection.d.ts +7 -5
  56. package/dist/canvas/utils/shapeInput.d.ts +45 -0
  57. package/dist/canvas/utils/shapePatch.d.ts +10 -0
  58. package/dist/canvas/utils/shapes/brush.d.ts +6 -6
  59. package/dist/canvas/utils/shapes/circle.d.ts +5 -5
  60. package/dist/canvas/utils/shapes/curve.d.ts +4 -4
  61. package/dist/canvas/utils/shapes/ellipse.d.ts +5 -5
  62. package/dist/canvas/utils/shapes/group.d.ts +9 -3
  63. package/dist/canvas/utils/shapes/index.d.ts +31 -5
  64. package/dist/canvas/utils/shapes/line.d.ts +5 -5
  65. package/dist/canvas/utils/shapes/path.d.ts +16 -8
  66. package/dist/canvas/utils/shapes/picture.d.ts +7 -5
  67. package/dist/canvas/utils/shapes/polygon.d.ts +4 -4
  68. package/dist/canvas/utils/shapes/rectangle.d.ts +5 -5
  69. package/dist/canvas/utils/shapes/text.d.ts +12 -6
  70. package/dist/canvas/utils/shapes/triangle.d.ts +2 -2
  71. package/dist/canvas/utils/tools.d.ts +12 -3
  72. package/dist/canvas/utils/transform.d.ts +5 -4
  73. package/dist/canvas/utils/trigo.d.ts +17 -1
  74. package/dist/canvas/utils/util.d.ts +14 -0
  75. package/dist/canvas/utils/zoom.d.ts +29 -15
  76. package/dist/editor/components/common/Button.d.ts +0 -1
  77. package/dist/editor/components/common/FileInput.d.ts +0 -1
  78. package/dist/editor/components/common/Loading.d.ts +1 -2
  79. package/dist/editor/components/common/Menu.d.ts +3 -2
  80. package/dist/editor/components/common/Modal.d.ts +1 -2
  81. package/dist/editor/components/common/Panel.d.ts +1 -2
  82. package/dist/editor/components/common/Snackbar.d.ts +2 -3
  83. package/dist/editor/components/settings/ClosedPointsField.d.ts +1 -1
  84. package/dist/editor/components/settings/ColorField.d.ts +1 -2
  85. package/dist/editor/components/settings/DeleteButton.d.ts +3 -4
  86. package/dist/editor/components/settings/FontFamilyField.d.ts +1 -2
  87. package/dist/editor/components/settings/LayoutButton.d.ts +1 -2
  88. package/dist/editor/components/settings/Layouts.d.ts +4 -15
  89. package/dist/editor/components/settings/LineArrowField.d.ts +1 -2
  90. package/dist/editor/components/settings/LineTypeField.d.ts +2 -3
  91. package/dist/editor/components/settings/RangeField.d.ts +1 -2
  92. package/dist/editor/components/settings/SelectField.d.ts +1 -2
  93. package/dist/editor/components/settings/SettingsBar.d.ts +3 -18
  94. package/dist/editor/components/settings/ToggleField.d.ts +2 -1
  95. package/dist/editor/components/settings/ZoomButton.d.ts +1 -2
  96. package/dist/editor/components/settings/ZoomPanel.d.ts +4 -0
  97. package/dist/editor/components/toolbox/ActionButton.d.ts +9 -0
  98. package/dist/editor/components/toolbox/ContextMenu.d.ts +5 -24
  99. package/dist/editor/components/toolbox/ExportModal.d.ts +1 -2
  100. package/dist/editor/components/toolbox/LoadFileTool.d.ts +4 -4
  101. package/dist/editor/components/toolbox/MenuGroup.d.ts +1 -7
  102. package/dist/editor/components/toolbox/PictureUrlInput.d.ts +2 -2
  103. package/dist/editor/components/toolbox/Tool.d.ts +3 -3
  104. package/dist/editor/components/toolbox/Toolbar.d.ts +5 -16
  105. package/dist/editor/components/toolbox/ToolbarGroup.d.ts +2 -3
  106. package/dist/editor/constants/options.d.ts +11 -1
  107. package/dist/editor/constants/snackbar.d.ts +1 -1
  108. package/dist/editor/constants/style.d.ts +0 -9
  109. package/dist/editor/constants/tools.d.ts +12 -32
  110. package/dist/editor/editor.css +1 -0
  111. package/dist/editor/hooks/useDrag.d.ts +3 -3
  112. package/dist/editor/hooks/useMenu.d.ts +3 -2
  113. package/dist/editor/hooks/usePressOutside.d.ts +7 -0
  114. package/dist/editor/hooks/useSnackbar.d.ts +1 -1
  115. package/dist/editor/index.d.ts +12 -22
  116. package/dist/editor/index.js +1 -1
  117. package/dist/editor/types/tools.d.ts +7 -0
  118. package/dist/editor/utils/dom.d.ts +1 -0
  119. package/dist/editor/utils/style.d.ts +7 -1
  120. package/dist/editor/utils/toolbar.d.ts +1 -2
  121. package/dist/editor/utils/util.d.ts +5 -0
  122. package/dist/index.d.ts +2 -5
  123. package/dist/react-paint.css +1 -1
  124. package/dist/react-paint.js +1 -1
  125. package/dist/react-paint.umd.cjs +1 -1
  126. package/package.json +37 -26
  127. package/dist/_chunks/array-DuJem3vg.js +0 -1
  128. package/dist/_chunks/canvas-DF1RWuxW.js +0 -1
  129. package/dist/_chunks/editor-DuVskl0R.js +0 -1
  130. package/dist/canvas/context/CanvasContext.d.ts +0 -55
  131. package/dist/canvas/hooks/useComponent.d.ts +0 -12
  132. package/dist/canvas/hooks/useDoubleClick.d.ts +0 -5
  133. package/dist/canvas/hooks/useEventListener.d.ts +0 -2
  134. package/dist/canvas/hooks/useShapes.d.ts +0 -44
  135. package/dist/common/hooks/useDebounce.d.ts +0 -2
  136. package/dist/common/types/Canvas.d.ts +0 -8
  137. package/dist/common/types/Mode.d.ts +0 -64
  138. package/dist/common/types/react.d.ts +0 -6
  139. package/dist/common/utils/dom.d.ts +0 -1
  140. package/dist/common/utils/object.d.ts +0 -4
  141. package/dist/common/utils/selection.d.ts +0 -4
  142. package/dist/common/utils/util.d.ts +0 -3
  143. package/dist/editor/constants/grid.d.ts +0 -7
  144. package/dist/src/canvas/components/Canvas.d.ts +0 -4
  145. package/dist/src/canvas/components/EditTextBox.d.ts +0 -13
  146. package/dist/src/canvas/constants/app.d.ts +0 -37
  147. package/dist/src/canvas/constants/grid.d.ts +0 -1
  148. package/dist/src/canvas/constants/keyboard.d.ts +0 -27
  149. package/dist/src/canvas/constants/picture.d.ts +0 -1
  150. package/dist/src/canvas/constants/rendering.d.ts +0 -3
  151. package/dist/src/canvas/constants/shapes.d.ts +0 -10
  152. package/dist/src/canvas/constants/tools.d.ts +0 -4
  153. package/dist/src/canvas/constants/zoom.d.ts +0 -5
  154. package/dist/src/canvas/context/CanvasContext.d.ts +0 -55
  155. package/dist/src/canvas/hooks/useComponent.d.ts +0 -12
  156. package/dist/src/canvas/hooks/useDoubleClick.d.ts +0 -5
  157. package/dist/src/canvas/hooks/useDrawableCanvas.d.ts +0 -6
  158. package/dist/src/canvas/hooks/useEventListener.d.ts +0 -2
  159. package/dist/src/canvas/hooks/useKeyboard.d.ts +0 -33
  160. package/dist/src/canvas/hooks/usePinchZoomAndMove.d.ts +0 -17
  161. package/dist/src/canvas/hooks/useReactPaint.d.ts +0 -164
  162. package/dist/src/canvas/hooks/useResizeObserver.d.ts +0 -6
  163. package/dist/src/canvas/hooks/useShapes.d.ts +0 -44
  164. package/dist/src/canvas/hooks/useZoom.d.ts +0 -22
  165. package/dist/src/canvas/index.d.ts +0 -19
  166. package/dist/src/canvas/utils/canvas.d.ts +0 -15
  167. package/dist/src/canvas/utils/data.d.ts +0 -5
  168. package/dist/src/canvas/utils/file.d.ts +0 -274
  169. package/dist/src/canvas/utils/grid.d.ts +0 -2
  170. package/dist/src/canvas/utils/intersect.d.ts +0 -27
  171. package/dist/src/canvas/utils/selection/groupSelection.d.ts +0 -4
  172. package/dist/src/canvas/utils/selection/lineSelection.d.ts +0 -19
  173. package/dist/src/canvas/utils/selection/rectSelection.d.ts +0 -20
  174. package/dist/src/canvas/utils/selection/selectionFrame.d.ts +0 -3
  175. package/dist/src/canvas/utils/selection.d.ts +0 -12
  176. package/dist/src/canvas/utils/shapes/brush.d.ts +0 -21
  177. package/dist/src/canvas/utils/shapes/circle.d.ts +0 -18
  178. package/dist/src/canvas/utils/shapes/curve.d.ts +0 -17
  179. package/dist/src/canvas/utils/shapes/ellipse.d.ts +0 -18
  180. package/dist/src/canvas/utils/shapes/group.d.ts +0 -33
  181. package/dist/src/canvas/utils/shapes/index.d.ts +0 -35
  182. package/dist/src/canvas/utils/shapes/line.d.ts +0 -19
  183. package/dist/src/canvas/utils/shapes/path.d.ts +0 -29
  184. package/dist/src/canvas/utils/shapes/picture.d.ts +0 -13
  185. package/dist/src/canvas/utils/shapes/polygon.d.ts +0 -18
  186. package/dist/src/canvas/utils/shapes/rectangle.d.ts +0 -22
  187. package/dist/src/canvas/utils/shapes/text.d.ts +0 -27
  188. package/dist/src/canvas/utils/shapes/triangle.d.ts +0 -4
  189. package/dist/src/canvas/utils/transform.d.ts +0 -15
  190. package/dist/src/canvas/utils/trigo.d.ts +0 -19
  191. package/dist/src/canvas/utils/zoom.d.ts +0 -58
  192. package/dist/src/common/hooks/useDebounce.d.ts +0 -2
  193. package/dist/src/common/types/Canvas.d.ts +0 -8
  194. package/dist/src/common/types/Settings.d.ts +0 -24
  195. package/dist/src/common/types/Shapes.d.ts +0 -153
  196. package/dist/src/common/types/react.d.ts +0 -6
  197. package/dist/src/common/types/tools.d.ts +0 -164
  198. package/dist/src/common/types/utils.d.ts +0 -4
  199. package/dist/src/common/utils/array.d.ts +0 -2
  200. package/dist/src/common/utils/dom.d.ts +0 -1
  201. package/dist/src/common/utils/object.d.ts +0 -4
  202. package/dist/src/common/utils/util.d.ts +0 -3
  203. package/dist/src/editor/components/common/Button.d.ts +0 -16
  204. package/dist/src/editor/components/common/FileInput.d.ts +0 -13
  205. package/dist/src/editor/components/common/Loading.d.ts +0 -6
  206. package/dist/src/editor/components/common/Menu.d.ts +0 -10
  207. package/dist/src/editor/components/common/Modal.d.ts +0 -11
  208. package/dist/src/editor/components/common/Panel.d.ts +0 -15
  209. package/dist/src/editor/components/common/Snackbar.d.ts +0 -7
  210. package/dist/src/editor/components/settings/ClosedPointsField.d.ts +0 -10
  211. package/dist/src/editor/components/settings/ColorField.d.ts +0 -15
  212. package/dist/src/editor/components/settings/DeleteButton.d.ts +0 -8
  213. package/dist/src/editor/components/settings/FontFamilyField.d.ts +0 -12
  214. package/dist/src/editor/components/settings/LayoutButton.d.ts +0 -7
  215. package/dist/src/editor/components/settings/Layouts.d.ts +0 -19
  216. package/dist/src/editor/components/settings/LineArrowField.d.ts +0 -12
  217. package/dist/src/editor/components/settings/LineTypeField.d.ts +0 -16
  218. package/dist/src/editor/components/settings/RangeField.d.ts +0 -19
  219. package/dist/src/editor/components/settings/SelectField.d.ts +0 -18
  220. package/dist/src/editor/components/settings/SettingsBar.d.ts +0 -26
  221. package/dist/src/editor/components/settings/ToggleField.d.ts +0 -13
  222. package/dist/src/editor/components/settings/ZoomButton.d.ts +0 -8
  223. package/dist/src/editor/components/toolbox/ContextMenu.d.ts +0 -25
  224. package/dist/src/editor/components/toolbox/ExportModal.d.ts +0 -7
  225. package/dist/src/editor/components/toolbox/LoadFileTool.d.ts +0 -11
  226. package/dist/src/editor/components/toolbox/MenuGroup.d.ts +0 -27
  227. package/dist/src/editor/components/toolbox/PictureUrlInput.d.ts +0 -7
  228. package/dist/src/editor/components/toolbox/Tool.d.ts +0 -11
  229. package/dist/src/editor/components/toolbox/Toolbar.d.ts +0 -26
  230. package/dist/src/editor/components/toolbox/ToolbarGroup.d.ts +0 -14
  231. package/dist/src/editor/constants/grid.d.ts +0 -7
  232. package/dist/src/editor/constants/icons.d.ts +0 -43
  233. package/dist/src/editor/constants/loading.d.ts +0 -1
  234. package/dist/src/editor/constants/options.d.ts +0 -13
  235. package/dist/src/editor/constants/snackbar.d.ts +0 -7
  236. package/dist/src/editor/constants/style.d.ts +0 -14
  237. package/dist/src/editor/constants/tools.d.ts +0 -32
  238. package/dist/src/editor/hooks/useDrag.d.ts +0 -15
  239. package/dist/src/editor/hooks/useMenu.d.ts +0 -11
  240. package/dist/src/editor/hooks/useSnackbar.d.ts +0 -10
  241. package/dist/src/editor/index.d.ts +0 -25
  242. package/dist/src/editor/types/snackbar.d.ts +0 -7
  243. package/dist/src/editor/utils/style.d.ts +0 -2
  244. package/dist/src/editor/utils/toolbar.d.ts +0 -11
  245. package/dist/src/index.d.ts +0 -5
  246. /package/dist/{common → canvas}/types/utils.d.ts +0 -0
  247. /package/dist/{canvas → editor}/hooks/useDebounce.d.ts +0 -0
@@ -1,8 +1,7 @@
1
- import type { SelectionType, ShapeEntity } from './../../../common/types/Shapes';
2
1
  type DeleteShapeButtonType = {
3
2
  disabled?: boolean;
4
- selectedShape: SelectionType;
5
- removeShape: (shape: ShapeEntity[]) => void;
3
+ selectedShapeIds: string[];
4
+ removeShapes: (ids: string[]) => void;
6
5
  };
7
- declare const DeleteButton: ({ disabled, selectedShape, removeShape }: DeleteShapeButtonType) => import("react/jsx-runtime").JSX.Element;
6
+ declare const DeleteButton: ({ disabled, selectedShapeIds, removeShapes }: DeleteShapeButtonType) => import("react").JSX.Element;
8
7
  export default DeleteButton;
@@ -1,5 +1,4 @@
1
1
  import type React from 'react';
2
- import './FontFamilyField.css';
3
2
  type FontFamilyFieldType = {
4
3
  selectedSettings: string | undefined;
5
4
  setSelectedSettings: React.Dispatch<React.SetStateAction<string | undefined>>;
@@ -8,5 +7,5 @@ type FontFamilyFieldType = {
8
7
  defaultValue?: number | string | undefined;
9
8
  valueChanged: (field: string, value: string | number) => void;
10
9
  };
11
- declare const FontFamilyField: ({ selectedSettings, setSelectedSettings, disabled, values, defaultValue, valueChanged }: FontFamilyFieldType) => import("react/jsx-runtime").JSX.Element | null;
10
+ declare const FontFamilyField: ({ selectedSettings, setSelectedSettings, disabled, values, defaultValue, valueChanged }: FontFamilyFieldType) => React.JSX.Element | null;
12
11
  export default FontFamilyField;
@@ -1,7 +1,6 @@
1
- import './LayoutButton.css';
2
1
  type LayoutButtonType = {
3
2
  disabled: boolean;
4
3
  toggleLayoutPanel: () => void;
5
4
  };
6
- declare const LayoutButton: ({ disabled, toggleLayoutPanel }: LayoutButtonType) => import("react/jsx-runtime").JSX.Element;
5
+ declare const LayoutButton: ({ disabled, toggleLayoutPanel }: LayoutButtonType) => import("react").JSX.Element;
7
6
  export default LayoutButton;
@@ -1,19 +1,8 @@
1
- import type { SelectionType, ShapeEntity } from './../../../common/types/Shapes';
2
- import type { GridLabelType } from './../../../editor/constants/grid';
3
- import './Layouts.css';
4
- import type { UtilsSettings } from './../../../common/types/Settings';
1
+ import type React from 'react';
5
2
  type LayoutsType = {
6
- gridFormat: GridLabelType;
7
- setGridFormat: (value: GridLabelType) => void;
8
- settings: UtilsSettings;
9
- shapes: ShapeEntity[];
10
- removeShape: (shape: ShapeEntity[]) => void;
11
- toggleShapeVisibility: (shape: ShapeEntity[]) => void;
12
- toggleShapeLock: (shape: ShapeEntity[]) => void;
13
- selectedShapes: SelectionType | undefined;
14
- selectShapes: (shapes: ShapeEntity[]) => void;
15
- swapShapes: (startPositionShapeId: string, endPositionShapeId: string) => void;
3
+ disabled: boolean;
16
4
  isLayoutPanelShown: boolean;
17
5
  };
18
- declare const Layouts: ({ gridFormat, setGridFormat, settings, shapes, removeShape, toggleShapeVisibility, toggleShapeLock, selectedShapes, swapShapes, selectShapes, isLayoutPanelShown }: LayoutsType) => import("react/jsx-runtime").JSX.Element | null;
6
+ /** Panel of the layers and of the grid. It only reads the state while it is shown */
7
+ declare const Layouts: ({ disabled, isLayoutPanelShown }: LayoutsType) => React.JSX.Element | null;
19
8
  export default Layouts;
@@ -1,5 +1,4 @@
1
1
  import type React from 'react';
2
- import './LineArrowField.css';
3
2
  type LineArrowType = {
4
3
  selectedSettings: string | undefined;
5
4
  setSelectedSettings: React.Dispatch<React.SetStateAction<string | undefined>>;
@@ -8,5 +7,5 @@ type LineArrowType = {
8
7
  defaultValue?: number | string | undefined;
9
8
  valueChanged: (field: string, value: string | number) => void;
10
9
  };
11
- declare const LineArrowField: ({ selectedSettings, setSelectedSettings, disabled, values, defaultValue, valueChanged }: LineArrowType) => import("react/jsx-runtime").JSX.Element | null;
10
+ declare const LineArrowField: ({ selectedSettings, setSelectedSettings, disabled, values, defaultValue, valueChanged }: LineArrowType) => React.JSX.Element | null;
12
11
  export default LineArrowField;
@@ -1,9 +1,8 @@
1
1
  import type React from 'react';
2
- import './LineTypeField.css';
3
2
  type LineTypeOptionType = {
4
3
  children: string;
5
4
  };
6
- export declare const LineTypeOption: ({ children }: LineTypeOptionType) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const LineTypeOption: ({ children }: LineTypeOptionType) => React.JSX.Element;
7
6
  type LineTypeType = {
8
7
  selectedSettings: string | undefined;
9
8
  setSelectedSettings: React.Dispatch<React.SetStateAction<string | undefined>>;
@@ -12,5 +11,5 @@ type LineTypeType = {
12
11
  defaultValue?: number | string | undefined;
13
12
  valueChanged: (field: string, value: string | number) => void;
14
13
  };
15
- declare const LineTypeField: ({ selectedSettings, setSelectedSettings, disabled, values, defaultValue, valueChanged }: LineTypeType) => import("react/jsx-runtime").JSX.Element | null;
14
+ declare const LineTypeField: ({ selectedSettings, setSelectedSettings, disabled, values, defaultValue, valueChanged }: LineTypeType) => React.JSX.Element | null;
16
15
  export default LineTypeField;
@@ -1,5 +1,4 @@
1
1
  import type React from 'react';
2
- import './RangeField.css';
3
2
  type ShapeStyleColorType = {
4
3
  selectedSettings: string | undefined;
5
4
  setSelectedSettings: React.Dispatch<React.SetStateAction<string | undefined>>;
@@ -15,5 +14,5 @@ type ShapeStyleColorType = {
15
14
  saveShapes: () => void;
16
15
  valueChanged: (field: string, value: string | number, needHistorySave?: boolean) => void;
17
16
  };
18
- declare const RangeField: ({ selectedSettings, setSelectedSettings, title, icon, disabled, field, value, min, max, step, unity, valueChanged, saveShapes }: ShapeStyleColorType) => import("react/jsx-runtime").JSX.Element | null;
17
+ declare const RangeField: ({ selectedSettings, setSelectedSettings, title, icon, disabled, field, value, min, max, step, unity, valueChanged, saveShapes }: ShapeStyleColorType) => React.JSX.Element | null;
19
18
  export default RangeField;
@@ -1,5 +1,4 @@
1
1
  import type React from 'react';
2
- import './SelectField.css';
3
2
  type SelectFieldType = {
4
3
  CustomOption: React.FC<{
5
4
  children?: React.ReactNode;
@@ -14,5 +13,5 @@ type SelectFieldType = {
14
13
  defaultValue?: number | string | undefined;
15
14
  valueChanged: (field: string, value: string | number) => void;
16
15
  };
17
- declare const SelectField: ({ CustomOption, selectedSettings, setSelectedSettings, title, disabled, field, icon, values, defaultValue, valueChanged }: SelectFieldType) => import("react/jsx-runtime").JSX.Element | null;
16
+ declare const SelectField: ({ CustomOption, selectedSettings, setSelectedSettings, title, disabled, field, icon, values, defaultValue, valueChanged }: SelectFieldType) => React.JSX.Element | null;
18
17
  export default SelectField;
@@ -1,26 +1,11 @@
1
- import type { UtilsSettings } from './../../../common/types/Settings';
2
- import type { SelectionType, ShapeEntity } from './../../../common/types/Shapes';
3
- import type { CustomTool, ToolsType } from './../../../common/types/tools';
4
1
  import type React from 'react';
5
- import './SettingsBar.css';
6
2
  type SettingsBarType = {
7
- width: number;
8
- availableTools: CustomTool[];
9
- updateToolSettings: (toolId: string, field: string, value: string | number | boolean) => void;
3
+ disabled: boolean;
4
+ withZoom: boolean;
10
5
  layersManipulation?: boolean;
11
- activeTool: ToolsType;
12
- selectedShape: SelectionType | undefined;
13
- canvas: HTMLCanvasElement | null;
14
- settings: UtilsSettings;
15
- updateShape: (shape: ShapeEntity[], withSave?: boolean) => void;
16
- removeShape: (shape: ShapeEntity[]) => void;
17
6
  toggleLayoutPanel: () => void;
18
7
  isZoomPanelShown: boolean;
19
8
  setIsZoomPanelShown: React.Dispatch<React.SetStateAction<boolean>>;
20
- setCanvasZoom: (action: 'unzoom' | 'zoom' | 'default') => void;
21
- saveShapes: () => void;
22
- refreshShape: (shape: ShapeEntity) => ShapeEntity;
23
- calculateTextFontSize: (ctx: CanvasRenderingContext2D, text: string[], maxWidth: number, fontBold: boolean, fontItalic: boolean, fontFamily?: string) => number;
24
9
  };
25
- declare const SettingsBar: ({ width, availableTools, updateToolSettings, layersManipulation, toggleLayoutPanel, activeTool, saveShapes, selectedShape, canvas, settings, updateShape, removeShape, isZoomPanelShown, setIsZoomPanelShown, refreshShape, calculateTextFontSize }: SettingsBarType) => import("react/jsx-runtime").JSX.Element;
10
+ declare const SettingsBar: ({ disabled, withZoom, layersManipulation, toggleLayoutPanel, isZoomPanelShown, setIsZoomPanelShown }: SettingsBarType) => React.JSX.Element;
26
11
  export default SettingsBar;
@@ -4,9 +4,10 @@ type ShapeStyleSelectType = {
4
4
  disabled?: boolean | undefined;
5
5
  field: string;
6
6
  icon: string;
7
+ title?: string;
7
8
  values: boolean[];
8
9
  value?: boolean | undefined;
9
10
  valueChanged: (field: string, value: boolean) => void;
10
11
  };
11
- declare const ToggleField: ({ setSelectedSettings, disabled, field, icon, values, value, valueChanged }: ShapeStyleSelectType) => import("react/jsx-runtime").JSX.Element | null;
12
+ declare const ToggleField: ({ setSelectedSettings, disabled, field, icon, title, values, value, valueChanged }: ShapeStyleSelectType) => React.JSX.Element | null;
12
13
  export default ToggleField;
@@ -1,8 +1,7 @@
1
- import './ZoomButton.css';
2
1
  type ZoomButtonType = {
3
2
  disabled?: boolean | undefined;
4
3
  toggleZoomPanel: () => void;
5
4
  className?: string | undefined;
6
5
  };
7
- declare const ZoomButton: ({ disabled, className, toggleZoomPanel }: ZoomButtonType) => import("react/jsx-runtime").JSX.Element;
6
+ declare const ZoomButton: ({ disabled, className, toggleZoomPanel }: ZoomButtonType) => import("react").JSX.Element;
8
7
  export default ZoomButton;
@@ -0,0 +1,4 @@
1
+ declare const ZoomPanel: ({ isEditMode }: {
2
+ isEditMode: boolean;
3
+ }) => import("react").JSX.Element;
4
+ export default ZoomPanel;
@@ -0,0 +1,9 @@
1
+ import type { EditorActionTool } from './../../../editor/types/tools.js';
2
+ type ActionButtonType = {
3
+ type: EditorActionTool;
4
+ withText?: boolean;
5
+ disabled?: boolean;
6
+ onClick: () => void;
7
+ };
8
+ declare const ActionButton: ({ type, withText, disabled, onClick }: ActionButtonType) => import("react").JSX.Element;
9
+ export default ActionButton;
@@ -1,25 +1,6 @@
1
- import type { UtilsSettings } from './../../../common/types/Settings';
2
- import './ContextMenu.css';
3
- import type { SelectionModeContextMenu } from './../../../common/types/Mode';
4
- import type { Point, SelectionType, ShapeEntity } from './../../../common/types/Shapes';
5
- type ContextMenuType = {
6
- selectionMode: SelectionModeContextMenu<Point | number>;
7
- settings: UtilsSettings;
8
- canvasRef: React.RefObject<HTMLCanvasElement | null>;
9
- selectAllShapes: () => void;
10
- closeContextMenu: () => void;
11
- buildShapesGroup: (shapes: ShapeEntity[]) => SelectionType | undefined;
12
- copyShapes: (selection: SelectionType) => ShapeEntity[];
13
- toggleShapeVisibility: (shapes: ShapeEntity[]) => void;
14
- toggleShapeLock: (shapes: ShapeEntity[]) => void;
15
- removeShape: (shapes: ShapeEntity[]) => void;
16
- duplicateShapes: (shapesToDuplicate: ShapeEntity[], translate?: boolean, selectNewOnes?: boolean) => void;
17
- setCopiedShape: (shape: React.SetStateAction<SelectionType | undefined>) => void;
18
- copiedShape: SelectionType | undefined;
19
- pasteShapes: (shapes: ShapeEntity[]) => void;
20
- moveShapes: (shapes: ShapeEntity[], action: 'first' | 'last' | 'forward' | 'backward') => void;
21
- removeShapePoint: (shape: ShapeEntity<'curve' | 'polygon'>, pointIndex: number) => void;
22
- transformShape: (ctx: CanvasRenderingContext2D, shapes: ShapeEntity[], center: Point, action: 'flipHorizontally' | 'flipVertically' | 'rotateClockwise' | 'rotateCounterclockwise') => void;
23
- };
24
- declare const ContextMenu: ({ moveShapes, selectAllShapes, selectionMode, transformShape, settings, canvasRef, closeContextMenu, toggleShapeVisibility, toggleShapeLock, removeShape, duplicateShapes, copiedShape, setCopiedShape, pasteShapes, removeShapePoint, buildShapesGroup, copyShapes }: ContextMenuType) => import("react/jsx-runtime").JSX.Element;
1
+ import { type RefObject } from 'react';
2
+ /** Context menu of the canvas, shown when the canvas opens it */
3
+ declare const ContextMenu: ({ containerRef }: {
4
+ containerRef: RefObject<HTMLElement | null>;
5
+ }) => import("react").JSX.Element | null;
25
6
  export default ContextMenu;
@@ -1,7 +1,6 @@
1
- import './ExportModal.css';
2
1
  type ExportModalProps = {
3
2
  toggleExportModal: () => void;
4
3
  exportCanvasInFile: (view: 'fitToShapes' | 'defaultView' | 'currentZoom') => void;
5
4
  };
6
- declare const ExportModal: ({ toggleExportModal, exportCanvasInFile }: ExportModalProps) => import("react/jsx-runtime").JSX.Element;
5
+ declare const ExportModal: ({ toggleExportModal, exportCanvasInFile }: ExportModalProps) => import("react").JSX.Element;
7
6
  export default ExportModal;
@@ -1,11 +1,11 @@
1
- import type { ToolsType } from './../../../common/types/tools';
1
+ import type { EditorActionTool } from './../../../editor/types/tools.js';
2
+ import type React from 'react';
2
3
  type LoadFileToolType = {
3
4
  disabled?: boolean;
4
5
  loadFile: (file: File) => void;
5
- type: ToolsType;
6
- img?: string;
6
+ type: EditorActionTool;
7
7
  accept: string;
8
8
  withText?: boolean;
9
9
  };
10
- declare const LoadFileTool: ({ disabled, withText, loadFile, type, img, accept }: LoadFileToolType) => import("react/jsx-runtime").JSX.Element;
10
+ declare const LoadFileTool: ({ disabled, withText, loadFile, type, accept }: LoadFileToolType) => React.JSX.Element;
11
11
  export default LoadFileTool;
@@ -1,12 +1,6 @@
1
- import type { ToolsType } from './../../../common/types/tools';
2
- import './MenuGroup.css';
3
1
  type MenuGroupType = {
4
- activeTool: ToolsType;
5
2
  withActionsInMenu: boolean;
6
- vertical?: boolean;
7
- title?: string;
8
3
  disabled?: boolean;
9
- img?: string;
10
4
  loadFile: (file: File) => void;
11
5
  addPicture: (file: File) => Promise<void>;
12
6
  saveFile: () => void;
@@ -23,5 +17,5 @@ type MenuGroupType = {
23
17
  redoAction: () => void;
24
18
  clearCanvas: () => void;
25
19
  };
26
- declare const MenuGroup: ({ activeTool, withActionsInMenu, hasActionToUndo, hasActionToRedo, hasActionToClear, undoAction, redoAction, clearCanvas, disabled, withLoadAndSave, withExport, addPicture, loadFile, togglePictureUrlModal, saveFile, toggleExportModal, withUploadPicture, withUrlPicture }: MenuGroupType) => import("react/jsx-runtime").JSX.Element | null;
20
+ declare const MenuGroup: ({ withActionsInMenu, hasActionToUndo, hasActionToRedo, hasActionToClear, undoAction, redoAction, clearCanvas, disabled, withLoadAndSave, withExport, addPicture, loadFile, togglePictureUrlModal, saveFile, toggleExportModal, withUploadPicture, withUrlPicture }: MenuGroupType) => import("react").JSX.Element | null;
27
21
  export default MenuGroup;
@@ -1,7 +1,7 @@
1
- import './PictureUrlInput.css';
1
+ import type React from 'react';
2
2
  type PictureUrlModalType = {
3
3
  togglePictureUrlModal: () => void;
4
4
  addPicture: (url: string) => Promise<void>;
5
5
  };
6
- declare const PictureUrlModal: ({ togglePictureUrlModal, addPicture }: PictureUrlModalType) => import("react/jsx-runtime").JSX.Element;
6
+ declare const PictureUrlModal: ({ togglePictureUrlModal, addPicture }: PictureUrlModalType) => React.JSX.Element;
7
7
  export default PictureUrlModal;
@@ -1,11 +1,11 @@
1
- import type { ToolsType } from './../../../common/types/tools';
1
+ import type { ToolsType } from './../../../canvas/index.js';
2
2
  type ToolComponentType = {
3
3
  type: ToolsType;
4
- img?: string;
4
+ img?: string | undefined;
5
5
  withText?: boolean;
6
6
  isActive: boolean;
7
7
  disabled?: boolean;
8
8
  setActive: (marker: ToolsType) => void;
9
9
  };
10
- declare const Tool: ({ type, img, isActive, withText, disabled, setActive }: ToolComponentType) => import("react/jsx-runtime").JSX.Element;
10
+ declare const Tool: ({ type, img, isActive, withText, disabled, setActive }: ToolComponentType) => import("react").JSX.Element;
11
11
  export default Tool;
@@ -1,26 +1,15 @@
1
- import type { CustomTool, ToolsType } from './../../../common/types/tools';
2
- import './Toolbar.css';
3
- import type { UtilsSettings } from './../../../common/types/Settings';
1
+ import { type ExportView } from './../../../canvas/index.js';
4
2
  type ToolboxType = {
5
- width: number;
6
- activeTool: ToolsType;
7
- hasActionToUndo?: boolean;
8
- hasActionToRedo?: boolean;
9
- hasActionToClear?: boolean;
10
- undoAction: () => void;
11
- redoAction: () => void;
12
- clearCanvas: () => void;
13
- setActiveTool: (tool: ToolsType) => void;
3
+ disabled: boolean;
4
+ withMoveTool: boolean;
14
5
  loadFile: (file: File) => void;
15
6
  addPicture: (file: File | string) => Promise<void>;
16
7
  saveFile: () => void;
17
- exportCanvasInFile: (view: 'fitToShapes' | 'defaultView' | 'currentZoom') => void;
18
- availableTools: CustomTool[];
8
+ exportCanvasInFile: (view: ExportView) => void;
19
9
  withLoadAndSave: boolean;
20
10
  withExport: boolean;
21
11
  withUrlPicture: boolean;
22
12
  withUploadPicture: boolean;
23
- settings: UtilsSettings;
24
13
  };
25
- declare const Toolbar: ({ settings, width, activeTool, hasActionToUndo, hasActionToRedo, hasActionToClear, withLoadAndSave, withExport, clearCanvas, setActiveTool: setActiveToolFromProps, undoAction, redoAction, addPicture, loadFile, saveFile, exportCanvasInFile, availableTools, withUrlPicture, withUploadPicture }: ToolboxType) => import("react/jsx-runtime").JSX.Element;
14
+ declare const Toolbar: ({ disabled, withMoveTool, withLoadAndSave, withExport, addPicture, loadFile, saveFile, exportCanvasInFile, withUrlPicture, withUploadPicture }: ToolboxType) => import("react").JSX.Element;
26
15
  export default Toolbar;
@@ -1,5 +1,4 @@
1
- import type { CustomTool, ToolsType } from './../../../common/types/tools';
2
- import './ToolbarGroup.css';
1
+ import type { CustomTool, ToolsType } from './../../../canvas/index.js';
3
2
  type ToolbarGroupType = {
4
3
  activeTool: ToolsType;
5
4
  group: CustomTool | {
@@ -10,5 +9,5 @@ type ToolbarGroupType = {
10
9
  disabled?: boolean;
11
10
  setActiveToolFromId: (id: string) => void;
12
11
  };
13
- declare const ToolbarGroup: ({ activeTool, group, disabled, setActiveToolFromId }: ToolbarGroupType) => import("react/jsx-runtime").JSX.Element | null;
12
+ declare const ToolbarGroup: ({ activeTool, group, disabled, setActiveToolFromId }: ToolbarGroupType) => import("react").JSX.Element | null;
14
13
  export default ToolbarGroup;
@@ -1,4 +1,4 @@
1
- export declare const DEFAULT_EDITOR_OPTIONS: {
1
+ type EditorOptionsType = {
2
2
  toolbarBackgroundColor: string;
3
3
  dividerColor: string;
4
4
  fontRadius: number;
@@ -10,4 +10,14 @@ export declare const DEFAULT_EDITOR_OPTIONS: {
10
10
  fontSelectedBackgroundColor: string;
11
11
  fontHoverColor: string;
12
12
  fontHoverBackgroundColor: string;
13
+ layersManipulation: boolean;
14
+ withExport: boolean;
15
+ withLoadAndSave: boolean;
16
+ withUploadPicture: boolean;
17
+ withUrlPicture: boolean;
13
18
  };
19
+ export type EditorOptions = {
20
+ [K in keyof EditorOptionsType]?: EditorOptionsType[K] | undefined;
21
+ };
22
+ export declare const DEFAULT_EDITOR_OPTIONS: EditorOptionsType;
23
+ export {};
@@ -1,4 +1,4 @@
1
- import type { SnackbarTypeType } from './../../editor/types/snackbar';
1
+ import type { SnackbarTypeType } from './../../editor/types/snackbar.js';
2
2
  export declare const SNACKBAR_DEFAULT_SETTINGS: {
3
3
  type: SnackbarTypeType;
4
4
  duration: number;
@@ -1,12 +1,3 @@
1
- export declare const POLYGON_POINTS_VALUES: number[];
2
- export declare const CURVE_POINTS_VALUES: number[];
3
- export declare const STYLE_COLORS: string[];
4
- export declare const STYLE_LINE_DASH: number[];
5
- export declare const STYLE_LINE_WITH_ARROW: number[];
6
- export declare const LINE_DASH_DATA: number[][];
7
- export declare const STYLE_FONTS: string[];
8
- export declare const STYLE_FONT_DEFAULT = "serif";
9
- export declare const STYLE_FONT_SIZE_DEFAULT = 36;
10
1
  export declare const STYLE_ZINDEX: {
11
2
  LOADING: number;
12
3
  PANEL: number;
@@ -1,32 +1,12 @@
1
- import type { ActionsTool, CustomTool, CustomToolInput, ToolsBrushSettings, ToolsCircleSettings, ToolsCurveSettings, ToolsEllipseSettings, ToolsLineSettings, ToolsPictureSettings, ToolsPolygonSettings, ToolsRectSettings, ToolsSquareSettings, ToolsTextSettings } from './../../common/types/tools';
2
- export declare const SETTINGS_DEFAULT_RECT: ToolsRectSettings;
3
- export declare const SETTINGS_DEFAULT_SQUARE: ToolsSquareSettings;
4
- export declare const SETTINGS_DEFAULT_CIRCLE: ToolsCircleSettings;
5
- export declare const SETTINGS_DEFAULT_ELLIPSE: ToolsEllipseSettings;
6
- export declare const SETTINGS_DEFAULT_PICTURE: ToolsPictureSettings;
7
- export declare const SETTINGS_DEFAULT_TEXT: ToolsTextSettings;
8
- export declare const SETTINGS_DEFAULT_BRUSH: ToolsBrushSettings;
9
- export declare const SETTINGS_DEFAULT_LINE: ToolsLineSettings;
10
- export declare const SETTINGS_DEFAULT_POLYGON: ToolsPolygonSettings;
11
- export declare const SETTINGS_DEFAULT_CURVE: ToolsCurveSettings;
12
- export declare const DEFAULT_SHAPE_PICTURE: CustomTool;
13
- export declare const DEFAULT_SHAPE_BRUSH: CustomTool;
14
- export declare const DEFAULT_SHAPE_LINE: CustomTool;
15
- export declare const DEFAULT_SHAPE_POLYGON: CustomTool;
16
- export declare const DEFAULT_SHAPE_CURVE: CustomTool;
17
- export declare const DEFAULT_SHAPE_RECT: CustomTool;
18
- export declare const DEFAULT_SHAPE_SQUARE: CustomTool;
19
- export declare const DEFAULT_SHAPE_CIRCLE: CustomTool;
20
- export declare const DEFAULT_SHAPE_ELLIPSE: CustomTool;
21
- export declare const DEFAULT_SHAPE_TEXT: CustomTool;
22
- export declare const DEFAULT_SHAPE_TOOLS: CustomToolInput[];
23
- export declare const SELECTION_TOOL: ActionsTool;
24
- export declare const UNDO_TOOL: ActionsTool;
25
- export declare const REDO_TOOL: ActionsTool;
26
- export declare const CLEAR_TOOL: ActionsTool;
27
- export declare const EXPORT_TOOL: ActionsTool;
28
- export declare const LOAD_TOOL: ActionsTool;
29
- export declare const SAVE_TOOL: ActionsTool;
30
- export declare const MOVE_TOOL: ActionsTool;
31
- export declare const UPLOAD_PICTURE_TOOL: ActionsTool;
32
- export declare const ADD_URL_PICTURE_TOOL: ActionsTool;
1
+ import { type ActionsTool, type ShapeType } from './../../canvas/index.js';
2
+ import type { EditorActionTool } from './../../editor/types/tools.js';
3
+ export declare const TOOL_LABELS: Record<ShapeType, string>;
4
+ export declare const SELECTION_TOOL_DISPLAY: ActionsTool;
5
+ export declare const MOVE_TOOL_DISPLAY: ActionsTool;
6
+ export declare const UNDO_TOOL: EditorActionTool;
7
+ export declare const REDO_TOOL: EditorActionTool;
8
+ export declare const CLEAR_TOOL: EditorActionTool;
9
+ export declare const EXPORT_TOOL: EditorActionTool;
10
+ export declare const LOAD_TOOL: EditorActionTool;
11
+ export declare const SAVE_TOOL: EditorActionTool;
12
+ export declare const UPLOAD_PICTURE_TOOL: EditorActionTool;
@@ -0,0 +1 @@
1
+ .react-paint-editor-loading{z-index:var(--react-paint-editor-loading-zindex);transition:opacity var(--react-paint-editor-loading-transition-duration) linear;opacity:0;background:#00000050;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.react-paint-editor-loading[data-loading=visible]{opacity:1}@keyframes react-paint-editor-loading-rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.react-paint-editor-loader{width:40px;height:40px;animation:1s infinite react-paint-editor-loading-rotation;position:relative;transform:rotate(10deg)}.react-paint-editor-loader>div{border-radius:50%;width:15px;height:15px;position:absolute}.react-paint-editor-loader>div:first-child{background-color:#5c6bc0;left:0}.react-paint-editor-loader>div:nth-child(2){background-color:#8bc34a;right:0}.react-paint-editor-loader>div:nth-child(3){background-color:#ffb74d;bottom:0}.react-paint-editor-loader>div:nth-child(4){background-color:#f44336;bottom:0;right:0}.react-paint-editor-snackbar-container{z-index:var(--react-paint-editor-snackbar-zindex);flex-direction:column-reverse;align-items:center;height:0;display:flex;position:absolute;bottom:0;left:0;right:0}.react-paint-editor-snackbar{color:#fff;overflow-wrap:break-word;box-sizing:border-box;max-width:calc(100% - 24px);transition:all var(--react-paint-editor-panel-transition-duration);opacity:0;margin:4px;padding:12px 48px;display:inline-block;transform:translateY(40px)}.react-paint-editor-snackbar[data-type=infos]{background:#646464}.react-paint-editor-snackbar[data-type=error]{background:#911717}.react-paint-editor-snackbar[data-type=success]{background:#088900}.react-paint-editor-snackbar[data-is-shown="1"]{opacity:1;transform:translate(0,0)}.react-paint-editor-snackbar[data-is-shown="0"]{opacity:0;transform:translateY(40px)}.react-paint-editor-button{vertical-align:middle;box-sizing:border-box;cursor:pointer;border-radius:var(--react-paint-editor-app-font-radius);min-width:32px;height:32px;color:var(--react-paint-editor-app-font-color);padding:var(--react-paint-editor-button-padding,0);-webkit-user-select:none;user-select:none;background:0 0;border:none;justify-content:center;align-items:center;margin:2px 4px;font-size:14px;display:inline-flex}.react-paint-editor-button[data-selected="1"]{color:var(--react-paint-editor-app-font-selected-color);background:var(--react-paint-editor-app-font-selected-bg)}.react-paint-editor-button[data-hidden="1"]{visibility:hidden}.react-paint-editor-button[data-disabled="1"]{cursor:default;color:var(--react-paint-editor-app-font-disabled-color);background:var(--react-paint-editor-app-font-disabled-bg)}.react-paint-editor-button[data-selected="0"][data-disabled="0"]{background:var(--react-paint-editor-app-font-bg);color:var(--react-paint-editor-app-font-color)}.react-paint-editor-button[data-selected="0"][data-disabled="0"]:hover{color:var(--react-paint-editor-app-font-hover-color);background:var(--react-paint-editor-app-font-hover-bg)}.react-paint-editor-button[data-disabled="0"]{cursor:pointer}.react-paint-editor-button svg{fill:currentColor;width:20px;height:20px}.react-paint-editor-button input{display:none}.react-paint-editor-button-content{box-sizing:border-box;width:100%;padding:2px 6px;display:flex}.react-paint-editor-button-icon{align-items:center;display:flex}.react-paint-editor-button-children{text-align:left;flex:1;align-items:center;display:flex}.react-paint-editor-button-children+.react-paint-editor-button-icon{margin-left:12px}.react-paint-editor-panel{z-index:var(--react-paint-editor-panel-zindex);background:var(--react-paint-editor-app-toolbar-bg);white-space:nowrap;box-sizing:border-box;border-radius:8px;padding:8px;position:absolute;box-shadow:0 3px 8px #0000003d}.react-paint-editor-panel[data-alignment=left]{margin:4px;left:0}.react-paint-editor-panel[data-alignment=center]{margin:4px 0;left:50%;transform:translate(-50%)}.react-paint-editor-panel[data-alignment=right]{margin:4px;right:0}.react-paint-editor-panel[data-position=bottom]{bottom:100%}.react-paint-editor-panel[data-position=right]{top:0;left:100%}.react-paint-editor-panel[data-position=left]{top:0;right:100%}.react-paint-editor-panel[data-position=top]{top:100%}.react-paint-editor-panel[data-fitcontainer=true]{max-width:100%}.react-paint-editor-panel-title{margin-top:4px;margin-bottom:8px;font-size:18px}.react-paint-editor-layouts{background:var(--react-paint-editor-app-toolbar-bg);box-sizing:border-box;min-width:200px;display:inline-block;overflow-y:auto}.react-paint-editor-layouts-remove-button.react-paint-editor-layouts-remove-button{margin:2px 0}.react-paint-editor-layouts-remove-button.react-paint-editor-layouts-remove-button:not(:hover){opacity:.2}.react-paint-editor-layout{background:var(--react-paint-editor-app-toolbar-bg);box-sizing:border-box;border:3px solid #0000;justify-content:space-between;align-items:center;padding:4px 0;display:flex;position:relative}.react-paint-editor-layout[data-is-over="1"]{border:3px dotted var(--react-paint-editor-app-font-hover-bg)}.react-paint-editor-layout[data-is-dragging="1"]{opacity:.4}.react-paint-editor-layout[data-selected="1"]{color:var(--react-paint-editor-app-font-selected-color);background:var(--react-paint-editor-app-font-selected-bg)}.react-paint-editor-layout[data-selected="1"] .react-paint-editor-layouts-remove-button{color:#fff}.react-paint-editor-layout[data-selected="0"][data-disabled="0"]{background:var(--react-paint-editor-app-font-bg);color:var(--react-paint-editor-app-font-color)}.react-paint-editor-layout[data-selected="0"][data-disabled="0"]:hover{color:var(--react-paint-editor-app-font-hover-color);background:var(--react-paint-editor-app-font-hover-bg)}.react-paint-editor-layout[data-disabled="1"]{cursor:default;color:var(--react-paint-editor-app-font-disabled-color);background:var(--react-paint-editor-app-font-disabled-bg)}.react-paint-editor-layout[data-disabled="0"]{cursor:move}.react-paint-editor-layout>span{color:#6b6b6b;height:20px;line-height:1}.react-paint-editor-layout[data-selected="1"]>span{color:var(--react-paint-editor-app-font-selected-color)}.react-paint-editor-layout>span>svg{fill:#6b6b6b;width:20px;height:20px;padding:0 4px;transform:scale(.75)}.react-paint-editor-layouts-visible-button.react-paint-editor-layouts-visible-button{margin:2px 0}.react-paint-editor-layouts-visible-button.react-paint-editor-layouts-visible-button[data-visible=false]{opacity:.2}.react-paint-editor-layouts-locked-button.react-paint-editor-layouts-locked-button{margin:2px 0}.react-paint-editor-layouts-locked-button.react-paint-editor-layouts-locked-button[data-locked=false]{opacity:.2}.react-paint-editor-layouts-grid-button.react-paint-editor-layouts-grid-button span{justify-content:center}.react-paint-editor-layouts-subtitle{min-width:60px;font-weight:700}.react-paint-editor-layouts-separator{flex:1}.react-paint-editor-layouts-panel.react-paint-editor-layouts-panel.react-paint-editor-layouts-panel{bottom:36px;top:unset}.react-paint-editor-layouts-panel.react-paint-editor-layouts-panel.react-paint-editor-layouts-panel[data-edit="0"]{bottom:0;top:unset}.react-paint-editor-layouts-panel-content{flex-direction:column;max-height:100%;display:flex}.react-paint-editor-layouts-scrolling-content{flex-direction:column;display:flex;overflow-y:auto}.react-paint-editor-layouts-row{align-items:center;display:flex}.react-paint-editor-layouts-placeholder{opacity:.6;text-align:center;padding:12px 0}.react-paint-editor-modal{z-index:var(--react-paint-editor-modal-zindex);justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.react-paint-editor-modal[data-position=center]{align-items:center}.react-paint-editor-modal[data-position=bottom]{align-items:end}.react-paint-editor-modal-panel{background:var(--react-paint-editor-app-toolbar-bg);white-space:nowrap;border-radius:8px;padding:4px;display:grid;position:relative;box-shadow:0 3px 8px #0000003d}.react-paint-editor-modal-mask{background:#00000073;position:absolute;top:0;bottom:0;left:0;right:0}.react-paint-editor-colorfield-color{box-sizing:border-box;border-radius:50%;width:20px;height:20px}.react-paint-editor-colorfield-color[data-mode=fill]{background:var(--react-paint-editor-colorfield-color-value);border:1px solid #80808038}.react-paint-editor-colorfield-color[data-mode=stroke]{border:4px solid #80808038}.react-paint-editor-colorfield-color[data-mode=stroke]:after{content:"";border:2px solid var(--react-paint-editor-colorfield-color-value);box-sizing:border-box;border-radius:100%;width:18px;height:18px;display:block;position:relative;top:-3px;left:-3px}.react-paint-editor-colorfield-wrapper{flex-wrap:wrap;display:flex}.react-paint-editor-colorfield-customcolor{box-sizing:border-box;width:20px;height:20px;color:var(--react-paint-editor-colorfield-color-value);border-radius:50%;justify-content:center;align-items:baseline;font-weight:700;display:flex}.react-paint-editor-fontfamily-option{font-family:var(--react-paint-editor-fontfamily-family)}.react-paint-editor-selectfield-wrapper{flex-wrap:wrap;display:flex}.react-paint-editor-layout-opened .react-paint-editor-layout-button.react-paint-editor-layout-button.react-paint-editor-layout-button{color:var(--react-paint-editor-app-font-selected-color);background:var(--react-paint-editor-app-font-selected-bg)}.react-paint-editor-linearrow-left{border-top:5px solid #0000;border-bottom:5px solid #0000;border-right:15px solid;width:0;height:0;display:inline-block;position:absolute;top:50%;left:0;transform:translate(-25%,-50%)}.react-paint-editor-linearrow-right{border-top:5px solid #0000;border-bottom:5px solid #0000;border-left:15px solid;width:0;height:0;display:inline-block;position:absolute;top:50%;right:0;transform:translate(25%,-50%)}.react-paint-editor-linearrow-option{vertical-align:middle;background:currentColor;width:60px;height:2px;display:inline-block;position:relative}.react-paint-editor-linearrow-option[data-type="0"] .react-paint-editor-linearrow-left,.react-paint-editor-linearrow-option[data-type="1"] .react-paint-editor-linearrow-left,.react-paint-editor-linearrow-option[data-type="0"] .react-paint-editor-linearrow-right,.react-paint-editor-linearrow-option[data-type="2"] .react-paint-editor-linearrow-right{display:none}.react-paint-editor-linetype-option{display:inline-block}.react-paint-editor-linetype-option>span{vertical-align:middle;background:0 0;width:6px;height:2px;display:inline-block}.react-paint-editor-linetype-option[data-type="0"]>span{background:currentColor}.react-paint-editor-linetype-option[data-type="2"]{position:relative;left:3px}.react-paint-editor-linetype-option[data-type="2"]>span:nth-child(3n-1){background:currentColor;width:12px}.react-paint-editor-linetype-option[data-type="2"]>span:nth-child(n+11){display:none}.react-paint-editor-linetype-option[data-type="1"]>span:nth-child(odd){background:currentColor}.react-paint-editor-rangefield{flex-wrap:wrap;align-items:center;max-width:100%;display:inline-flex}.react-paint-editor-rangefield [data-indeterminate="1"]{opacity:.25}.react-paint-editor-settings-bar{-webkit-user-select:none;user-select:none;background:var(--react-paint-editor-app-toolbar-bg);border-top:1px solid var(--react-paint-editor-app-divider-color);box-sizing:border-box;height:36px;display:flex;position:relative}.react-paint-editor-settings-shrinkable{text-align:left;flex:1;height:100%;display:flex;position:relative}.react-paint-editor-settings-modal{grid-template-columns:repeat(auto-fill,40px);width:100%}.react-paint-editor-zoom-button{margin:0}.react-paint-editor-zoom-button .react-paint-editor-button-children{justify-content:center}.react-paint-editor-zoom-button-value{min-width:60px}.react-paint-editor-bar-zoom-button-opened.react-paint-editor-bar-zoom-button-opened.react-paint-editor-bar-zoom-button-opened.react-paint-editor-bar-zoom-button-opened{color:var(--react-paint-editor-app-font-selected-color);background:var(--react-paint-editor-app-font-selected-bg)}.react-paint-editor-menu{flex-direction:column;display:flex}.react-paint-editor-toolbox-relative{display:inline-block;position:relative}.react-paint-editor-toolbox-pictureinput-modal form{grid-template-columns:3fr 1fr 1fr}.react-paint-editor-toolbox-pictureinput-modal form input{color:var(--react-paint-editor-app-font-color);border:1px solid var(--react-paint-editor-app-font-color);background:var(--react-paint-editor-app-toolbar-bg);outline:none}.react-paint-editor-toolbar-shrinkable{text-align:center;flex:1;height:100%;position:relative}.react-paint-editor-toolbar-toolbox{background:var(--react-paint-editor-app-toolbar-bg);border-bottom:1px solid var(--react-paint-editor-app-divider-color);box-sizing:border-box;max-height:36px;min-width:var(--react-paint-editor-toolbar-minwidth);display:flex}.react-paint-editor-toolbar-modal{grid-template-columns:1fr 1fr 1fr}.react-paint-editor-toolbox-export-modal h3{margin-top:8px;margin-bottom:0;font-size:18px}.react-paint-editor-toolbargroup-panel-content{display:flex}.react-paint-editor-toolbargroup-panel-content[data-vertical="1"]{flex-direction:column}.react-paint-editor-toolbargroup-relative{display:inline-block;position:relative}.react-paint-editor-app{color:var(--react-paint-editor-app-font-color);flex-direction:column;max-width:100%;font-family:Arial,Helvetica,sans-serif;display:flex;position:relative}.react-paint-editor-app:-webkit-any([data-resize=scaleDown],[data-resize=none]){max-width:min(100%, var(--react-paint-editor-app-canvasWidth))}.react-paint-editor-app:is([data-resize=scaleDown],[data-resize=none]){max-width:min(100%, var(--react-paint-editor-app-canvasWidth))}.react-paint-editor-app:-webkit-any([data-resize=scaleUp],[data-resize=none]){min-width:var(--react-paint-editor-app-canvasWidth)}.react-paint-editor-app:is([data-resize=scaleUp],[data-resize=none]){min-width:var(--react-paint-editor-app-canvasWidth)}.react-paint-editor-app[data-resize=extend]{width:100%;height:100%}.react-paint-editor-app hr{border:none;border-top:1px solid var(--react-paint-editor-app-divider-color);width:100%}.react-paint-editor-toolbox-contextmenu{transform:var(--react-paint-editor-toolbox-contextmenu-transform);width:160px;top:0;left:0}.react-paint-editor-toolbox-contextmenu-group{flex-direction:column;display:flex;position:relative}
@@ -1,12 +1,12 @@
1
- import type { ShapeEntity } from './../../common/types/Shapes';
1
+ import type { ShapeEntity } from './../../canvas/index.js';
2
2
  import { type RefObject } from 'react';
3
3
  type useDragType = {
4
4
  disabled?: boolean;
5
5
  ref: RefObject<HTMLDivElement | null>;
6
- shape: ShapeEntity;
6
+ shape: Pick<ShapeEntity, 'id'>;
7
7
  layoutDragging: string | undefined;
8
8
  setLayoutDragging: (shapeId: string | undefined) => void;
9
- handleSelect: (shape: ShapeEntity[]) => void;
9
+ handleSelect: (ids: string[]) => void;
10
10
  onSwapShapes: (firstShapeId: string, lastShapeId: string) => void;
11
11
  };
12
12
  declare const useDrag: ({ disabled, ref, shape, layoutDragging, setLayoutDragging, handleSelect, onSwapShapes }: useDragType) => {
@@ -1,9 +1,10 @@
1
1
  type UseMenuProps = {
2
2
  trigger?: 'click' | 'hover';
3
- buttonElt: HTMLElement | null;
4
3
  disabled?: boolean;
5
4
  };
6
- declare const useMenu: ({ trigger, disabled, buttonElt }: UseMenuProps) => {
5
+ /** Opens a menu from the element given to the returned ref, which may be mounted after the menu */
6
+ declare const useMenu: ({ trigger, disabled }?: UseMenuProps) => {
7
+ ref: import("react").Dispatch<import("react").SetStateAction<HTMLElement | null>>;
7
8
  isOpen: boolean;
8
9
  trigger: "click" | "hover";
9
10
  closeMenu: () => void;
@@ -0,0 +1,7 @@
1
+ import { type RefObject } from 'react';
2
+ /**
3
+ * Calls onPressOutside when a press starts outside of the element, while it is enabled.
4
+ * pointerdown is used for the mouse, the touch and the pen: the canvas cancels it, which removes the mousedown that follows
5
+ */
6
+ declare const usePressOutside: (ref: RefObject<HTMLElement | null>, onPressOutside: () => void, enabled?: boolean) => void;
7
+ export default usePressOutside;
@@ -1,4 +1,4 @@
1
- import type { SnackBarType, SnackbarTypeType } from './../../editor/types/snackbar';
1
+ import type { SnackBarType, SnackbarTypeType } from './../../editor/types/snackbar.js';
2
2
  declare const useSnackbar: () => {
3
3
  snackbarList: SnackBarType[];
4
4
  addSnackbar: ({ type, duration, text }: {
@@ -1,25 +1,15 @@
1
- import type { EditorProps as CanvasEditorProps } from './../canvas/hooks/useReactPaint';
1
+ import { type ReactPaint } from './../canvas/index.js';
2
+ import { type EditorOptions } from './../editor/constants/options.js';
2
3
  import { type CSSProperties, type ReactNode } from 'react';
3
- import './index.css';
4
- type EditorProps = {
5
- editorProps: CanvasEditorProps;
6
- className?: string;
7
- style?: CSSProperties;
4
+ type EditorComponentProps = {
5
+ /** Handle returned by useReactPaint */
6
+ paint: ReactPaint;
7
+ className?: string | undefined;
8
+ style?: CSSProperties | undefined;
8
9
  children: ReactNode;
9
- options?: {
10
- toolbarBackgroundColor?: string | undefined;
11
- dividerColor?: string | undefined;
12
- fontRadius?: number | undefined;
13
- fontDisabledColor?: string | undefined;
14
- fontDisabledBackgroundColor?: string | undefined;
15
- fontColor?: string | undefined;
16
- fontBackgroundColor?: string | undefined;
17
- fontSelectedColor?: string | undefined;
18
- fontSelectedBackgroundColor?: string | undefined;
19
- fontHoverColor?: string | undefined;
20
- fontHoverBackgroundColor?: string | undefined;
21
- };
10
+ options?: EditorOptions | undefined;
22
11
  };
23
- declare const Editor: ({ editorProps, className, style, options, children }: EditorProps) => import("react/jsx-runtime").JSX.Element;
24
- export default Editor;
25
- export { DEFAULT_SHAPE_TOOLS } from './../editor/constants/tools';
12
+ declare const Editor: ({ paint, className, style, options, children }: EditorComponentProps) => import("react").JSX.Element;
13
+ export { DEFAULT_EDITOR_OPTIONS, type EditorOptions } from './../editor/constants/options.js';
14
+ export type { EditorComponentProps };
15
+ export { Editor };
@@ -1 +1 @@
1
- import{n as e,t}from"../_chunks/editor-DuVskl0R.js";export{e as DEFAULT_SHAPE_TOOLS,t as default};
1
+ export{n as DEFAULT_EDITOR_OPTIONS,t as Editor}from"../_chunks/editor-BARYd5Od.js";
@@ -0,0 +1,7 @@
1
+ /** Buttons of the toolbar which trigger an action of the editor: unlike the tools, the canvas does not know them */
2
+ export type EditorActionType = 'undo' | 'redo' | 'clear' | 'export' | 'loadfile' | 'savefile' | 'uploadpicture';
3
+ export type EditorActionTool = {
4
+ type: EditorActionType;
5
+ icon: string;
6
+ label: string;
7
+ };
@@ -0,0 +1 @@
1
+ export declare const isEventInsideNode: (event: Event, node: HTMLElement | null) => boolean;
@@ -1,2 +1,8 @@
1
- import type { ShapeType } from './../../common/types/Shapes';
1
+ import type { CustomTool, ShapeType } from './../../canvas/index.js';
2
2
  export declare const getShapePicture: (shape: ShapeType) => "" | "<svg><path d=\"M5.146 17.5Q4.146 17.5 3.208 17Q2.271 16.5 1.667 15.708Q2.208 15.75 2.802 15.344Q3.396 14.938 3.396 14.104Q3.396 13.042 4.135 12.292Q4.875 11.542 5.958 11.542Q7.021 11.542 7.76 12.292Q8.5 13.042 8.5 14.104Q8.5 15.5 7.51 16.5Q6.521 17.5 5.146 17.5ZM9.917 12.5 7.562 10.146 14.917 2.729Q15.146 2.5 15.469 2.5Q15.792 2.5 16.021 2.729L17.271 3.958Q17.5 4.188 17.5 4.531Q17.5 4.875 17.271 5.125Z\"/></svg>" | "<svg><path d=\"M2.5 17.5V2.5H17.5V17.5ZM4.25 15.75H15.75V4.25H4.25ZM4.25 15.75V4.25V15.75Z\"/></svg>" | "<svg><path d=\"M10 18.333Q8.271 18.333 6.75 17.677Q5.229 17.021 4.104 15.896Q2.979 14.771 2.323 13.25Q1.667 11.729 1.667 10Q1.667 8.271 2.323 6.75Q2.979 5.229 4.104 4.104Q5.229 2.979 6.75 2.323Q8.271 1.667 10 1.667Q11.729 1.667 13.25 2.323Q14.771 2.979 15.896 4.104Q17.021 5.229 17.677 6.75Q18.333 8.271 18.333 10Q18.333 11.729 17.677 13.25Q17.021 14.771 15.896 15.896Q14.771 17.021 13.25 17.677Q11.729 18.333 10 18.333ZM10 16.583Q12.75 16.583 14.667 14.667Q16.583 12.75 16.583 10Q16.583 7.25 14.667 5.333Q12.75 3.417 10 3.417Q7.25 3.417 5.333 5.333Q3.417 7.25 3.417 10Q3.417 12.75 5.333 14.667Q7.25 16.583 10 16.583ZM10 10Q10 10 10 10Q10 10 10 10Q10 10 10 10Q10 10 10 10Q10 10 10 10Q10 10 10 10Q10 10 10 10Q10 10 10 10Z\"/></svg>" | "<svg><path d=\"M12.25 18.333V16.167L6.833 13.458H2.5V8.208H6.25L8.25 5.917V1.667H13.5V6.917H9.708L7.75 9.146V11.958L12.25 14.208V13.083H17.5V18.333Z\"/></svg>" | "<svg><path d=\"M4.792 15.083 8.333 11.542 9.833 13.021 11.667 10.708 15.167 15.083ZM6.667 8.417Q5.938 8.417 5.427 7.906Q4.917 7.396 4.917 6.667Q4.917 5.938 5.427 5.427Q5.938 4.917 6.667 4.917Q7.396 4.917 7.906 5.427Q8.417 5.938 8.417 6.667Q8.417 7.396 7.906 7.906Q7.396 8.417 6.667 8.417ZM4.167 18.333Q3.125 18.333 2.396 17.604Q1.667 16.875 1.667 15.833V4.167Q1.667 3.125 2.396 2.396Q3.125 1.667 4.167 1.667H15.833Q16.875 1.667 17.604 2.396Q18.333 3.125 18.333 4.167V15.833Q18.333 16.875 17.604 17.604Q16.875 18.333 15.833 18.333ZM4.167 16.583H15.833Q16.146 16.583 16.365 16.365Q16.583 16.146 16.583 15.833V4.167Q16.583 3.854 16.365 3.635Q16.146 3.417 15.833 3.417H4.167Q3.854 3.417 3.635 3.635Q3.417 3.854 3.417 4.167V15.833Q3.417 16.146 3.635 16.365Q3.854 16.583 4.167 16.583Z\"/></svg>" | "<svg><path d=\"M8.708 16.667V5.917H4.167V3.333H15.833V5.917H11.292V16.667Z\"/></svg>" | "<svg><path d=\"M7.5 15.833V14.083H12.833L3.333 4.583L4.583 3.333L14.083 12.833V7.5H15.833V15.833Z\"/></svg>" | "<svg><path d=\"M7.521 17.5Q6.125 17.5 5.146 16.51Q4.167 15.521 4.167 14.125V7.417Q3.438 7.125 2.969 6.49Q2.5 5.854 2.5 5.042Q2.5 3.979 3.24 3.24Q3.979 2.5 5.042 2.5Q6.104 2.5 6.844 3.24Q7.583 3.979 7.583 5.042Q7.583 5.854 7.115 6.49Q6.646 7.125 5.917 7.417V14.125Q5.917 14.792 6.385 15.271Q6.854 15.75 7.521 15.75Q8.188 15.75 8.656 15.271Q9.125 14.792 9.125 14.125V5.875Q9.125 4.479 10.104 3.49Q11.083 2.5 12.479 2.5Q13.875 2.5 14.854 3.49Q15.833 4.479 15.833 5.875V12.583Q16.562 12.875 17.031 13.51Q17.5 14.146 17.5 14.958Q17.5 16.021 16.76 16.76Q16.021 17.5 14.958 17.5Q13.896 17.5 13.156 16.76Q12.417 16.021 12.417 14.958Q12.417 14.146 12.885 13.5Q13.354 12.854 14.083 12.583V5.875Q14.083 5.208 13.615 4.729Q13.146 4.25 12.479 4.25Q11.812 4.25 11.344 4.729Q10.875 5.208 10.875 5.875V14.125Q10.875 15.521 9.896 16.51Q8.917 17.5 7.521 17.5Z\"/></svg>" | "<svg><path d=\"M3.333 17.5V16.667H7.5V17.5ZM3.333 14.167V13.333H9.167V14.167ZM3.333 10.833V10H10.833V10.833ZM3.333 7.5V6.667H12.5V7.5ZM3.333 4.167V3.333H13.333V4.167ZM3.333 0.833V0H16.667V0.833Z\"/></svg>";
3
+ export type DisplayTool = CustomTool & {
4
+ icon: string;
5
+ label: string;
6
+ };
7
+ /** Tools coming from the canvas may have no icon or label: they are resolved here from the tool type */
8
+ export declare const getDisplayTool: (tool: CustomTool) => DisplayTool;
@@ -1,5 +1,4 @@
1
- import type { ShapeType } from './../../common/types/Shapes';
2
- import type { CustomTool } from './../../common/types/tools';
1
+ import type { CustomTool, ShapeType } from './../../canvas/index.js';
3
2
  export declare const getCurrentStructure: (availableTools: CustomTool[], defaultStructure: (ShapeType | {
4
3
  title: string;
5
4
  toolsType: ShapeType[];
@@ -0,0 +1,5 @@
1
+ export declare const uniqueId: (prefix?: string) => string;
2
+ export declare const clamp: (value: number, min: number, max: number) => number;
3
+ export declare const compact: <T>(array: (T | undefined | null)[]) => T[];
4
+ /** Shallow merges the options into the defaults, ignoring the options set to undefined */
5
+ export declare const withDefaults: <T extends object>(defaults: T, options: object | undefined) => T;