react-screenshots 0.0.17 → 0.2.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +97 -88
  2. package/electron/assets/index.6377aa3e.css +1 -0
  3. package/electron/assets/index.fbe41cdd.js +14 -0
  4. package/electron/assets/vendor.ea3156d9.js +209 -0
  5. package/electron/electron.html +15 -0
  6. package/lib/react-screenshots.cjs.js +14 -0
  7. package/lib/react-screenshots.es.js +3058 -0
  8. package/lib/style.css +1 -0
  9. package/lib/types/Screenshots/index.d.ts +13 -0
  10. package/lib/types/ScreenshotsBackground/getBoundsByPoints.d.ts +2 -0
  11. package/lib/types/ScreenshotsBackground/index.d.ts +3 -0
  12. package/lib/types/ScreenshotsButton/index.d.ts +11 -0
  13. package/lib/types/ScreenshotsCanvas/getBoundsByPoints.d.ts +2 -0
  14. package/lib/types/ScreenshotsCanvas/getPoints.d.ts +2 -0
  15. package/lib/types/ScreenshotsCanvas/index.d.ts +15 -0
  16. package/lib/types/ScreenshotsCanvas/isPointInDraw.d.ts +2 -0
  17. package/lib/types/ScreenshotsColor/index.d.ts +7 -0
  18. package/lib/types/ScreenshotsContext.d.ts +29 -0
  19. package/lib/types/ScreenshotsMagnifier/index.d.ts +7 -0
  20. package/lib/types/ScreenshotsOperations/index.d.ts +5 -0
  21. package/lib/types/ScreenshotsOption/index.d.ts +14 -0
  22. package/lib/types/ScreenshotsSize/index.d.ts +7 -0
  23. package/lib/types/ScreenshotsSizeColor/index.d.ts +9 -0
  24. package/lib/types/ScreenshotsTextarea/calculateNodeSize.d.ts +17 -0
  25. package/lib/types/ScreenshotsTextarea/index.d.ts +14 -0
  26. package/lib/types/dpr.d.ts +2 -0
  27. package/lib/types/exports.d.ts +3 -0
  28. package/lib/types/hooks/useBounds.d.ts +7 -0
  29. package/lib/types/hooks/useCall.d.ts +2 -0
  30. package/lib/types/hooks/useCanvasContextRef.d.ts +2 -0
  31. package/lib/types/hooks/useCanvasMousedown.d.ts +1 -0
  32. package/lib/types/hooks/useCanvasMousemove.d.ts +1 -0
  33. package/lib/types/hooks/useCanvasMouseup.d.ts +1 -0
  34. package/lib/types/hooks/useCursor.d.ts +6 -0
  35. package/lib/types/hooks/useDispatcher.d.ts +2 -0
  36. package/lib/types/hooks/useDrawSelect.d.ts +2 -0
  37. package/lib/types/hooks/useEmiter.d.ts +8 -0
  38. package/lib/types/hooks/useHistory.d.ts +16 -0
  39. package/lib/types/hooks/useLang.d.ts +2 -0
  40. package/lib/types/hooks/useOperation.d.ts +6 -0
  41. package/lib/types/hooks/useReset.d.ts +2 -0
  42. package/lib/types/hooks/useStore.d.ts +2 -0
  43. package/lib/types/index.d.ts +13 -0
  44. package/lib/types/operations/Arrow/draw.d.ts +11 -0
  45. package/lib/types/operations/Arrow/index.d.ts +22 -0
  46. package/lib/types/operations/Brush/draw.d.ts +3 -0
  47. package/lib/types/operations/Brush/index.d.ts +14 -0
  48. package/lib/types/operations/Cancel/index.d.ts +2 -0
  49. package/lib/types/operations/Ellipse/draw.d.ts +11 -0
  50. package/lib/types/operations/Ellipse/index.d.ts +28 -0
  51. package/lib/types/operations/Mosaic/index.d.ts +11 -0
  52. package/lib/types/operations/Ok/index.d.ts +2 -0
  53. package/lib/types/operations/Rectangle/draw.d.ts +11 -0
  54. package/lib/types/operations/Rectangle/index.d.ts +28 -0
  55. package/lib/types/operations/Redo/index.d.ts +2 -0
  56. package/lib/types/operations/Save/index.d.ts +2 -0
  57. package/lib/types/operations/Text/index.d.ts +22 -0
  58. package/lib/types/operations/Undo/index.d.ts +2 -0
  59. package/lib/types/operations/index.d.ts +3 -0
  60. package/lib/types/operations/utils.d.ts +4 -0
  61. package/lib/types/types.d.ts +39 -0
  62. package/lib/types/useGetLoadedImage.d.ts +1 -0
  63. package/lib/types/zh_CN.d.ts +16 -0
  64. package/package.json +40 -59
  65. package/dist/css/app.1c781f1bca03bf3517f6.css +0 -3
  66. package/dist/css/app.e66743f7e9bb7f4c3202.css +0 -3
  67. package/dist/index.html +0 -1
  68. package/dist/js/app.01b47f81a1286d89a7d9.js +0 -2
  69. package/dist/js/app.01b47f81a1286d89a7d9.js.LICENSE.txt +0 -32
  70. package/dist/js/app.047c8c22ccf49ba2b1d7.js +0 -2
  71. package/dist/js/app.047c8c22ccf49ba2b1d7.js.LICENSE.txt +0 -32
  72. package/dist/js/app.0910cea9128463e9f0d2.js +0 -2
  73. package/dist/js/app.0910cea9128463e9f0d2.js.LICENSE.txt +0 -32
  74. package/dist/js/app.1c0d0d80e583c32ef2db.js +0 -2
  75. package/dist/js/app.1c0d0d80e583c32ef2db.js.LICENSE.txt +0 -32
  76. package/dist/js/app.23a83e5bf2ca4a292ad6.js +0 -2
  77. package/dist/js/app.23a83e5bf2ca4a292ad6.js.LICENSE.txt +0 -32
  78. package/dist/js/app.267d13079b8af7e1dd76.js +0 -2
  79. package/dist/js/app.267d13079b8af7e1dd76.js.LICENSE.txt +0 -32
  80. package/dist/js/app.2735150c87ae453ee439.js +0 -2
  81. package/dist/js/app.2735150c87ae453ee439.js.LICENSE.txt +0 -32
  82. package/dist/js/app.2e6ada7ebe29d78de07b.js +0 -2
  83. package/dist/js/app.2e6ada7ebe29d78de07b.js.LICENSE.txt +0 -32
  84. package/dist/js/app.34635b43ca0307bf4615.js +0 -2
  85. package/dist/js/app.34635b43ca0307bf4615.js.LICENSE.txt +0 -32
  86. package/dist/js/app.3a5f376b2dae7284878b.js +0 -2
  87. package/dist/js/app.3a5f376b2dae7284878b.js.LICENSE.txt +0 -32
  88. package/dist/js/app.6856f1c4d4c6846705ff.js +0 -2
  89. package/dist/js/app.6856f1c4d4c6846705ff.js.LICENSE.txt +0 -32
  90. package/dist/js/app.758c8b2f2a8ccf6b1c3c.js +0 -2
  91. package/dist/js/app.758c8b2f2a8ccf6b1c3c.js.LICENSE.txt +0 -32
  92. package/dist/js/app.7cbd97e8ce1d08f1bd80.js +0 -2
  93. package/dist/js/app.7cbd97e8ce1d08f1bd80.js.LICENSE.txt +0 -32
  94. package/dist/js/app.7e24d295c7128703cf2b.js +0 -2
  95. package/dist/js/app.7e24d295c7128703cf2b.js.LICENSE.txt +0 -32
  96. package/dist/js/app.912ce3a16854e72bccb3.js +0 -2
  97. package/dist/js/app.912ce3a16854e72bccb3.js.LICENSE.txt +0 -32
  98. package/dist/js/app.9e2b61e62399f65fd600.js +0 -2
  99. package/dist/js/app.9e2b61e62399f65fd600.js.LICENSE.txt +0 -32
  100. package/dist/js/app.a2217b046f549c529f48.js +0 -2
  101. package/dist/js/app.a2217b046f549c529f48.js.LICENSE.txt +0 -32
  102. package/dist/js/app.a8d205b093abb2929de9.js +0 -2
  103. package/dist/js/app.a8d205b093abb2929de9.js.LICENSE.txt +0 -32
  104. package/dist/js/app.a9a7577692d56038a7dc.js +0 -2
  105. package/dist/js/app.a9a7577692d56038a7dc.js.LICENSE.txt +0 -32
  106. package/dist/js/app.aed9a05fb8f84df41483.js +0 -2
  107. package/dist/js/app.aed9a05fb8f84df41483.js.LICENSE.txt +0 -32
  108. package/dist/js/app.b7af6e629134f9201f64.js +0 -2
  109. package/dist/js/app.b7af6e629134f9201f64.js.LICENSE.txt +0 -32
  110. package/dist/js/app.c03bf2bbdb513f9c8452.js +0 -2
  111. package/dist/js/app.c03bf2bbdb513f9c8452.js.LICENSE.txt +0 -32
  112. package/dist/js/app.c37b7d9d42ab1e25882c.js +0 -2
  113. package/dist/js/app.c37b7d9d42ab1e25882c.js.LICENSE.txt +0 -32
  114. package/dist/js/app.ccfceab7eaf11230369d.js +0 -2
  115. package/dist/js/app.ccfceab7eaf11230369d.js.LICENSE.txt +0 -32
  116. package/dist/screenshots.css +0 -1
  117. package/dist/screenshots.js +0 -2
  118. package/dist/screenshots.js.LICENSE.txt +0 -23
