@yorab/react-paint 0.11.5 → 0.11.6
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.
- package/README.md +382 -382
- package/dist/canvas/utils/string.d.ts +2 -0
- package/dist/react-paint.js +178 -178
- package/dist/react-paint.umd.cjs +1 -1
- package/package.json +1 -2
package/dist/react-paint.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import Fi, { useState as z, useEffect as B, useRef as q, useCallback as F, useMemo as Ni, useImperativeHandle as
|
|
1
|
+
import Fi, { useState as z, useEffect as B, useRef as q, useCallback as F, useMemo as Ni, useImperativeHandle as S1, useTransition as Ri } from "react";
|
|
2
2
|
import { jsx as p, jsxs as I, Fragment as pe } from "react/jsx-runtime";
|
|
3
|
-
const Ii = '<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>', Rt = '<svg><path d="M2.5 17.5V2.5H17.5V17.5ZM4.25 15.75H15.75V4.25H4.25ZM4.25 15.75V4.25V15.75Z"/></svg>', It = '<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>', Wt = '<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>', Wi = '<svg><path d="M4.125 5.083V3.333H7.062L7.896 2.5H12.104L12.938 3.333H15.875V5.083ZM6.75 17.5Q6.021 17.5 5.51 16.99Q5 16.479 5 15.75V5.958H15V15.75Q15 16.479 14.49 16.99Q13.979 17.5 13.25 17.5Z"/></svg>', qt = '<svg><path d="M10 17.5Q7.208 17.5 5.271 15.594Q3.333 13.688 3.333 10.958Q3.333 9.583 3.854 8.396Q4.375 7.208 5.292 6.292L10 1.667L14.688 6.292Q15.604 7.208 16.135 8.396Q16.667 9.583 16.667 10.958Q16.667 13.688 14.719 15.594Q12.771 17.5 10 17.5ZM5.146 11.667H14.854Q15.083 10.188 14.552 9.146Q14.021 8.104 13.479 7.562L10 4.125L6.521 7.562Q5.979 8.104 5.448 9.146Q4.917 10.188 5.146 11.667Z"/></svg>', zt = '<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>', zi = '<svg><path d="M8.708 16.667V5.917H4.167V3.333H15.833V5.917H11.292V16.667Z"/></svg>', Oi = '<svg><path d="M7.5 15.833V14.083H12.833L3.333 4.583L4.583 3.333L14.083 12.833V7.5H15.833V15.833Z"/></svg>', $i = '<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>', Jt = '<svg><path d="M5.833 15V3.333H10.375Q11.812 3.333 12.885 4.156Q13.958 4.979 13.958 6.375Q13.958 7.375 13.49 7.969Q13.021 8.562 12.396 8.875V9.042Q13.312 9.354 13.844 10.021Q14.375 10.688 14.375 11.75Q14.375 13.312 13.229 14.156Q12.083 15 10.5 15ZM8.125 8.042H10.188Q10.854 8.042 11.302 7.656Q11.75 7.271 11.75 6.708Q11.75 6.167 11.302 5.771Q10.854 5.375 10.188 5.375H8.125ZM8.125 12.917H10.354Q11.167 12.917 11.625 12.51Q12.083 12.104 12.083 11.458Q12.083 10.812 11.625 10.406Q11.167 10 10.354 10H8.125Z"/></svg>', Kt = '<svg><path d="M4.167 16.667V14.083H6.979L10.229 5.917H7.5V3.333H15.833V5.917H13.021L9.771 14.083H12.5V16.667Z"/></svg>', ei = '<svg><path d="M3.021 16V15H17V16ZM3.021 13.5V12H17V13.5ZM3 10.5V8.5H16.979V10.5ZM3.021 7V4H17V7Z"/></svg>', ti = '<svg><path d="M16.354 18.833 14.521 17Q13.542 17.646 12.396 17.99Q11.25 18.333 10 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.729 2.01 7.594Q2.354 6.458 3 5.458L1.167 3.625L2.396 2.396L17.583 17.604ZM10 16.583Q10.896 16.583 11.708 16.365Q12.521 16.146 13.25 15.729L4.292 6.75Q3.875 7.479 3.646 8.292Q3.417 9.104 3.417 10Q3.417 12.729 5.344 14.656Q7.271 16.583 10 16.583ZM17 14.562 15.708 13.271Q16.125 12.542 16.354 11.719Q16.583 10.896 16.583 10Q16.583 7.271 14.656 5.344Q12.729 3.417 10 3.417Q9.104 3.417 8.292 3.646Q7.479 3.875 6.75 4.292L5.458 3Q6.458 2.354 7.594 2.01Q8.729 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.271 17.979 12.417Q17.625 13.562 17 14.562ZM11.229 8.771Q11.229 8.771 11.229 8.771Q11.229 8.771 11.229 8.771Q11.229 8.771 11.229 8.771Q11.229 8.771 11.229 8.771Q11.229 8.771 11.229 8.771Q11.229 8.771 11.229 8.771ZM8.771 11.229Q8.771 11.229 8.771 11.229Q8.771 11.229 8.771 11.229Q8.771 11.229 8.771 11.229Q8.771 11.229 8.771 11.229Q8.771 11.229 8.771 11.229Q8.771 11.229 8.771 11.229Z"/></svg>', ii = '<svg ><path d="M16.354 18.833 14.521 17Q13.542 17.646 12.396 17.99Q11.25 18.333 10 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.729 2.01 7.594Q2.354 6.458 3 5.458L1.167 3.625L2.396 2.396L17.583 17.604ZM17 14.562 5.458 3Q6.458 2.354 7.594 2.01Q8.729 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.271 17.979 12.417Q17.625 13.562 17 14.562Z"/></svg>', de = ["transparent", "black", "white", "red", "green", "blue", "yellow"], Fe = [0, 1, 2], ni = [[1, 0], [1, 2], [4, 6]], rt = "serif", S1 = 2, Ui = 3, b1 = 4, ee = "react-paint-", Ot = { type: "picture", id: `${ee}picture`, icon: zt, label: "Image", settings: { opacity: { min: 0, max: 100, step: 1, default: 100 } } }, Bi = { type: "brush", id: `${ee}brush`, icon: Ii, label: "Brosse", settings: { strokeColor: { values: de, default: "black" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 6, max: 20, step: 2, default: 10 }, lineDash: { values: Fe, default: 0 } } }, Gi = { type: "line", id: `${ee}line`, icon: Oi, label: "Ligne", settings: { strokeColor: { values: de, default: "black" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 }, lineArrow: { values: [0, 1, 2, 3], default: 0 } } }, Xi = { type: "polygon", id: `${ee}polygon`, icon: Wt, label: "Polygone", settings: { strokeColor: { values: de, default: "black" }, fillColor: { values: de, default: "black" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 }, pointsCount: { min: 3, max: 10, step: 1, default: 3 } } }, Yi = { type: "curve", id: `${ee}curve`, icon: $i, label: "Courbe", settings: { strokeColor: { values: de, default: "black" }, fillColor: { values: de, default: "black" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 }, pointsCount: { min: 3, max: 10, step: 1, default: 3 } } }, ji = { type: "rect", id: `${ee}rect`, icon: Rt, label: "Rectangle", settings: { strokeColor: { values: de, default: "black" }, fillColor: { values: de, default: "transparent" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 } } }, _i = { type: "square", id: `${ee}square`, icon: Rt, label: "Carré", settings: { strokeColor: { values: de, default: "black" }, fillColor: { values: de, default: "transparent" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 } } }, qi = { type: "circle", id: `${ee}circle`, icon: It, label: "Cercle", settings: { strokeColor: { values: de, default: "black" }, fillColor: { values: de, default: "transparent" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 } } }, Ji = { type: "ellipse", id: `${ee}ellipse`, icon: It, label: "Ellipse", settings: { strokeColor: { values: de, default: "black" }, fillColor: { values: de, default: "transparent" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 } } }, Ki = { type: "text", id: `${ee}text`, icon: zi, label: "Texte", settings: { strokeColor: { values: de, default: "black" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, fontFamily: { values: ["arial", "serif", "monospace"], default: rt }, fontBold: { values: [!1, !0], default: !1 }, fontItalic: { values: [!1, !0], default: !1 } } }, Ae = { id: `${ee}selection`, type: "selection", icon: '<svg><path d="M8.0145 11.1707C8.38484 10.9914 8.82183 11.1558 8.99959 11.5295L10.7031 15.2591L12.0363 14.6238L10.3254 10.9017C10.1476 10.528 10.3106 10.0795 10.6809 9.90761L10.8883 9.84782L12.5918 9.51148L6.48133 4.33192V12.389L7.82934 11.2903L8.0145 11.1707ZM10.6587 16.9258C10.2883 17.1052 9.84395 16.9482 9.67359 16.5745L8.05894 13.0318L6.19988 14.5416C6.07396 14.6462 5.91842 14.706 5.74066 14.706C5.54423 14.706 5.35584 14.6272 5.21694 14.4871C5.07803 14.3469 5 14.1568 5 13.9586V2.74741C5 2.54919 5.07803 2.35908 5.21694 2.21891C5.35584 2.07874 5.54423 2 5.74066 2C5.91842 2 6.08878 2.06727 6.21469 2.1719L6.2221 2.16443L14.7323 9.36947C15.0508 9.63854 15.0879 10.1094 14.8286 10.4233C14.7175 10.5579 14.562 10.6475 14.4064 10.6774L12.0659 11.1408L13.6954 14.6761C13.888 15.0498 13.7102 15.4908 13.3399 15.6627L10.6587 16.9258Z"/></svg>', label: "Sélection" }, Ge = { id: `${ee}undo`, type: "undo", icon: '<svg><path d="M11.708 15.833H5.854V14.083H11.708Q13 14.083 13.958 13.292Q14.917 12.5 14.917 11.271Q14.917 10.042 13.958 9.24Q13 8.438 11.708 8.438H6.667L8.792 10.562L7.562 11.792L3.333 7.562L7.562 3.333L8.792 4.562L6.667 6.688H11.708Q13.729 6.688 15.198 7.99Q16.667 9.292 16.667 11.25Q16.667 13.208 15.198 14.521Q13.729 15.833 11.708 15.833Z"/></svg>', label: "Undo" }, Xe = { id: `${ee}redo`, type: "redo", icon: '<svg><path d="M8.292 15.833Q6.271 15.833 4.802 14.521Q3.333 13.208 3.333 11.25Q3.333 9.292 4.802 7.99Q6.271 6.688 8.292 6.688H13.333L11.208 4.562L12.438 3.333L16.667 7.562L12.438 11.792L11.208 10.562L13.333 8.438H8.292Q7 8.438 6.042 9.229Q5.083 10.021 5.083 11.25Q5.083 12.5 6.042 13.292Q7 14.083 8.292 14.083H14.146V15.833Z"/></svg>', label: "Redo" }, Ye = { id: `${ee}clear`, type: "clear", icon: '<svg><path d="M7.854 13.812 10 11.688 12.125 13.812 13.354 12.604 11.208 10.458 13.354 8.312 12.125 7.104 10 9.229 7.854 7.104 6.625 8.312 8.771 10.458 6.625 12.604ZM5.896 17.5Q5.167 17.5 4.656 16.99Q4.146 16.479 4.146 15.75V5.125H3.333V3.375H7.542V2.5H12.458V3.375H16.667V5.125H15.833V15.75Q15.833 16.479 15.323 16.99Q14.812 17.5 14.083 17.5Z"/></svg>', label: "Clear" }, kt = { id: `${ee}export`, type: "export", icon: '<svg><path d="M10 13.271 5.708 8.979 6.958 7.729 9.125 9.896V3.333H10.875V9.896L13.042 7.729L14.292 8.979ZM5.083 16.667Q4.354 16.667 3.844 16.156Q3.333 15.646 3.333 14.917V12.5H5.083V14.917Q5.083 14.917 5.083 14.917Q5.083 14.917 5.083 14.917H14.917Q14.917 14.917 14.917 14.917Q14.917 14.917 14.917 14.917V12.5H16.667V14.917Q16.667 15.646 16.156 16.156Q15.646 16.667 14.917 16.667Z"/></svg>', label: "Export PNG" }, ai = { id: `${ee}load`, type: "loadfile", icon: '<svg><path d="M3.417 16.667Q2.729 16.667 2.198 16.135Q1.667 15.604 1.667 14.917V5.083Q1.667 4.396 2.198 3.865Q2.729 3.333 3.417 3.333H8.25L9.917 5H16.667Q17.354 5 17.844 5.531Q18.333 6.062 18.333 6.75H3.417V14.917Q3.417 14.917 3.417 14.917Q3.417 14.917 3.417 14.917L5.438 8.5H19.583L17.396 15.479Q17.229 16.021 16.802 16.344Q16.375 16.667 15.833 16.667Z"/></svg>', label: "Load project" }, Lt = { id: `${ee}save`, type: "savefile", icon: '<svg><path d="M17.5 5.833V15.75Q17.5 16.479 16.99 16.99Q16.479 17.5 15.75 17.5H4.25Q3.521 17.5 3.01 16.99Q2.5 16.479 2.5 15.75V4.25Q2.5 3.521 3.01 3.01Q3.521 2.5 4.25 2.5H14.167ZM10 14.917Q11.062 14.917 11.823 14.156Q12.583 13.396 12.583 12.333Q12.583 11.271 11.823 10.51Q11.062 9.75 10 9.75Q8.938 9.75 8.177 10.51Q7.417 11.271 7.417 12.333Q7.417 13.396 8.177 14.156Q8.938 14.917 10 14.917ZM5.021 8.396H12.521V5.021H5.021Z"/></svg>', label: "Save project" }, si = { id: `${ee}upload-picture`, type: "uploadpicture", icon: zt, label: "Upload picture" }, e1 = 2, t1 = "blue", Te = 14, i1 = [[0, 0], [0.5, 0], [1, 0], [1, 0.5], [1, 1], [0.5, 1], [0, 1], [0, 0.5]], n1 = ["brush", "rect", "square", "line", "polygon", "circle", "curve", "ellipse", "picture", "text", "triangle"], a1 = "react-paint-canvas-drawcanvas", s1 = "react-paint-canvas-selectioncanvas", oi = { layersManipulation: !0, grid: 0, canGrow: !1, canShrink: !0, withExport: !0, withLoadAndSave: !0, withUploadPicture: !0, withUrlPicture: !1, availableTools: [Bi, Gi, Xi, Yi, ji, _i, qi, Ji, Ot, Ki], clearCallback: "empty", brushAlgo: "simple", isBrushShapeDoneOnMouseUp: !0, withFrameSelection: !1, withSkeleton: !0, canvasSelectionPadding: 0 }, C1 = { canvasBackgroundColor: "white", canvasSelectionColor: t1, canvasSelectionWidth: e1 }, o1 = (e, i) => !!(e.target instanceof Node && i) && i.contains(e.target), ut = 300, Zt = (e, i) => {
|
|
3
|
+
const Ii = '<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>', Rt = '<svg><path d="M2.5 17.5V2.5H17.5V17.5ZM4.25 15.75H15.75V4.25H4.25ZM4.25 15.75V4.25V15.75Z"/></svg>', It = '<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>', Wt = '<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>', Wi = '<svg><path d="M4.125 5.083V3.333H7.062L7.896 2.5H12.104L12.938 3.333H15.875V5.083ZM6.75 17.5Q6.021 17.5 5.51 16.99Q5 16.479 5 15.75V5.958H15V15.75Q15 16.479 14.49 16.99Q13.979 17.5 13.25 17.5Z"/></svg>', qt = '<svg><path d="M10 17.5Q7.208 17.5 5.271 15.594Q3.333 13.688 3.333 10.958Q3.333 9.583 3.854 8.396Q4.375 7.208 5.292 6.292L10 1.667L14.688 6.292Q15.604 7.208 16.135 8.396Q16.667 9.583 16.667 10.958Q16.667 13.688 14.719 15.594Q12.771 17.5 10 17.5ZM5.146 11.667H14.854Q15.083 10.188 14.552 9.146Q14.021 8.104 13.479 7.562L10 4.125L6.521 7.562Q5.979 8.104 5.448 9.146Q4.917 10.188 5.146 11.667Z"/></svg>', zt = '<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>', zi = '<svg><path d="M8.708 16.667V5.917H4.167V3.333H15.833V5.917H11.292V16.667Z"/></svg>', Oi = '<svg><path d="M7.5 15.833V14.083H12.833L3.333 4.583L4.583 3.333L14.083 12.833V7.5H15.833V15.833Z"/></svg>', $i = '<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>', Jt = '<svg><path d="M5.833 15V3.333H10.375Q11.812 3.333 12.885 4.156Q13.958 4.979 13.958 6.375Q13.958 7.375 13.49 7.969Q13.021 8.562 12.396 8.875V9.042Q13.312 9.354 13.844 10.021Q14.375 10.688 14.375 11.75Q14.375 13.312 13.229 14.156Q12.083 15 10.5 15ZM8.125 8.042H10.188Q10.854 8.042 11.302 7.656Q11.75 7.271 11.75 6.708Q11.75 6.167 11.302 5.771Q10.854 5.375 10.188 5.375H8.125ZM8.125 12.917H10.354Q11.167 12.917 11.625 12.51Q12.083 12.104 12.083 11.458Q12.083 10.812 11.625 10.406Q11.167 10 10.354 10H8.125Z"/></svg>', Kt = '<svg><path d="M4.167 16.667V14.083H6.979L10.229 5.917H7.5V3.333H15.833V5.917H13.021L9.771 14.083H12.5V16.667Z"/></svg>', ei = '<svg><path d="M3.021 16V15H17V16ZM3.021 13.5V12H17V13.5ZM3 10.5V8.5H16.979V10.5ZM3.021 7V4H17V7Z"/></svg>', ti = '<svg><path d="M16.354 18.833 14.521 17Q13.542 17.646 12.396 17.99Q11.25 18.333 10 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.729 2.01 7.594Q2.354 6.458 3 5.458L1.167 3.625L2.396 2.396L17.583 17.604ZM10 16.583Q10.896 16.583 11.708 16.365Q12.521 16.146 13.25 15.729L4.292 6.75Q3.875 7.479 3.646 8.292Q3.417 9.104 3.417 10Q3.417 12.729 5.344 14.656Q7.271 16.583 10 16.583ZM17 14.562 15.708 13.271Q16.125 12.542 16.354 11.719Q16.583 10.896 16.583 10Q16.583 7.271 14.656 5.344Q12.729 3.417 10 3.417Q9.104 3.417 8.292 3.646Q7.479 3.875 6.75 4.292L5.458 3Q6.458 2.354 7.594 2.01Q8.729 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.271 17.979 12.417Q17.625 13.562 17 14.562ZM11.229 8.771Q11.229 8.771 11.229 8.771Q11.229 8.771 11.229 8.771Q11.229 8.771 11.229 8.771Q11.229 8.771 11.229 8.771Q11.229 8.771 11.229 8.771Q11.229 8.771 11.229 8.771ZM8.771 11.229Q8.771 11.229 8.771 11.229Q8.771 11.229 8.771 11.229Q8.771 11.229 8.771 11.229Q8.771 11.229 8.771 11.229Q8.771 11.229 8.771 11.229Q8.771 11.229 8.771 11.229Z"/></svg>', ii = '<svg ><path d="M16.354 18.833 14.521 17Q13.542 17.646 12.396 17.99Q11.25 18.333 10 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.729 2.01 7.594Q2.354 6.458 3 5.458L1.167 3.625L2.396 2.396L17.583 17.604ZM17 14.562 5.458 3Q6.458 2.354 7.594 2.01Q8.729 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.271 17.979 12.417Q17.625 13.562 17 14.562Z"/></svg>', de = ["transparent", "black", "white", "red", "green", "blue", "yellow"], Fe = [0, 1, 2], ni = [[1, 0], [1, 2], [4, 6]], rt = "serif", b1 = 2, Ui = 3, C1 = 4, ee = "react-paint-", Ot = { type: "picture", id: `${ee}picture`, icon: zt, label: "Image", settings: { opacity: { min: 0, max: 100, step: 1, default: 100 } } }, Bi = { type: "brush", id: `${ee}brush`, icon: Ii, label: "Brosse", settings: { strokeColor: { values: de, default: "black" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 6, max: 20, step: 2, default: 10 }, lineDash: { values: Fe, default: 0 } } }, Gi = { type: "line", id: `${ee}line`, icon: Oi, label: "Ligne", settings: { strokeColor: { values: de, default: "black" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 }, lineArrow: { values: [0, 1, 2, 3], default: 0 } } }, Xi = { type: "polygon", id: `${ee}polygon`, icon: Wt, label: "Polygone", settings: { strokeColor: { values: de, default: "black" }, fillColor: { values: de, default: "black" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 }, pointsCount: { min: 3, max: 10, step: 1, default: 3 } } }, Yi = { type: "curve", id: `${ee}curve`, icon: $i, label: "Courbe", settings: { strokeColor: { values: de, default: "black" }, fillColor: { values: de, default: "black" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 }, pointsCount: { min: 3, max: 10, step: 1, default: 3 } } }, ji = { type: "rect", id: `${ee}rect`, icon: Rt, label: "Rectangle", settings: { strokeColor: { values: de, default: "black" }, fillColor: { values: de, default: "transparent" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 } } }, _i = { type: "square", id: `${ee}square`, icon: Rt, label: "Carré", settings: { strokeColor: { values: de, default: "black" }, fillColor: { values: de, default: "transparent" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 } } }, qi = { type: "circle", id: `${ee}circle`, icon: It, label: "Cercle", settings: { strokeColor: { values: de, default: "black" }, fillColor: { values: de, default: "transparent" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 } } }, Ji = { type: "ellipse", id: `${ee}ellipse`, icon: It, label: "Ellipse", settings: { strokeColor: { values: de, default: "black" }, fillColor: { values: de, default: "transparent" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, lineWidth: { min: 1, max: 20, step: 1, default: 1 }, lineDash: { values: Fe, default: 0 } } }, Ki = { type: "text", id: `${ee}text`, icon: zi, label: "Texte", settings: { strokeColor: { values: de, default: "black" }, opacity: { min: 0, max: 100, step: 1, default: 100 }, fontFamily: { values: ["arial", "serif", "monospace"], default: rt }, fontBold: { values: [!1, !0], default: !1 }, fontItalic: { values: [!1, !0], default: !1 } } }, Ae = { id: `${ee}selection`, type: "selection", icon: '<svg><path d="M8.0145 11.1707C8.38484 10.9914 8.82183 11.1558 8.99959 11.5295L10.7031 15.2591L12.0363 14.6238L10.3254 10.9017C10.1476 10.528 10.3106 10.0795 10.6809 9.90761L10.8883 9.84782L12.5918 9.51148L6.48133 4.33192V12.389L7.82934 11.2903L8.0145 11.1707ZM10.6587 16.9258C10.2883 17.1052 9.84395 16.9482 9.67359 16.5745L8.05894 13.0318L6.19988 14.5416C6.07396 14.6462 5.91842 14.706 5.74066 14.706C5.54423 14.706 5.35584 14.6272 5.21694 14.4871C5.07803 14.3469 5 14.1568 5 13.9586V2.74741C5 2.54919 5.07803 2.35908 5.21694 2.21891C5.35584 2.07874 5.54423 2 5.74066 2C5.91842 2 6.08878 2.06727 6.21469 2.1719L6.2221 2.16443L14.7323 9.36947C15.0508 9.63854 15.0879 10.1094 14.8286 10.4233C14.7175 10.5579 14.562 10.6475 14.4064 10.6774L12.0659 11.1408L13.6954 14.6761C13.888 15.0498 13.7102 15.4908 13.3399 15.6627L10.6587 16.9258Z"/></svg>', label: "Sélection" }, Ge = { id: `${ee}undo`, type: "undo", icon: '<svg><path d="M11.708 15.833H5.854V14.083H11.708Q13 14.083 13.958 13.292Q14.917 12.5 14.917 11.271Q14.917 10.042 13.958 9.24Q13 8.438 11.708 8.438H6.667L8.792 10.562L7.562 11.792L3.333 7.562L7.562 3.333L8.792 4.562L6.667 6.688H11.708Q13.729 6.688 15.198 7.99Q16.667 9.292 16.667 11.25Q16.667 13.208 15.198 14.521Q13.729 15.833 11.708 15.833Z"/></svg>', label: "Undo" }, Xe = { id: `${ee}redo`, type: "redo", icon: '<svg><path d="M8.292 15.833Q6.271 15.833 4.802 14.521Q3.333 13.208 3.333 11.25Q3.333 9.292 4.802 7.99Q6.271 6.688 8.292 6.688H13.333L11.208 4.562L12.438 3.333L16.667 7.562L12.438 11.792L11.208 10.562L13.333 8.438H8.292Q7 8.438 6.042 9.229Q5.083 10.021 5.083 11.25Q5.083 12.5 6.042 13.292Q7 14.083 8.292 14.083H14.146V15.833Z"/></svg>', label: "Redo" }, Ye = { id: `${ee}clear`, type: "clear", icon: '<svg><path d="M7.854 13.812 10 11.688 12.125 13.812 13.354 12.604 11.208 10.458 13.354 8.312 12.125 7.104 10 9.229 7.854 7.104 6.625 8.312 8.771 10.458 6.625 12.604ZM5.896 17.5Q5.167 17.5 4.656 16.99Q4.146 16.479 4.146 15.75V5.125H3.333V3.375H7.542V2.5H12.458V3.375H16.667V5.125H15.833V15.75Q15.833 16.479 15.323 16.99Q14.812 17.5 14.083 17.5Z"/></svg>', label: "Clear" }, kt = { id: `${ee}export`, type: "export", icon: '<svg><path d="M10 13.271 5.708 8.979 6.958 7.729 9.125 9.896V3.333H10.875V9.896L13.042 7.729L14.292 8.979ZM5.083 16.667Q4.354 16.667 3.844 16.156Q3.333 15.646 3.333 14.917V12.5H5.083V14.917Q5.083 14.917 5.083 14.917Q5.083 14.917 5.083 14.917H14.917Q14.917 14.917 14.917 14.917Q14.917 14.917 14.917 14.917V12.5H16.667V14.917Q16.667 15.646 16.156 16.156Q15.646 16.667 14.917 16.667Z"/></svg>', label: "Export PNG" }, ai = { id: `${ee}load`, type: "loadfile", icon: '<svg><path d="M3.417 16.667Q2.729 16.667 2.198 16.135Q1.667 15.604 1.667 14.917V5.083Q1.667 4.396 2.198 3.865Q2.729 3.333 3.417 3.333H8.25L9.917 5H16.667Q17.354 5 17.844 5.531Q18.333 6.062 18.333 6.75H3.417V14.917Q3.417 14.917 3.417 14.917Q3.417 14.917 3.417 14.917L5.438 8.5H19.583L17.396 15.479Q17.229 16.021 16.802 16.344Q16.375 16.667 15.833 16.667Z"/></svg>', label: "Load project" }, Lt = { id: `${ee}save`, type: "savefile", icon: '<svg><path d="M17.5 5.833V15.75Q17.5 16.479 16.99 16.99Q16.479 17.5 15.75 17.5H4.25Q3.521 17.5 3.01 16.99Q2.5 16.479 2.5 15.75V4.25Q2.5 3.521 3.01 3.01Q3.521 2.5 4.25 2.5H14.167ZM10 14.917Q11.062 14.917 11.823 14.156Q12.583 13.396 12.583 12.333Q12.583 11.271 11.823 10.51Q11.062 9.75 10 9.75Q8.938 9.75 8.177 10.51Q7.417 11.271 7.417 12.333Q7.417 13.396 8.177 14.156Q8.938 14.917 10 14.917ZM5.021 8.396H12.521V5.021H5.021Z"/></svg>', label: "Save project" }, si = { id: `${ee}upload-picture`, type: "uploadpicture", icon: zt, label: "Upload picture" }, e1 = 2, t1 = "blue", Te = 14, i1 = [[0, 0], [0.5, 0], [1, 0], [1, 0.5], [1, 1], [0.5, 1], [0, 1], [0, 0.5]], n1 = ["brush", "rect", "square", "line", "polygon", "circle", "curve", "ellipse", "picture", "text", "triangle"], a1 = "react-paint-canvas-drawcanvas", s1 = "react-paint-canvas-selectioncanvas", oi = { layersManipulation: !0, grid: 0, canGrow: !1, canShrink: !0, withExport: !0, withLoadAndSave: !0, withUploadPicture: !0, withUrlPicture: !1, availableTools: [Bi, Gi, Xi, Yi, ji, _i, qi, Ji, Ot, Ki], clearCallback: "empty", brushAlgo: "simple", isBrushShapeDoneOnMouseUp: !0, withFrameSelection: !1, withSkeleton: !0, canvasSelectionPadding: 0 }, w1 = { canvasBackgroundColor: "white", canvasSelectionColor: t1, canvasSelectionWidth: e1 }, o1 = (e, i) => !!(e.target instanceof Node && i) && i.contains(e.target), ut = 300, Zt = (e, i) => {
|
|
4
4
|
const t = { ...i };
|
|
5
5
|
for (const n of e) delete t[n];
|
|
6
6
|
return t;
|
|
@@ -35,7 +35,7 @@ const Ii = '<svg><path d="M5.146 17.5Q4.146 17.5 3.208 17Q2.271 16.5 1.667 15.70
|
|
|
35
35
|
}, Dt = (e) => {
|
|
36
36
|
const i = new Path2D();
|
|
37
37
|
return i.moveTo(...e.points[0]), i.lineTo(...e.points[1]), i;
|
|
38
|
-
},
|
|
38
|
+
}, x1 = (e) => {
|
|
39
39
|
const i = new Path2D();
|
|
40
40
|
return i.moveTo(...e.points[0]), i.lineTo(...e.points[1]), i.lineTo(...e.points[2]), i.lineTo(...e.points[0]), i;
|
|
41
41
|
}, Bt = (e, i, t, n = !1) => {
|
|
@@ -50,8 +50,8 @@ const Ii = '<svg><path d="M5.146 17.5Q4.146 17.5 3.208 17Q2.271 16.5 1.667 15.70
|
|
|
50
50
|
if (c.length === 1) d.rect(...Qe(c[0], l, h, n.scaleX, n.scaleY), 1, 1);
|
|
51
51
|
else if (d.moveTo(...Qe(c[0], l, h, n.scaleX, n.scaleY)), s === "quadratic") {
|
|
52
52
|
for (let u = 0; u < c.slice(1).length - 2; u++) {
|
|
53
|
-
const g = Qe(c[u], l, h, n.scaleX, n.scaleY), f = Qe(c[u + 1], l, h, n.scaleX, n.scaleY),
|
|
54
|
-
d.quadraticCurveTo(...g,
|
|
53
|
+
const g = Qe(c[u], l, h, n.scaleX, n.scaleY), f = Qe(c[u + 1], l, h, n.scaleX, n.scaleY), w = (g[0] + f[0]) / 2, x = (g[1] + f[1]) / 2;
|
|
54
|
+
d.quadraticCurveTo(...g, w, x);
|
|
55
55
|
}
|
|
56
56
|
d.quadraticCurveTo(...Qe(c[c.length - 2], l, h, n.scaleX, n.scaleY), ...Qe(c[c.length - 1], l, h, n.scaleX, n.scaleY));
|
|
57
57
|
} else for (const u of c.slice(1)) d.lineTo(...Qe(u, l, h, n.scaleX, n.scaleY));
|
|
@@ -59,7 +59,7 @@ const Ii = '<svg><path d="M5.146 17.5Q4.146 17.5 3.208 17Q2.271 16.5 1.667 15.70
|
|
|
59
59
|
return d;
|
|
60
60
|
})(e, i);
|
|
61
61
|
return { ...e, path: t, selection: Je(t, e, i) };
|
|
62
|
-
},
|
|
62
|
+
}, M1 = qe, Ft = (e) => 180 * e / Math.PI, d1 = (e, i) => {
|
|
63
63
|
const t = i.x - Math.min(Math.max(i.x, e.x), e.x + e.width), n = i.y - Math.min(Math.max(i.y, e.y), e.y + e.height);
|
|
64
64
|
return Math.sqrt(t * t + n * n) <= i.radius;
|
|
65
65
|
}, ve = ({ origin: e = [0, 0], point: i, rotation: t }) => {
|
|
@@ -76,7 +76,7 @@ const Ii = '<svg><path d="M5.146 17.5Q4.146 17.5 3.208 17Q2.271 16.5 1.667 15.70
|
|
|
76
76
|
if (!i.gridGap) return De(e);
|
|
77
77
|
const n = e + t, s = n >= 0 ? i.gridGap : -i.gridGap;
|
|
78
78
|
return n + s / 2 - (n + s / 2) % s - t;
|
|
79
|
-
},
|
|
79
|
+
}, k1 = (e, i, t = 0) => i.gridGap ? e + Math.PI / 18 / 2 - (e + Math.PI / 18 / 2) % (Math.PI / 18) : De(e, 3), L1 = (e, i, t, n, s, a) => {
|
|
80
80
|
switch (n.mode) {
|
|
81
81
|
case "brush":
|
|
82
82
|
return ((r, o, l) => {
|
|
@@ -86,9 +86,9 @@ const Ii = '<svg><path d="M5.146 17.5Q4.146 17.5 3.208 17Q2.271 16.5 1.667 15.70
|
|
|
86
86
|
case "translate":
|
|
87
87
|
return Nt(t, n.originalShape, n.cursorStartPosition, s);
|
|
88
88
|
case "rotate":
|
|
89
|
-
return
|
|
89
|
+
return O1(i, t, n.originalShape, n.cursorStartPosition, n.center, s);
|
|
90
90
|
case "resize":
|
|
91
|
-
return
|
|
91
|
+
return $1(e, i, t, n.originalShape, n, s, a);
|
|
92
92
|
default:
|
|
93
93
|
return i;
|
|
94
94
|
}
|
|
@@ -120,20 +120,20 @@ const Ii = '<svg><path d="M5.146 17.5Q4.146 17.5 3.208 17Q2.271 16.5 1.667 15.70
|
|
|
120
120
|
const r = [e + i / 2 - s[0], t + n / 2 - s[1]], [o, l] = ve({ point: r, rotation: -a.rotation });
|
|
121
121
|
return { borderX: De(e + o - r[0]), borderWidth: De(i), borderY: De(t + l - r[1]), borderHeight: De(n) };
|
|
122
122
|
}, Be = (e, i, t, n, s = !1) => {
|
|
123
|
-
const { center: a, borders: r } = _(i, n), o = ve({ origin: a, point: e, rotation: i.rotation }), l = t.anchor[0] === 0 && o[0] >= r.x + r.width || t.anchor[0] === 1 && o[0] <= r.x, h = t.anchor[1] === 0 && o[1] >= r.y + r.height || t.anchor[1] === 1 && o[1] <= r.y, d = [O(o[0], n, t.anchor[0] === 0 && !l || t.anchor[0] === 1 && l ? n.selectionPadding : -n.selectionPadding), O(o[1], n, t.anchor[1] === 0 && !h || t.anchor[1] === 1 && h ? n.selectionPadding : -n.selectionPadding)], c = n.gridGap ? [t.anchor[0] === 0 ? r.x : t.anchor[0] === 0.5 ? r.x + r.width / 2 : r.x + r.width, t.anchor[1] === 0 ? r.y : t.anchor[1] === 0.5 ? r.y + r.height / 2 : r.y + r.height] : ve({ origin: a, point: t.cursorStartPosition, rotation: i.rotation }), u = [d[0] - c[0], d[1] - c[1]], [g, f] = di({ borderStart: r.x, borderSize: r.width, vector: u[0], settings: n, invertedAxe: l, anchor: t.anchor[0] }), [
|
|
123
|
+
const { center: a, borders: r } = _(i, n), o = ve({ origin: a, point: e, rotation: i.rotation }), l = t.anchor[0] === 0 && o[0] >= r.x + r.width || t.anchor[0] === 1 && o[0] <= r.x, h = t.anchor[1] === 0 && o[1] >= r.y + r.height || t.anchor[1] === 1 && o[1] <= r.y, d = [O(o[0], n, t.anchor[0] === 0 && !l || t.anchor[0] === 1 && l ? n.selectionPadding : -n.selectionPadding), O(o[1], n, t.anchor[1] === 0 && !h || t.anchor[1] === 1 && h ? n.selectionPadding : -n.selectionPadding)], c = n.gridGap ? [t.anchor[0] === 0 ? r.x : t.anchor[0] === 0.5 ? r.x + r.width / 2 : r.x + r.width, t.anchor[1] === 0 ? r.y : t.anchor[1] === 0.5 ? r.y + r.height / 2 : r.y + r.height] : ve({ origin: a, point: t.cursorStartPosition, rotation: i.rotation }), u = [d[0] - c[0], d[1] - c[1]], [g, f] = di({ borderStart: r.x, borderSize: r.width, vector: u[0], settings: n, invertedAxe: l, anchor: t.anchor[0] }), [w, x] = di({ borderStart: r.y, borderSize: r.height, vector: u[1], settings: n, invertedAxe: h, anchor: t.anchor[1] });
|
|
124
124
|
if (s) {
|
|
125
125
|
const S = ((L, b, k, P, E, H, T, C, V, W) => {
|
|
126
126
|
const { selectionPadding: y } = W, N = (b.width - 2 * y || 1) / (b.height - 2 * y || 1), M = (E - 2 * y) / (T - 2 * y);
|
|
127
127
|
let A, Z, v, m;
|
|
128
128
|
return V.anchor[0] !== 0.5 && V.anchor[1] !== 0.5 ? M < N ? (Z = H, m = T, v = (T - 2 * y) * N + 2 * y, A = V.anchor[0] === 0 ? b.width - L[0] > y ? b.x + (b.width - v) : b.x + b.width - 2 * y : b.width + L[0] > y ? b.x : b.x - v + 2 * y) : (A = P, v = E, m = (E - 2 * y) / N + 2 * y, Z = V.anchor[1] === 0 ? b.height - L[1] > y ? b.y + (b.height - m) : b.y + b.height - 2 * y : b.height + L[1] > y ? b.y : b.y - m + 2 * y) : V.anchor[0] !== 0.5 ? (A = P, v = E, m = (E - 2 * y) / N + 2 * y, Z = b.y + (b.height - m) / 2) : (Z = H, m = T, v = (T - 2 * y) * N + 2 * y, A = b.x + (b.width - v) / 2), { borderX: A, borderWidth: v, borderY: Z, borderHeight: m, center: k, originalShape: C };
|
|
129
|
-
})(u, r, a, g, f,
|
|
129
|
+
})(u, r, a, g, f, w, x, i, t, n);
|
|
130
130
|
return ci(S);
|
|
131
131
|
}
|
|
132
|
-
return ci({ borderX: g, borderWidth: f, borderY:
|
|
132
|
+
return ci({ borderX: g, borderWidth: f, borderY: w, borderHeight: x, center: a, originalShape: i });
|
|
133
133
|
}, ft = (e, i) => {
|
|
134
134
|
const t = vt(e);
|
|
135
135
|
return { ...e, path: t, selection: Je(t, e, i) };
|
|
136
|
-
},
|
|
136
|
+
}, V1 = ft, Pt = (e, i, t) => {
|
|
137
137
|
const { clientX: n = 0, clientY: s = 0 } = "touches" in e && e.touches[0] ? e.touches[0] : "changedTouches" in e && e.changedTouches[0] ? e.changedTouches[0] : "clientX" in e ? e : {}, a = i?.getBoundingClientRect() ?? { left: 0, top: 0, width: t.canvasSize.width, height: t.canvasSize.height };
|
|
138
138
|
return [(n - a.left) * (t.canvasSize.width / a.width) / t.canvasSize.scaleRatio, (s - a.top) * (t.canvasSize.height / a.height) / t.canvasSize.scaleRatio];
|
|
139
139
|
}, hi = (e) => "touches" in e, Oe = (e, i, [t, n], [s, a]) => ve({ origin: [t - s, n - a], point: e, rotation: i }), dt = (e, i, t) => t ? d1(e, { x: i[0], y: i[1], radius: t }) : ((n, s) => s[0] >= n.x && s[0] <= n.x + n.width && s[1] >= n.y && s[1] <= n.y + n.height)(e, i), st = (e, i, t, n = !1, s = 0) => {
|
|
@@ -167,7 +167,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
167
167
|
return s.lineTo(...n.points[0]), s;
|
|
168
168
|
})(e);
|
|
169
169
|
return { ...e, path: t, selection: Bt(t, e, i) };
|
|
170
|
-
},
|
|
170
|
+
}, P1 = je, h1 = (e, i) => {
|
|
171
171
|
const t = Math.min(...e.points.map((a) => a[0])) - i.selectionPadding, n = Math.max(...e.points.map((a) => a[0])) + i.selectionPadding, s = Math.min(...e.points.map((a) => a[1])) - i.selectionPadding;
|
|
172
172
|
return { x: t, width: n - t, y: s, height: Math.max(...e.points.map((a) => a[1])) + i.selectionPadding - s };
|
|
173
173
|
}, _e = (e, i) => {
|
|
@@ -179,16 +179,16 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
179
179
|
return s;
|
|
180
180
|
})(e);
|
|
181
181
|
return { ...e, path: t, selection: Bt(t, e, i, !0) };
|
|
182
|
-
},
|
|
182
|
+
}, H1 = _e, T1 = h1, mt = (e, i) => {
|
|
183
183
|
const t = ((n) => {
|
|
184
184
|
const s = new Path2D();
|
|
185
185
|
return s.ellipse(n.x, n.y, n.radiusX, n.radiusY, 0, 0, 2 * Math.PI), s;
|
|
186
186
|
})(e);
|
|
187
187
|
return { ...e, path: t, selection: Je(t, e, i) };
|
|
188
|
-
},
|
|
189
|
-
return t = { ...e, type: "triangle" }, { ...t, path:
|
|
188
|
+
}, A1 = mt, gi = (e) => {
|
|
189
|
+
return t = { ...e, type: "triangle" }, { ...t, path: x1(t) };
|
|
190
190
|
var t;
|
|
191
|
-
},
|
|
191
|
+
}, Z1 = (e, i) => {
|
|
192
192
|
e.globalAlpha !== 0 && i.path && (i.style?.fillColor !== "transparent" && e.fill(i.path), i.style?.strokeColor !== "transparent" && e.stroke(i.path));
|
|
193
193
|
}, yt = (e, i) => {
|
|
194
194
|
const t = [];
|
|
@@ -212,15 +212,15 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
212
212
|
n = Dt(a);
|
|
213
213
|
} else n = Dt(e);
|
|
214
214
|
return { ...e, path: n, selection: Bt(n, e, i), arrows: t, style: { ...e.style, lineCap: e.style?.lineArrow ? "butt" : "round" } };
|
|
215
|
-
},
|
|
215
|
+
}, E1 = yt, vi = (e, i, t) => {
|
|
216
216
|
const n = [ve({ point: [0, 0], rotation: i }), ve({ point: [-(5 + (t.lineWidth ?? 0)), 10 + 2 * (t.lineWidth ?? 0)], rotation: i }), ve({ point: [5 + (t.lineWidth ?? 0), 10 + 2 * (t.lineWidth ?? 0)], rotation: i })];
|
|
217
217
|
return { points: [[e[0] + n[0][0], e[1] + n[0][1]], [e[0] + n[1][0], e[1] + n[1][1]], [e[0] + n[2][0], e[1] + n[2][1]]], style: { ...t, fillColor: t.strokeColor, strokeColor: "transparent" } };
|
|
218
218
|
}, Qt = (e, i) => {
|
|
219
219
|
const t = gt(e);
|
|
220
220
|
return { ...e, path: t, selection: Je(t, e, i) };
|
|
221
|
-
},
|
|
221
|
+
}, D1 = Qt, F1 = (e, i) => {
|
|
222
222
|
e.globalAlpha !== 0 && i.path && (i.style?.fillColor !== "transparent" && e.fill(i.path), i.style?.strokeColor !== "transparent" && e.stroke(i.path));
|
|
223
|
-
}, fi = (e, i) => ({ x: e.x - i.selectionPadding, width: e.width + 2 * i.selectionPadding, y: e.y - i.selectionPadding, height: e.height + 2 * i.selectionPadding }), mi = (e, i, t, n, [s, a] = [!1, !1]) => ((r, o, [l, h], [d, c]) => ve({ origin: [l - d, h - c], point: r, rotation: -o }))([e[0] === 0.5 ? t.x + t.width / 2 : e[0] === 0 ? t.x + (s ? 0 : t.width) : t.x + (s ? t.width : 0), e[1] === 0.5 ? t.y + t.height / 2 : e[1] === 0 ? t.y + (a ? 0 : t.height) : t.y + (a ? t.height : 0)], t.rotation, i, n.canvasOffset), St = (e, i) => ({ ...e, selection: Je(void 0, e, i) }),
|
|
223
|
+
}, fi = (e, i) => ({ x: e.x - i.selectionPadding, width: e.width + 2 * i.selectionPadding, y: e.y - i.selectionPadding, height: e.height + 2 * i.selectionPadding }), mi = (e, i, t, n, [s, a] = [!1, !1]) => ((r, o, [l, h], [d, c]) => ve({ origin: [l - d, h - c], point: r, rotation: -o }))([e[0] === 0.5 ? t.x + t.width / 2 : e[0] === 0 ? t.x + (s ? 0 : t.width) : t.x + (s ? t.width : 0), e[1] === 0.5 ? t.y + t.height / 2 : e[1] === 0 ? t.y + (a ? 0 : t.height) : t.y + (a ? t.height : 0)], t.rotation, i, n.canvasOffset), St = (e, i) => ({ ...e, selection: Je(void 0, e, i) }), N1 = St, Ht = (e, i, t, n, s) => {
|
|
224
224
|
const [a, r] = ((o, l, h, d, c = !1) => {
|
|
225
225
|
if (!(o && l && d && h)) return [ut, ut];
|
|
226
226
|
const u = o / l;
|
|
@@ -232,7 +232,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
232
232
|
return [g * u, g];
|
|
233
233
|
})(e.width, e.height, t, n, !0);
|
|
234
234
|
return St({ toolId: Ot.id, type: "picture", id: oe("picture_"), x: (t - a) / 2, y: (n - r) / 2, width: a, height: r, src: i, img: e, rotation: 0 }, s);
|
|
235
|
-
},
|
|
235
|
+
}, R1 = (e, i, t, n) => new Promise((s, a) => {
|
|
236
236
|
const r = new Image();
|
|
237
237
|
r.onerror = () => {
|
|
238
238
|
a(new Error("Some images could not be loaded"));
|
|
@@ -243,8 +243,8 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
243
243
|
const f = u1(g);
|
|
244
244
|
o.onload = async () => {
|
|
245
245
|
URL.revokeObjectURL(o.src);
|
|
246
|
-
const
|
|
247
|
-
l(
|
|
246
|
+
const w = Ht(o, g, d, c, u);
|
|
247
|
+
l(w);
|
|
248
248
|
}, o.src = f;
|
|
249
249
|
}) : (o.onload = async () => {
|
|
250
250
|
URL.revokeObjectURL(o.src);
|
|
@@ -262,14 +262,14 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
262
262
|
o.src = "";
|
|
263
263
|
});
|
|
264
264
|
})(r, s, e, i, t, n);
|
|
265
|
-
}), Tt = ["Texte"], bt = (e, i) => ({ ...e, selection: Je(void 0, e, i) }),
|
|
265
|
+
}), Tt = ["Texte"], bt = (e, i) => ({ ...e, selection: Je(void 0, e, i) }), I1 = bt, Gt = (e, i, t, n, s, a = rt) => {
|
|
266
266
|
e.font = `${s ? "italic" : ""} ${n ? "bold" : ""} 1px ${a}`;
|
|
267
267
|
const r = i.map((o) => t / e.measureText(o).width);
|
|
268
268
|
return Math.min(...r) || 36;
|
|
269
|
-
},
|
|
270
|
-
const s = { ...i, value: t }, a = ((f,
|
|
271
|
-
f.font = `${L ? "italic" : ""} ${S ? "bold" : ""} ${
|
|
272
|
-
const k =
|
|
269
|
+
}, W1 = (e, i, t, n) => {
|
|
270
|
+
const s = { ...i, value: t }, a = ((f, w, x, S, L, b = rt) => {
|
|
271
|
+
f.font = `${L ? "italic" : ""} ${S ? "bold" : ""} ${x}px ${b}`;
|
|
272
|
+
const k = w.map((P) => f.measureText(P).width);
|
|
273
273
|
return Math.max(...k) || 20;
|
|
274
274
|
})(e, s.value, s.fontSize, s.style?.fontBold ?? !1, s.style?.fontItalic ?? !1, s.style?.fontFamily), r = s.fontSize * s.value.length, o = { ...s, width: a, height: r }, { center: l } = _(i, n), { center: h } = _(o, n), [d, c] = mi([1, 1], l, i, n), [u, g] = mi([1, 1], h, o, n, [!1, !1]);
|
|
275
275
|
return { ...o, x: o.x - (u - d), y: o.y - (g - c) };
|
|
@@ -324,7 +324,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
324
324
|
((s, a) => {
|
|
325
325
|
if (s.globalAlpha !== 0 && a.path) {
|
|
326
326
|
a.style?.fillColor !== "transparent" && s.fill(a.path), a.style?.strokeColor !== "transparent" && s.stroke(a.path);
|
|
327
|
-
for (const r of a.arrows ?? []) ze(s, r.style),
|
|
327
|
+
for (const r of a.arrows ?? []) ze(s, r.style), Z1(s, r);
|
|
328
328
|
}
|
|
329
329
|
})(e, i);
|
|
330
330
|
break;
|
|
@@ -350,7 +350,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
350
350
|
break;
|
|
351
351
|
case "rect":
|
|
352
352
|
case "square":
|
|
353
|
-
|
|
353
|
+
F1(e, i);
|
|
354
354
|
break;
|
|
355
355
|
case "picture":
|
|
356
356
|
((s, a) => {
|
|
@@ -358,7 +358,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
358
358
|
})(e, i);
|
|
359
359
|
}
|
|
360
360
|
e.restore();
|
|
361
|
-
},
|
|
361
|
+
}, z1 = (e, i) => {
|
|
362
362
|
switch (e.type) {
|
|
363
363
|
case "brush":
|
|
364
364
|
return ((t, { selectionPadding: n }) => {
|
|
@@ -370,7 +370,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
370
370
|
case "polygon":
|
|
371
371
|
return h1(e, i);
|
|
372
372
|
case "curve":
|
|
373
|
-
return
|
|
373
|
+
return T1(e, i);
|
|
374
374
|
case "circle":
|
|
375
375
|
return ((t, n) => ({ x: t.x - t.radius - n.selectionPadding, width: 2 * (t.radius + n.selectionPadding), y: t.y - t.radius - n.selectionPadding, height: 2 * (t.radius + n.selectionPadding) }))(e, i);
|
|
376
376
|
case "ellipse":
|
|
@@ -386,12 +386,12 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
386
386
|
return { x: 0, y: 0, width: 100, height: 100 };
|
|
387
387
|
}
|
|
388
388
|
}, _ = (e, i) => {
|
|
389
|
-
const t =
|
|
389
|
+
const t = z1(e, i), n = ((s) => [s.x + s.width / 2, s.y + s.height / 2])(t);
|
|
390
390
|
return { borders: t, center: n };
|
|
391
|
-
},
|
|
391
|
+
}, O1 = (e, i, t, n, s, a) => {
|
|
392
392
|
const r = s[0] - n[0], o = s[1] - n[1], l = s[0] - i[0], h = s[1] - i[1], d = t.rotation + Math.atan2(h, l) - Math.atan2(o, r);
|
|
393
|
-
return { ...e, rotation:
|
|
394
|
-
},
|
|
393
|
+
return { ...e, rotation: k1(d, a) };
|
|
394
|
+
}, $1 = (e, i, t, n, s, a, r) => {
|
|
395
395
|
switch (n.type) {
|
|
396
396
|
case "line":
|
|
397
397
|
return ((o, l, h, d) => {
|
|
@@ -410,9 +410,9 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
410
410
|
})(t, n, s, a);
|
|
411
411
|
case "brush":
|
|
412
412
|
return ((o, l, h, d, c) => {
|
|
413
|
-
const { borders: u } = _({ ...l, scaleX: 1, scaleY: 1 }, d), { borders: g } = _(l, d), { borderX: f, borderHeight:
|
|
413
|
+
const { borders: u } = _({ ...l, scaleX: 1, scaleY: 1 }, d), { borders: g } = _(l, d), { borderX: f, borderHeight: w, borderY: x, borderWidth: S } = Be(o, l, h, d, c), L = Math.max(0, u.width - 2 * d.selectionPadding), b = Math.max(0, u.height - 2 * d.selectionPadding), k = Math.max(0, S - 2 * d.selectionPadding), P = Math.max(0, w - 2 * d.selectionPadding), E = L ? k / L : 1, H = b ? P / b : 1;
|
|
414
414
|
if (!L || !b) return l;
|
|
415
|
-
const T = De(f - g.x), C = De(
|
|
415
|
+
const T = De(f - g.x), C = De(x - g.y);
|
|
416
416
|
return qe({ ...l, points: l.points.map((V) => V.map(([W, y]) => [W + T, y + C])), scaleX: E, scaleY: H }, d);
|
|
417
417
|
})(t, n, s, a, r);
|
|
418
418
|
case "circle":
|
|
@@ -422,24 +422,24 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
422
422
|
})(t, n, s, a);
|
|
423
423
|
case "ellipse":
|
|
424
424
|
return ((o, l, h, d, c = !1) => {
|
|
425
|
-
const { borderX: u, borderHeight: g, borderY: f, borderWidth:
|
|
426
|
-
return mt({ ...l, radiusX: Math.max(0,
|
|
425
|
+
const { borderX: u, borderHeight: g, borderY: f, borderWidth: w } = Be(o, l, h, d, c);
|
|
426
|
+
return mt({ ...l, radiusX: Math.max(0, w / 2 - d.selectionPadding), radiusY: Math.max(0, g / 2 - d.selectionPadding), x: u + w / 2, y: f + g / 2 }, d);
|
|
427
427
|
})(t, n, s, a, r);
|
|
428
428
|
case "rect":
|
|
429
429
|
case "square":
|
|
430
430
|
return ((o, l, h, d, c = !1) => {
|
|
431
|
-
const { borderX: u, borderHeight: g, borderY: f, borderWidth:
|
|
432
|
-
return Qt({ ...l, width: Math.max(0,
|
|
431
|
+
const { borderX: u, borderHeight: g, borderY: f, borderWidth: w } = Be(o, l, h, d, c);
|
|
432
|
+
return Qt({ ...l, width: Math.max(0, w - 2 * d.selectionPadding), height: Math.max(0, g - 2 * d.selectionPadding), x: u + d.selectionPadding, y: f + d.selectionPadding }, d);
|
|
433
433
|
})(t, n, s, a, i.type === "square" || r);
|
|
434
434
|
case "text":
|
|
435
435
|
return ((o, l, h, d, c) => {
|
|
436
|
-
const { borderX: u, borderHeight: g, borderY: f, borderWidth:
|
|
437
|
-
return { ...
|
|
436
|
+
const { borderX: u, borderHeight: g, borderY: f, borderWidth: w } = Be(l, h, d, c, !0), x = bt({ ...h, width: Math.max(0, w - 2 * c.selectionPadding), height: Math.max(0, g - 2 * c.selectionPadding), x: u + c.selectionPadding, y: f + c.selectionPadding }, c);
|
|
437
|
+
return { ...x, fontSize: Gt(o, x.value, x.width, x.style?.fontBold ?? !1, x.style?.fontItalic ?? !1, x.style?.fontFamily) };
|
|
438
438
|
})(e, t, n, s, a);
|
|
439
439
|
case "picture":
|
|
440
|
-
return ((o, l, h, d) => {
|
|
441
|
-
const { borderX:
|
|
442
|
-
return St({ ...l, width: Math.max(0,
|
|
440
|
+
return ((o, l, h, d, c) => {
|
|
441
|
+
const { borderX: u, borderHeight: g, borderY: f, borderWidth: w } = Be(o, l, h, d, !0);
|
|
442
|
+
return St({ ...l, width: Math.max(0, w - 2 * d.selectionPadding), height: Math.max(0, g - 2 * d.selectionPadding), x: u + d.selectionPadding, y: f + d.selectionPadding }, d);
|
|
443
443
|
})(t, n, s, a);
|
|
444
444
|
default:
|
|
445
445
|
return n;
|
|
@@ -481,23 +481,23 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
481
481
|
switch (e.type) {
|
|
482
482
|
case "rect":
|
|
483
483
|
case "square":
|
|
484
|
-
return
|
|
484
|
+
return D1(e, i);
|
|
485
485
|
case "ellipse":
|
|
486
|
-
return
|
|
486
|
+
return A1(e, i);
|
|
487
487
|
case "circle":
|
|
488
|
-
return
|
|
488
|
+
return V1(e, i);
|
|
489
489
|
case "picture":
|
|
490
|
-
return
|
|
490
|
+
return N1(e, i);
|
|
491
491
|
case "text":
|
|
492
|
-
return
|
|
492
|
+
return I1(e, i);
|
|
493
493
|
case "line":
|
|
494
|
-
return
|
|
494
|
+
return E1(e, i);
|
|
495
495
|
case "polygon":
|
|
496
|
-
return V1(e, i);
|
|
497
|
-
case "curve":
|
|
498
496
|
return P1(e, i);
|
|
497
|
+
case "curve":
|
|
498
|
+
return H1(e, i);
|
|
499
499
|
case "brush":
|
|
500
|
-
return
|
|
500
|
+
return M1(e, i);
|
|
501
501
|
default:
|
|
502
502
|
return e;
|
|
503
503
|
}
|
|
@@ -529,7 +529,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
529
529
|
})({ ctx: e, shape: i, withAnchors: a, selectionWidth: n, selectionColor: s, settings: t });
|
|
530
530
|
}
|
|
531
531
|
e.restore();
|
|
532
|
-
},
|
|
532
|
+
}, U1 = ({ ctx: e, selectionFrame: i, settings: t }) => {
|
|
533
533
|
Ut(e, t), ((n, s, a) => {
|
|
534
534
|
ze(n, { fillColor: "rgba(170,170,170, 0.1)", strokeColor: "rgb(170,170,170)", lineWidth: 1 / a.canvasSize.scaleRatio }), n.fillRect(s[0][0], s[0][1], s[1][0] - s[0][0], s[1][1] - s[0][1]), n.strokeRect(s[0][0], s[0][1], s[1][0] - s[0][0], s[1][1] - s[0][1]);
|
|
535
535
|
})(e, i, t), e.restore();
|
|
@@ -546,7 +546,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
546
546
|
}, g1 = (e) => (e instanceof File ? e.name : e).includes(".svg"), v1 = (e) => g1(e) ? fetch(e).then((i) => i.text()).then((i) => u1(i)) : fetch(e).then((i) => i.blob()).then((i) => URL.createObjectURL(i)), Si = (e, i) => {
|
|
547
547
|
const t = document.createElement("a");
|
|
548
548
|
t.href = e, t.download = i, document.body.appendChild(t), t.click(), document.body.removeChild(t);
|
|
549
|
-
},
|
|
549
|
+
}, B1 = (e) => e.src.includes("<svg") ? e.src : ((i) => {
|
|
550
550
|
const t = document.createElement("canvas");
|
|
551
551
|
t.width = i.width, t.height = i.height;
|
|
552
552
|
const n = t.getContext("2d");
|
|
@@ -559,14 +559,14 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
559
559
|
a.clearRect(0, 0, i, t), l1(a);
|
|
560
560
|
for (let r = e.length - 1; r >= 0; r--) p1(a, e[r], le(["canvasSize", "scaleRatio"], 1, n));
|
|
561
561
|
return s.toDataURL("image/png");
|
|
562
|
-
},
|
|
562
|
+
}, G1 = (e, i, t) => {
|
|
563
563
|
return s = Xt(e, i, t), `data:text/plain;charset=utf-8,${encodeURIComponent(JSON.stringify(s))}`;
|
|
564
564
|
var s;
|
|
565
|
-
},
|
|
565
|
+
}, X1 = (e) => {
|
|
566
566
|
const i = ["img", "id", "selection", "path", "arrows"];
|
|
567
|
-
return e.map((t) => t.type !== "picture" || t.src.startsWith("http") ? Zt(i, t) : Zt(i, { ...t, src:
|
|
568
|
-
}, Xt = (e, i, t) => ({ shapes:
|
|
569
|
-
const n = q([]), s = q({ dataChanged: [] }), [a, r] = z(void 0), [o, l] = z(void 0), [h, d] = z(void 0), [c, u] = z({ states: [{ shapes: [], selectedShape: void 0, source: "remote" }], cursor: 0 }), g = c.cursor > 0, f = c.cursor < c.states.length - 1,
|
|
567
|
+
return e.map((t) => t.type !== "picture" || t.src.startsWith("http") ? Zt(i, t) : Zt(i, { ...t, src: B1(t) }));
|
|
568
|
+
}, Xt = (e, i, t) => ({ shapes: X1(e), config: { width: i, height: t } }), Ci = (e, i) => ot({ ...e, id: oe(`${e.type}_`) }, i), Y1 = (e, i, t) => {
|
|
569
|
+
const n = q([]), s = q({ dataChanged: [] }), [a, r] = z(void 0), [o, l] = z(void 0), [h, d] = z(void 0), [c, u] = z({ states: [{ shapes: [], selectedShape: void 0, source: "remote" }], cursor: 0 }), g = c.cursor > 0, f = c.cursor < c.states.length - 1, w = n.current.length > 0, x = F(() => {
|
|
570
570
|
u((v) => r1(v.states[v.cursor].shapes, n.current) ? v : { states: [...v.states.slice(0, v.cursor + 1), { shapes: n.current, selectedShape: o, source: "user" }], cursor: v.cursor + 1 });
|
|
571
571
|
}, [o]), S = F((v) => {
|
|
572
572
|
n.current = [v, ...n.current];
|
|
@@ -575,16 +575,16 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
575
575
|
const D = n.current.find((R) => R.id === o?.id ? !!st(o, Q, e) : !!c1(m, R, Q, e));
|
|
576
576
|
d(D);
|
|
577
577
|
}, [e, o]), b = F(async (v, m = 300, Q = 300) => {
|
|
578
|
-
const D = await
|
|
579
|
-
return S(D),
|
|
580
|
-
}, [S,
|
|
581
|
-
n.current = n.current.map((Q) => Q.id === o?.id ? v : Q), l((Q) => Q?.id === v.id ? v : Q), m &&
|
|
582
|
-
}, [o,
|
|
578
|
+
const D = await R1(v, m, Q, e);
|
|
579
|
+
return S(D), x(), D;
|
|
580
|
+
}, [S, x, e]), k = F((v, m = !1) => {
|
|
581
|
+
n.current = n.current.map((Q) => Q.id === o?.id ? v : Q), l((Q) => Q?.id === v.id ? v : Q), m && x();
|
|
582
|
+
}, [o, x]), P = F((v) => {
|
|
583
583
|
const m = v.map((Q) => Zt(["chosen"], Q));
|
|
584
|
-
n.current = m,
|
|
585
|
-
}, [
|
|
586
|
-
l((m) => m?.id === v.id ? void 0 : m), n.current = n.current.filter((m) => m.id !== v.id),
|
|
587
|
-
}, [
|
|
584
|
+
n.current = m, x();
|
|
585
|
+
}, [x]), E = F((v) => {
|
|
586
|
+
l((m) => m?.id === v.id ? void 0 : m), n.current = n.current.filter((m) => m.id !== v.id), x();
|
|
587
|
+
}, [x]), H = F((v) => {
|
|
588
588
|
u((m) => {
|
|
589
589
|
const Q = v(m);
|
|
590
590
|
return n.current = m.states[Q].shapes, l(m.states[Q].selectedShape), le("cursor", Q, m);
|
|
@@ -652,7 +652,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
652
652
|
return l(R?.[0]), D;
|
|
653
653
|
});
|
|
654
654
|
}, [e]);
|
|
655
|
-
return { registerEvent: M, unregisterEvent: A, shapesRef: n, selectedShape: o, hoveredShape: h, selectionFrame: a, setSelectionFrame: r, refreshSelectedShapes: Z, addShape: S, addPictureShape: b, moveShapes: W, saveShapes:
|
|
655
|
+
return { registerEvent: M, unregisterEvent: A, shapesRef: n, selectedShape: o, hoveredShape: h, selectionFrame: a, setSelectionFrame: r, refreshSelectedShapes: Z, addShape: S, addPictureShape: b, moveShapes: W, saveShapes: x, setSelectedShape: l, refreshHoveredShape: L, toggleShapeVisibility: y, toggleShapeLock: N, removeShape: E, updateShape: k, backwardShape: T, forwardShape: C, clearShapes: V, canGoBackward: g, canGoForward: f, canClear: w };
|
|
656
656
|
}, wi = (e, i = !1) => {
|
|
657
657
|
const t = (s, a) => {
|
|
658
658
|
if (Array.isArray(s)) return a;
|
|
@@ -681,10 +681,10 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
681
681
|
return null;
|
|
682
682
|
});
|
|
683
683
|
return $t(i ? [...n, Ot] : n);
|
|
684
|
-
},
|
|
685
|
-
const { layersManipulation: r, brushAlgo: o, isBrushShapeDoneOnMouseUp: l, grid: h, canGrow: d, canShrink: c, withExport: u, withLoadAndSave: g, withUploadPicture: f, withUrlPicture:
|
|
684
|
+
}, An = ({ width: e = 1e3, height: i = 600, shapes: t, mode: n = "editor", disabled: s = !1, options: a = oi }) => {
|
|
685
|
+
const { layersManipulation: r, brushAlgo: o, isBrushShapeDoneOnMouseUp: l, grid: h, canGrow: d, canShrink: c, withExport: u, withLoadAndSave: g, withUploadPicture: f, withUrlPicture: w, withSkeleton: x, withFrameSelection: S, clearCallback: L, availableTools: b, canvasSelectionPadding: k } = { ...oi, ...a }, P = n !== "viewer", E = s || !P, H = q(null), T = q(null), C = q(!1), V = F((Y) => {
|
|
686
686
|
H.current = Y;
|
|
687
|
-
}, []), [W, y] = z(Ae), [N, M] = z(h), [A, Z] = z({ width: e, height: i, scaleRatio: 1 }), [v, m] = z([0, 0]), Q = Ni(() => ({ brushAlgo: o, isBrushShapeDoneOnMouseUp: l, canvasSize: A, canvasOffset: v, gridGap: N, selectionPadding: k }), [k, N, o, l, v, A]), [D, R] = z(wi(b, f ||
|
|
687
|
+
}, []), [W, y] = z(Ae), [N, M] = z(h), [A, Z] = z({ width: e, height: i, scaleRatio: 1 }), [v, m] = z([0, 0]), Q = Ni(() => ({ brushAlgo: o, isBrushShapeDoneOnMouseUp: l, canvasSize: A, canvasOffset: v, gridGap: N, selectionPadding: k }), [k, N, o, l, v, A]), [D, R] = z(wi(b, f || w)), { isInsideComponent: X } = (({ disabled: Y, componentRef: Ce }) => {
|
|
688
688
|
const [it, Ie] = z(!1);
|
|
689
689
|
return B(() => {
|
|
690
690
|
if (!Y) {
|
|
@@ -697,14 +697,14 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
697
697
|
}
|
|
698
698
|
Ie(!1);
|
|
699
699
|
}, [Y, Ce]), { isInsideComponent: it };
|
|
700
|
-
})({ disabled: E, componentRef: H }), { registerEvent: ce, unregisterEvent: $, shapesRef: U, selectedShape: re, selectionFrame: te, hoveredShape: ie, addShape: fe, addPictureShape: Me, moveShapes: ne, setSelectedShape: j, setSelectionFrame: Se, refreshSelectedShapes: Ze, refreshHoveredShape: ke, removeShape: me, updateShape: be, backwardShape: Ee, forwardShape: se, clearShapes: Le, saveShapes: Ne, toggleShapeVisibility: he, toggleShapeLock: ye, canGoBackward: ae, canGoForward: Ve, canClear: $e } =
|
|
700
|
+
})({ disabled: E, componentRef: H }), { registerEvent: ce, unregisterEvent: $, shapesRef: U, selectedShape: re, selectionFrame: te, hoveredShape: ie, addShape: fe, addPictureShape: Me, moveShapes: ne, setSelectedShape: j, setSelectionFrame: Se, refreshSelectedShapes: Ze, refreshHoveredShape: ke, removeShape: me, updateShape: be, backwardShape: Ee, forwardShape: se, clearShapes: Le, saveShapes: Ne, toggleShapeVisibility: he, toggleShapeLock: ye, canGoBackward: ae, canGoForward: Ve, canClear: $e } = Y1(Q, e, i), Pe = F((Y) => {
|
|
701
701
|
j(void 0), y(Y);
|
|
702
702
|
}, [j]), Ue = F((Y, Ce) => {
|
|
703
703
|
Le(Y, Ce), Pe(Ae), m([0, 0]);
|
|
704
704
|
}, [Pe, Le]), lt = F((Y) => {
|
|
705
705
|
y(Ae), j(Y);
|
|
706
706
|
}, [j]), Ct = F(() => {
|
|
707
|
-
const Y =
|
|
707
|
+
const Y = G1(U.current, e, i);
|
|
708
708
|
if (!Y) throw new Error("L'encodage a échoué");
|
|
709
709
|
Si(Y, "drawing.json");
|
|
710
710
|
}, [U, e, i]), wt = F(() => {
|
|
@@ -721,14 +721,14 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
721
721
|
const We = [], Mt = $t(Ie.map((ue) => {
|
|
722
722
|
if (!ue || !n1.includes(ue.type)) return null;
|
|
723
723
|
if (ue.type === "picture") {
|
|
724
|
-
const we = new Image(),
|
|
724
|
+
const we = new Image(), y1 = new Promise((nt, Q1) => {
|
|
725
725
|
we.onload = () => {
|
|
726
726
|
URL.revokeObjectURL(we.src), nt();
|
|
727
727
|
}, we.onerror = () => {
|
|
728
|
-
|
|
728
|
+
Q1(new Error("Some images could not be loaded"));
|
|
729
729
|
};
|
|
730
730
|
});
|
|
731
|
-
if (We.push(
|
|
731
|
+
if (We.push(y1), ue.src.startsWith("http")) v1(ue.src).then((nt) => {
|
|
732
732
|
we.src = nt;
|
|
733
733
|
}).catch(() => {
|
|
734
734
|
we.src = "";
|
|
@@ -761,15 +761,15 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
761
761
|
}, We.readAsText(it);
|
|
762
762
|
}))(Y);
|
|
763
763
|
await K(Ce.shapes ?? [], { clearHistory: !0, source: "remote" });
|
|
764
|
-
}, [K]),
|
|
764
|
+
}, [K]), m1 = F(() => {
|
|
765
765
|
typeof L != "string" ? K(L(), { clearHistory: !1, source: "user" }) : L === "defaultShapes" && t !== void 0 ? K(t, { clearHistory: !1, source: "user" }) : Ue([], { clearHistory: !1, source: "user" });
|
|
766
766
|
}, [Ue, K, t, L]);
|
|
767
767
|
B(() => {
|
|
768
|
-
R(wi(b, f ||
|
|
769
|
-
}, [b, f,
|
|
768
|
+
R(wi(b, f || w));
|
|
769
|
+
}, [b, f, w]);
|
|
770
770
|
const _t = { canvas: T, editor: H, setEditor: V };
|
|
771
|
-
return { editorProps: { shapesRef: U, addPictureShape: Me, moveShapes: ne, toggleShapeVisibility: he, toggleShapeLock: ye, canGoBackward: ae, canGoForward: Ve, canClear: $e, selectedShape: re, removeShape: me, updateShape: be, backwardShape: Ee, forwardShape: se, refs: _t, width: e, height: i, canvasSize: A, selectTool: Pe, selectShape: lt, activeTool: W, setActiveTool: y, setAvailableTools: R, isEditMode: P, isDisabled: E, availableTools: D, gridGap: N, setGridGap: M, loadFile: tt, exportPicture: wt, exportData: Ct, clearCanvas:
|
|
772
|
-
},
|
|
771
|
+
return { editorProps: { shapesRef: U, addPictureShape: Me, moveShapes: ne, toggleShapeVisibility: he, toggleShapeLock: ye, canGoBackward: ae, canGoForward: Ve, canClear: $e, selectedShape: re, removeShape: me, updateShape: be, backwardShape: Ee, forwardShape: se, refs: _t, width: e, height: i, canvasSize: A, selectTool: Pe, selectShape: lt, activeTool: W, setActiveTool: y, setAvailableTools: R, isEditMode: P, isDisabled: E, availableTools: D, gridGap: N, setGridGap: M, loadFile: tt, exportPicture: wt, exportData: Ct, clearCanvas: m1, settings: Q, canvas: { canGrow: d, canShrink: c, layersManipulation: r, withExport: u, withLoadAndSave: g, withUploadPicture: f, withUrlPicture: w } }, canvasProps: { shapesRef: U, selectedShape: re, selectionFrame: te, hoveredShape: ie, addShape: fe, setSelectedShape: j, setSelectionFrame: Se, refreshSelectedShapes: Ze, refreshHoveredShape: ke, removeShape: me, updateShape: be, backwardShape: Ee, forwardShape: se, saveShapes: Ne, refs: _t, width: e, height: i, settings: Q, canvasSize: A, setCanvasSize: Z, setCanvasOffset: m, selectShape: lt, activeTool: W, setActiveTool: y, isInsideComponent: X, isEditMode: P, isDisabled: E, canvas: { withSkeleton: x, withFrameSelection: S, canGrow: d, canShrink: c } }, registerEvent: ce, unregisterEvent: $, resetCanvas: Re, getCurrentImage: xt, getCurrentData: J };
|
|
772
|
+
}, j1 = (e, i, t, n, s, a, r) => {
|
|
773
773
|
let o = !1;
|
|
774
774
|
if (s) {
|
|
775
775
|
o = st(s, t, n, !0, a ? 20 : void 0);
|
|
@@ -785,7 +785,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
785
785
|
}
|
|
786
786
|
const l = i.find((h) => h.id === s?.id ? !!o : !!c1(e, h, t, n));
|
|
787
787
|
return l ? { shape: l, mode: { mode: "translate", cursorStartPosition: t, originalShape: l } } : { shape: void 0, mode: { mode: r ? "selectionFrame" : "default" } };
|
|
788
|
-
},
|
|
788
|
+
}, _1 = ({ disabled: e = !1, addShape: i, drawCanvasRef: t, setActiveTool: n, refreshHoveredShape: s, shapes: a, selectionMode: r, activeTool: o, isInsideComponent: l, setCanvasOffset: h, selectedShape: d, selectionCanvasRef: c, canvasOffsetStartPosition: u, refreshSelectedShapes: g, setSelectedShape: f, setSelectionFrame: w, setCanvasOffsetStartPosition: x, updateSingleShape: S, saveShapes: L, setSelectionMode: b, settings: k, isShiftPressed: P, withFrameSelection: E }) => {
|
|
789
789
|
const [H, T] = z({ mode: "default" }), { registerDoubleClickEvent: C, unRegisterDoubleClickEvent: V } = (() => {
|
|
790
790
|
const y = q(void 0), N = q(void 0), M = (A) => {
|
|
791
791
|
const Z = (/* @__PURE__ */ new Date()).getTime();
|
|
@@ -807,7 +807,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
807
807
|
else {
|
|
808
808
|
const fe = A.current?.getContext("2d");
|
|
809
809
|
if (!fe) return;
|
|
810
|
-
X(
|
|
810
|
+
X(L1(fe, v, ie, m, U, re));
|
|
811
811
|
}
|
|
812
812
|
} else $(te, ie, U);
|
|
813
813
|
else ce([ie[0] - Q[0], ie[1] - Q[1]]);
|
|
@@ -819,12 +819,12 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
819
819
|
const { isBrushShapeDoneOnMouseUp: W } = k;
|
|
820
820
|
return B(() => {
|
|
821
821
|
const y = () => {
|
|
822
|
-
r.mode !== "textedition" && r.mode !== "default" && (r.mode === "brush" && W && f(void 0), b({ mode: "default" }),
|
|
822
|
+
r.mode !== "textedition" && r.mode !== "default" && (r.mode === "brush" && W && f(void 0), b({ mode: "default" }), w(void 0), L());
|
|
823
823
|
};
|
|
824
824
|
return l && (document.addEventListener("mouseup", y), document.addEventListener("touchend", y)), () => {
|
|
825
825
|
l && (document.removeEventListener("mouseup", y), document.removeEventListener("touchend", y));
|
|
826
826
|
};
|
|
827
|
-
}, [l, r, W, L,
|
|
827
|
+
}, [l, r, W, L, w, b, f]), B(() => {
|
|
828
828
|
const y = c.current;
|
|
829
829
|
if (!y) return;
|
|
830
830
|
const N = y.getContext("2d");
|
|
@@ -833,9 +833,9 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
833
833
|
A.preventDefault();
|
|
834
834
|
const Z = Pt(A, c.current, k);
|
|
835
835
|
if (o.type === "selection") {
|
|
836
|
-
const { shape: v, mode: m } =
|
|
837
|
-
f(v), b(m), m.mode === "selectionFrame" &&
|
|
838
|
-
} else if (o.type === "move")
|
|
836
|
+
const { shape: v, mode: m } = j1(N, a, Z, k, d, hi(A), E);
|
|
837
|
+
f(v), b(m), m.mode === "selectionFrame" && w([[Z[0], Z[1]], [Z[0], Z[1]]]);
|
|
838
|
+
} else if (o.type === "move") x(Z);
|
|
839
839
|
else if (n1.some((v) => v === o.type)) {
|
|
840
840
|
const v = t.current?.getContext("2d");
|
|
841
841
|
if (!v) return;
|
|
@@ -861,7 +861,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
861
861
|
return y.addEventListener("mousedown", M, { passive: !1 }), y.addEventListener("touchstart", M, { passive: !1 }), () => {
|
|
862
862
|
y.removeEventListener("mousedown", M), y.removeEventListener("touchstart", M);
|
|
863
863
|
};
|
|
864
|
-
}, [e, c, t, d, o,
|
|
864
|
+
}, [e, c, t, d, o, x, a, S, i, n, f, b, w, k, E]), B(() => {
|
|
865
865
|
const y = c.current;
|
|
866
866
|
if (y)
|
|
867
867
|
return l ? (C(y, (N) => {
|
|
@@ -873,7 +873,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
873
873
|
V(y);
|
|
874
874
|
}) : void 0;
|
|
875
875
|
}, [C, V, l, c, o, d, b, k]), { hoverMode: H };
|
|
876
|
-
},
|
|
876
|
+
}, f1 = (e) => e.childNodes.length ? Array.from(e.childNodes).map((i) => f1(i)).join("") : e.nodeValue ?? "", q1 = ({ disabled: e = !1, scaleRatio: i, shape: t, defaultValue: n, updateValue: s, saveShapes: a, settings: r }) => {
|
|
877
877
|
const o = q(null), l = q(a);
|
|
878
878
|
B(() => {
|
|
879
879
|
if (!o.current) return;
|
|
@@ -901,56 +901,56 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
901
901
|
return ve({ point: [d.x, d.y], rotation: -t.rotation, origin: c });
|
|
902
902
|
}, [t, r]);
|
|
903
903
|
return p("div", { className: "react-paint-editor-toolbox-edittextbox", ref: o, "data-fontbold": t.style?.fontBold ?? !1, "data-fontitalic": t.style?.fontItalic ?? !1, contentEditable: !e, onInput: (d) => {
|
|
904
|
-
const c = Array.from(d.target.childNodes).map((u) => u
|
|
904
|
+
const c = Array.from(d.target.childNodes).map((u) => f1(u));
|
|
905
905
|
s(c);
|
|
906
906
|
}, style: { "--react-paint-editor-toolbox-edittextbox-transform": `translate3D(${h[0] * i}px, ${h[1] * i}px, 0) rotate(${Ft(t.rotation)}deg)`, "--react-paint-editor-toolbox-edittextbox-fontsize": t.fontSize * i + "px", "--react-paint-editor-toolbox-edittextbox-padding": r.selectionPadding * i + "px", "--react-paint-editor-toolbox-edittextbox-color": t.style?.strokeColor ?? "inherit", "--react-paint-editor-toolbox-edittextbox-opacity": (t.style?.opacity ?? 100) / 100, "--react-paint-editor-toolbox-edittextbox-fontfamily": t.style?.fontFamily ?? rt } });
|
|
907
|
-
},
|
|
907
|
+
}, J1 = (e, i, t, n, s) => {
|
|
908
908
|
const { canvasSize: { width: a, height: r } } = t;
|
|
909
909
|
e.clearRect(0, 0, a, r), l1(e), t.gridGap && ((o, l, h, d) => {
|
|
910
910
|
const { gridGap: c, canvasOffset: u, canvasSize: { scaleRatio: g } } = d;
|
|
911
911
|
o.strokeStyle = "rgb(220,220,220)", o.lineWidth = 1, o.save(), o.scale(g, g), o.beginPath();
|
|
912
|
-
const f = -u[0] % c,
|
|
913
|
-
for (let L = 0; L <
|
|
914
|
-
for (let L = 0; L < S; L++) o.moveTo(f,
|
|
912
|
+
const f = -u[0] % c, w = -u[1] % c, x = Math.ceil(l / g / c), S = Math.ceil(h / g / c);
|
|
913
|
+
for (let L = 0; L < x; L++) o.moveTo(f + (L + 1) * c, w), o.lineTo(f + (L + 1) * c, w + h / g);
|
|
914
|
+
for (let L = 0; L < S; L++) o.moveTo(f, w + (L + 1) * c), o.lineTo(f + l / g, w + (L + 1) * c);
|
|
915
915
|
o.stroke(), o.restore();
|
|
916
916
|
})(e, a, r, t);
|
|
917
917
|
for (let o = n.length - 1; o >= 0; o--) i.mode === "textedition" && n[o] === s || p1(e, n[o], t);
|
|
918
|
-
},
|
|
918
|
+
}, K1 = Fi.forwardRef(({ canGrow: e, disabled: i = !1, canvasSize: t, shapes: n, addShape: s, updateSingleShape: a, selectedShape: r, setSelectedShape: o, setSelectionFrame: l, hoveredShape: h, selectionFrame: d, refreshHoveredShape: c, refreshSelectedShapes: u, saveShapes: g, activeTool: f, setActiveTool: w, canvasOffsetStartPosition: x, setCanvasOffsetStartPosition: S, setCanvasOffset: L, isInsideComponent: b, selectionMode: k, setSelectionMode: P, selectionWidth: E, selectionColor: H, settings: T, isEditMode: C, isShiftPressed: V, withFrameSelection: W, withSkeleton: y }, N) => {
|
|
919
919
|
const M = q(null), A = q(null);
|
|
920
|
-
|
|
921
|
-
const { hoverMode: Z } =
|
|
920
|
+
S1(N, () => M.current);
|
|
921
|
+
const { hoverMode: Z } = _1({ disabled: i, addShape: s, drawCanvasRef: M, setActiveTool: w, shapes: n, selectionMode: k, activeTool: f, isInsideComponent: b, setCanvasOffset: L, selectedShape: r, selectionCanvasRef: A, canvasOffsetStartPosition: x, setSelectedShape: o, setSelectionFrame: l, refreshHoveredShape: c, refreshSelectedShapes: u, setCanvasOffsetStartPosition: S, updateSingleShape: a, saveShapes: g, setSelectionMode: P, isShiftPressed: V, withFrameSelection: W, settings: T }), v = F((m) => {
|
|
922
922
|
if (r?.type !== "text") return;
|
|
923
923
|
const Q = M.current?.getContext("2d");
|
|
924
924
|
if (!Q) return;
|
|
925
|
-
const D = ot(
|
|
925
|
+
const D = ot(W1(Q, r, m, T), T);
|
|
926
926
|
a(D);
|
|
927
927
|
}, [a, r, T]);
|
|
928
928
|
return B(() => {
|
|
929
929
|
const m = M.current?.getContext("2d");
|
|
930
|
-
m && window.requestAnimationFrame(() =>
|
|
930
|
+
m && window.requestAnimationFrame(() => J1(m, k, T, n, r));
|
|
931
931
|
}, [n, k, r, T]), B(() => {
|
|
932
932
|
const m = A.current?.getContext("2d");
|
|
933
933
|
m && window.requestAnimationFrame(() => ((Q, D, R, X, ce, $, U, re, te, ie) => {
|
|
934
|
-
Q.clearRect(0, 0, R.canvasSize.width, R.canvasSize.height), ie && re && re.id !== U?.id && X.type === "selection" && D.mode === "default" && Qi({ ctx: Q, shape: re, settings: R, selectionWidth: ce, selectionColor: $, withAnchors: !1 }), U && X.type !== "brush" && Qi({ ctx: Q, shape: U, settings: R, selectionWidth: ce, selectionColor: $, withAnchors: D.mode !== "textedition" }), te &&
|
|
934
|
+
Q.clearRect(0, 0, R.canvasSize.width, R.canvasSize.height), ie && re && re.id !== U?.id && X.type === "selection" && D.mode === "default" && Qi({ ctx: Q, shape: re, settings: R, selectionWidth: ce, selectionColor: $, withAnchors: !1 }), U && X.type !== "brush" && Qi({ ctx: Q, shape: U, settings: R, selectionWidth: ce, selectionColor: $, withAnchors: D.mode !== "textedition" }), te && U1({ ctx: Q, selectionFrame: te, settings: R });
|
|
935
935
|
})(m, k, T, f, E, H, r, h, d, y));
|
|
936
|
-
}, [h, d, k, r, f, T, E, H, y]), p("div", { className: "react-paint-canvas-box", children: I("div", { className: "react-paint-canvas-container", "data-grow": e, children: [p("canvas", { className: a1, ref: M, "data-grow": e, width: t.width, height: t.height }), C && p("canvas", { className: s1, ref: A, width: t.width, height: t.height, "data-grow": e, style: { "--react-paint-canvas-cursor": f.type !== "selection" && f.type !== "move" || Z.mode === "resize" ? "crosshair" : f.type === "move" || Z.mode === "translate" ? "move" : Z.mode === "rotate" ? "grab" : "default" } }), C && k.mode === "textedition" && r?.type === "text" && p(
|
|
937
|
-
}), xi = "ArrowUp", Mi = "ArrowDown", ki = "ArrowLeft", Li = "ArrowRight",
|
|
936
|
+
}, [h, d, k, r, f, T, E, H, y]), p("div", { className: "react-paint-canvas-box", children: I("div", { className: "react-paint-canvas-container", "data-grow": e, children: [p("canvas", { className: a1, ref: M, "data-grow": e, width: t.width, height: t.height }), C && p("canvas", { className: s1, ref: A, width: t.width, height: t.height, "data-grow": e, style: { "--react-paint-canvas-cursor": f.type !== "selection" && f.type !== "move" || Z.mode === "resize" ? "crosshair" : f.type === "move" || Z.mode === "translate" ? "move" : Z.mode === "rotate" ? "grab" : "default" } }), C && k.mode === "textedition" && r?.type === "text" && p(q1, { scaleRatio: t.scaleRatio, disabled: i, shape: r, defaultValue: k.defaultValue, updateValue: v, saveShapes: g, settings: T })] }) });
|
|
937
|
+
}), xi = "ArrowUp", Mi = "ArrowDown", ki = "ArrowLeft", Li = "ArrowRight", en = "Delete", tn = "Backspace", nn = "Escape", Vi = "Shift", an = "z", sn = "Z", on = "y", rn = "Y", Pi = "copy", Hi = "paste", ln = ({ isInsideComponent: e, selectedShape: i, isEditingText: t, settings: n, setSelectedShape: s, removeShape: a, pasteShape: r, updateShape: o, backwardShape: l, forwardShape: h, setShiftPressed: d }) => {
|
|
938
938
|
const [c, u] = z(void 0);
|
|
939
939
|
return B(() => {
|
|
940
940
|
const g = (S) => {
|
|
941
941
|
i && (t || (S.preventDefault(), u({ ...i })));
|
|
942
942
|
}, f = (S) => {
|
|
943
943
|
c && (t || (S.preventDefault(), r(((L, b) => ({ ...Nt([20, 20], L, [0, 0], b), id: oe(`${L.type}_`) }))(c, n))));
|
|
944
|
-
}, x = (S) => {
|
|
945
|
-
S.key === Vi && d(!1);
|
|
946
944
|
}, w = (S) => {
|
|
945
|
+
S.key === Vi && d(!1);
|
|
946
|
+
}, x = (S) => {
|
|
947
947
|
if (S.metaKey || S.ctrlKey) {
|
|
948
|
-
if (S.key ===
|
|
949
|
-
if (S.key ===
|
|
948
|
+
if (S.key === sn || S.key === an) return S.preventDefault(), S.stopPropagation(), void l();
|
|
949
|
+
if (S.key === rn || S.key === on) return S.preventDefault(), S.stopPropagation(), void h();
|
|
950
950
|
}
|
|
951
951
|
if (S.key === Vi) return void d(!0);
|
|
952
952
|
if (!i) return;
|
|
953
|
-
if (S.key ===
|
|
953
|
+
if (S.key === nn) return void s(void 0);
|
|
954
954
|
if (t) return;
|
|
955
955
|
const L = { [ki]: [n.gridGap ? -n.gridGap : -1, 0], [Li]: [n.gridGap ? n.gridGap : 1, 0], [Mi]: [0, n.gridGap ? n.gridGap : 1], [xi]: [0, n.gridGap ? -n.gridGap : -1] };
|
|
956
956
|
switch (S.key) {
|
|
@@ -960,23 +960,23 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
960
960
|
case xi:
|
|
961
961
|
S.preventDefault(), S.stopPropagation(), o(Nt(L[S.key], i, [0, 0], n));
|
|
962
962
|
break;
|
|
963
|
-
case K1:
|
|
964
963
|
case en:
|
|
964
|
+
case tn:
|
|
965
965
|
S.preventDefault(), S.stopPropagation(), a(i);
|
|
966
966
|
}
|
|
967
967
|
};
|
|
968
|
-
if (e) return document.addEventListener("keydown",
|
|
969
|
-
document.removeEventListener("keydown",
|
|
968
|
+
if (e) return document.addEventListener("keydown", x), document.addEventListener("keyup", w), document.addEventListener(Pi, g), document.addEventListener(Hi, f), () => {
|
|
969
|
+
document.removeEventListener("keydown", x), document.removeEventListener("keyup", w), document.removeEventListener(Pi, g), document.removeEventListener(Hi, f);
|
|
970
970
|
};
|
|
971
971
|
}, [e, c, t, i, n, o, a, s, r, l, h, d]), {};
|
|
972
|
-
},
|
|
973
|
-
const { shapesRef: s, selectedShape: a, selectionFrame: r, hoveredShape: o, addShape: l, setSelectedShape: h, setSelectionFrame: d, refreshSelectedShapes: c, refreshHoveredShape: u, removeShape: g, updateShape: f, backwardShape:
|
|
972
|
+
}, Zn = ({ options: e, className: i, style: t, canvasProps: n }) => {
|
|
973
|
+
const { shapesRef: s, selectedShape: a, selectionFrame: r, hoveredShape: o, addShape: l, setSelectedShape: h, setSelectionFrame: d, refreshSelectedShapes: c, refreshHoveredShape: u, removeShape: g, updateShape: f, backwardShape: w, forwardShape: x, saveShapes: S, refs: L, width: b, height: k, settings: P, canvasSize: E, setCanvasSize: H, setCanvasOffset: T, selectShape: C, activeTool: V, setActiveTool: W, isInsideComponent: y, isEditMode: N, isDisabled: M, canvas: { withSkeleton: A, withFrameSelection: Z, canGrow: v, canShrink: m } } = n, { canvasBackgroundColor: Q, canvasSelectionColor: D, canvasSelectionWidth: R } = { ...w1, ...e }, X = q(null), [ce, $] = z(void 0), [U, re] = z({ mode: "default" }), [te, ie] = z(!1), fe = F((ne) => {
|
|
974
974
|
l(ne), C(ne);
|
|
975
975
|
}, [l, C]), Me = F((ne) => {
|
|
976
976
|
const j = ne / b;
|
|
977
977
|
H({ width: ne, height: k * j, scaleRatio: j });
|
|
978
978
|
}, [b, k, H]);
|
|
979
|
-
return
|
|
979
|
+
return ln({ isInsideComponent: y, isEditingText: U.mode === "textedition", settings: P, selectedShape: a, setSelectedShape: h, removeShape: g, pasteShape: fe, updateShape: f, backwardShape: w, forwardShape: x, setShiftPressed: ie }), (({ onResized: ne, element: j }) => {
|
|
980
980
|
B(() => {
|
|
981
981
|
const Se = j.current;
|
|
982
982
|
if (!Se) return;
|
|
@@ -988,8 +988,8 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
988
988
|
Ze.unobserve(Se);
|
|
989
989
|
};
|
|
990
990
|
}, [j, ne]);
|
|
991
|
-
})({ element: X, onResized: Me }), p("div", { ref: X, className: "react-paint-app-row" + (i ? ` ${i}` : ""), "data-grow": v, "data-shrink": m, style: { "--react-paint-app-row-width": E.width, "--react-paint-app-canvaswidth": `${b}px`, "--react-paint-app-row-aspectratio": `calc(${E.width} / ${E.height})`, "--react-paint-app-canvas-bg": Q, ...t }, children: p(
|
|
992
|
-
},
|
|
991
|
+
})({ element: X, onResized: Me }), p("div", { ref: X, className: "react-paint-app-row" + (i ? ` ${i}` : ""), "data-grow": v, "data-shrink": m, style: { "--react-paint-app-row-width": E.width, "--react-paint-app-canvaswidth": `${b}px`, "--react-paint-app-row-aspectratio": `calc(${E.width} / ${E.height})`, "--react-paint-app-canvas-bg": Q, ...t }, children: p(K1, { ref: L.canvas, canGrow: v, disabled: M, isInsideComponent: y, activeTool: V, setActiveTool: W, canvasOffsetStartPosition: ce, setCanvasOffsetStartPosition: $, shapes: s.current, addShape: l, updateSingleShape: f, selectedShape: a, selectionFrame: r, setSelectedShape: h, setSelectionFrame: d, hoveredShape: o, refreshHoveredShape: u, refreshSelectedShapes: c, settings: P, setCanvasOffset: T, saveShapes: S, canvasSize: E, selectionMode: U, setSelectionMode: re, selectionColor: D, selectionWidth: R, isEditMode: N, isShiftPressed: te, withFrameSelection: Z, withSkeleton: A }) });
|
|
992
|
+
}, dn = ({ isLoading: e = !1 }) => {
|
|
993
993
|
const [i, t] = z("hidden");
|
|
994
994
|
return B(() => {
|
|
995
995
|
if (!e) {
|
|
@@ -1000,8 +1000,8 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1000
1000
|
};
|
|
1001
1001
|
}
|
|
1002
1002
|
t("visible");
|
|
1003
|
-
}, [e]), i === "hidden" ? null : p("div", { className: "react-paint-editor-loading", "data-loading": i, style: { "--react-paint-editor-loading-zindex":
|
|
1004
|
-
},
|
|
1003
|
+
}, [e]), i === "hidden" ? null : p("div", { className: "react-paint-editor-loading", "data-loading": i, style: { "--react-paint-editor-loading-zindex": b1, "--react-paint-editor-loading-transition-duration": "300ms" }, children: I("div", { className: "react-paint-editor-loader", children: [p("div", {}), p("div", {}), p("div", {}), p("div", {})] }) });
|
|
1004
|
+
}, cn = "infos", hn = 4e3, pn = ({ type: e, text: i, duration: t }) => {
|
|
1005
1005
|
const [n, s] = z(!1);
|
|
1006
1006
|
return B(() => {
|
|
1007
1007
|
const a = setTimeout(() => {
|
|
@@ -1013,14 +1013,14 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1013
1013
|
clearTimeout(a), clearTimeout(r);
|
|
1014
1014
|
};
|
|
1015
1015
|
}, [t]), p("div", { className: "react-paint-editor-snackbar", "data-is-shown": +n, "data-type": e, style: { "--react-paint-editor-panel-transition-duration": "500ms" }, children: i });
|
|
1016
|
-
},
|
|
1016
|
+
}, un = ({ snackbarList: e }) => p("div", { className: "react-paint-editor-snackbar-container", style: { "--react-paint-editor-snackbar-zindex": C1 }, children: e.map((i) => p(pn, { ...i }, i.id)) }), G = Fi.forwardRef((e, i) => {
|
|
1017
1017
|
if (e.type === "file" || e.type === "color") {
|
|
1018
|
-
const { hidden: d = !1, disabled: c = !1, selected: u = !1, icon: g, children: f, className:
|
|
1019
|
-
return I("label", { className: `react-paint-editor-button ${
|
|
1018
|
+
const { hidden: d = !1, disabled: c = !1, selected: u = !1, icon: g, children: f, className: w = "", title: x, onClick: S, ...L } = e;
|
|
1019
|
+
return I("label", { className: `react-paint-editor-button ${w}`, title: x, onClick: S, "data-disabled": +c, "data-selected": +u, "data-hidden": +d, children: [p("input", { ref: i, disabled: c, ...L }), I("span", { className: "react-paint-editor-button-content", children: [f && p("span", { className: "react-paint-editor-button-children", children: f }), g && p("span", { className: "react-paint-editor-button-icon", dangerouslySetInnerHTML: { __html: g } })] })] });
|
|
1020
1020
|
}
|
|
1021
1021
|
const { hidden: t = !1, disabled: n = !1, selected: s = !1, icon: a, children: r, type: o = "button", className: l = "", ...h } = e;
|
|
1022
1022
|
return p("button", { className: `react-paint-editor-button ${l}`, ref: i, disabled: n, "data-disabled": +n, "data-selected": +s, "data-hidden": +t, type: o, ...h, children: I("span", { className: "react-paint-editor-button-content", children: [r && p("span", { className: "react-paint-editor-button-children", children: r }), a && p("span", { className: "react-paint-editor-button-icon", dangerouslySetInnerHTML: { __html: a } })] }) });
|
|
1023
|
-
}), Ke = ({ children: e, title: i = "", className: t = "", position: n = "bottom", fitContainer: s = !1, alignment: a = "center" }) => I("div", { className: `react-paint-editor-panel ${t}`, "data-fitcontainer": s, "data-position": n, "data-alignment": a, style: { "--react-paint-editor-panel-zindex": Ui }, children: [i && p("h3", { className: "react-paint-editor-panel-title", children: i }), e] }),
|
|
1023
|
+
}), Ke = ({ children: e, title: i = "", className: t = "", position: n = "bottom", fitContainer: s = !1, alignment: a = "center" }) => I("div", { className: `react-paint-editor-panel ${t}`, "data-fitcontainer": s, "data-position": n, "data-alignment": a, style: { "--react-paint-editor-panel-zindex": Ui }, children: [i && p("h3", { className: "react-paint-editor-panel-title", children: i }), e] }), gn = (e) => {
|
|
1024
1024
|
switch (e) {
|
|
1025
1025
|
case "brush":
|
|
1026
1026
|
return Ii;
|
|
@@ -1043,40 +1043,40 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1043
1043
|
case "triangle":
|
|
1044
1044
|
return "";
|
|
1045
1045
|
}
|
|
1046
|
-
},
|
|
1047
|
-
const d = q(null), { isOver: c } = (({ disabled: u = !1, ref: g, shape: f, layoutDragging:
|
|
1046
|
+
}, vn = ({ disabled: e = !1, shape: i, selected: t, layoutDragging: n, toggleShapeVisibility: s, toggleShapeLock: a, setLayoutDragging: r, handleRemove: o, handleSelect: l, onMoveShapes: h }) => {
|
|
1047
|
+
const d = q(null), { isOver: c } = (({ disabled: u = !1, ref: g, shape: f, layoutDragging: w, setLayoutDragging: x, handleSelect: S, onMoveShapes: L }) => {
|
|
1048
1048
|
const [b, k] = z(!1);
|
|
1049
1049
|
return B(() => {
|
|
1050
|
-
|
|
1051
|
-
}, [
|
|
1050
|
+
w || k(!1);
|
|
1051
|
+
}, [w]), B(() => {
|
|
1052
1052
|
const P = g.current;
|
|
1053
1053
|
if (!P) return;
|
|
1054
1054
|
const E = () => {
|
|
1055
|
-
|
|
1055
|
+
x(void 0);
|
|
1056
1056
|
}, H = (y) => (y.preventDefault && y.preventDefault(), !1), T = (y) => {
|
|
1057
|
-
S(f), y.dataTransfer && (y.dataTransfer.effectAllowed = "move", y.dataTransfer.setData("draggableShapeId", f.id),
|
|
1057
|
+
S(f), y.dataTransfer && (y.dataTransfer.effectAllowed = "move", y.dataTransfer.setData("draggableShapeId", f.id), x(f.id));
|
|
1058
1058
|
}, C = () => {
|
|
1059
|
-
|
|
1059
|
+
w !== f.id && k(!0);
|
|
1060
1060
|
}, V = () => {
|
|
1061
1061
|
k(!1);
|
|
1062
1062
|
}, W = (y) => (y.stopPropagation(), y.dataTransfer && L(y.dataTransfer.getData("draggableShapeId"), f.id), !1);
|
|
1063
1063
|
return u || (P.addEventListener("dragstart", T), P.addEventListener("dragend", E), P.addEventListener("dragover", H), P.addEventListener("dragenter", C), P.addEventListener("dragleave", V), P.addEventListener("drop", W)), () => {
|
|
1064
1064
|
u || (P.removeEventListener("dragstart", T), P.removeEventListener("dragend", E), P.removeEventListener("dragover", H), P.removeEventListener("dragenter", C), P.removeEventListener("dragleave", V), P.removeEventListener("drop", W));
|
|
1065
1065
|
};
|
|
1066
|
-
}, [u, g, f,
|
|
1066
|
+
}, [u, g, f, x, S, L, w]), { isOver: b };
|
|
1067
1067
|
})({ disabled: e, ref: d, shape: i, layoutDragging: n, setLayoutDragging: r, handleSelect: l, onMoveShapes: h });
|
|
1068
1068
|
return I("div", { className: "react-paint-editor-layout", "data-disabled": +e, draggable: !e, "data-is-dragging": +(n === i.id), "data-is-over": +c, onClick: (u) => {
|
|
1069
1069
|
e || (u.preventDefault(), u.stopPropagation(), l(i));
|
|
1070
|
-
}, "data-selected": +t, ref: d, children: [p("span", { dangerouslySetInnerHTML: { __html:
|
|
1070
|
+
}, "data-selected": +t, ref: d, children: [p("span", { dangerouslySetInnerHTML: { __html: gn(i.type) } }), p("span", { children: i.id }), p("div", { className: "react-paint-editor-layouts-separator" }), p(G, { className: "react-paint-editor-layouts-visible-button", title: i.visible ? "Hide" : "Show", "data-visible": i.visible !== !1, disabled: e, selected: t, onClick: (u) => {
|
|
1071
1071
|
e || (u.preventDefault(), u.stopPropagation(), s(i));
|
|
1072
1072
|
}, icon: i.visible === !1 ? '<svg><path d="M13.521 11.021 12.25 9.75Q12.333 8.75 11.604 7.979Q10.875 7.208 9.812 7.312L8.542 6.042Q8.896 5.896 9.26 5.833Q9.625 5.771 10 5.771Q11.583 5.771 12.688 6.875Q13.792 7.979 13.792 9.562Q13.792 9.979 13.719 10.354Q13.646 10.729 13.521 11.021ZM16.167 13.646 14.917 12.417Q15.667 11.833 16.25 11.146Q16.833 10.458 17.25 9.562Q16.229 7.479 14.292 6.281Q12.354 5.083 10 5.083Q9.396 5.083 8.885 5.156Q8.375 5.229 7.875 5.375L6.5 4Q7.354 3.646 8.208 3.49Q9.062 3.333 10 3.333Q13.146 3.333 15.615 5.052Q18.083 6.771 19.167 9.562Q18.688 10.792 17.917 11.823Q17.146 12.854 16.167 13.646ZM16.396 18.854 12.938 15.396Q12.208 15.625 11.479 15.729Q10.75 15.833 10 15.833Q6.833 15.833 4.375 14.094Q1.917 12.354 0.833 9.562Q1.25 8.479 1.917 7.552Q2.583 6.625 3.417 5.875L1.125 3.562L2.375 2.354L17.625 17.625ZM4.604 7.062Q4.021 7.604 3.542 8.219Q3.062 8.833 2.729 9.562Q3.75 11.646 5.688 12.865Q7.625 14.083 10 14.083Q10.354 14.083 10.74 14.052Q11.125 14.021 11.479 13.938L10.812 13.271Q10.625 13.312 10.417 13.333Q10.208 13.354 10 13.354Q8.417 13.354 7.312 12.25Q6.208 11.146 6.208 9.562Q6.208 9.354 6.24 9.167Q6.271 8.979 6.312 8.771ZM11.375 8.875Q11.375 8.875 11.375 8.875Q11.375 8.875 11.375 8.875Q11.375 8.875 11.375 8.875Q11.375 8.875 11.375 8.875Q11.375 8.875 11.375 8.875Q11.375 8.875 11.375 8.875ZM8.042 10.5Q8.042 10.5 8.042 10.5Q8.042 10.5 8.042 10.5Q8.042 10.5 8.042 10.5Q8.042 10.5 8.042 10.5Q8.042 10.5 8.042 10.5Q8.042 10.5 8.042 10.5Z"/></svg>' : '<svg><path d="M10 13.354Q11.583 13.354 12.688 12.25Q13.792 11.146 13.792 9.562Q13.792 7.979 12.688 6.875Q11.583 5.771 10 5.771Q8.417 5.771 7.312 6.875Q6.208 7.979 6.208 9.562Q6.208 11.146 7.312 12.25Q8.417 13.354 10 13.354ZM10 11.812Q9.062 11.812 8.406 11.156Q7.75 10.5 7.75 9.562Q7.75 8.625 8.406 7.969Q9.062 7.312 10 7.312Q10.938 7.312 11.594 7.969Q12.25 8.625 12.25 9.562Q12.25 10.5 11.594 11.156Q10.938 11.812 10 11.812ZM10 15.833Q6.938 15.833 4.448 14.125Q1.958 12.417 0.833 9.562Q1.958 6.708 4.458 5.021Q6.958 3.333 10 3.333Q13.042 3.333 15.542 5.021Q18.042 6.708 19.167 9.562Q18.042 12.417 15.552 14.125Q13.062 15.833 10 15.833ZM10 9.562Q10 9.562 10 9.562Q10 9.562 10 9.562Q10 9.562 10 9.562Q10 9.562 10 9.562Q10 9.562 10 9.562Q10 9.562 10 9.562Q10 9.562 10 9.562Q10 9.562 10 9.562ZM10 14.083Q12.333 14.083 14.281 12.865Q16.229 11.646 17.25 9.562Q16.229 7.479 14.281 6.281Q12.333 5.083 10 5.083Q7.667 5.083 5.708 6.281Q3.75 7.479 2.729 9.562Q3.75 11.646 5.708 12.865Q7.667 14.083 10 14.083Z"/></svg>' }), p(G, { className: "react-paint-editor-layouts-locked-button", title: i.locked ? "Locked" : "Unlocked", "data-locked": !!i.locked, disabled: e, selected: t, onClick: (u) => {
|
|
1073
1073
|
e || (u.preventDefault(), u.stopPropagation(), a(i));
|
|
1074
1074
|
}, icon: i.locked ? '<svg><path d="M10 0.833Q11.771 0.833 12.99 2.052Q14.208 3.271 14.208 5.042V6.667H14.917Q15.646 6.667 16.156 7.177Q16.667 7.688 16.667 8.417V16.562Q16.667 17.292 16.156 17.812Q15.646 18.333 14.917 18.333H5.083Q4.354 18.333 3.844 17.812Q3.333 17.292 3.333 16.562V8.417Q3.333 7.688 3.844 7.177Q4.354 6.667 5.083 6.667H5.792V5.042Q5.792 3.271 7.01 2.052Q8.229 0.833 10 0.833ZM10 2.583Q8.979 2.583 8.26 3.302Q7.542 4.021 7.542 5.042V6.667H12.458V5.042Q12.458 4.021 11.74 3.302Q11.021 2.583 10 2.583ZM5.083 16.583H14.917Q14.917 16.583 14.917 16.583Q14.917 16.583 14.917 16.583V8.417Q14.917 8.417 14.917 8.417Q14.917 8.417 14.917 8.417H5.083Q5.083 8.417 5.083 8.417Q5.083 8.417 5.083 8.417V16.583Q5.083 16.583 5.083 16.583Q5.083 16.583 5.083 16.583ZM10 10.812Q9.292 10.812 8.802 11.302Q8.312 11.792 8.312 12.5Q8.312 13.208 8.802 13.698Q9.292 14.188 10 14.188Q10.708 14.188 11.198 13.698Q11.688 13.208 11.688 12.5Q11.688 11.792 11.198 11.302Q10.708 10.812 10 10.812ZM5.083 8.417Q5.083 8.417 5.083 8.417Q5.083 8.417 5.083 8.417V16.583Q5.083 16.583 5.083 16.583Q5.083 16.583 5.083 16.583Q5.083 16.583 5.083 16.583Q5.083 16.583 5.083 16.583V8.417Q5.083 8.417 5.083 8.417Q5.083 8.417 5.083 8.417Z"/></svg>' : '<svg><path d="M5.792 5.042Q5.792 3.271 7.01 2.052Q8.229 0.833 10 0.833Q11.771 0.833 12.99 2.052Q14.208 3.271 14.208 5.042V6.667H14.917Q15.646 6.667 16.156 7.177Q16.667 7.688 16.667 8.417V16.562Q16.667 17.292 16.156 17.812Q15.646 18.333 14.917 18.333H5.083Q4.354 18.333 3.844 17.812Q3.333 17.292 3.333 16.562V8.417Q3.333 7.688 3.844 7.177Q4.354 6.667 5.083 6.667H12.458V5.042Q12.458 4.021 11.74 3.302Q11.021 2.583 10 2.583Q8.979 2.583 8.26 3.302Q7.542 4.021 7.542 5.042ZM5.083 16.583H14.917Q14.917 16.583 14.917 16.583Q14.917 16.583 14.917 16.583V8.417Q14.917 8.417 14.917 8.417Q14.917 8.417 14.917 8.417H5.083Q5.083 8.417 5.083 8.417Q5.083 8.417 5.083 8.417V16.583Q5.083 16.583 5.083 16.583Q5.083 16.583 5.083 16.583ZM10 10.812Q9.292 10.812 8.802 11.302Q8.312 11.792 8.312 12.5Q8.312 13.208 8.802 13.698Q9.292 14.188 10 14.188Q10.708 14.188 11.198 13.698Q11.688 13.208 11.688 12.5Q11.688 11.792 11.198 11.302Q10.708 10.812 10 10.812ZM5.083 8.417Q5.083 8.417 5.083 8.417Q5.083 8.417 5.083 8.417V16.583Q5.083 16.583 5.083 16.583Q5.083 16.583 5.083 16.583Q5.083 16.583 5.083 16.583Q5.083 16.583 5.083 16.583V8.417Q5.083 8.417 5.083 8.417Q5.083 8.417 5.083 8.417Z"/></svg>' }), p(G, { className: "react-paint-editor-layouts-remove-button", title: "Remove", disabled: e, onClick: (u) => {
|
|
1075
1075
|
e || (u.preventDefault(), u.stopPropagation(), o(i));
|
|
1076
1076
|
}, icon: Wi })] });
|
|
1077
|
-
},
|
|
1077
|
+
}, fn = ({ gridFormat: e, setGridFormat: i, disabled: t = !1, shapes: n, removeShape: s, toggleShapeVisibility: a, toggleShapeLock: r, selectedShape: o, moveShapes: l, selectShape: h, isLayoutPanelShown: d }) => {
|
|
1078
1078
|
const [c, u] = z(void 0);
|
|
1079
|
-
return d ? p(Ke, { alignment: "right", className: "react-paint-editor-layouts-panel", children: p("div", { className: "react-paint-editor-layouts-panel-content", children: I("div", { className: "react-paint-editor-layouts-scrolling-content", children: [I("div", { className: "react-paint-editor-layouts-row", children: [p("span", { className: "react-paint-editor-layouts-subtitle", children: "Grid" }), p(G, { icon: '<svg><path d="M18.333 15.854 16.583 14.104V13.354H15.833L14.083 11.604H16.583V8.375H13.375V10.896L11.625 9.146V8.375H10.875L9.125 6.625H11.625V3.417H8.396V5.896L6.646 4.146V3.417H5.896L4.146 1.667H16.583Q17.312 1.667 17.823 2.177Q18.333 2.688 18.333 3.417ZM13.375 6.625H16.583V3.417Q16.583 3.417 16.583 3.417Q16.583 3.417 16.583 3.417H13.375ZM16.771 19.229 15.854 18.333H3.417Q2.688 18.333 2.177 17.823Q1.667 17.312 1.667 16.583V4.125L0.812 3.271L2.042 2.021L18 18ZM13.375 16.583H14.104L13.375 15.833ZM8.396 11.604H9.125L8.396 10.854ZM8.396 16.583H11.625V14.083L10.875 13.354H8.396ZM3.417 6.625H4.167L3.417 5.875ZM3.417 11.604H6.646V9.104L5.917 8.375H3.417ZM6.646 16.583V13.354H3.417V16.583Q3.417 16.583 3.417 16.583Q3.417 16.583 3.417 16.583Z"/></svg>', className: "react-paint-editor-layouts-grid-button", selected: e === "none", disabled: t, onClick: () => i("none") }), ["small", "medium", "large"].map((g) => p(G, { className: "react-paint-editor-layouts-grid-button", selected: e === g, disabled: t, onClick: () => i(g), children: g.charAt(0).toUpperCase() }, g))] }), p("hr", {}), p("div", { className: "react-paint-editor-layouts", children: n.length === 0 ? p("div", { className: "react-paint-editor-layouts-placeholder", children: "No layer yet" }) : n.map((g) => p(
|
|
1079
|
+
return d ? p(Ke, { alignment: "right", className: "react-paint-editor-layouts-panel", children: p("div", { className: "react-paint-editor-layouts-panel-content", children: I("div", { className: "react-paint-editor-layouts-scrolling-content", children: [I("div", { className: "react-paint-editor-layouts-row", children: [p("span", { className: "react-paint-editor-layouts-subtitle", children: "Grid" }), p(G, { icon: '<svg><path d="M18.333 15.854 16.583 14.104V13.354H15.833L14.083 11.604H16.583V8.375H13.375V10.896L11.625 9.146V8.375H10.875L9.125 6.625H11.625V3.417H8.396V5.896L6.646 4.146V3.417H5.896L4.146 1.667H16.583Q17.312 1.667 17.823 2.177Q18.333 2.688 18.333 3.417ZM13.375 6.625H16.583V3.417Q16.583 3.417 16.583 3.417Q16.583 3.417 16.583 3.417H13.375ZM16.771 19.229 15.854 18.333H3.417Q2.688 18.333 2.177 17.823Q1.667 17.312 1.667 16.583V4.125L0.812 3.271L2.042 2.021L18 18ZM13.375 16.583H14.104L13.375 15.833ZM8.396 11.604H9.125L8.396 10.854ZM8.396 16.583H11.625V14.083L10.875 13.354H8.396ZM3.417 6.625H4.167L3.417 5.875ZM3.417 11.604H6.646V9.104L5.917 8.375H3.417ZM6.646 16.583V13.354H3.417V16.583Q3.417 16.583 3.417 16.583Q3.417 16.583 3.417 16.583Z"/></svg>', className: "react-paint-editor-layouts-grid-button", selected: e === "none", disabled: t, onClick: () => i("none") }), ["small", "medium", "large"].map((g) => p(G, { className: "react-paint-editor-layouts-grid-button", selected: e === g, disabled: t, onClick: () => i(g), children: g.charAt(0).toUpperCase() }, g))] }), p("hr", {}), p("div", { className: "react-paint-editor-layouts", children: n.length === 0 ? p("div", { className: "react-paint-editor-layouts-placeholder", children: "No layer yet" }) : n.map((g) => p(vn, { shape: g, disabled: t, layoutDragging: c, setLayoutDragging: u, selected: o?.id === g.id, handleSelect: h, handleRemove: s, onMoveShapes: l, toggleShapeVisibility: a, toggleShapeLock: r }, g.id)) })] }) }) }) : null;
|
|
1080
1080
|
}, Yt = ({ children: e, onClose: i, position: t = "center", className: n = "" }) => I("div", { className: "react-paint-editor-modal", "data-position": t, style: { "--react-paint-editor-modal-zindex": Ui }, children: [p("div", { className: "react-paint-editor-modal-mask", onClick: i }), p("div", { className: `react-paint-editor-modal-panel ${n}`, children: e })] }), ct = ({ selectedSettings: e, setSelectedSettings: i, title: t = "Choisissez une couleur", mode: n = "fill", disabled: s = !1, values: a, field: r, value: o = "", valueChanged: l }) => {
|
|
1081
1081
|
const [h] = z(oe("settings_")), d = e === h;
|
|
1082
1082
|
return a.length ? I(pe, { children: [p(G, { selected: d, title: t, disabled: s, onClick: () => {
|
|
@@ -1087,7 +1087,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1087
1087
|
const u = +c.target.value;
|
|
1088
1088
|
l(r, Number.isNaN(u) ? c.target.value : u);
|
|
1089
1089
|
}, children: p("div", { className: "react-paint-editor-colorfield-customcolor", style: { "--react-paint-editor-colorfield-color-value": a.includes(o) ? "var(--react-paint-editor-app-font-color)" : o }, children: p("span", { dangerouslySetInnerHTML: { __html: '<svg><path d="M9.958 18.333Q8.25 18.333 6.74 17.677Q5.229 17.021 4.104 15.885Q2.979 14.75 2.323 13.229Q1.667 11.708 1.667 10Q1.667 8.271 2.333 6.75Q3 5.229 4.156 4.104Q5.312 2.979 6.854 2.323Q8.396 1.667 10.125 1.667Q11.771 1.667 13.26 2.25Q14.75 2.833 15.875 3.854Q17 4.875 17.667 6.26Q18.333 7.646 18.333 9.25Q18.333 11.688 16.792 12.948Q15.25 14.208 13.188 14.208H11.75Q11.625 14.208 11.562 14.281Q11.5 14.354 11.5 14.458Q11.5 14.688 11.812 15.219Q12.125 15.75 12.125 16.458Q12.125 17.458 11.51 17.896Q10.896 18.333 9.958 18.333ZM5.458 10.875Q6 10.875 6.375 10.5Q6.75 10.125 6.75 9.583Q6.75 9.042 6.375 8.667Q6 8.292 5.458 8.292Q4.917 8.292 4.542 8.667Q4.167 9.042 4.167 9.583Q4.167 10.125 4.542 10.5Q4.917 10.875 5.458 10.875ZM7.917 7.583Q8.458 7.583 8.833 7.208Q9.208 6.833 9.208 6.292Q9.208 5.75 8.833 5.375Q8.458 5 7.917 5Q7.375 5 7 5.375Q6.625 5.75 6.625 6.292Q6.625 6.833 7 7.208Q7.375 7.583 7.917 7.583ZM12.021 7.583Q12.562 7.583 12.938 7.208Q13.312 6.833 13.312 6.292Q13.312 5.75 12.938 5.375Q12.562 5 12.021 5Q11.479 5 11.104 5.375Q10.729 5.75 10.729 6.292Q10.729 6.833 11.104 7.208Q11.479 7.583 12.021 7.583ZM14.479 10.875Q15.021 10.875 15.396 10.5Q15.771 10.125 15.771 9.583Q15.771 9.042 15.396 8.667Q15.021 8.292 14.479 8.292Q13.938 8.292 13.562 8.667Q13.188 9.042 13.188 9.583Q13.188 10.125 13.562 10.5Q13.938 10.875 14.479 10.875Z"/></svg>' } }) }) })] }) })] }) : null;
|
|
1090
|
-
},
|
|
1090
|
+
}, mn = ({ disabled: e = !1, selectedShape: i, removeShape: t }) => p(G, { title: "Delete", disabled: e, "data-disabled": +e, onClick: () => {
|
|
1091
1091
|
t(i);
|
|
1092
1092
|
}, icon: Wi }), jt = ({ CustomOption: e, selectedSettings: i, setSelectedSettings: t, title: n = "Choisissez l'option", disabled: s = !1, field: a, icon: r, values: o, defaultValue: l, valueChanged: h }) => {
|
|
1093
1093
|
const [d] = z(oe("settings_")), c = i === d;
|
|
@@ -1096,18 +1096,18 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1096
1096
|
} }), c && p(Ke, { title: n, alignment: "left", fitContainer: !0, children: p("div", { className: "react-paint-editor-selectfield-wrapper", children: o.map((u) => p(G, { title: `${u}`, onClick: () => ((g) => {
|
|
1097
1097
|
h(a, g);
|
|
1098
1098
|
})(u), selected: l === u, style: { "--react-paint-editor-button-padding": "16px" }, children: p(e, { children: u }) }, u)) }) })] }) : null;
|
|
1099
|
-
},
|
|
1099
|
+
}, yn = ({ children: e }) => p("span", { className: "react-paint-editor-fontfamily-option", style: { "--react-paint-editor-fontfamily-family": e }, children: e }), Ti = ({ selectedSettings: e, setSelectedSettings: i, disabled: t = !1, values: n, defaultValue: s, valueChanged: a }) => n.length ? p(jt, { selectedSettings: e, setSelectedSettings: i, CustomOption: yn, title: "Police", icon: '<svg><path d="M5.312 14.979H7.125L8.042 12.479H11.979L12.896 14.979H14.708L10.917 5H9.083ZM8.542 10.958 9.958 6.958H10.042L11.458 10.958ZM3.417 18.333Q2.688 18.333 2.177 17.823Q1.667 17.312 1.667 16.583V3.417Q1.667 2.688 2.177 2.177Q2.688 1.667 3.417 1.667H16.583Q17.312 1.667 17.823 2.177Q18.333 2.688 18.333 3.417V16.583Q18.333 17.312 17.823 17.823Q17.312 18.333 16.583 18.333ZM3.417 16.583H16.583Q16.583 16.583 16.583 16.583Q16.583 16.583 16.583 16.583V3.417Q16.583 3.417 16.583 3.417Q16.583 3.417 16.583 3.417H3.417Q3.417 3.417 3.417 3.417Q3.417 3.417 3.417 3.417V16.583Q3.417 16.583 3.417 16.583Q3.417 16.583 3.417 16.583ZM3.417 3.417Q3.417 3.417 3.417 3.417Q3.417 3.417 3.417 3.417V16.583Q3.417 16.583 3.417 16.583Q3.417 16.583 3.417 16.583Q3.417 16.583 3.417 16.583Q3.417 16.583 3.417 16.583V3.417Q3.417 3.417 3.417 3.417Q3.417 3.417 3.417 3.417Z"/></svg>', disabled: t, field: "fontFamily", values: n, defaultValue: s, valueChanged: a }) : null, Qn = ({ disabled: e, toggleLayoutPanel: i }) => p(G, { title: "Toggle layers panel", disabled: e, onClick: i, icon: '<svg><path d="M10 17.646 2.438 11.75 3.875 10.646 10 15.396 16.125 10.646 17.562 11.75ZM10 13.188 2.5 7.354 10 1.521 17.5 7.354Z"/></svg>', className: "react-paint-editor-layout-button" }), Sn = ({ children: e }) => I("span", { className: "react-paint-editor-linearrow-option", "data-type": e, children: [p("span", { className: "react-paint-editor-linearrow-left" }), p("span", { className: "react-paint-editor-linearrow-right" })] }), Ai = ({ selectedSettings: e, setSelectedSettings: i, disabled: t = !1, values: n, defaultValue: s, valueChanged: a }) => n.length ? p(jt, { selectedSettings: e, setSelectedSettings: i, CustomOption: Sn, title: "Flèches", icon: '<svg><path d="M6 17 2 13 6 9 7.062 10.062 4.875 12.25H17V13.75H4.875L7.062 15.938ZM14 11 12.938 9.938 15.125 7.75H3V6.25H15.125L12.938 4.062L14 3L18 7Z"/></svg>', disabled: t, field: "lineArrow", values: n, defaultValue: s, valueChanged: a }) : null, bn = ({ children: e }) => I("span", { className: "react-paint-editor-linetype-option", "data-type": e, children: [p("span", {}), p("span", {}), p("span", {}), p("span", {}), p("span", {}), p("span", {}), p("span", {})] }), Zi = ({ selectedSettings: e, setSelectedSettings: i, disabled: t = !1, values: n, defaultValue: s, valueChanged: a }) => n.length ? p(jt, { selectedSettings: e, setSelectedSettings: i, CustomOption: bn, icon: '<svg><path d="M3 16V14.5H4.5V16ZM6.125 16V14.5H7.625V16ZM9.25 16V14.5H10.75V16ZM12.375 16V14.5H13.875V16ZM15.5 16V14.5H17V16ZM3 13V11.5H6.5V13ZM8.25 13V11.5H11.75V13ZM13.5 13V11.5H17V13ZM3 10V8.5H9.25V10ZM10.75 10V8.5H17V10ZM3 7V4H17V7Z"/></svg>', title: "Type de traits", disabled: t, field: "lineDash", values: n, defaultValue: s, valueChanged: a }) : null, at = ({ selectedSettings: e, setSelectedSettings: i, title: t = "Choisissez l'intervalle", icon: n, disabled: s = !1, field: a, value: r = 1, min: o = 1, max: l = 20, step: h = 1, unity: d = "", valueChanged: c }) => {
|
|
1100
1100
|
const u = Math.round(r), [g] = z(oe("settings_")), f = q(null);
|
|
1101
1101
|
B(() => () => {
|
|
1102
1102
|
f.current && clearTimeout(f.current);
|
|
1103
1103
|
}, []);
|
|
1104
|
-
const
|
|
1105
|
-
return o === l ? null : I(pe, { children: [p(G, { selected:
|
|
1106
|
-
i((
|
|
1107
|
-
} }),
|
|
1108
|
-
const S = +
|
|
1109
|
-
c(a, Number.isNaN(S) ?
|
|
1110
|
-
c(a, Number.isNaN(S) ?
|
|
1104
|
+
const w = e === g;
|
|
1105
|
+
return o === l ? null : I(pe, { children: [p(G, { selected: w, title: t, disabled: s, icon: n, onClick: () => {
|
|
1106
|
+
i((x) => x === g ? void 0 : g);
|
|
1107
|
+
} }), w && p(Ke, { title: t, alignment: "left", fitContainer: !0, children: p("div", { children: I("label", { className: "react-paint-editor-rangefield", children: [p("input", { type: "range", min: o, max: l, step: h, value: r, onChange: (x) => {
|
|
1108
|
+
const S = +x.target.value;
|
|
1109
|
+
c(a, Number.isNaN(S) ? x.target.value : S, !1), f.current && clearTimeout(f.current), f.current = setTimeout(() => {
|
|
1110
|
+
c(a, Number.isNaN(S) ? x.target.value : S, !0);
|
|
1111
1111
|
}, 1e3);
|
|
1112
1112
|
} }), I("span", { children: [u, d] })] }) }) })] });
|
|
1113
1113
|
}, Ei = ({ selectedSettings: e, setSelectedSettings: i, disabled: t = !1, min: n, max: s, step: a, value: r, valueChanged: o }) => n === s ? null : p(at, { selectedSettings: e, setSelectedSettings: i, icon: Wt, title: "Nombre de points", disabled: t, field: "pointsCount", min: n, max: s, step: a, unity: "", value: r, valueChanged: o }), ht = ({ setSelectedSettings: e, disabled: i = !1, field: t, icon: n, values: s, value: a = !1, valueChanged: r }) => {
|
|
@@ -1115,9 +1115,9 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1115
1115
|
return s.length !== 2 ? null : p(G, { onClick: () => {
|
|
1116
1116
|
e((l) => l === o ? void 0 : o), r(t, !a);
|
|
1117
1117
|
}, selected: a, disabled: i, icon: n });
|
|
1118
|
-
}, At = ({ activeTool: e, selectedShape: i, selectedShapeTool: t, disabled: n, selectedSettings: s, setSelectedSettings: a, handleShapeStyleChange: r, handlePolygonLinesCount: o, handleShapeFontFamilyChange: l }) => i ? p(pe, { children: t && I(pe, { children: ["strokeColor" in t.settings && !t.settings.strokeColor.hidden && p(ct, { selectedSettings: s, setSelectedSettings: a, title: "Couleur du trait", mode: "stroke", disabled: n, field: "strokeColor", value: i.style?.strokeColor, valueChanged: r, values: t.settings.strokeColor.values }), "fillColor" in t.settings && !t.settings.fillColor.hidden && p(ct, { selectedSettings: s, setSelectedSettings: a, title: "Couleur de fond", disabled: n, field: "fillColor", value: i.style?.fillColor, valueChanged: r, values: t.settings.fillColor.values }), "lineWidth" in t.settings && !t.settings.lineWidth.hidden && p(at, { selectedSettings: s, setSelectedSettings: a, title: "Epaisseur du trait", icon: ei, disabled: n, field: "lineWidth", value: i.style?.lineWidth, valueChanged: r, unity: "px", min: t.settings.lineWidth.min, max: t.settings.lineWidth.max, step: t.settings.lineWidth.step }), "lineDash" in t.settings && !t.settings.lineDash.hidden && p(Zi, { selectedSettings: s, setSelectedSettings: a, disabled: n, defaultValue: i.style?.lineDash, valueChanged: r, values: t.settings.lineDash.values }), "lineArrow" in t.settings && !t.settings.lineArrow.hidden && p(Ai, { selectedSettings: s, setSelectedSettings: a, disabled: n, defaultValue: i.style?.lineArrow, valueChanged: r, values: t.settings.lineArrow.values }), "pointsCount" in t.settings && !t.settings.pointsCount.hidden && p(Ei, { selectedSettings: s, setSelectedSettings: a, disabled: n, valueChanged: o, min: t.settings.pointsCount.min, max: t.settings.pointsCount.max, step: t.settings.pointsCount.step, value: i.style?.pointsCount }), "fontFamily" in t.settings && !t.settings.fontFamily.hidden && p(Ti, { selectedSettings: s, setSelectedSettings: a, disabled: n, valueChanged: l, values: t.settings.fontFamily.values, defaultValue: i.style?.fontFamily }), "fontBold" in t.settings && !t.settings.fontBold.hidden && p(ht, { setSelectedSettings: a, disabled: n, field: "fontBold", icon: Jt, valueChanged: l, values: t.settings.fontBold.values, value: i.style?.fontBold }), "fontItalic" in t.settings && !t.settings.fontItalic.hidden && p(ht, { setSelectedSettings: a, disabled: n, field: "fontItalic", icon: Kt, valueChanged: l, values: t.settings.fontItalic.values, value: i.style?.fontItalic }), "opacity" in t.settings && !t.settings.opacity.hidden && p(at, { selectedSettings: s, setSelectedSettings: a, title: "Opacité", icon: qt, min: t.settings.opacity.min, max: t.settings.opacity.max, step: t.settings.opacity.step, unity: "%", disabled: n, field: "opacity", value: i.style?.opacity ?? 100, valueChanged: r })] }) }) : "settings" in e ? I(pe, { children: ["strokeColor" in e.settings && !e.settings.strokeColor.hidden && p(ct, { selectedSettings: s, setSelectedSettings: a, title: "Couleur du trait", mode: "stroke", disabled: n, field: "strokeColor", value: e.settings.strokeColor.default, valueChanged: r, values: e.settings.strokeColor.values }), "fillColor" in e.settings && !e.settings.fillColor.hidden && p(ct, { selectedSettings: s, setSelectedSettings: a, title: "Couleur de fond", disabled: n, field: "fillColor", value: e.settings.fillColor.default, valueChanged: r, values: e.settings.fillColor.values }), "lineWidth" in e.settings && !e.settings.lineWidth.hidden && p(at, { selectedSettings: s, setSelectedSettings: a, title: "Epaisseur du trait", disabled: n, field: "lineWidth", icon: ei, value: e.settings.lineWidth.default, valueChanged: r, unity: "px", min: e.settings.lineWidth.min, max: e.settings.lineWidth.max, step: e.settings.lineWidth.step }), "lineDash" in e.settings && !e.settings.lineDash.hidden && p(Zi, { selectedSettings: s, setSelectedSettings: a, disabled: n, defaultValue: e.settings.lineDash.default, valueChanged: r, values: e.settings.lineDash.values }), "lineArrow" in e.settings && !e.settings.lineArrow.hidden && p(Ai, { selectedSettings: s, setSelectedSettings: a, disabled: n, defaultValue: e.settings.lineArrow.default, valueChanged: r, values: e.settings.lineArrow.values }), "pointsCount" in e.settings && !e.settings.pointsCount.hidden && p(Ei, { selectedSettings: s, setSelectedSettings: a, disabled: n, valueChanged: o, min: e.settings.pointsCount.min, max: e.settings.pointsCount.max, step: e.settings.pointsCount.step, value: e.settings.pointsCount.default }), "fontFamily" in e.settings && !e.settings.fontFamily.hidden && p(Ti, { selectedSettings: s, setSelectedSettings: a, disabled: n, valueChanged: l, values: e.settings.fontFamily.values, defaultValue: e.settings.fontFamily.default }), "fontBold" in e.settings && !e.settings.fontBold.hidden && p(ht, { setSelectedSettings: a, disabled: n, field: "fontBold", icon: Jt, valueChanged: l, values: e.settings.fontBold.values, value: e.settings.fontBold.default }), "fontItalic" in e.settings && !e.settings.fontItalic.hidden && p(ht, { setSelectedSettings: a, disabled: n, field: "fontItalic", icon: Kt, valueChanged: l, values: e.settings.fontItalic.values, value: e.settings.fontItalic.default }), "opacity" in e.settings && !e.settings.opacity.hidden && p(at, { selectedSettings: s, setSelectedSettings: a, title: "Opacité", icon: qt, min: e.settings.opacity.min, max: e.settings.opacity.max, step: e.settings.opacity.step, unity: "%", disabled: n, field: "opacity", value: e.settings.opacity.default, valueChanged: r })] }) : null,
|
|
1119
|
-
const [u, g] = z(void 0), [f,
|
|
1120
|
-
|
|
1118
|
+
}, At = ({ activeTool: e, selectedShape: i, selectedShapeTool: t, disabled: n, selectedSettings: s, setSelectedSettings: a, handleShapeStyleChange: r, handlePolygonLinesCount: o, handleShapeFontFamilyChange: l }) => i ? p(pe, { children: t && I(pe, { children: ["strokeColor" in t.settings && !t.settings.strokeColor.hidden && p(ct, { selectedSettings: s, setSelectedSettings: a, title: "Couleur du trait", mode: "stroke", disabled: n, field: "strokeColor", value: i.style?.strokeColor, valueChanged: r, values: t.settings.strokeColor.values }), "fillColor" in t.settings && !t.settings.fillColor.hidden && p(ct, { selectedSettings: s, setSelectedSettings: a, title: "Couleur de fond", disabled: n, field: "fillColor", value: i.style?.fillColor, valueChanged: r, values: t.settings.fillColor.values }), "lineWidth" in t.settings && !t.settings.lineWidth.hidden && p(at, { selectedSettings: s, setSelectedSettings: a, title: "Epaisseur du trait", icon: ei, disabled: n, field: "lineWidth", value: i.style?.lineWidth, valueChanged: r, unity: "px", min: t.settings.lineWidth.min, max: t.settings.lineWidth.max, step: t.settings.lineWidth.step }), "lineDash" in t.settings && !t.settings.lineDash.hidden && p(Zi, { selectedSettings: s, setSelectedSettings: a, disabled: n, defaultValue: i.style?.lineDash, valueChanged: r, values: t.settings.lineDash.values }), "lineArrow" in t.settings && !t.settings.lineArrow.hidden && p(Ai, { selectedSettings: s, setSelectedSettings: a, disabled: n, defaultValue: i.style?.lineArrow, valueChanged: r, values: t.settings.lineArrow.values }), "pointsCount" in t.settings && !t.settings.pointsCount.hidden && p(Ei, { selectedSettings: s, setSelectedSettings: a, disabled: n, valueChanged: o, min: t.settings.pointsCount.min, max: t.settings.pointsCount.max, step: t.settings.pointsCount.step, value: i.style?.pointsCount }), "fontFamily" in t.settings && !t.settings.fontFamily.hidden && p(Ti, { selectedSettings: s, setSelectedSettings: a, disabled: n, valueChanged: l, values: t.settings.fontFamily.values, defaultValue: i.style?.fontFamily }), "fontBold" in t.settings && !t.settings.fontBold.hidden && p(ht, { setSelectedSettings: a, disabled: n, field: "fontBold", icon: Jt, valueChanged: l, values: t.settings.fontBold.values, value: i.style?.fontBold }), "fontItalic" in t.settings && !t.settings.fontItalic.hidden && p(ht, { setSelectedSettings: a, disabled: n, field: "fontItalic", icon: Kt, valueChanged: l, values: t.settings.fontItalic.values, value: i.style?.fontItalic }), "opacity" in t.settings && !t.settings.opacity.hidden && p(at, { selectedSettings: s, setSelectedSettings: a, title: "Opacité", icon: qt, min: t.settings.opacity.min, max: t.settings.opacity.max, step: t.settings.opacity.step, unity: "%", disabled: n, field: "opacity", value: i.style?.opacity ?? 100, valueChanged: r })] }) }) : "settings" in e ? I(pe, { children: ["strokeColor" in e.settings && !e.settings.strokeColor.hidden && p(ct, { selectedSettings: s, setSelectedSettings: a, title: "Couleur du trait", mode: "stroke", disabled: n, field: "strokeColor", value: e.settings.strokeColor.default, valueChanged: r, values: e.settings.strokeColor.values }), "fillColor" in e.settings && !e.settings.fillColor.hidden && p(ct, { selectedSettings: s, setSelectedSettings: a, title: "Couleur de fond", disabled: n, field: "fillColor", value: e.settings.fillColor.default, valueChanged: r, values: e.settings.fillColor.values }), "lineWidth" in e.settings && !e.settings.lineWidth.hidden && p(at, { selectedSettings: s, setSelectedSettings: a, title: "Epaisseur du trait", disabled: n, field: "lineWidth", icon: ei, value: e.settings.lineWidth.default, valueChanged: r, unity: "px", min: e.settings.lineWidth.min, max: e.settings.lineWidth.max, step: e.settings.lineWidth.step }), "lineDash" in e.settings && !e.settings.lineDash.hidden && p(Zi, { selectedSettings: s, setSelectedSettings: a, disabled: n, defaultValue: e.settings.lineDash.default, valueChanged: r, values: e.settings.lineDash.values }), "lineArrow" in e.settings && !e.settings.lineArrow.hidden && p(Ai, { selectedSettings: s, setSelectedSettings: a, disabled: n, defaultValue: e.settings.lineArrow.default, valueChanged: r, values: e.settings.lineArrow.values }), "pointsCount" in e.settings && !e.settings.pointsCount.hidden && p(Ei, { selectedSettings: s, setSelectedSettings: a, disabled: n, valueChanged: o, min: e.settings.pointsCount.min, max: e.settings.pointsCount.max, step: e.settings.pointsCount.step, value: e.settings.pointsCount.default }), "fontFamily" in e.settings && !e.settings.fontFamily.hidden && p(Ti, { selectedSettings: s, setSelectedSettings: a, disabled: n, valueChanged: l, values: e.settings.fontFamily.values, defaultValue: e.settings.fontFamily.default }), "fontBold" in e.settings && !e.settings.fontBold.hidden && p(ht, { setSelectedSettings: a, disabled: n, field: "fontBold", icon: Jt, valueChanged: l, values: e.settings.fontBold.values, value: e.settings.fontBold.default }), "fontItalic" in e.settings && !e.settings.fontItalic.hidden && p(ht, { setSelectedSettings: a, disabled: n, field: "fontItalic", icon: Kt, valueChanged: l, values: e.settings.fontItalic.values, value: e.settings.fontItalic.default }), "opacity" in e.settings && !e.settings.opacity.hidden && p(at, { selectedSettings: s, setSelectedSettings: a, title: "Opacité", icon: qt, min: e.settings.opacity.min, max: e.settings.opacity.max, step: e.settings.opacity.step, unity: "%", disabled: n, field: "opacity", value: e.settings.opacity.default, valueChanged: r })] }) : null, Cn = ({ width: e, disabled: i = !1, availableTools: t, updateToolSettings: n, layersManipulation: s, toggleLayoutPanel: a, activeTool: r, selectedShape: o, canvas: l, settings: h, updateShape: d, removeShape: c }) => {
|
|
1119
|
+
const [u, g] = z(void 0), [f, w] = z(!1), x = () => {
|
|
1120
|
+
w((H) => !H);
|
|
1121
1121
|
}, S = o ? t.find((H) => H.id === o.toolId) || t.find((H) => H.type === o.type) : void 0, L = (S ? Object.keys(S.settings).length + 1 : "settings" in r ? Object.keys(r.settings).length : 0) + (s ? 1 : 0), b = e < 40 * L, k = (H, T, C = !0) => {
|
|
1122
1122
|
o ? (d(ot(le(["style", H], T, o), h), C), S && n(S.id, H, T)) : n(r.id, H, T);
|
|
1123
1123
|
}, P = (H, T) => {
|
|
@@ -1152,7 +1152,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1152
1152
|
})(o, T, h), !0), S && n(S.id, H, T);
|
|
1153
1153
|
} else n(r.id, H, T);
|
|
1154
1154
|
};
|
|
1155
|
-
return I(pe, { children: [I("div", { className: "react-paint-editor-settings-bar", children: [I("div", { className: "react-paint-editor-settings-shrinkable", children: [b && L > 2 && p(G, { disabled: i, onClick:
|
|
1155
|
+
return I(pe, { children: [I("div", { className: "react-paint-editor-settings-bar", children: [I("div", { className: "react-paint-editor-settings-shrinkable", children: [b && L > 2 && p(G, { disabled: i, onClick: x, title: "Toggle settings", icon: '<svg><path d="M2.5 15.833V14.083H7.667V15.833ZM2.5 5.917V4.167H10.771V5.917ZM9.208 17.5V12.438H10.958V14.083H17.5V15.833H10.958V17.5ZM5.917 12.542V10.875H2.5V9.125H5.917V7.479H7.667V12.542ZM9.208 10.875V9.125H17.5V10.875ZM12.333 7.562V2.5H14.083V4.167H17.5V5.917H14.083V7.562Z"/></svg>' }), o ? p(pe, { children: S && I(pe, { children: [!b && p(At, { activeTool: r, selectedShape: o, selectedShapeTool: S, disabled: i, selectedSettings: u, setSelectedSettings: g, handleShapeStyleChange: k, handlePolygonLinesCount: E, handleShapeFontFamilyChange: P }), r.type === "selection" && p(mn, { disabled: i, selectedShape: o, removeShape: c })] }) }) : !b && p(At, { activeTool: r, selectedShape: o, selectedShapeTool: S, disabled: i, selectedSettings: u, setSelectedSettings: g, handleShapeStyleChange: k, handlePolygonLinesCount: E, handleShapeFontFamilyChange: P })] }), p("div", { className: "react-paint-editor-settings-separator" }), s && p(Qn, { disabled: i, toggleLayoutPanel: a })] }), f && p(Yt, { className: "react-paint-editor-settings-modal", onClose: x, position: "bottom", children: p(At, { activeTool: r, selectedShape: o, selectedShapeTool: S, disabled: i, selectedSettings: u, setSelectedSettings: g, handleShapeStyleChange: k, handlePolygonLinesCount: E, handleShapeFontFamilyChange: P }) })] });
|
|
1156
1156
|
}, Di = ({ disabled: e = !1, withText: i = !1, loadFile: t, type: n, img: s, accept: a }) => {
|
|
1157
1157
|
const r = q(null);
|
|
1158
1158
|
return p(G, { ref: r, type: "file", onClick: (o) => {
|
|
@@ -1163,7 +1163,7 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1163
1163
|
}, accept: a, title: n.label ?? n.type, icon: s, disabled: e, children: i ? n.label : void 0 });
|
|
1164
1164
|
}, ge = ({ type: e, img: i, isActive: t, withText: n = !1, disabled: s = !1, setActive: a }) => p(G, { disabled: s, selected: t, onClick: () => {
|
|
1165
1165
|
a(e);
|
|
1166
|
-
}, title: e.label ?? e.type, icon: i, children: n ? e.label : void 0 }),
|
|
1166
|
+
}, title: e.label ?? e.type, icon: i, children: n ? e.label : void 0 }), wn = ({ activeTool: e, withActionsInMenu: i, hasActionToUndo: t = !1, hasActionToRedo: n = !1, hasActionToClear: s = !1, undoAction: a, redoAction: r, clearCanvas: o, alignment: l, group: h, vertical: d = !1, disabled: c = !1, withLoadAndSave: u, withExport: g, addPicture: f, loadFile: w, togglePictureUrlModal: x, saveFile: S, exportCanvasInFile: L, withUploadPicture: b, withUrlPicture: k }) => {
|
|
1167
1167
|
const [P, E] = z(!1), [, H] = Ri(), T = h?.tools?.some((V) => V === e.type), C = (T ? e.icon : h.img) ?? h.title;
|
|
1168
1168
|
return B(() => {
|
|
1169
1169
|
if (!P) return;
|
|
@@ -1179,10 +1179,10 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1179
1179
|
});
|
|
1180
1180
|
}, icon: C }), P && p(Ke, { alignment: l, position: "top", children: I("div", { className: "react-paint-editor-toolbox-panel-content", "data-vertical": +d, children: [i && I(pe, { children: [p(ge, { withText: !0, type: Ge, disabled: c || !t, img: Ge.icon, isActive: e.id === Ge.id, setActive: a }), p(ge, { withText: !0, type: Xe, disabled: c || !n, img: Xe.icon, isActive: e.id === Xe.id, setActive: r }), p(ge, { withText: !0, type: Ye, disabled: c || !s, img: Ye.icon, isActive: e.id === Ye.id, setActive: o }), (b || k || u) && p("hr", {})] }), b && p(Di, { withText: !0, type: si, disabled: c, loadFile: async (V) => {
|
|
1181
1181
|
E(!1), await f(V);
|
|
1182
|
-
}, img: si.icon, accept: "image/png, image/gif, image/jpeg, image/svg+xml" }), k && p(G, { disabled: c, selected: !1, onClick:
|
|
1183
|
-
E(!1),
|
|
1182
|
+
}, img: si.icon, accept: "image/png, image/gif, image/jpeg, image/svg+xml" }), k && p(G, { disabled: c, selected: !1, onClick: x, title: "Add picture from URL", icon: '<svg><path d="M9.188 16.542V14.938Q8.5 14.938 8.021 14.458Q7.542 13.979 7.542 13.292V12.458L3.583 8.5Q3.5 8.875 3.458 9.25Q3.417 9.625 3.417 10Q3.417 12.5 5.062 14.365Q6.708 16.229 9.188 16.542ZM14.854 14.438Q15.708 13.521 16.146 12.385Q16.583 11.25 16.583 10Q16.583 7.979 15.469 6.313Q14.354 4.646 12.479 3.917V4.229Q12.479 4.917 12 5.396Q11.521 5.875 10.833 5.875H9.188V7.521Q9.188 7.875 8.948 8.115Q8.708 8.354 8.354 8.354H6.708V10H11.646Q12 10 12.24 10.229Q12.479 10.458 12.479 10.812V13.292H13.292Q13.833 13.292 14.26 13.604Q14.688 13.917 14.854 14.438ZM10 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.333Z"/></svg>', children: "Add picture from URL" }), (b || k) && u && p("hr", {}), u && I(pe, { children: [p(Di, { withText: !0, type: ai, disabled: c, loadFile: (V) => {
|
|
1183
|
+
E(!1), w(V);
|
|
1184
1184
|
}, img: ai.icon, accept: "application/JSON" }), p(ge, { withText: !0, disabled: c, type: Lt, img: Lt.icon, isActive: e.id === Lt.id, setActive: S })] }), g && p(ge, { withText: !0, disabled: c, type: kt, img: kt.icon, isActive: e.id === kt.id, setActive: L })] }) })] }) : null;
|
|
1185
|
-
},
|
|
1185
|
+
}, xn = ({ togglePictureUrlModal: e, addPicture: i }) => {
|
|
1186
1186
|
const t = q(null);
|
|
1187
1187
|
return B(() => {
|
|
1188
1188
|
t.current && t.current.focus();
|
|
@@ -1191,14 +1191,14 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1191
1191
|
const s = t.current?.value;
|
|
1192
1192
|
s && (await i(s), e());
|
|
1193
1193
|
}, children: [I("label", { children: ["URL ", p("input", { type: "text", ref: t })] }), p(G, { onClick: e, children: "Annuler" }), p(G, { type: "submit", selected: !0, children: "Ajouter" })] }) });
|
|
1194
|
-
},
|
|
1194
|
+
}, Mn = ({ activeTool: e, alignment: i, group: t, disabled: n = !1, setActiveToolFromId: s }) => {
|
|
1195
1195
|
const a = q(null), [r, o] = z(!1), [, l] = Ri(), [h, d] = z(void 0), c = (f) => {
|
|
1196
1196
|
d(f), s(f.id);
|
|
1197
1197
|
};
|
|
1198
1198
|
if (B(() => {
|
|
1199
1199
|
if (!r) return;
|
|
1200
|
-
const f = (
|
|
1201
|
-
!o1(
|
|
1200
|
+
const f = (w) => {
|
|
1201
|
+
!o1(w, a.current) && o(!1);
|
|
1202
1202
|
};
|
|
1203
1203
|
return document.addEventListener("mousedown", f, { passive: !1 }), document.addEventListener("touchstart", f, { passive: !1 }), () => {
|
|
1204
1204
|
document.removeEventListener("mousedown", f), document.removeEventListener("touchstart", f);
|
|
@@ -1211,8 +1211,8 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1211
1211
|
h ? s(h.id) : t.toolsType?.[0] && c(t.toolsType[0]), l(() => {
|
|
1212
1212
|
o(!0);
|
|
1213
1213
|
});
|
|
1214
|
-
}, icon: g }), r && p(Ke, { alignment: i, position: "top", children: p("div", { className: "react-paint-editor-toolbargroup-panel-content", "data-vertical": +t.vertical, ref: a, children: t.toolsType.map((f,
|
|
1215
|
-
},
|
|
1214
|
+
}, icon: g }), r && p(Ke, { alignment: i, position: "top", children: p("div", { className: "react-paint-editor-toolbargroup-panel-content", "data-vertical": +t.vertical, ref: a, children: t.toolsType.map((f, w) => p(ge, { disabled: n, type: f, img: f.icon, isActive: e.id === f.id, setActive: c }, f.id)) }) })] });
|
|
1215
|
+
}, kn = [{ title: "brush", toolsType: ["brush"], vertical: !1 }, { title: "lines", toolsType: ["line", "curve", "polygon"], vertical: !1 }, { title: "shapes", toolsType: ["rect", "square", "circle", "ellipse"], vertical: !1 }, "text"], Ln = ({ width: e, disabled: i = !1, activeTool: t, hasActionToUndo: n = !1, hasActionToRedo: s = !1, hasActionToClear: a = !1, withLoadAndSave: r, withExport: o, clearCanvas: l, setActiveTool: h, undoAction: d, redoAction: c, addPicture: u, loadFile: g, saveFile: f, exportCanvasInFile: w, availableTools: x, withUrlPicture: S, withUploadPicture: L }) => {
|
|
1216
1216
|
const b = ((M, A) => {
|
|
1217
1217
|
const Z = A.flatMap((v) => {
|
|
1218
1218
|
if (typeof v != "object") return M.filter((Q) => Q.type === v);
|
|
@@ -1220,35 +1220,35 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1220
1220
|
return m ? { ...v, toolsType: m } : null;
|
|
1221
1221
|
});
|
|
1222
1222
|
return $t(Z);
|
|
1223
|
-
})(
|
|
1223
|
+
})(x, kn), k = e < 40 * (5 + b.length), P = e < 40 * (2 + b.length), [E, H] = z(!1), [T, C] = z(!1), V = () => {
|
|
1224
1224
|
H((M) => !M);
|
|
1225
1225
|
}, W = (M) => {
|
|
1226
1226
|
h(M), H(!1);
|
|
1227
1227
|
}, y = (M) => {
|
|
1228
|
-
W(
|
|
1229
|
-
}, N =
|
|
1230
|
-
return I(pe, { children: [I("div", { className: "react-paint-editor-toolbar-toolbox", children: [I("div", { className: "react-paint-editor-toolbar-shrinkable", children: [p(ge, { type: Ae, disabled: i, img: Ae.icon, isActive: t.id === Ae.id, setActive: W }), P ? p(G, { disabled: i, onClick: V, title: "Toggle tools", icon: '<svg><path d="M5.333 9.292 10.021 1.646 14.708 9.292ZM14.562 18.333Q13 18.333 11.896 17.229Q10.792 16.125 10.792 14.562Q10.792 13 11.896 11.896Q13 10.792 14.562 10.792Q16.125 10.792 17.229 11.896Q18.333 13 18.333 14.562Q18.333 16.125 17.229 17.229Q16.125 18.333 14.562 18.333ZM2.5 17.917V11.188H9.229V17.917ZM14.562 16.583Q15.438 16.583 16.01 16.01Q16.583 15.438 16.583 14.562Q16.583 13.688 16.01 13.115Q15.438 12.542 14.562 12.542Q13.688 12.542 13.115 13.115Q12.542 13.688 12.542 14.562Q12.542 15.438 13.115 16.01Q13.688 16.583 14.562 16.583ZM4.25 16.167H7.479V12.938H4.25ZM8.458 7.542H11.583L10.021 5ZM10.021 7.542ZM7.479 12.938ZM14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Z"/></svg>', selected: N }) : b.map((M, A) => p(
|
|
1228
|
+
W(x.find((A) => A.id === M) ?? t);
|
|
1229
|
+
}, N = x.find((M) => M.type === t.type) !== void 0;
|
|
1230
|
+
return I(pe, { children: [I("div", { className: "react-paint-editor-toolbar-toolbox", children: [I("div", { className: "react-paint-editor-toolbar-shrinkable", children: [p(ge, { type: Ae, disabled: i, img: Ae.icon, isActive: t.id === Ae.id, setActive: W }), P ? p(G, { disabled: i, onClick: V, title: "Toggle tools", icon: '<svg><path d="M5.333 9.292 10.021 1.646 14.708 9.292ZM14.562 18.333Q13 18.333 11.896 17.229Q10.792 16.125 10.792 14.562Q10.792 13 11.896 11.896Q13 10.792 14.562 10.792Q16.125 10.792 17.229 11.896Q18.333 13 18.333 14.562Q18.333 16.125 17.229 17.229Q16.125 18.333 14.562 18.333ZM2.5 17.917V11.188H9.229V17.917ZM14.562 16.583Q15.438 16.583 16.01 16.01Q16.583 15.438 16.583 14.562Q16.583 13.688 16.01 13.115Q15.438 12.542 14.562 12.542Q13.688 12.542 13.115 13.115Q12.542 13.688 12.542 14.562Q12.542 15.438 13.115 16.01Q13.688 16.583 14.562 16.583ZM4.25 16.167H7.479V12.938H4.25ZM8.458 7.542H11.583L10.021 5ZM10.021 7.542ZM7.479 12.938ZM14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Q14.562 14.562 14.562 14.562Z"/></svg>', selected: N }) : b.map((M, A) => p(Mn, { disabled: i, activeTool: t, group: M, setActiveToolFromId: y }, "id" in M ? M.id : M.title))] }), !k && I(pe, { children: [p(ge, { type: Ge, disabled: i || !n, img: Ge.icon, isActive: t.id === Ge.id, setActive: d }), p(ge, { type: Xe, disabled: i || !s, img: Xe.icon, isActive: t.id === Xe.id, setActive: c }), p(ge, { type: Ye, disabled: i || !a, img: Ye.icon, isActive: t.id === Ye.id, setActive: l })] }), p(wn, { withActionsInMenu: k, disabled: i, vertical: !0, alignment: "right", group: { title: "Menu", img: '<svg><path d="M2.5 15V13.25H17.5V15ZM2.5 10.875V9.125H17.5V10.875ZM2.5 6.75V5H17.5V6.75Z"/></svg>' }, activeTool: t, addPicture: u, loadFile: g, saveFile: f, togglePictureUrlModal: () => {
|
|
1231
1231
|
C(!0);
|
|
1232
|
-
}, exportCanvasInFile:
|
|
1232
|
+
}, exportCanvasInFile: w, withUploadPicture: L, withUrlPicture: S, withLoadAndSave: r, withExport: o, hasActionToUndo: n, hasActionToRedo: s, hasActionToClear: a, undoAction: d, redoAction: c, clearCanvas: l })] }), E && p(Yt, { className: "react-paint-editor-toolbar-modal", onClose: V, children: x.map((M, A) => M.type === "picture" ? null : p(ge, { disabled: i, type: M, img: M.icon, withText: !1, isActive: t.id === M.id, setActive: W }, M.id)) }), T && p(xn, { togglePictureUrlModal: () => {
|
|
1233
1233
|
C((M) => !M);
|
|
1234
1234
|
}, addPicture: u })] });
|
|
1235
|
-
}, pt = { none: 0, small: 10, medium: 20, large: 40 },
|
|
1235
|
+
}, pt = { none: 0, small: 10, medium: 20, large: 40 }, Vn = { toolbarBackgroundColor: "white", dividerColor: "#36418129", fontRadius: 8, fontDisabledColor: "#3641812b", fontDisabledBackgroundColor: "transparent", fontColor: "#364181", fontBackgroundColor: "transparent", fontSelectedColor: "white", fontSelectedBackgroundColor: "#364181", fontHoverColor: "#364181", fontHoverBackgroundColor: "#afd8d8" }, Pn = () => {
|
|
1236
1236
|
const e = q([]), [i, t] = z([]);
|
|
1237
1237
|
return B(() => () => {
|
|
1238
1238
|
for (const n of e.current) clearTimeout(n);
|
|
1239
|
-
}, []), { snackbarList: i, addSnackbar: ({ type: n =
|
|
1239
|
+
}, []), { snackbarList: i, addSnackbar: ({ type: n = cn, duration: s = hn, text: a }) => {
|
|
1240
1240
|
const r = { id: oe("snackbar_"), duration: s, type: n, text: a };
|
|
1241
1241
|
t((o) => [...o, r]), e.current = [...e.current, setTimeout(() => {
|
|
1242
1242
|
return o = r.id, void t((l) => l.filter((h) => h.id !== o));
|
|
1243
1243
|
var o;
|
|
1244
1244
|
}, s)];
|
|
1245
1245
|
} };
|
|
1246
|
-
},
|
|
1247
|
-
const { shapesRef: a, addPictureShape: r, moveShapes: o, toggleShapeVisibility: l, toggleShapeLock: h, canGoBackward: d, canGoForward: c, canClear: u, selectedShape: g, removeShape: f, updateShape:
|
|
1246
|
+
}, En = ({ editorProps: e, className: i, style: t, options: n, children: s }) => {
|
|
1247
|
+
const { shapesRef: a, addPictureShape: r, moveShapes: o, toggleShapeVisibility: l, toggleShapeLock: h, canGoBackward: d, canGoForward: c, canClear: u, selectedShape: g, removeShape: f, updateShape: w, backwardShape: x, forwardShape: S, refs: L, width: b, height: k, canvasSize: P, selectTool: E, selectShape: H, activeTool: T, setActiveTool: C, setAvailableTools: V, isEditMode: W, isDisabled: y, availableTools: N, gridGap: M, setGridGap: A, loadFile: Z, exportPicture: v, exportData: m, clearCanvas: Q, settings: D, canvas: { canGrow: R, layersManipulation: X, withExport: ce, withLoadAndSave: $, withUploadPicture: U, withUrlPicture: re } } = e, { toolbarBackgroundColor: te, dividerColor: ie, fontRadius: fe, fontDisabledColor: Me, fontDisabledBackgroundColor: ne, fontColor: j, fontBackgroundColor: Se, fontSelectedColor: Ze, fontSelectedBackgroundColor: ke, fontHoverColor: me, fontHoverBackgroundColor: be } = { ...Vn, ...n }, [Ee, se] = z(!1), [Le, Ne] = z(!1), he = M >= pt.large ? "large" : M >= pt.medium ? "medium" : M >= pt.small ? "small" : "none", { snackbarList: ye, addSnackbar: ae } = Pn(), Ve = F((J, K, et) => {
|
|
1248
1248
|
V((Re) => Re.map((tt) => tt.id === J ? le(["settings", K, "default"], et, tt) : tt)), C((Re) => Re.id === J ? le(["settings", K, "default"], et, Re) : Re);
|
|
1249
1249
|
}, [C, V]), $e = F(() => {
|
|
1250
|
-
E(Ae),
|
|
1251
|
-
}, [E,
|
|
1250
|
+
E(Ae), x();
|
|
1251
|
+
}, [E, x]), Pe = F(() => {
|
|
1252
1252
|
E(Ae), S();
|
|
1253
1253
|
}, [E, S]), Ue = F(() => {
|
|
1254
1254
|
se(!0);
|
|
@@ -1288,14 +1288,14 @@ const ui = ({ ctx: e, path: i, rect: t, offset: n, checkFill: s }) => {
|
|
|
1288
1288
|
se(!1);
|
|
1289
1289
|
}
|
|
1290
1290
|
}, [r, H, ae, b, k]), xt = `${i ? `${i} ` : ""}${Le ? "react-paint-editor-layout-opened " : ""}react-paint-editor-app`;
|
|
1291
|
-
return I("div", { ref: L.setEditor, className: xt, style: { "--react-paint-editor-app-maxWidth": R ? "100%" : `${b}px`, "--react-paint-editor-app-toolbar-bg": te, "--react-paint-editor-app-divider-color": ie, "--react-paint-editor-app-font-radius": fe, "--react-paint-editor-app-font-disabled-color": Me, "--react-paint-editor-app-font-disabled-bg": ne, "--react-paint-editor-app-font-color": j, "--react-paint-editor-app-font-bg": Se, "--react-paint-editor-app-font-selected-color": Ze, "--react-paint-editor-app-font-selected-bg": ke, "--react-paint-editor-app-font-hover-color": me, "--react-paint-editor-app-font-hover-bg": be, ...t }, children: [W && p(
|
|
1291
|
+
return I("div", { ref: L.setEditor, className: xt, style: { "--react-paint-editor-app-maxWidth": R ? "100%" : `${b}px`, "--react-paint-editor-app-toolbar-bg": te, "--react-paint-editor-app-divider-color": ie, "--react-paint-editor-app-font-radius": fe, "--react-paint-editor-app-font-disabled-color": Me, "--react-paint-editor-app-font-disabled-bg": ne, "--react-paint-editor-app-font-color": j, "--react-paint-editor-app-font-bg": Se, "--react-paint-editor-app-font-selected-color": Ze, "--react-paint-editor-app-font-selected-bg": ke, "--react-paint-editor-app-font-hover-color": me, "--react-paint-editor-app-font-hover-bg": be, ...t }, children: [W && p(Ln, { width: P.width, disabled: y, activeTool: T, clearCanvas: Q, setActiveTool: E, exportCanvasInFile: Ue, saveFile: lt, loadFile: Ct, addPicture: wt, hasActionToUndo: d, hasActionToRedo: c, hasActionToClear: u, undoAction: $e, redoAction: Pe, availableTools: N, withExport: ce, withLoadAndSave: $, withUploadPicture: U, withUrlPicture: re }), s, W && X && p(fn, { gridFormat: he, setGridFormat: (J) => {
|
|
1292
1292
|
A(pt[J]);
|
|
1293
|
-
}, disabled: y, shapes: a.current, moveShapes: o, selectedShape: g, removeShape: f, selectShape: H, toggleShapeVisibility: l, toggleShapeLock: h, isLayoutPanelShown: Le }), W && I(pe, { children: [p(
|
|
1293
|
+
}, disabled: y, shapes: a.current, moveShapes: o, selectedShape: g, removeShape: f, selectShape: H, toggleShapeVisibility: l, toggleShapeLock: h, isLayoutPanelShown: Le }), W && I(pe, { children: [p(Cn, { width: P.width, disabled: y, activeTool: T, availableTools: N, selectedShape: g, settings: D, removeShape: f, updateShape: w, canvas: L.canvas.current, layersManipulation: X, toggleLayoutPanel: () => {
|
|
1294
1294
|
Ne((J) => !J);
|
|
1295
|
-
}, updateToolSettings: Ve }), p(
|
|
1295
|
+
}, updateToolSettings: Ve }), p(dn, { isLoading: Ee }), p(un, { snackbarList: ye })] })] });
|
|
1296
1296
|
};
|
|
1297
1297
|
export {
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1298
|
+
Zn as Canvas,
|
|
1299
|
+
En as Editor,
|
|
1300
|
+
An as useReactPaint
|
|
1301
1301
|
};
|