@yorab/react-paint 0.7.5 → 0.8.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 (149) hide show
  1. package/dist/components/App.d.ts +20 -0
  2. package/dist/components/Canvas.d.ts +38 -0
  3. package/dist/components/common/Button.d.ts +16 -0
  4. package/dist/components/common/Loading.d.ts +7 -0
  5. package/dist/components/common/Modal.d.ts +10 -0
  6. package/dist/components/common/Panel.d.ts +13 -0
  7. package/dist/components/common/Snackbar.d.ts +8 -0
  8. package/dist/components/settings/ColorField.d.ts +15 -0
  9. package/dist/components/settings/DeleteButton.d.ts +9 -0
  10. package/dist/components/settings/FontFamilyField.d.ts +12 -0
  11. package/dist/components/settings/LayoutButton.d.ts +8 -0
  12. package/dist/components/settings/Layouts.d.ts +19 -0
  13. package/dist/components/settings/LineArrowField.d.ts +12 -0
  14. package/dist/components/settings/LineTypeField.d.ts +16 -0
  15. package/dist/components/settings/PointsNumberField.d.ts +13 -0
  16. package/dist/components/settings/RangeField.d.ts +18 -0
  17. package/dist/components/settings/SelectField.d.ts +18 -0
  18. package/dist/components/settings/SettingsBar.d.ts +19 -0
  19. package/dist/components/settings/ToggleField.d.ts +12 -0
  20. package/dist/components/toolbox/EditTextBox.d.ts +14 -0
  21. package/dist/components/toolbox/LoadFileTool.d.ts +12 -0
  22. package/dist/components/toolbox/MenuGroup.d.ts +35 -0
  23. package/dist/components/toolbox/PictureUrlInput.d.ts +8 -0
  24. package/dist/components/toolbox/Tool.d.ts +12 -0
  25. package/dist/components/toolbox/Toolbar.d.ts +27 -0
  26. package/dist/components/toolbox/ToolbarGroup.d.ts +18 -0
  27. package/dist/constants/app.d.ts +41 -0
  28. package/dist/constants/icons.d.ts +41 -0
  29. package/dist/constants/loading.d.ts +1 -0
  30. package/dist/constants/picture.d.ts +1 -0
  31. package/dist/constants/shapes.d.ts +8 -0
  32. package/dist/constants/snackbar.d.ts +7 -0
  33. package/dist/constants/style.d.ts +17 -0
  34. package/dist/constants/tools.d.ts +32 -0
  35. package/dist/hooks/useComponent.d.ts +9 -0
  36. package/dist/hooks/useDoubleClick.d.ts +5 -0
  37. package/dist/hooks/useDrag.d.ts +15 -0
  38. package/dist/hooks/useDrawableCanvas.d.ts +37 -0
  39. package/dist/hooks/useKeyboard.d.ts +18 -0
  40. package/dist/hooks/useResizeObserver.d.ts +7 -0
  41. package/dist/hooks/useShapes.d.ts +22 -0
  42. package/dist/hooks/useSnackbar.d.ts +10 -0
  43. package/dist/react-paint.css +1 -0
  44. package/dist/react-paint.js +9109 -0
  45. package/dist/react-paint.umd.cjs +53 -0
  46. package/dist/types/Mode.d.ts +43 -0
  47. package/dist/types/Shapes.d.ts +112 -0
  48. package/dist/types/snackbar.d.ts +7 -0
  49. package/dist/types/tools.d.ts +124 -0
  50. package/dist/types/utils.d.ts +3 -0
  51. package/dist/utils/canvas.d.ts +10 -0
  52. package/dist/utils/data.d.ts +225 -0
  53. package/dist/utils/dom.d.ts +1 -0
  54. package/dist/utils/file.d.ts +10 -0
  55. package/dist/utils/intersect.d.ts +6 -0
  56. package/dist/utils/migration.d.ts +165 -0
  57. package/dist/utils/selection.d.ts +7 -0
  58. package/dist/utils/shapes/brush.d.ts +55 -0
  59. package/dist/utils/shapes/circle.d.ts +13 -0
  60. package/dist/utils/shapes/curve.d.ts +11 -0
  61. package/dist/utils/shapes/default.d.ts +10 -0
  62. package/dist/utils/shapes/ellipse.d.ts +13 -0
  63. package/dist/utils/shapes/grid.d.ts +3 -0
  64. package/dist/utils/shapes/index.d.ts +245 -0
  65. package/dist/utils/shapes/line.d.ts +23 -0
  66. package/dist/utils/shapes/picture.d.ts +6 -0
  67. package/dist/utils/shapes/polygon.d.ts +11 -0
  68. package/dist/utils/shapes/rectangle.d.ts +26 -0
  69. package/dist/utils/shapes/text.d.ts +48 -0
  70. package/dist/utils/shapes/triangle.d.ts +2 -0
  71. package/dist/utils/string.d.ts +3 -0
  72. package/dist/utils/style.d.ts +2 -0
  73. package/dist/utils/toolbar.d.ts +13 -0
  74. package/dist/utils/transform.d.ts +8 -0
  75. package/dist/utils/trigo.d.ts +10 -0
  76. package/package.json +51 -56
  77. package/dist/components/App.js +0 -496
  78. package/dist/components/Canvas.js +0 -194
  79. package/dist/components/common/Button.js +0 -88
  80. package/dist/components/common/Loading.js +0 -57
  81. package/dist/components/common/Modal.js +0 -46
  82. package/dist/components/common/Panel.js +0 -43
  83. package/dist/components/common/Snackbar.js +0 -68
  84. package/dist/components/settings/ColorField.js +0 -125
  85. package/dist/components/settings/DeleteButton.js +0 -37
  86. package/dist/components/settings/FontFamilyField.js +0 -67
  87. package/dist/components/settings/LayoutButton.js +0 -39
  88. package/dist/components/settings/Layouts.js +0 -214
  89. package/dist/components/settings/LineArrowField.js +0 -67
  90. package/dist/components/settings/LineTypeField.js +0 -65
  91. package/dist/components/settings/PointsNumberField.js +0 -45
  92. package/dist/components/settings/RangeField.js +0 -82
  93. package/dist/components/settings/SelectField.js +0 -81
  94. package/dist/components/settings/SettingsBar.js +0 -383
  95. package/dist/components/settings/ToggleField.js +0 -49
  96. package/dist/components/toolbox/EditTextBox.js +0 -138
  97. package/dist/components/toolbox/LoadFileTool.js +0 -58
  98. package/dist/components/toolbox/MenuGroup.js +0 -173
  99. package/dist/components/toolbox/PictureUrlInput.js +0 -68
  100. package/dist/components/toolbox/Tool.js +0 -41
  101. package/dist/components/toolbox/Toolbar.js +0 -203
  102. package/dist/components/toolbox/ToolbarGroup.js +0 -134
  103. package/dist/constants/app.js +0 -51
  104. package/dist/constants/icons.js +0 -88
  105. package/dist/constants/loading.js +0 -8
  106. package/dist/constants/picture.js +0 -8
  107. package/dist/constants/shapes.js +0 -20
  108. package/dist/constants/snackbar.js +0 -15
  109. package/dist/constants/style.js +0 -35
  110. package/dist/constants/tools.js +0 -424
  111. package/dist/hooks/useComponent.js +0 -47
  112. package/dist/hooks/useDoubleClick.js +0 -46
  113. package/dist/hooks/useDrag.js +0 -92
  114. package/dist/hooks/useDrawableCanvas.js +0 -230
  115. package/dist/hooks/useKeyboard.js +0 -142
  116. package/dist/hooks/useResizeObserver.js +0 -42
  117. package/dist/hooks/useShapes.js +0 -184
  118. package/dist/hooks/useSnackbar.js +0 -56
  119. package/dist/styles.css +0 -91
  120. package/dist/types/Mode.js +0 -5
  121. package/dist/types/Shapes.js +0 -5
  122. package/dist/types/snackbar.js +0 -5
  123. package/dist/types/tools.js +0 -5
  124. package/dist/types/utils.js +0 -5
  125. package/dist/utils/canvas.js +0 -49
  126. package/dist/utils/data.js +0 -49
  127. package/dist/utils/dom.js +0 -12
  128. package/dist/utils/file.js +0 -171
  129. package/dist/utils/intersect.js +0 -122
  130. package/dist/utils/migration.js +0 -59
  131. package/dist/utils/selection.js +0 -86
  132. package/dist/utils/shapes/brush.js +0 -135
  133. package/dist/utils/shapes/circle.js +0 -93
  134. package/dist/utils/shapes/curve.js +0 -55
  135. package/dist/utils/shapes/default.js +0 -73
  136. package/dist/utils/shapes/ellipse.js +0 -101
  137. package/dist/utils/shapes/grid.js +0 -36
  138. package/dist/utils/shapes/index.js +0 -341
  139. package/dist/utils/shapes/line.js +0 -179
  140. package/dist/utils/shapes/picture.js +0 -103
  141. package/dist/utils/shapes/polygon.js +0 -69
  142. package/dist/utils/shapes/rectangle.js +0 -100
  143. package/dist/utils/shapes/text.js +0 -128
  144. package/dist/utils/shapes/triangle.js +0 -24
  145. package/dist/utils/string.js +0 -36
  146. package/dist/utils/style.js +0 -46
  147. package/dist/utils/toolbar.js +0 -78
  148. package/dist/utils/transform.js +0 -109
  149. package/dist/utils/trigo.js +0 -42