package/lib/style.css ADDED
@@ -0,0 +1 @@
1
+ .screenshots-magnifier{position:absolute;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,apple color emoji,segoe ui emoji,Segoe UI Symbol,noto color emoji;left:0;top:0;width:100px;box-shadow:0 0 8px #000;z-index:9}.screenshots-magnifier,.screenshots-magnifier *{box-sizing:border-box;user-select:none}.screenshots-magnifier-body{position:relative;background-color:#fff}.screenshots-magnifier-body:before{content:"";background-color:#0a72a1;position:absolute;top:50%;left:0;width:100%;height:2px;z-index:1}.screenshots-magnifier-body:after{content:"";background-color:#0a72a1;position:absolute;top:0;left:50%;width:2px;height:100%;z-index:1}.screenshots-magnifier-body-canvas{display:block;width:100px;height:80px}.screenshots-magnifier-footer{height:40px;color:#fff;font-size:11px;background-color:#5f5e5e;padding:4px;white-space:nowrap;overflow:hidden;text-align:center}.screenshots-magnifier-footer-item{height:18px;line-height:18px}.screenshots-background{width:100%;height:100%;position:relative;background-size:100% 100%;background-position:0 0;background-repeat:no-repeat}.screenshots-background-mask{width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;background-color:#ffffff1a}.screenshots-canvas{position:absolute}.screenshots-canvas-body{width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.screenshots-canvas-border-top{position:absolute;left:0;top:0;width:100%;height:2px;transform:translateY(-50%);background-color:#39f;pointer-events:none}.screenshots-canvas-border-right{position:absolute;left:100%;top:0;width:2px;height:100%;transform:translate(-50%);background-color:#39f;pointer-events:none}.screenshots-canvas-border-bottom{position:absolute;left:0;top:100%;width:100%;height:2px;transform:translateY(-50%);background-color:#39f;pointer-events:none}.screenshots-canvas-border-left{position:absolute;left:0;top:0;width:2px;height:100%;transform:translate(-50%);background-color:#39f;pointer-events:none}.screenshots-canvas-point-top{width:8px;height:8px;position:absolute;left:50%;top:0;background-color:#39f;border-radius:50%;transform:translate(-50%,-50%);cursor:ns-resize}.screenshots-canvas-point-top-right{width:8px;height:8px;position:absolute;left:100%;top:0;background-color:#39f;border-radius:50%;transform:translate(-50%,-50%);cursor:nesw-resize}.screenshots-canvas-point-right{width:8px;height:8px;position:absolute;left:100%;top:50%;background-color:#39f;border-radius:50%;transform:translate(-50%,-50%);cursor:ew-resize}.screenshots-canvas-point-right-bottom{width:8px;height:8px;position:absolute;left:100%;top:100%;background-color:#39f;border-radius:50%;transform:translate(-50%,-50%);cursor:nwse-resize}.screenshots-canvas-point-bottom{width:8px;height:8px;position:absolute;left:50%;top:100%;background-color:#39f;border-radius:50%;transform:translate(-50%,-50%);cursor:ns-resize}.screenshots-canvas-point-bottom-left{width:8px;height:8px;position:absolute;left:0;top:100%;background-color:#39f;border-radius:50%;transform:translate(-50%,-50%);cursor:nesw-resize}.screenshots-canvas-point-left{width:8px;height:8px;position:absolute;left:0;top:50%;background-color:#39f;border-radius:50%;transform:translate(-50%,-50%);cursor:ew-resize}.screenshots-canvas-point-left-top{width:8px;height:8px;position:absolute;left:0;top:0;background-color:#39f;border-radius:50%;transform:translate(-50%,-50%);cursor:nwse-resize}.screenshots-option{position:absolute;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,apple color emoji,segoe ui emoji,Segoe UI Symbol,noto color emoji}.screenshots-option,.screenshots-option *{box-sizing:border-box;user-select:none}.screenshots-option-container{height:34px;padding:3px;border-radius:2px;border:1px solid #ddd;background-color:#fff}.screenshots-option-arrow{position:absolute;border:6px solid transparent}.screenshots-option[data-placement=top]{transform:translate(-50%,-11px)}.screenshots-option[data-placement=top] .screenshots-option-arrow{transform:translate(-50%,-1px);border-top-color:#fff;top:100%;left:50%}.screenshots-option[data-placement=bottom]{transform:translate(-50%,11px)}.screenshots-option[data-placement=bottom] .screenshots-option-arrow{transform:translate(-50%,1px);border-bottom-color:#fff;bottom:100%;left:50%}.screenshots-button{width:26px;height:26px;line-height:26px;color:#555;font-size:18px;text-align:center;margin:0 3px;vertical-align:middle;cursor:pointer}.screenshots-button-checked,.screenshots-button:hover{background-color:#eee;outline:1px solid #777}.screenshots-button-disabled{color:#ccc;cursor:not-allowed}.screenshots-button-disabled:hover{background-color:#fff;outline:none}.screenshots-size{height:24px;display:flex;align-items:center}.screenshots-size-item{width:24px;height:24px;position:relative;margin:0 3px;cursor:pointer}.screenshots-size-pointer{background-color:#555;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.screenshots-size-active>.screenshots-size-pointer{background-color:#39f}.screenshots-color{height:24px;display:flex;align-items:center}.screenshots-color-item{border:1px solid #777;width:24px;height:24px;cursor:pointer;position:relative;margin:0 3px}.screenshots-color-item:before{content:"";display:none;position:absolute;right:0;bottom:0;width:10px;height:10px;background-color:#333}.screenshots-color-item:after{content:"";display:none;width:8px;height:4px;position:absolute;right:5px;bottom:5px;border-bottom:2px solid #fff;border-left:2px solid #fff;transform:translate(5px,2px) rotate(-45deg) scale(.8)}.screenshots-color-active:before,.screenshots-color-active:after{display:block}.screenshots-sizecolor{height:24px;display:flex;align-items:center}.screenshots-textarea{box-sizing:border-box;position:absolute;margin:0;padding:0;background-color:transparent;border:2px solid #39f;resize:none;outline:none;white-space:nowrap;word-break:break-all;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,apple color emoji,segoe ui emoji,Segoe UI Symbol,noto color emoji;text-align:left}.screenshots-operations{position:absolute}.screenshots-operations-buttons{display:flex;align-items:center;padding:3px;border-radius:2px;border:1px solid #ddd;background-color:#fff;overflow:hidden}.screenshots-operations-divider{background-color:#ddd;width:1px;height:26px;margin:0 3px}.screenshots{position:relative;transform:translateZ(0);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,apple color emoji,segoe ui emoji,Segoe UI Symbol,noto color emoji}.screenshots,.screenshots *{box-sizing:border-box;user-select:none}@font-face{font-family:screenshots-icon;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAgkAAsAAAAADKgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAARAAAAGA2FkLbY21hcAAAAYgAAAB/AAAB/OFbJW1nbHlmAAACCAAAA8QAAAUsfvSb62hlYWQAAAXMAAAALwAAADYeYsGsaGhlYQAABfwAAAAcAAAAJAfeA41obXR4AAAGGAAAAA8AAAAwMAAAAGxvY2EAAAYoAAAAGgAAABoIbgcGbWF4cAAABkQAAAAfAAAAIAEcAFFuYW1lAAAGZAAAAVkAAALHgvO953Bvc3QAAAfAAAAAYQAAAIDH1pYVeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGFhYJzAwMrAwNTJdIaBgaEfQjO+ZjBi5ACKMrAyM2AFAWmuKQwHHjA+4GZu+N/AwMB8hwFIMjCiKGICAGIrDGB4nO2RyxHDMAhEn6xfbKWUnFOQTykoBdKJs4DLCDOPgRXosAAdqOIlGpQPBY9Tagm9coTeeMdMc93WdSkXz+q1qamdTVXXxoMldTD1OPjHM/L37pY7l7i3tiXyD6sJrrXE3bWe+L1sJH43m4kcx27i/z2JWx0JvrcS5g/Mshy1AHicdVPNbxtFFJ834/1eZ3e9u7N23F1n17Gt2sKmtnctFNwA5UADMR8SalWBIlEUWnLhgJBCc0HlQCTEoTdOiCOJVAVxQRXfcOJEDrSq1EvEH5ADEUKo3vJ2EyPlwL6dt78377fzZt57Q4Dgw96gB6RCCIR97lrOHERdGFkgdukIwi4ME/gMPrXKms0dDaZ39dADjbbTXy3PowdlK31Lt3V8IZne1cALddpGXSaUkEf32BfsLKmRC7h6PRJ9cMR6GDXHMGx2ILf5IOwnmS3w/jIkwx40IwPEZmx1IaPghsSTOcdjn8SqaWrTrzXTVGPNbPv0F79tpq/KXDqU5YbsyldlDiUlUU2eQakpy9AytC/xB1SGoR367bZ/qBnvyvIh0hsy0mQdNjNCuq3nZgsdhIi4/9/ZLusQRuqkRTqkRwZ4joFbd+N6XHezkRn5iAcnox4P4hCnWmhJ9WzKrTOyu7u7s3vy5CBFvbOTK9Y55cnBzokby4M1evQn+4YVyQIhCqYC09aUxGPhySgXz3UCGGH+2FfpfbVSipfWVtfHz6ugG4XJZOXSZKNUUaGlwANUpeJt0Oze8sbNHxSVSturF/1qYa9ogYLOefJfzG+PY9rAz8MYEo+jBJDEzVYuUjxsRhLW5QX8rWK//eKllclqwdC1lfH66tpSbFeU9L4Ce5myinuFqn9xdVuiqvzjzY3lnq3B7WIpY2DErFe+Yz+zC8QhZwkR+tmZhlmQKDulk4eOMnuYefqZ7WQeSq5duTyI48HlK7/NwLUb19eXxuOl9et/zQA9RcjBU6cIOZjt4yf2DNZcwjRYodUIrZC9P9XZkw+32If0n6lOj557uHWcowO2wWrEzu5OJGa9bDm8n8QW9vSwyUbTW24QuMBq7RowhCwIOsF0jQcBp58jzNf4m33EZFIlpKFg/fDAeY0dT8HM8v5IAVxxyDbTfegZtY6R7qf7RqdmQA+/aEMP5zu1l0++xv/w8v3iXf8D7zrHWMsA5+E4WD2aAw/yToLvmUhVExYeN9NCejTnliNqwhPGY6YkvEkFalnnInM6BW4sds30jkEtScuXzdUNekR8rN+zGEyUTgkf9EfJTFqjAG94D7qQcC/rZWNGz+vMZzx4TZJLpls0gfLSGc8U/HIQNMJWbbE8rxeFRU0wqtpVXTCrGtwxbXWO8g82JxKAolYjbjvV9Vee1gsinBME3XB51W80fM8WgFEmSppulsqVhYlWNQvamjaPGm5pBSqDsfXeS4qkGtZ8VChY1Y/feb1knyH/AiUJAkh4nGNgZGBgAOLZ5nkT4vltvjJwszCAwN2F+64j6P/7WBiYnYFcDgYmkCgASUgLuAB4nGNgZGBgbvjfwBDDwgACQJKRARXwAABHEgJ1eJxjYWBgYCEBAwAFEAAxAAAAAAAALgCOANIBDAFEAYgBngHAAfYCJAKWAAB4nGNgZGBg4GFwZWBjAAEmIOYCQgaG/2A+AwAQ1QFuAHichZLLSsNAFIb/sRexBREF3Q4IXShNLxuh20ILgpuC3bfppE1JMmFmWuhb+A4+iitfwr1P4NY/6egimybM4Tv/uc0JAXCNLwgcnxueIwtc0TvyGc5x77lG/cFznTzy3EAbz56b1F89t/AI5bnNjm/sIOoX9Dp49ywg8en5DJf49lyj/uO5DinuPDdwK548N6m/eG5hLlLPbXTEx9iohVMruTzIONRZpDNnQ6NUZjfa2W6hzdR6lyxMVa76c2VsrDM5CPrV0FRlyvyNsfv10LlIRkancsJ5Kkm0zI3eqtAFG+fyUa8XeT0IdYoxDD/QAo52xYWXONDGCKGRISqtg6Vf5Cl6Fhuqhdb9z5sxssYOCTuZk9mn4nNGii5x6UkMEKB/smpaRorK6jYWe95uSNVxI8ljWJGSJn4/xZsnZIm8jG2phNQDzimqcv5oPb5RJT8oZ6e/EiyIwgAAAHicbcFBEoIwDAXQ/JoWQTxkLBllrI2TFvT4LtzyHgX6m+jYjIATGBEJA84YMeGCGVeK4m4fbrJrelmTNbPrYrzVxQYtZX03HV1zl3ovyl2/PWWpWUuwZ7z51h5EP3hlGDkAAAA=) format("woff"),url(data:font/ttf;base64,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aW9uIDEuMHNjcmVlbnNob3RzLWljb25HZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQBDAHIAZQBhAHQAZQBkACAAYgB5ACAAaQBjAG8AbgBmAG8AbgB0AHMAYwByAGUAZQBuAHMAaABvAHQAcwAtAGkAYwBvAG4AUgBlAGcAdQBsAGEAcgBzAGMAcgBlAGUAbgBzAGgAbwB0AHMALQBpAGMAbwBuAHMAYwByAGUAZQBuAHMAaABvAHQAcwAtAGkAYwBvAG4AVgBlAHIAcwBpAG8AbgAgADEALgAwAHMAYwByAGUAZQBuAHMAaABvAHQAcwAtAGkAYwBvAG4ARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0ABWFycm93BHNhdmUGbW9zYWljBHJlZG8EdW5kbwdlbGxpcHNlCXJlY3RhbmdsZQR0ZXh0BmNhbmNlbAJvawVicnVzaAAA) format("truetype")}[class^=icon-],[class*=" icon-"]{font-family:screenshots-icon!important;font-style:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-ok:before{content:"\e001"}.icon-cancel:before{content:"\e002"}.icon-save:before{content:"\e003"}.icon-redo:before{content:"\e004"}.icon-undo:before{content:"\e005"}.icon-mosaic:before{content:"\e006"}.icon-text:before{content:"\e007"}.icon-brush:before{content:"\e008"}.icon-arrow:before{content:"\e009"}.icon-ellipse:before{content:"\e00a"}.icon-rectangle:before{content:"\e00b"}
@@ -0,0 +1,13 @@
1
+ import { ReactElement } from 'react';
2
+ import { Lang } from '../zh_CN';
3
+ import '../icons/iconfont.less';
4
+ import './screenshots.less';
5
+ export interface ScreenshotsProps {
6
+ url?: string;
7
+ width: number;
8
+ height: number;
9
+ lang?: Partial<Lang>;
10
+ className?: string;
11
+ [key: string]: unknown;
12
+ }
13
+ export default function Screenshots({ url, width, height, lang, className, ...props }: ScreenshotsProps): ReactElement;
@@ -0,0 +1,2 @@
1
+ import { Point, Bounds } from '../types';
2
+ export default function getBoundsByPoints({ x: x1, y: y1 }: Point, { x: x2, y: y2 }: Point, width: number, height: number): Bounds;
@@ -0,0 +1,3 @@
1
+ import { ReactElement } from 'react';
2
+ import './index.less';
3
+ export default function ScreenshotsBackground(): ReactElement | null;
@@ -0,0 +1,11 @@
1
+ import { ReactElement, ReactNode } from 'react';
2
+ import './index.less';
3
+ export interface ScreenshotsButtonProps {
4
+ title: string;
5
+ icon: string;
6
+ checked?: boolean;
7
+ disabled?: boolean;
8
+ option?: ReactNode;
9
+ onClick?: (e: PointerEvent) => unknown;
10
+ }
11
+ export default function ScreenshotsButton({ title, icon, checked, disabled, option, onClick }: ScreenshotsButtonProps): ReactElement;
@@ -0,0 +1,2 @@
1
+ import { Bounds, Point } from '../types';
2
+ export default function getBoundsByPoints({ x: x1, y: y1 }: Point, { x: x2, y: y2 }: Point, bounds: Bounds, width: number, height: number, resizeOrMove: string): Bounds;
@@ -0,0 +1,2 @@
1
+ import { Point, Bounds } from '../types';
2
+ export default function getBoundsByPoints(e: MouseEvent, resizeOrMove: string, point: Point, bounds: Bounds): Point[];
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import './index.less';
3
+ export declare enum ResizePoints {
4
+ ResizeTop = "top",
5
+ ResizetopRight = "top-right",
6
+ ResizeRight = "right",
7
+ ResizeRightBottom = "right-bottom",
8
+ ResizeBottom = "bottom",
9
+ ResizeBottomLeft = "bottom-left",
10
+ ResizeLeft = "left",
11
+ ResizeLeftTop = "left-top",
12
+ Move = "move"
13
+ }
14
+ declare const _default: React.ForwardRefExoticComponent<React.RefAttributes<CanvasRenderingContext2D>>;
15
+ export default _default;
@@ -0,0 +1,2 @@
1
+ import { Bounds, History } from '../types';
2
+ export default function isPointInDraw(bounds: Bounds, canvas: HTMLCanvasElement | null, history: History, e: MouseEvent): false | import("../types").HistoryItem<any, any> | undefined;
@@ -0,0 +1,7 @@
1
+ import { ReactElement } from 'react';
2
+ import './index.less';
3
+ export interface ColorProps {
4
+ value: string;
5
+ onChange: (value: string) => void;
6
+ }
7
+ export default function ScreenshotsColor({ value, onChange }: ColorProps): ReactElement;
@@ -0,0 +1,29 @@
1
+ import React, { Dispatch, SetStateAction } from 'react';
2
+ import { EmiterRef, History, Bounds, CanvasContextRef } from './types';
3
+ import { Lang } from './zh_CN';
4
+ export interface ScreenshotsContextStore {
5
+ url?: string;
6
+ image: HTMLImageElement | null;
7
+ width: number;
8
+ height: number;
9
+ lang: Lang;
10
+ emiterRef: EmiterRef;
11
+ canvasContextRef: CanvasContextRef;
12
+ history: History;
13
+ bounds: Bounds | null;
14
+ cursor?: string;
15
+ operation?: string;
16
+ }
17
+ export interface ScreenshotsContextDispatcher {
18
+ call?: <T>(funcName: string, ...args: T[]) => void;
19
+ setHistory?: Dispatch<SetStateAction<History>>;
20
+ setBounds?: Dispatch<SetStateAction<Bounds | null>>;
21
+ setCursor?: Dispatch<SetStateAction<string | undefined>>;
22
+ setOperation?: Dispatch<SetStateAction<string | undefined>>;
23
+ }
24
+ export interface ScreenshotsContextValue {
25
+ store: ScreenshotsContextStore;
26
+ dispatcher: ScreenshotsContextDispatcher;
27
+ }
28
+ declare const _default: React.Context<ScreenshotsContextValue>;
29
+ export default _default;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import './index.less';
3
+ export interface ScreenshotsMagnifierProps {
4
+ x: number;
5
+ y: number;
6
+ }
7
+ export default function ScreenshotsMagnifier({ x, y }: ScreenshotsMagnifierProps): JSX.Element;
@@ -0,0 +1,5 @@
1
+ import React, { ReactElement } from 'react';
2
+ import './index.less';
3
+ import { Bounds } from '../types';
4
+ export declare const ScreenshotsOperationsCtx: React.Context<Bounds | null>;
5
+ export default function ScreenshotsOperations(): ReactElement | null;
@@ -0,0 +1,14 @@
1
+ import { ReactElement, ReactNode } from 'react';
2
+ import { Point } from '../types';
3
+ import './index.less';
4
+ export interface ScreenshotsOptionProps {
5
+ open?: boolean;
6
+ content?: ReactNode;
7
+ children: ReactElement;
8
+ }
9
+ export declare type Position = Point;
10
+ export declare enum Placement {
11
+ Bottom = "bottom",
12
+ Top = "top"
13
+ }
14
+ export default function ScreenshotsOption({ open, content, children }: ScreenshotsOptionProps): ReactElement;
@@ -0,0 +1,7 @@
1
+ import { ReactElement } from 'react';
2
+ import './index.less';
3
+ export interface SizeProps {
4
+ value: number;
5
+ onChange: (value: number) => void;
6
+ }
7
+ export default function ScreenshotsSize({ value, onChange }: SizeProps): ReactElement;
@@ -0,0 +1,9 @@
1
+ import { ReactElement } from 'react';
2
+ import './index.less';
3
+ export interface SizeColorProps {
4
+ size: number;
5
+ color: string;
6
+ onSizeChange: (value: number) => void;
7
+ onColorChange: (value: string) => void;
8
+ }
9
+ export default function ScreenshotsSizeColor({ size, color, onSizeChange, onColorChange }: SizeColorProps): ReactElement;
@@ -0,0 +1,17 @@
1
+ export interface SizeInfo {
2
+ sizingStyle: string;
3
+ paddingSize: number;
4
+ borderSize: number;
5
+ boxSizing: string;
6
+ }
7
+ export interface Size {
8
+ width: number;
9
+ height: number;
10
+ }
11
+ export declare function getComputedSizeInfo(node: HTMLElement): {
12
+ sizingStyle: string;
13
+ paddingSize: number;
14
+ borderSize: number;
15
+ boxSizing: string;
16
+ };
17
+ export default function calculateNodeSize(textarea: HTMLTextAreaElement, value: string, maxWidth: number, maxHeight: number): Size;
@@ -0,0 +1,14 @@
1
+ import { ReactElement, FocusEvent } from 'react';
2
+ import './index.less';
3
+ export interface TextInputProps {
4
+ x: number;
5
+ y: number;
6
+ maxWidth: number;
7
+ maxHeight: number;
8
+ size: number;
9
+ color: string;
10
+ value: string;
11
+ onChange: (value: string) => unknown;
12
+ onBlur: (e: FocusEvent<HTMLTextAreaElement>) => unknown;
13
+ }
14
+ export default function ScreenshotsTextarea({ x, y, maxWidth, maxHeight, size, color, value, onChange, onBlur }: TextInputProps): ReactElement;
@@ -0,0 +1,2 @@
1
+ declare const _default: number;
2
+ export default _default;
@@ -0,0 +1,3 @@
1
+ export { Bounds } from './types';
2
+ export { Lang } from './zh_CN';
3
+ export { default, ScreenshotsProps } from './Screenshots';
@@ -0,0 +1,7 @@
1
+ import { Bounds } from '../types';
2
+ export interface BoundsDispatcher {
3
+ set: (bounds: Bounds) => void;
4
+ reset: () => void;
5
+ }
6
+ export declare type BoundsValueDispatcher = [Bounds | null, BoundsDispatcher];
7
+ export default function useBounds(): BoundsValueDispatcher;
@@ -0,0 +1,2 @@
1
+ export declare type CallDispatcher = <T extends unknown[]>(funcName: string, ...args: T) => void;
2
+ export default function useCall(): CallDispatcher;
@@ -0,0 +1,2 @@
1
+ import { CanvasContextRef } from '../types';
2
+ export default function useCanvasContextRef(): CanvasContextRef;
@@ -0,0 +1 @@
1
+ export default function useCanvasMousedown(onMousedown: (e: MouseEvent) => unknown): void;
@@ -0,0 +1 @@
1
+ export default function useCanvasMousemove(onMousemove: (e: MouseEvent) => unknown): void;
@@ -0,0 +1 @@
1
+ export default function useCanvasMouseup(onMouseup: (e: MouseEvent) => unknown): void;
@@ -0,0 +1,6 @@
1
+ export interface CursorDispatcher {
2
+ set: (cursor: string) => void;
3
+ reset: () => void;
4
+ }
5
+ export declare type CursorValueDispatcher = [string | undefined, CursorDispatcher];
6
+ export default function useCursor(): CursorValueDispatcher;
@@ -0,0 +1,2 @@
1
+ import { ScreenshotsContextDispatcher } from '../ScreenshotsContext';
2
+ export default function useDispatcher(): ScreenshotsContextDispatcher;
@@ -0,0 +1,2 @@
1
+ import { HistoryItemSource } from '../types';
2
+ export default function useDrawSelect(onDrawSelect: (action: HistoryItemSource<unknown, unknown>, e: MouseEvent) => unknown): void;
@@ -0,0 +1,8 @@
1
+ import { EmiterListener } from '../types';
2
+ export interface EmiterDispatcher {
3
+ on: (event: string, listener: EmiterListener) => void;
4
+ off: (event: string, listener: EmiterListener) => void;
5
+ emit: (event: string, ...args: unknown[]) => void;
6
+ reset: () => void;
7
+ }
8
+ export default function useEmiter(): EmiterDispatcher;
@@ -0,0 +1,16 @@
1
+ import { History, HistoryItem } from '../types';
2
+ export interface HistoryValue extends History {
3
+ top?: HistoryItem<unknown, unknown>;
4
+ }
5
+ export interface HistoryDispatcher {
6
+ push: <S, E>(action: HistoryItem<S, E>) => void;
7
+ pop: () => void;
8
+ undo: () => void;
9
+ redo: () => void;
10
+ set: (history: History) => void;
11
+ select: <S, E>(action: HistoryItem<S, E>) => void;
12
+ clearSelect: () => void;
13
+ reset: () => void;
14
+ }
15
+ export declare type HistoryValueDispatcher = [HistoryValue, HistoryDispatcher];
16
+ export default function useHistory(): HistoryValueDispatcher;
@@ -0,0 +1,2 @@
1
+ import { Lang } from '../zh_CN';
2
+ export default function useLang(): Lang;
@@ -0,0 +1,6 @@
1
+ export interface OperationDispatcher {
2
+ set: (operation: string) => void;
3
+ reset: () => void;
4
+ }
5
+ export declare type OperationValueDispatcher = [string | undefined, OperationDispatcher];
6
+ export default function useOperation(): OperationValueDispatcher;
@@ -0,0 +1,2 @@
1
+ export declare type ResetDispatcher = () => void;
2
+ export default function useReset(): ResetDispatcher;
@@ -0,0 +1,2 @@
1
+ import { ScreenshotsContextStore } from '../ScreenshotsContext';
2
+ export default function useStore(): ScreenshotsContextStore;
@@ -0,0 +1,13 @@
1
+ import { ReactElement } from 'react';
2
+ import './screenshots.less';
3
+ import './icons/iconfont.less';
4
+ import { Lang } from './zh_CN';
5
+ export interface ScreenshotsProps {
6
+ url?: string;
7
+ width: number;
8
+ height: number;
9
+ lang?: Partial<Lang>;
10
+ className?: string;
11
+ [key: string]: unknown;
12
+ }
13
+ export default function Screenshots({ url, width, height, lang, className, ...props }: ScreenshotsProps): ReactElement;
@@ -0,0 +1,11 @@
1
+ import { ArrowData, ArrowEditData } from '.';
2
+ import { HistoryItemSource } from '../../types';
3
+ export declare function getEditedArrowData(action: HistoryItemSource<ArrowData, ArrowEditData>): {
4
+ x1: number;
5
+ x2: number;
6
+ y1: number;
7
+ y2: number;
8
+ size: number;
9
+ color: string;
10
+ };
11
+ export default function draw(ctx: CanvasRenderingContext2D, action: HistoryItemSource<ArrowData, ArrowEditData>): void;
@@ -0,0 +1,22 @@
1
+ import { ReactElement } from 'react';
2
+ export interface ArrowData {
3
+ size: number;
4
+ color: string;
5
+ x1: number;
6
+ x2: number;
7
+ y1: number;
8
+ y2: number;
9
+ }
10
+ export declare enum ArrowEditType {
11
+ Move = 0,
12
+ MoveStart = 1,
13
+ MoveEnd = 2
14
+ }
15
+ export interface ArrowEditData {
16
+ type: ArrowEditType;
17
+ x1: number;
18
+ x2: number;
19
+ y1: number;
20
+ y2: number;
21
+ }
22
+ export default function Arrow(): ReactElement;
@@ -0,0 +1,3 @@
1
+ import { BrushData, BrushEditData } from '.';
2
+ import { HistoryItemSource } from '../../types';
3
+ export default function draw(ctx: CanvasRenderingContext2D, action: HistoryItemSource<BrushData, BrushEditData>): void;
@@ -0,0 +1,14 @@
1
+ import { ReactElement } from 'react';
2
+ import { Point } from '../../types';
3
+ export interface BrushData {
4
+ size: number;
5
+ color: string;
6
+ points: Point[];
7
+ }
8
+ export interface BrushEditData {
9
+ x1: number;
10
+ y1: number;
11
+ x2: number;
12
+ y2: number;
13
+ }
14
+ export default function Brush(): ReactElement;
@@ -0,0 +1,2 @@
1
+ import { ReactElement } from 'react';
2
+ export default function Cancel(): ReactElement;
@@ -0,0 +1,11 @@
1
+ import { EllipseData, EllipseEditData } from '.';
2
+ import { HistoryItemSource } from '../../types';
3
+ export declare function getEditedEllipseData(action: HistoryItemSource<EllipseData, EllipseEditData>): {
4
+ x1: number;
5
+ x2: number;
6
+ y1: number;
7
+ y2: number;
8
+ size: number;
9
+ color: string;
10
+ };
11
+ export default function draw(ctx: CanvasRenderingContext2D, action: HistoryItemSource<EllipseData, EllipseEditData>): void;
@@ -0,0 +1,28 @@
1
+ import { ReactElement } from 'react';
2
+ export interface EllipseData {
3
+ size: number;
4
+ color: string;
5
+ x1: number;
6
+ y1: number;
7
+ x2: number;
8
+ y2: number;
9
+ }
10
+ export declare enum EllipseEditType {
11
+ Move = 0,
12
+ ResizeTop = 1,
13
+ ResizeRightTop = 2,
14
+ ResizeRight = 3,
15
+ ResizeRightBottom = 4,
16
+ ResizeBottom = 5,
17
+ ResizeLeftBottom = 6,
18
+ ResizeLeft = 7,
19
+ ResizeLeftTop = 8
20
+ }
21
+ export interface EllipseEditData {
22
+ type: EllipseEditType;
23
+ x1: number;
24
+ y1: number;
25
+ x2: number;
26
+ y2: number;
27
+ }
28
+ export default function Ellipse(): ReactElement;
@@ -0,0 +1,11 @@
1
+ import { ReactElement } from 'react';
2
+ export interface MosaicTile {
3
+ x: number;
4
+ y: number;
5
+ color: number[];
6
+ }
7
+ export interface MosaicData {
8
+ size: number;
9
+ tiles: MosaicTile[];
10
+ }
11
+ export default function Mosaic(): ReactElement;
@@ -0,0 +1,2 @@
1
+ import { ReactElement } from 'react';
2
+ export default function Ok(): ReactElement;
@@ -0,0 +1,11 @@
1
+ import { RectangleData, RectangleEditData } from '.';
2
+ import { HistoryItemSource } from '../../types';
3
+ export declare function getEditedRectangleData(action: HistoryItemSource<RectangleData, RectangleEditData>): {
4
+ x1: number;
5
+ x2: number;
6
+ y1: number;
7
+ y2: number;
8
+ size: number;
9
+ color: string;
10
+ };
11
+ export default function draw(ctx: CanvasRenderingContext2D, action: HistoryItemSource<RectangleData, RectangleEditData>): void;
@@ -0,0 +1,28 @@
1
+ import { ReactElement } from 'react';
2
+ export interface RectangleData {
3
+ size: number;
4
+ color: string;
5
+ x1: number;
6
+ y1: number;
7
+ x2: number;
8
+ y2: number;
9
+ }
10
+ export declare enum RectangleEditType {
11
+ Move = 0,
12
+ ResizeTop = 1,
13
+ ResizeRightTop = 2,
14
+ ResizeRight = 3,
15
+ ResizeRightBottom = 4,
16
+ ResizeBottom = 5,
17
+ ResizeLeftBottom = 6,
18
+ ResizeLeft = 7,
19
+ ResizeLeftTop = 8
20
+ }
21
+ export interface RectangleEditData {
22
+ type: RectangleEditType;
23
+ x1: number;
24
+ y1: number;
25
+ x2: number;
26
+ y2: number;
27
+ }
28
+ export default function Rectangle(): ReactElement;
@@ -0,0 +1,2 @@
1
+ import { ReactElement } from 'react';
2
+ export default function Redo(): ReactElement;
@@ -0,0 +1,2 @@
1
+ import { ReactElement } from 'react';
2
+ export default function Save(): ReactElement;
@@ -0,0 +1,22 @@
1
+ import { ReactElement } from 'react';
2
+ export interface TextData {
3
+ size: number;
4
+ color: string;
5
+ fontFamily: string;
6
+ x: number;
7
+ y: number;
8
+ text: string;
9
+ }
10
+ export interface TextEditData {
11
+ x1: number;
12
+ x2: number;
13
+ y1: number;
14
+ y2: number;
15
+ }
16
+ export interface TextareaBounds {
17
+ x: number;
18
+ y: number;
19
+ maxWidth: number;
20
+ maxHeight: number;
21
+ }
22
+ export default function Text(): ReactElement;
@@ -0,0 +1,2 @@
1
+ import { ReactElement } from 'react';
2
+ export default function Undo(): ReactElement;
@@ -0,0 +1,3 @@
1
+ import Rectangle from './Rectangle';
2
+ declare const _default: (string | typeof Rectangle)[];
3
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import { HistoryItemSource, Point } from '../types';
2
+ export declare function drawDragCircle(ctx: CanvasRenderingContext2D, x: number, y: number): void;
3
+ export declare function isHit<S, E>(ctx: CanvasRenderingContext2D, action: HistoryItemSource<S, E>, point: Point): boolean;
4
+ export declare function isHitCircle(canvas: HTMLCanvasElement | null, e: MouseEvent, point: Point): boolean;
@@ -0,0 +1,39 @@
1
+ import { MutableRefObject } from 'react';
2
+ export declare type CanvasContextRef = MutableRefObject<CanvasRenderingContext2D | null>;
3
+ export declare type EmiterListener = (...args: any) => unknown;
4
+ export declare type Emiter = Record<string, EmiterListener[]>;
5
+ export declare type EmiterRef = MutableRefObject<Emiter>;
6
+ export interface Point {
7
+ x: number;
8
+ y: number;
9
+ }
10
+ export declare enum HistoryItemType {
11
+ Edit = 0,
12
+ Source = 1
13
+ }
14
+ export interface HistoryItemEdit<E, S> {
15
+ type: HistoryItemType.Edit;
16
+ data: E;
17
+ source: HistoryItemSource<S, E>;
18
+ }
19
+ export interface HistoryItemSource<S, E> {
20
+ name: string;
21
+ type: HistoryItemType.Source;
22
+ data: S;
23
+ isSelected?: boolean;
24
+ editHistory: HistoryItemEdit<E, S>[];
25
+ draw: (ctx: CanvasRenderingContext2D, action: HistoryItemSource<S, E>) => void;
26
+ isHit?: (ctx: CanvasRenderingContext2D, action: HistoryItemSource<S, E>, point: Point) => boolean;
27
+ }
28
+ export declare type HistoryItem<S, E> = HistoryItemEdit<E, S> | HistoryItemSource<S, E>;
29
+ export interface History {
30
+ index: number;
31
+ stack: HistoryItem<any, any>[];
32
+ }
33
+ export interface Bounds {
34
+ x: number;
35
+ y: number;
36
+ width: number;
37
+ height: number;
38
+ }
39
+ export declare type Position = Point;
@@ -0,0 +1 @@
1
+ export default function useGetLoadedImage(url?: string): HTMLImageElement | null;
@@ -0,0 +1,16 @@
1
+ export interface Lang {
2
+ magnifier_position_label: string;
3
+ operation_ok_title: string;
4
+ operation_cancel_title: string;
5
+ operation_save_title: string;
6
+ operation_redo_title: string;
7
+ operation_undo_title: string;
8
+ operation_mosaic_title: string;
9
+ operation_text_title: string;
10
+ operation_brush_title: string;
11
+ operation_arrow_title: string;
12
+ operation_ellipse_title: string;
13
+ operation_rectangle_title: string;
14
+ }
15
+ declare const zhCN: Lang;
16
+ export default zhCN;