@@ -0,0 +1,32 @@
1
+ import type { ActionsTool, CustomTool, ToolsBrushSettings, ToolsCircleSettings, ToolsCurveSettings, ToolsEllipseSettings, ToolsLineSettings, ToolsPictureSettings, ToolsPolygonSettings, ToolsRectSettings, ToolsSquareSettings, ToolsTextSettings } from '../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: CustomTool[];
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;
@@ -0,0 +1,9 @@
1
+ import { RefObject } from 'react';
2
+ type UseComponentType = {
3
+ disabled: boolean;
4
+ componentRef: RefObject<HTMLElement>;
5
+ };
6
+ declare const useComponent: ({ disabled, componentRef }: UseComponentType) => {
7
+ isInsideComponent: boolean;
8
+ };
9
+ export default useComponent;
@@ -0,0 +1,5 @@
1
+ declare const useDoubleClick: () => {
2
+ registerDoubleClickEvent: (element: HTMLElement, callback: (e: MouseEvent | TouchEvent) => void) => void;
3
+ unRegisterDoubleClickEvent: (element: HTMLElement) => void;
4
+ };
5
+ export default useDoubleClick;
@@ -0,0 +1,15 @@
1
+ import { RefObject } from 'react';
2
+ import type { DrawableShape } from '../types/Shapes';
3
+ type useDragType = {
4
+ disabled?: boolean;
5
+ ref: RefObject<HTMLDivElement>;
6
+ shape: DrawableShape;
7
+ layoutDragging: string | undefined;
8
+ setLayoutDragging: (shapeId: string | undefined) => void;
9
+ handleSelect: (shape: DrawableShape) => void;
10
+ onMoveShapes: (firstShapeId: string, lastShapeId: string) => void;
11
+ };
12
+ declare const useDrag: ({ disabled, ref, shape, layoutDragging, setLayoutDragging, handleSelect, onMoveShapes }: useDragType) => {
13
+ isOver: boolean;
14
+ };
15
+ export default useDrag;
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import type { DrawableShape, Point } from '../types/Shapes';
3
+ import type { HoverModeData, SelectionModeData } from '../types/Mode';
4
+ import type { ToolsType } from '../types/tools';
5
+ import type { GridFormatType } from '../constants/app';
6
+ type UseCanvasType = {
7
+ disabled?: boolean;
8
+ canvasSize: {
9
+ width: number;
10
+ height: number;
11
+ scaleRatio: number;
12
+ };
13
+ shapes: DrawableShape[];
14
+ saveShapes: () => void;
15
+ addShape: (newShape: DrawableShape) => void;
16
+ updateSingleShape: (updatedShape: DrawableShape) => void;
17
+ selectedShape: DrawableShape | undefined;
18
+ setSelectedShape: React.Dispatch<React.SetStateAction<DrawableShape | undefined>>;
19
+ activeTool: ToolsType;
20
+ setActiveTool: React.Dispatch<React.SetStateAction<ToolsType>>;
21
+ canvasOffsetStartPosition: Point | undefined;
22
+ setCanvasOffsetStartPosition: React.Dispatch<React.SetStateAction<Point | undefined>>;
23
+ gridFormat: GridFormatType;
24
+ canvasOffset: Point;
25
+ setCanvasOffset: React.Dispatch<React.SetStateAction<Point>>;
26
+ isInsideComponent: boolean;
27
+ selectionMode: SelectionModeData<number | Point>;
28
+ setSelectionMode: React.Dispatch<React.SetStateAction<SelectionModeData<number | Point>>>;
29
+ drawCanvasRef: React.MutableRefObject<HTMLCanvasElement | null>;
30
+ selectionCanvasRef: React.MutableRefObject<HTMLCanvasElement | null>;
31
+ selectionPadding: number;
32
+ isShiftPressed: boolean;
33
+ };
34
+ declare const useDrawableCanvas: ({ disabled, addShape, canvasSize, drawCanvasRef, setActiveTool, shapes, selectionMode, activeTool, isInsideComponent, setCanvasOffset, selectedShape, selectionCanvasRef, canvasOffsetStartPosition, setSelectedShape, setCanvasOffsetStartPosition, updateSingleShape, gridFormat, canvasOffset, saveShapes, setSelectionMode, selectionPadding, isShiftPressed }: UseCanvasType) => {
35
+ hoverMode: HoverModeData;
36
+ };
37
+ export default useDrawableCanvas;
@@ -0,0 +1,18 @@
1
+ /// <reference types="react" />
2
+ import type { GridFormatType } from '../constants/app';
3
+ import type { DrawableShape } from '../types/Shapes';
4
+ type UseKeyboardType = {
5
+ isInsideComponent: boolean;
6
+ selectedShape: DrawableShape | undefined;
7
+ pasteShape: (shape: DrawableShape) => void;
8
+ updateShape: (shape: DrawableShape) => void;
9
+ setSelectedShape: (value: React.SetStateAction<DrawableShape | undefined>) => void;
10
+ removeShape: (shape: DrawableShape) => void;
11
+ backwardShape: () => void;
12
+ forwardShape: () => void;
13
+ setShiftPressed: (value: React.SetStateAction<boolean>) => void;
14
+ isEditingText: boolean;
15
+ gridFormat: GridFormatType;
16
+ };
17
+ declare const useKeyboard: ({ gridFormat, isInsideComponent, selectedShape, isEditingText, setSelectedShape, removeShape, pasteShape, updateShape, backwardShape, forwardShape, setShiftPressed }: UseKeyboardType) => {};
18
+ export default useKeyboard;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ type UseResizeObserverType = {
3
+ element: React.RefObject<HTMLElement>;
4
+ onResized: (width: number, height: number) => unknown;
5
+ };
6
+ declare const useResizeObserver: ({ onResized, element }: UseResizeObserverType) => void;
7
+ export default useResizeObserver;
@@ -0,0 +1,22 @@
1
+ /// <reference types="react" />
2
+ import type { DrawableShape } from '../types/Shapes';
3
+ declare const useShapes: (onDataChanged?: () => void) => {
4
+ shapesRef: import("react").MutableRefObject<DrawableShape[]>;
5
+ selectedShape: DrawableShape | undefined;
6
+ addShape: (newShape: DrawableShape) => void;
7
+ addPictureShape: (fileOrUrl: File | string, maxWidth?: number, maxHeight?: number) => Promise<import("../types/Shapes").DrawablePicture>;
8
+ moveShapes: (firstShapeId: string, lastShapeId: string) => void;
9
+ saveShapes: () => void;
10
+ setSelectedShape: import("react").Dispatch<import("react").SetStateAction<DrawableShape | undefined>>;
11
+ toggleShapeVisibility: (shape: DrawableShape) => void;
12
+ toggleShapeLock: (shape: DrawableShape) => void;
13
+ removeShape: (shape: DrawableShape) => void;
14
+ updateShape: (updatedShape: DrawableShape, withSave?: boolean) => void;
15
+ backwardShape: () => void;
16
+ forwardShape: () => void;
17
+ clearShapes: (shapesToInit?: DrawableShape[], clearHistory?: boolean) => void;
18
+ canGoBackward: boolean;
19
+ canGoForward: boolean;
20
+ canClear: boolean;
21
+ };
22
+ export default useShapes;
@@ -0,0 +1,10 @@
1
+ import type { SnackBarType, SnackbarTypeType } from '../types/snackbar';
2
+ declare const useSnackbar: () => {
3
+ snackbarList: SnackBarType[];
4
+ addSnackbar: ({ type, duration, text }: {
5
+ type?: SnackbarTypeType | undefined;
6
+ duration?: number | undefined;
7
+ text: string;
8
+ }) => void;
9
+ };
10
+ export default useSnackbar;
@@ -0,0 +1 @@
1
+ .react-paint-editor-toolbox-edittextbox{transform-origin:0 0;box-sizing:border-box;transform:var(--react-paint-editor-toolbox-edittextbox-transform);color:var(--react-paint-editor-toolbox-edittextbox-color);padding:var(--react-paint-editor-toolbox-edittextbox-padding);line-height:1;font-size:var(--react-paint-editor-toolbox-edittextbox-fontsize);font-family:var(--react-paint-editor-toolbox-edittextbox-fontfamily);opacity:var(--react-paint-editor-toolbox-edittextbox-opacity);background:0 0;outline:none;width:-webkit-max-content;width:-moz-max-content;width:max-content;display:inline-block;position:absolute;top:0;left:0}.react-paint-editor-toolbox-edittextbox[data-fontbold=true]{font-weight:700}.react-paint-editor-toolbox-edittextbox[data-fontitalic=true]{font-style:italic}.react-paint-editor-canvas-box{flex:1;justify-content:center;align-items:center;display:flex}.react-paint-editor-canvas-container{background-color:var(--react-paint-editor-app-canvas-bg);background-repeat:repeat;background-size:16px;display:grid;position:relative;overflow:hidden}.react-paint-editor-canvas-container[data-grow=true]{width:100%;height:100%}.react-paint-editor-canvas-drawcanvas{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;touch-action:none;grid-area:1/1;max-width:100%;display:block}.react-paint-editor-canvas-drawcanvas[data-grow=true]{width:100%}.react-paint-editor-canvas-selectioncanvas{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;touch-action:none;cursor:var(--react-paint-editor-canvas-cursor);grid-area:1/1;max-width:100%;display:block;position:relative}.react-paint-editor-canvas-selectioncanvas[data-grow=true]{width:100%}.react-paint-editor-button{vertical-align:middle;box-sizing:border-box;cursor:pointer;border-radius:var(--react-paint-editor-app-font-radius);color:var(--react-paint-editor-app-font-color);padding:var(--react-paint-editor-button-padding,0);background:0 0;border:none;justify-content:center;align-items:center;min-width:32px;height:32px;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{visibility:hidden;position:absolute}.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 rgba(0,0,0,.24)}.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=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 transparent;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:#8a8a8a;height:20px;line-height:1}.react-paint-editor-layout>span>svg{fill:#8a8a8a;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: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-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-toolbox-panel-content{display:flex}.react-paint-editor-toolbox-panel-content[data-vertical="1"]{flex-direction:column}.react-paint-editor-toolbox-relative{display:inline-block;position:relative}.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 rgba(0,0,0,.24)}.react-paint-editor-modal-mask{background:rgba(0,0,0,.45);position:absolute;top:0;bottom:0;left:0;right:0}.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:36px;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;display:flex}.react-paint-editor-toolbar-modal{grid-template-columns:1fr 1fr 1fr}.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 rgba(128,128,128,.22)}.react-paint-editor-colorfield-color[data-mode=stroke]{border:4px solid rgba(128,128,128,.22)}.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;color:var(--react-paint-editor-colorfield-color-value);border-radius:50%;justify-content:center;align-items:baseline;width:20px;height:20px;font-weight:700;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-rangefield{flex-wrap:wrap;align-items:center;max-width:100%;display:inline-flex}.react-paint-editor-selectfield-wrapper{flex-wrap:wrap;display:flex}.react-paint-editor-fontfamily-option{font-family:var(--react-paint-editor-fontfamily-family)}.react-paint-editor-linetype-option{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-linetype-option>span{vertical-align:middle;background:0 0;width:6px;height:2px;display:inline-block}.react-paint-editor-linearrow-left{border-top:5px solid transparent;border-bottom:5px solid transparent;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 transparent;border-bottom:5px solid transparent;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-settings-bar{-webkit-user-select:none;-moz-user-select:none;-ms-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-separator{flex:1}.react-paint-editor-settings-modal{grid-template-columns:repeat(auto-fill,40px);width:100%}.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;transition:all var(--react-paint-editor-panel-transition-duration);opacity:0;max-width:calc(100% - 24px);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-loading{z-index:var(--react-paint-editor-loading-zindex);transition:opacity var(--react-paint-editor-loading-transition-duration)linear;opacity:0;background:rgba(0,0,0,.314);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-app{color:var(--react-paint-editor-app-font-color);flex-direction:column;display:flex;position:relative}.react-paint-editor-app hr{border:none;border-top:1px solid var(--react-paint-editor-app-divider-color);width:100%}.react-paint-editor-app[data-grow=false]{max-width:min(100%,var(--react-paint-editor-app-canvaswidth))}.react-paint-editor-app[data-shrink=false]{min-width:var(--react-paint-editor-app-canvaswidth)}.react-paint-editor-app-row{z-index:var(--react-paint-editor-app-row-zindex);aspect-ratio:var(--react-paint-editor-app-row-aspectratio);flex-direction:row;max-width:100%;display:flex;position:relative}.react-paint-editor-app-row[data-grow=true]{width:100%}.react-paint-editor-app-row[data-grow=false]{width:var(--react-paint-editor-app-row-width)}