@webiny/ui 5.34.8 → 5.35.0-beta.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 (382) hide show
  1. package/Accordion/Accordion.js +4 -14
  2. package/Accordion/Accordion.js.map +1 -1
  3. package/Accordion/Accordion.stories.js +0 -8
  4. package/Accordion/Accordion.stories.js.map +1 -1
  5. package/Accordion/AccordionItem.d.ts +4 -1
  6. package/Accordion/AccordionItem.js +5 -26
  7. package/Accordion/AccordionItem.js.map +1 -1
  8. package/Accordion/AccordionItemActions.js +2 -10
  9. package/Accordion/AccordionItemActions.js.map +1 -1
  10. package/Accordion/index.js +0 -4
  11. package/Accordion/index.js.map +1 -1
  12. package/Alert/Alert.js +3 -10
  13. package/Alert/Alert.js.map +1 -1
  14. package/Alert/Alert.stories.js +0 -6
  15. package/Alert/Alert.stories.js.map +1 -1
  16. package/Alert/index.js +0 -2
  17. package/Alert/index.js.map +1 -1
  18. package/AutoComplete/AutoComplete.js +38 -88
  19. package/AutoComplete/AutoComplete.js.map +1 -1
  20. package/AutoComplete/AutoComplete.stories.js +0 -7
  21. package/AutoComplete/AutoComplete.stories.js.map +1 -1
  22. package/AutoComplete/MultiAutoComplete.js +52 -128
  23. package/AutoComplete/MultiAutoComplete.js.map +1 -1
  24. package/AutoComplete/MultiAutoComplete.stories.js +0 -8
  25. package/AutoComplete/MultiAutoComplete.stories.js.map +1 -1
  26. package/AutoComplete/index.js +0 -4
  27. package/AutoComplete/index.js.map +1 -1
  28. package/AutoComplete/styles.js +0 -2
  29. package/AutoComplete/styles.js.map +1 -1
  30. package/AutoComplete/utils.js +0 -8
  31. package/AutoComplete/utils.js.map +1 -1
  32. package/Avatar/Avatar.js +7 -18
  33. package/Avatar/Avatar.js.map +1 -1
  34. package/Avatar/Avatar.stories.js +0 -6
  35. package/Avatar/Avatar.stories.js.map +1 -1
  36. package/Avatar/index.js +0 -2
  37. package/Avatar/index.js.map +1 -1
  38. package/Button/Button.js +39 -59
  39. package/Button/Button.js.map +1 -1
  40. package/Button/Button.stories.js +0 -10
  41. package/Button/Button.stories.js.map +1 -1
  42. package/Button/Button.styles.js +0 -2
  43. package/Button/Button.styles.js.map +1 -1
  44. package/Button/CopyButton/CopyButton.js +2 -12
  45. package/Button/CopyButton/CopyButton.js.map +1 -1
  46. package/Button/CopyButton/CopyButton.stories.js +0 -7
  47. package/Button/CopyButton/CopyButton.stories.js.map +1 -1
  48. package/Button/IconButton/IconButton.js +6 -11
  49. package/Button/IconButton/IconButton.js.map +1 -1
  50. package/Button/IconButton/IconButton.stories.js +0 -9
  51. package/Button/IconButton/IconButton.stories.js.map +1 -1
  52. package/Button/index.js +0 -6
  53. package/Button/index.js.map +1 -1
  54. package/Carousel/Carousel.js +0 -14
  55. package/Carousel/Carousel.js.map +1 -1
  56. package/Carousel/Carouser.stories.js +0 -7
  57. package/Carousel/Carouser.stories.js.map +1 -1
  58. package/Carousel/index.js +0 -2
  59. package/Carousel/index.js.map +1 -1
  60. package/Checkbox/Checkbox.d.ts +1 -0
  61. package/Checkbox/Checkbox.js +13 -31
  62. package/Checkbox/Checkbox.js.map +1 -1
  63. package/Checkbox/Checkbox.stories.js +0 -8
  64. package/Checkbox/Checkbox.stories.js.map +1 -1
  65. package/Checkbox/Checkbox.styles.js +0 -2
  66. package/Checkbox/Checkbox.styles.js.map +1 -1
  67. package/Checkbox/CheckboxGroup.js +7 -24
  68. package/Checkbox/CheckboxGroup.js.map +1 -1
  69. package/Checkbox/CheckboxGroup.stories.js +2 -10
  70. package/Checkbox/CheckboxGroup.stories.js.map +1 -1
  71. package/Checkbox/index.js +0 -3
  72. package/Checkbox/index.js.map +1 -1
  73. package/Chips/Chip.js +1 -8
  74. package/Chips/Chip.js.map +1 -1
  75. package/Chips/Chips.js +3 -13
  76. package/Chips/Chips.js.map +1 -1
  77. package/Chips/Chips.stories.js +0 -8
  78. package/Chips/Chips.stories.js.map +1 -1
  79. package/Chips/index.js +0 -4
  80. package/Chips/index.js.map +1 -1
  81. package/Chips/styles.js +0 -2
  82. package/Chips/styles.js.map +1 -1
  83. package/CodeEditor/CodeEditor.js +8 -36
  84. package/CodeEditor/CodeEditor.js.map +1 -1
  85. package/CodeEditor/CodeEditor.stories.js +0 -10
  86. package/CodeEditor/CodeEditor.stories.js.map +1 -1
  87. package/CodeEditor/index.js +0 -2
  88. package/CodeEditor/index.js.map +1 -1
  89. package/ColorPicker/ColorPicker.js +7 -31
  90. package/ColorPicker/ColorPicker.js.map +1 -1
  91. package/ColorPicker/ColorPicker.stories.js +0 -8
  92. package/ColorPicker/ColorPicker.stories.js.map +1 -1
  93. package/ColorPicker/index.js +0 -2
  94. package/ColorPicker/index.js.map +1 -1
  95. package/ConfirmationDialog/ConfirmationDialog.js +33 -65
  96. package/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
  97. package/ConfirmationDialog/ConfirmationDialog.stories.js +0 -7
  98. package/ConfirmationDialog/ConfirmationDialog.stories.js.map +1 -1
  99. package/ConfirmationDialog/index.js +0 -4
  100. package/ConfirmationDialog/index.js.map +1 -1
  101. package/ConfirmationDialog/withConfirmation.js +0 -5
  102. package/ConfirmationDialog/withConfirmation.js.map +1 -1
  103. package/DataTable/DataTable.d.ts +14 -1
  104. package/DataTable/DataTable.js +60 -45
  105. package/DataTable/DataTable.js.map +1 -1
  106. package/DataTable/DataTable.stories.js +0 -6
  107. package/DataTable/DataTable.stories.js.map +1 -1
  108. package/DataTable/index.js +0 -2
  109. package/DataTable/index.js.map +1 -1
  110. package/DataTable/styled.d.ts +29 -1
  111. package/DataTable/styled.js +25 -7
  112. package/DataTable/styled.js.map +1 -1
  113. package/DelayedOnChange/DelayedOnChange.js +19 -35
  114. package/DelayedOnChange/DelayedOnChange.js.map +1 -1
  115. package/DelayedOnChange/index.js +0 -3
  116. package/DelayedOnChange/index.js.map +1 -1
  117. package/DelayedOnChange/withDelayedOnChange.js +3 -9
  118. package/DelayedOnChange/withDelayedOnChange.js.map +1 -1
  119. package/Dialog/Dialog.js +5 -40
  120. package/Dialog/Dialog.js.map +1 -1
  121. package/Dialog/Dialog.stories.js +0 -7
  122. package/Dialog/Dialog.stories.js.map +1 -1
  123. package/Dialog/index.js +0 -2
  124. package/Dialog/index.js.map +1 -1
  125. package/Drawer/Drawer.js +0 -9
  126. package/Drawer/Drawer.js.map +1 -1
  127. package/Drawer/Drawer.stories.js +0 -8
  128. package/Drawer/Drawer.stories.js.map +1 -1
  129. package/Drawer/index.js +0 -2
  130. package/Drawer/index.js.map +1 -1
  131. package/DynamicFieldset/Fieldset.js +7 -34
  132. package/DynamicFieldset/Fieldset.js.map +1 -1
  133. package/DynamicFieldset/index.js +0 -2
  134. package/DynamicFieldset/index.js.map +1 -1
  135. package/Elevation/Elevation.js +0 -5
  136. package/Elevation/Elevation.js.map +1 -1
  137. package/Elevation/Elevation.stories.js +0 -8
  138. package/Elevation/Elevation.stories.js.map +1 -1
  139. package/Elevation/index.js +0 -2
  140. package/Elevation/index.js.map +1 -1
  141. package/FormElementMessage/FormElementMessage.js +0 -5
  142. package/FormElementMessage/FormElementMessage.js.map +1 -1
  143. package/FormElementMessage/index.js +0 -1
  144. package/FormElementMessage/index.js.map +1 -1
  145. package/FullName/FullName.js +0 -7
  146. package/FullName/FullName.js.map +1 -1
  147. package/FullName/index.js +0 -2
  148. package/FullName/index.js.map +1 -1
  149. package/Grid/Grid.js +1 -9
  150. package/Grid/Grid.js.map +1 -1
  151. package/Grid/Grid.stories.js +0 -6
  152. package/Grid/Grid.stories.js.map +1 -1
  153. package/Grid/index.js +0 -2
  154. package/Grid/index.js.map +1 -1
  155. package/Helpers/ClassNames.js +0 -9
  156. package/Helpers/ClassNames.js.map +1 -1
  157. package/Helpers/index.js +0 -1
  158. package/Helpers/index.js.map +1 -1
  159. package/Icon/Icon.js +1 -7
  160. package/Icon/Icon.js.map +1 -1
  161. package/Icon/Icon.stories.js +0 -10
  162. package/Icon/Icon.stories.js.map +1 -1
  163. package/Icon/index.js +0 -2
  164. package/Icon/index.js.map +1 -1
  165. package/Image/Image.js +0 -8
  166. package/Image/Image.js.map +1 -1
  167. package/Image/Image.stories.js +0 -7
  168. package/Image/Image.stories.js.map +1 -1
  169. package/Image/index.js +0 -2
  170. package/Image/index.js.map +1 -1
  171. package/ImageEditor/ImageEditor.js +46 -107
  172. package/ImageEditor/ImageEditor.js.map +1 -1
  173. package/ImageEditor/index.js +0 -2
  174. package/ImageEditor/index.js.map +1 -1
  175. package/ImageEditor/toolbar/crop.js +1 -16
  176. package/ImageEditor/toolbar/crop.js.map +1 -1
  177. package/ImageEditor/toolbar/filter.js +11 -36
  178. package/ImageEditor/toolbar/filter.js.map +1 -1
  179. package/ImageEditor/toolbar/flip.js +0 -17
  180. package/ImageEditor/toolbar/flip.js.map +1 -1
  181. package/ImageEditor/toolbar/icons/index.js +0 -8
  182. package/ImageEditor/toolbar/icons/index.js.map +1 -1
  183. package/ImageEditor/toolbar/index.js +0 -5
  184. package/ImageEditor/toolbar/index.js.map +1 -1
  185. package/ImageEditor/toolbar/rotate.js +8 -43
  186. package/ImageEditor/toolbar/rotate.js.map +1 -1
  187. package/ImageUpload/Image.js +10 -34
  188. package/ImageUpload/Image.js.map +1 -1
  189. package/ImageUpload/ImageEditorDialog.js +11 -33
  190. package/ImageUpload/ImageEditorDialog.js.map +1 -1
  191. package/ImageUpload/MultiImageUpload.js +111 -175
  192. package/ImageUpload/MultiImageUpload.js.map +1 -1
  193. package/ImageUpload/MultiImageUpload.stories.js +0 -8
  194. package/ImageUpload/MultiImageUpload.stories.js.map +1 -1
  195. package/ImageUpload/SingleImageUpload.js +38 -79
  196. package/ImageUpload/SingleImageUpload.js.map +1 -1
  197. package/ImageUpload/SingleImageUpload.stories.js +0 -8
  198. package/ImageUpload/SingleImageUpload.stories.js.map +1 -1
  199. package/ImageUpload/index.js +0 -5
  200. package/ImageUpload/index.js.map +1 -1
  201. package/ImageUpload/styled.d.ts +27 -17
  202. package/ImageUpload/styled.js +0 -5
  203. package/ImageUpload/styled.js.map +1 -1
  204. package/Input/Input.js +34 -60
  205. package/Input/Input.js.map +1 -1
  206. package/Input/Input.stories.js +0 -13
  207. package/Input/Input.stories.js.map +1 -1
  208. package/Input/__tests__/Input.test.js +4 -30
  209. package/Input/__tests__/Input.test.js.map +1 -1
  210. package/Input/index.js +0 -2
  211. package/Input/index.js.map +1 -1
  212. package/List/CollapsibleList/CollapsibleList.stories.js +0 -8
  213. package/List/CollapsibleList/CollapsibleList.stories.js.map +1 -1
  214. package/List/CollapsibleList/index.js +0 -6
  215. package/List/CollapsibleList/index.js.map +1 -1
  216. package/List/DataList/DataList.js +7 -45
  217. package/List/DataList/DataList.js.map +1 -1
  218. package/List/DataList/DataList.stories.js +2 -10
  219. package/List/DataList/DataList.stories.js.map +1 -1
  220. package/List/DataList/DataListModalOverlay/DataListModalOverlay.d.ts +8 -6
  221. package/List/DataList/DataListModalOverlay/DataListModalOverlay.js +8 -18
  222. package/List/DataList/DataListModalOverlay/DataListModalOverlay.js.map +1 -1
  223. package/List/DataList/DataListModalOverlay/DataListModalOverlayAction.js +3 -14
  224. package/List/DataList/DataListModalOverlay/DataListModalOverlayAction.js.map +1 -1
  225. package/List/DataList/DataListModalOverlay/DataListModalOverlayContext.js +3 -12
  226. package/List/DataList/DataListModalOverlay/DataListModalOverlayContext.js.map +1 -1
  227. package/List/DataList/DataListModalOverlay/index.js +0 -3
  228. package/List/DataList/DataListModalOverlay/index.js.map +1 -1
  229. package/List/DataList/DataListWithSections.js +4 -48
  230. package/List/DataList/DataListWithSections.js.map +1 -1
  231. package/List/DataList/Loader.js +0 -7
  232. package/List/DataList/Loader.js.map +1 -1
  233. package/List/DataList/NoData.js +0 -7
  234. package/List/DataList/NoData.js.map +1 -1
  235. package/List/DataList/icons/index.js +0 -29
  236. package/List/DataList/icons/index.js.map +1 -1
  237. package/List/DataList/index.js +0 -6
  238. package/List/DataList/index.js.map +1 -1
  239. package/List/List.js +0 -39
  240. package/List/List.js.map +1 -1
  241. package/List/List.stories.js +0 -12
  242. package/List/List.stories.js.map +1 -1
  243. package/List/icons/index.js +0 -3
  244. package/List/icons/index.js.map +1 -1
  245. package/List/index.js +0 -4
  246. package/List/index.js.map +1 -1
  247. package/Menu/Menu.js +2 -28
  248. package/Menu/Menu.js.map +1 -1
  249. package/Menu/Menu.stories.js +0 -7
  250. package/Menu/Menu.stories.js.map +1 -1
  251. package/Menu/index.js +0 -2
  252. package/Menu/index.js.map +1 -1
  253. package/Mosaic/Mosaic.js +3 -7
  254. package/Mosaic/Mosaic.js.map +1 -1
  255. package/Mosaic/Mosaic.stories.js +0 -6
  256. package/Mosaic/Mosaic.stories.js.map +1 -1
  257. package/Mosaic/index.js +0 -2
  258. package/Mosaic/index.js.map +1 -1
  259. package/Progress/CircularProgress.js +6 -14
  260. package/Progress/CircularProgress.js.map +1 -1
  261. package/Progress/index.js +0 -2
  262. package/Progress/index.js.map +1 -1
  263. package/Radio/Radio.js +9 -28
  264. package/Radio/Radio.js.map +1 -1
  265. package/Radio/Radio.styles.js +0 -2
  266. package/Radio/Radio.styles.js.map +1 -1
  267. package/Radio/RadioGroup.js +5 -21
  268. package/Radio/RadioGroup.js.map +1 -1
  269. package/Radio/RadioGroup.stories.js +2 -10
  270. package/Radio/RadioGroup.stories.js.map +1 -1
  271. package/Radio/index.js +0 -3
  272. package/Radio/index.js.map +1 -1
  273. package/RichTextEditor/RichTextEditor.js +30 -64
  274. package/RichTextEditor/RichTextEditor.js.map +1 -1
  275. package/RichTextEditor/RichTextEditor.stories.js +0 -7
  276. package/RichTextEditor/RichTextEditor.stories.js.map +1 -1
  277. package/RichTextEditor/createPropsFromConfig.js +0 -4
  278. package/RichTextEditor/createPropsFromConfig.js.map +1 -1
  279. package/RichTextEditor/index.js +0 -3
  280. package/RichTextEditor/index.js.map +1 -1
  281. package/Ripple/Ripple.js +0 -6
  282. package/Ripple/Ripple.js.map +1 -1
  283. package/Ripple/Ripple.stories.js +0 -12
  284. package/Ripple/Ripple.stories.js.map +1 -1
  285. package/Ripple/index.js +0 -2
  286. package/Ripple/index.js.map +1 -1
  287. package/Scrollbar/Scrollbar.js +0 -5
  288. package/Scrollbar/Scrollbar.js.map +1 -1
  289. package/Scrollbar/Scrollbar.stories.js +0 -6
  290. package/Scrollbar/Scrollbar.stories.js.map +1 -1
  291. package/Scrollbar/index.js +0 -2
  292. package/Scrollbar/index.js.map +1 -1
  293. package/Section/Section.stories.js +0 -7
  294. package/Section/Section.stories.js.map +1 -1
  295. package/Section/index.js +2 -12
  296. package/Section/index.js.map +1 -1
  297. package/Select/Select.js +9 -32
  298. package/Select/Select.js.map +1 -1
  299. package/Select/Select.stories.js +0 -8
  300. package/Select/Select.stories.js.map +1 -1
  301. package/Select/index.js +0 -2
  302. package/Select/index.js.map +1 -1
  303. package/Skeleton/Skeleton.d.ts +6 -2
  304. package/Skeleton/Skeleton.js +8 -11
  305. package/Skeleton/Skeleton.js.map +1 -1
  306. package/Skeleton/Skeleton.stories.js +0 -6
  307. package/Skeleton/Skeleton.stories.js.map +1 -1
  308. package/Skeleton/index.js +0 -2
  309. package/Skeleton/index.js.map +1 -1
  310. package/Slider/Slider.js +7 -29
  311. package/Slider/Slider.js.map +1 -1
  312. package/Slider/Slider.stories.js +1 -9
  313. package/Slider/Slider.stories.js.map +1 -1
  314. package/Slider/index.js +0 -2
  315. package/Slider/index.js.map +1 -1
  316. package/Snackbar/Snackbar.js +0 -19
  317. package/Snackbar/Snackbar.js.map +1 -1
  318. package/Snackbar/Snackbar.stories.js +0 -23
  319. package/Snackbar/Snackbar.stories.js.map +1 -1
  320. package/Snackbar/index.js +0 -1
  321. package/Snackbar/index.js.map +1 -1
  322. package/Switch/Switch.js +5 -28
  323. package/Switch/Switch.js.map +1 -1
  324. package/Switch/Switch.stories.js +0 -8
  325. package/Switch/Switch.stories.js.map +1 -1
  326. package/Switch/index.js +0 -2
  327. package/Switch/index.js.map +1 -1
  328. package/Tabs/Tab.js +0 -9
  329. package/Tabs/Tab.js.map +1 -1
  330. package/Tabs/Tabs.js +15 -29
  331. package/Tabs/Tabs.js.map +1 -1
  332. package/Tabs/Tabs.stories.js +0 -10
  333. package/Tabs/Tabs.stories.js.map +1 -1
  334. package/Tabs/index.js +0 -4
  335. package/Tabs/index.js.map +1 -1
  336. package/Tags/Tags.js +13 -37
  337. package/Tags/Tags.js.map +1 -1
  338. package/Tags/Tags.stories.js +0 -8
  339. package/Tags/Tags.stories.js.map +1 -1
  340. package/Tags/index.js +0 -2
  341. package/Tags/index.js.map +1 -1
  342. package/Tooltip/Tooltip.js +0 -19
  343. package/Tooltip/Tooltip.js.map +1 -1
  344. package/Tooltip/Tooltip.stories.js +0 -6
  345. package/Tooltip/Tooltip.stories.js.map +1 -1
  346. package/Tooltip/index.js +0 -2
  347. package/Tooltip/index.js.map +1 -1
  348. package/TopAppBar/TopAppBar.js +1 -8
  349. package/TopAppBar/TopAppBar.js.map +1 -1
  350. package/TopAppBar/TopAppBar.stories.js +3 -16
  351. package/TopAppBar/TopAppBar.stories.js.map +1 -1
  352. package/TopAppBar/TopAppBarActionItem.js +0 -5
  353. package/TopAppBar/TopAppBarActionItem.js.map +1 -1
  354. package/TopAppBar/TopAppBarNavigationIcon.js +0 -5
  355. package/TopAppBar/TopAppBarNavigationIcon.js.map +1 -1
  356. package/TopAppBar/TopAppBarPrimary.js +1 -8
  357. package/TopAppBar/TopAppBarPrimary.js.map +1 -1
  358. package/TopAppBar/TopAppBarSecondary.js +3 -10
  359. package/TopAppBar/TopAppBarSecondary.js.map +1 -1
  360. package/TopAppBar/TopAppBarSection.js +1 -8
  361. package/TopAppBar/TopAppBarSection.js.map +1 -1
  362. package/TopAppBar/TopAppBarTitle.js +1 -8
  363. package/TopAppBar/TopAppBarTitle.js.map +1 -1
  364. package/TopAppBar/index.js +0 -14
  365. package/TopAppBar/index.js.map +1 -1
  366. package/TopProgressBar/TopProgressBar.js +0 -5
  367. package/TopProgressBar/TopProgressBar.js.map +1 -1
  368. package/TopProgressBar/TopProgressBar.stories.js +1 -8
  369. package/TopProgressBar/TopProgressBar.stories.js.map +1 -1
  370. package/TopProgressBar/hoc/index.js +0 -2
  371. package/TopProgressBar/hoc/index.js.map +1 -1
  372. package/TopProgressBar/hoc/withTopProgressBar.js +2 -8
  373. package/TopProgressBar/hoc/withTopProgressBar.js.map +1 -1
  374. package/TopProgressBar/index.js +0 -2
  375. package/TopProgressBar/index.js.map +1 -1
  376. package/Typography/Typography.js +0 -5
  377. package/Typography/Typography.js.map +1 -1
  378. package/Typography/Typography.stories.js +0 -6
  379. package/Typography/Typography.stories.js.map +1 -1
  380. package/Typography/index.js +0 -2
  381. package/Typography/index.js.map +1 -1
  382. package/package.json +16 -15
@@ -1 +1 @@
1
- {"version":3,"names":["cropper","undefined","renderForm","textAlign","tool","name","icon","activateTool","onActivate","canvas","options","Cropper","current","cancel","destroy","apply","Promise","resolve","src","getCroppedCanvas","toDataURL","image","window","Image","ctx","getContext","onload","drawImage","width","height"],"sources":["crop.tsx"],"sourcesContent":["import React from \"react\";\nimport { ImageEditorTool } from \"./types\";\nimport { ReactComponent as CropIcon } from \"./icons/crop.svg\";\nimport { IconButton } from \"~/Button\";\nimport { Tooltip } from \"~/Tooltip\";\nimport Cropper from \"cropperjs\";\nimport \"cropperjs/dist/cropper.css\";\n\nlet cropper: Cropper | undefined = undefined;\n\nconst renderForm = () => {\n return (\n <div style={{ textAlign: \"center\" }}>\n Click and drag to crop a portion of the image. Hold Shift to persist aspect ratio.\n </div>\n );\n};\n\nconst tool: ImageEditorTool = {\n name: \"crop\",\n icon({ activateTool }) {\n return (\n <Tooltip placement={\"bottom\"} content={\"Crop\"}>\n <IconButton\n icon={<CropIcon />}\n onClick={() => activateTool(\"crop\")}\n data-testid={\"crop-item\"}\n />\n </Tooltip>\n );\n },\n renderForm,\n onActivate: ({ canvas, options }) => {\n cropper = new Cropper(canvas.current as HTMLCanvasElement, options);\n },\n cancel: () => cropper && cropper.destroy(),\n apply: ({ canvas }) => {\n return new Promise((resolve: any) => {\n if (!cropper) {\n resolve();\n return;\n }\n\n const current = canvas.current;\n const src = cropper.getCroppedCanvas().toDataURL();\n if (current) {\n const image = new window.Image();\n const ctx = current.getContext(\"2d\") as CanvasRenderingContext2D;\n image.onload = () => {\n ctx.drawImage(image, 0, 0);\n current.width = image.width;\n current.height = image.height;\n\n ctx.drawImage(image, 0, 0);\n resolve();\n };\n image.src = src;\n }\n\n cropper.destroy();\n cropper = undefined;\n });\n }\n};\n\nexport default tool;\n"],"mappings":";;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAIA,OAA4B,GAAGC,SAAnC;;AAEA,IAAMC,UAAU,GAAG,SAAbA,UAAa,GAAM;EACrB,oBACI;IAAK,KAAK,EAAE;MAAEC,SAAS,EAAE;IAAb;EAAZ,GAAqC,oFAArC,CADJ;AAKH,CAND;;AAQA,IAAMC,IAAqB,GAAG;EAC1BC,IAAI,EAAE,MADoB;EAE1BC,IAF0B,sBAEH;IAAA,IAAhBC,YAAgB,QAAhBA,YAAgB;IACnB,oBACI,6BAAC,gBAAD;MAAS,SAAS,EAAE,QAApB;MAA8B,OAAO,EAAE;IAAvC,gBACI,6BAAC,kBAAD;MACI,IAAI,eAAE,6BAAC,oBAAD,OADV;MAEI,OAAO,EAAE;QAAA,OAAMA,YAAY,CAAC,MAAD,CAAlB;MAAA,CAFb;MAGI,eAAa;IAHjB,EADJ,CADJ;EASH,CAZyB;EAa1BL,UAAU,EAAVA,UAb0B;EAc1BM,UAAU,EAAE,2BAAyB;IAAA,IAAtBC,MAAsB,SAAtBA,MAAsB;IAAA,IAAdC,OAAc,SAAdA,OAAc;IACjCV,OAAO,GAAG,IAAIW,kBAAJ,CAAYF,MAAM,CAACG,OAAnB,EAAiDF,OAAjD,CAAV;EACH,CAhByB;EAiB1BG,MAAM,EAAE;IAAA,OAAMb,OAAO,IAAIA,OAAO,CAACc,OAAR,EAAjB;EAAA,CAjBkB;EAkB1BC,KAAK,EAAE,sBAAgB;IAAA,IAAbN,MAAa,SAAbA,MAAa;IACnB,OAAO,IAAIO,OAAJ,CAAY,UAACC,OAAD,EAAkB;MACjC,IAAI,CAACjB,OAAL,EAAc;QACViB,OAAO;QACP;MACH;;MAED,IAAML,OAAO,GAAGH,MAAM,CAACG,OAAvB;MACA,IAAMM,GAAG,GAAGlB,OAAO,CAACmB,gBAAR,GAA2BC,SAA3B,EAAZ;;MACA,IAAIR,OAAJ,EAAa;QACT,IAAMS,KAAK,GAAG,IAAIC,MAAM,CAACC,KAAX,EAAd;QACA,IAAMC,GAAG,GAAGZ,OAAO,CAACa,UAAR,CAAmB,IAAnB,CAAZ;;QACAJ,KAAK,CAACK,MAAN,GAAe,YAAM;UACjBF,GAAG,CAACG,SAAJ,CAAcN,KAAd,EAAqB,CAArB,EAAwB,CAAxB;UACAT,OAAO,CAACgB,KAAR,GAAgBP,KAAK,CAACO,KAAtB;UACAhB,OAAO,CAACiB,MAAR,GAAiBR,KAAK,CAACQ,MAAvB;UAEAL,GAAG,CAACG,SAAJ,CAAcN,KAAd,EAAqB,CAArB,EAAwB,CAAxB;UACAJ,OAAO;QACV,CAPD;;QAQAI,KAAK,CAACH,GAAN,GAAYA,GAAZ;MACH;;MAEDlB,OAAO,CAACc,OAAR;MACAd,OAAO,GAAGC,SAAV;IACH,CAxBM,CAAP;EAyBH;AA5CyB,CAA9B;eA+CeG,I"}
1
+ {"version":3,"names":["cropper","undefined","renderForm","textAlign","tool","name","icon","activateTool","onActivate","canvas","options","Cropper","current","cancel","destroy","apply","Promise","resolve","src","getCroppedCanvas","toDataURL","image","window","Image","ctx","getContext","onload","drawImage","width","height"],"sources":["crop.tsx"],"sourcesContent":["import React from \"react\";\nimport { ImageEditorTool } from \"./types\";\nimport { ReactComponent as CropIcon } from \"./icons/crop.svg\";\nimport { IconButton } from \"~/Button\";\nimport { Tooltip } from \"~/Tooltip\";\nimport Cropper from \"cropperjs\";\nimport \"cropperjs/dist/cropper.css\";\n\nlet cropper: Cropper | undefined = undefined;\n\nconst renderForm = () => {\n return (\n <div style={{ textAlign: \"center\" }}>\n Click and drag to crop a portion of the image. Hold Shift to persist aspect ratio.\n </div>\n );\n};\n\nconst tool: ImageEditorTool = {\n name: \"crop\",\n icon({ activateTool }) {\n return (\n <Tooltip placement={\"bottom\"} content={\"Crop\"}>\n <IconButton\n icon={<CropIcon />}\n onClick={() => activateTool(\"crop\")}\n data-testid={\"crop-item\"}\n />\n </Tooltip>\n );\n },\n renderForm,\n onActivate: ({ canvas, options }) => {\n cropper = new Cropper(canvas.current as HTMLCanvasElement, options);\n },\n cancel: () => cropper && cropper.destroy(),\n apply: ({ canvas }) => {\n return new Promise((resolve: any) => {\n if (!cropper) {\n resolve();\n return;\n }\n\n const current = canvas.current;\n const src = cropper.getCroppedCanvas().toDataURL();\n if (current) {\n const image = new window.Image();\n const ctx = current.getContext(\"2d\") as CanvasRenderingContext2D;\n image.onload = () => {\n ctx.drawImage(image, 0, 0);\n current.width = image.width;\n current.height = image.height;\n\n ctx.drawImage(image, 0, 0);\n resolve();\n };\n image.src = src;\n }\n\n cropper.destroy();\n cropper = undefined;\n });\n }\n};\n\nexport default tool;\n"],"mappings":";;;;;;;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA,IAAIA,OAA4B,GAAGC,SAAS;AAE5C,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAAS;EACrB,oBACI;IAAK,KAAK,EAAE;MAAEC,SAAS,EAAE;IAAS;EAAE,GAAC,oFAErC,CAAM;AAEd,CAAC;AAED,IAAMC,IAAqB,GAAG;EAC1BC,IAAI,EAAE,MAAM;EACZC,IAAI,sBAAmB;IAAA,IAAhBC,YAAY,QAAZA,YAAY;IACf,oBACI,6BAAC,gBAAO;MAAC,SAAS,EAAE,QAAS;MAAC,OAAO,EAAE;IAAO,gBAC1C,6BAAC,kBAAU;MACP,IAAI,eAAE,6BAAC,oBAAQ,OAAI;MACnB,OAAO,EAAE;QAAA,OAAMA,YAAY,CAAC,MAAM,CAAC;MAAA,CAAC;MACpC,eAAa;IAAY,EAC3B,CACI;EAElB,CAAC;EACDL,UAAU,EAAVA,UAAU;EACVM,UAAU,EAAE,2BAAyB;IAAA,IAAtBC,MAAM,SAANA,MAAM;MAAEC,OAAO,SAAPA,OAAO;IAC1BV,OAAO,GAAG,IAAIW,kBAAO,CAACF,MAAM,CAACG,OAAO,EAAuBF,OAAO,CAAC;EACvE,CAAC;EACDG,MAAM,EAAE;IAAA,OAAMb,OAAO,IAAIA,OAAO,CAACc,OAAO,EAAE;EAAA;EAC1CC,KAAK,EAAE,sBAAgB;IAAA,IAAbN,MAAM,SAANA,MAAM;IACZ,OAAO,IAAIO,OAAO,CAAC,UAACC,OAAY,EAAK;MACjC,IAAI,CAACjB,OAAO,EAAE;QACViB,OAAO,EAAE;QACT;MACJ;MAEA,IAAML,OAAO,GAAGH,MAAM,CAACG,OAAO;MAC9B,IAAMM,GAAG,GAAGlB,OAAO,CAACmB,gBAAgB,EAAE,CAACC,SAAS,EAAE;MAClD,IAAIR,OAAO,EAAE;QACT,IAAMS,KAAK,GAAG,IAAIC,MAAM,CAACC,KAAK,EAAE;QAChC,IAAMC,GAAG,GAAGZ,OAAO,CAACa,UAAU,CAAC,IAAI,CAA6B;QAChEJ,KAAK,CAACK,MAAM,GAAG,YAAM;UACjBF,GAAG,CAACG,SAAS,CAACN,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;UAC1BT,OAAO,CAACgB,KAAK,GAAGP,KAAK,CAACO,KAAK;UAC3BhB,OAAO,CAACiB,MAAM,GAAGR,KAAK,CAACQ,MAAM;UAE7BL,GAAG,CAACG,SAAS,CAACN,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;UAC1BJ,OAAO,EAAE;QACb,CAAC;QACDI,KAAK,CAACH,GAAG,GAAGA,GAAG;MACnB;MAEAlB,OAAO,CAACc,OAAO,EAAE;MACjBd,OAAO,GAAGC,SAAS;IACvB,CAAC,CAAC;EACN;AACJ,CAAC;AAAC,eAEaG,IAAI;AAAA"}
@@ -1,44 +1,29 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
11
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
12
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
13
  var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
21
-
22
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
15
  var _debounce2 = _interopRequireDefault(require("lodash/debounce"));
25
-
26
16
  var _react = _interopRequireDefault(require("react"));
27
-
28
17
  var _filter = require("./icons/filter.svg");
29
-
30
18
  var _Slider = require("../../Slider");
31
-
32
19
  var _Button = require("../../Button");
33
-
34
20
  var _Tooltip = require("../../Tooltip");
35
-
36
21
  var _styled = _interopRequireDefault(require("@emotion/styled"));
37
-
38
22
  /**
39
23
  * When using Caman, we added @ts-ignore because it does not exist in packages, but it is loaded in packages/ui/src/ImageEditor/ImageEditor.tsx:38.
40
24
  * TODO: use some other library to edit images
41
25
  */
26
+
42
27
  var Wrapper = /*#__PURE__*/(0, _styled.default)("div", {
43
28
  target: "e1cnct9n0",
44
29
  label: "Wrapper"
@@ -98,21 +83,15 @@ var sliders = [{
98
83
  key: "sharpen",
99
84
  label: "Sharpen"
100
85
  }];
101
-
102
86
  var RenderForm = /*#__PURE__*/function (_React$Component) {
103
87
  (0, _inherits2.default)(RenderForm, _React$Component);
104
-
105
88
  var _super = (0, _createSuper2.default)(RenderForm);
106
-
107
89
  function RenderForm() {
108
90
  var _this;
109
-
110
91
  (0, _classCallCheck2.default)(this, RenderForm);
111
-
112
92
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
113
93
  args[_key] = arguments[_key];
114
94
  }
115
-
116
95
  _this = _super.call.apply(_super, [this].concat(args));
117
96
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
118
97
  processing: false,
@@ -120,20 +99,21 @@ var RenderForm = /*#__PURE__*/function (_React$Component) {
120
99
  });
121
100
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "applyFilters", (0, _debounce2.default)(function () {
122
101
  var canvas = _this.props.canvas;
123
- var values = _this.state.values; // eslint-disable-next-line @typescript-eslint/no-this-alias
124
-
125
- var component = (0, _assertThisInitialized2.default)(_this); // @ts-ignore
102
+ var values = _this.state.values;
103
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
104
+ var component = (0, _assertThisInitialized2.default)(_this);
126
105
 
106
+ // @ts-ignore
127
107
  Caman(canvas.current, function () {
128
108
  var _this2 = this;
129
-
130
109
  // @ts-ignore
131
110
  this.revert(false);
132
- Object.keys(values).forEach( // @ts-ignore
111
+ Object.keys(values).forEach(
112
+ // @ts-ignore
133
113
  function (key) {
134
114
  return values[key] !== 0 && _this2[key] && _this2[key](values[key]);
135
- }); // @ts-ignore
136
-
115
+ });
116
+ // @ts-ignore
137
117
  this.render();
138
118
  component.setState({
139
119
  processing: false
@@ -151,7 +131,6 @@ var RenderForm = /*#__PURE__*/function (_React$Component) {
151
131
  });
152
132
  return _this;
153
133
  }
154
-
155
134
  (0, _createClass2.default)(RenderForm, [{
156
135
  key: "componentDidMount",
157
136
  value: function componentDidMount() {
@@ -161,7 +140,6 @@ var RenderForm = /*#__PURE__*/function (_React$Component) {
161
140
  key: "render",
162
141
  value: function render() {
163
142
  var _this3 = this;
164
-
165
143
  return /*#__PURE__*/_react.default.createElement(Wrapper, null, /*#__PURE__*/_react.default.createElement("ul", null, sliders.map(function (props) {
166
144
  return /*#__PURE__*/_react.default.createElement("li", {
167
145
  key: props.key
@@ -191,9 +169,7 @@ var RenderForm = /*#__PURE__*/function (_React$Component) {
191
169
  processing: true
192
170
  }, function () {
193
171
  _this3.resetFiltersValues();
194
-
195
172
  _this3.applyFilters();
196
-
197
173
  _this3.setState({
198
174
  processing: false
199
175
  });
@@ -204,7 +180,6 @@ var RenderForm = /*#__PURE__*/function (_React$Component) {
204
180
  }]);
205
181
  return RenderForm;
206
182
  }(_react.default.Component);
207
-
208
183
  var tool = {
209
184
  name: "filter",
210
185
  icon: function icon(_ref) {
@@ -228,8 +203,8 @@ var tool = {
228
203
  // @ts-ignore
229
204
  Caman(canvas.current, function () {
230
205
  // @ts-ignore
231
- this.revert(false); // @ts-ignore
232
-
206
+ this.revert(false);
207
+ // @ts-ignore
233
208
  this.render();
234
209
  });
235
210
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Wrapper","styled","ul","textAlign","li","display","width","padding","sliders","key","label","min","RenderForm","processing","values","canvas","props","state","component","Caman","current","revert","Object","keys","forEach","render","setState","reduce","output","resetFiltersValues","map","value","applyFilters","React","Component","tool","name","icon","activateTool","renderForm","cancel"],"sources":["filter.tsx"],"sourcesContent":["/**\n * When using Caman, we added @ts-ignore because it does not exist in packages, but it is loaded in packages/ui/src/ImageEditor/ImageEditor.tsx:38.\n * TODO: use some other library to edit images\n */\nimport React from \"react\";\nimport { ReactComponent as FilterIcon } from \"./icons/filter.svg\";\nimport { Slider } from \"~/Slider\";\nimport { ImageEditorTool } from \"./types\";\nimport { IconButton, ButtonDefault } from \"~/Button\";\nimport { Tooltip } from \"~/Tooltip\";\nimport { debounce } from \"lodash\";\nimport styled from \"@emotion/styled\";\n\ninterface RenderFormState {\n values: Record<string, any>;\n processing: boolean;\n}\n\ninterface RenderFormProps {\n canvas: any;\n renderApplyCancel?: Function;\n}\n\nconst Wrapper = styled(\"div\")({\n ul: {\n textAlign: \"center\",\n li: {\n display: \"inline-block\",\n width: 180,\n padding: 10\n }\n },\n \".buttons\": {\n textAlign: \"center\"\n }\n});\n\nconst sliders = [\n {\n key: \"brightness\",\n label: \"Brightness\",\n min: -100\n },\n {\n key: \"vibrance\",\n label: \"Vibrance\",\n min: -100\n },\n {\n key: \"hue\",\n label: \"Hue\",\n min: -100\n },\n {\n key: \"gamma\",\n label: \"Gamma\"\n },\n {\n key: \"clip\",\n label: \"Clip\"\n },\n {\n key: \"stackBlur\",\n label: \"Blur\"\n },\n {\n key: \"contrast\",\n label: \"Contrast\",\n min: -100\n },\n {\n key: \"saturation\",\n label: \"Saturation\",\n min: -100\n },\n {\n key: \"exposure\",\n label: \"Exposure\",\n min: -100\n },\n {\n key: \"sepia\",\n label: \"Sepia\"\n },\n {\n key: \"noise\",\n label: \"Noise\"\n },\n {\n key: \"sharpen\",\n label: \"Sharpen\"\n }\n];\n\nclass RenderForm extends React.Component<RenderFormProps, RenderFormState> {\n public override state: RenderFormState = {\n processing: false,\n values: {}\n };\n\n public override componentDidMount() {\n this.resetFiltersValues();\n }\n\n private readonly applyFilters = debounce(() => {\n const { canvas } = this.props;\n const { values } = this.state;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const component = this;\n\n // @ts-ignore\n Caman(canvas.current, function () {\n // @ts-ignore\n this.revert(false);\n Object.keys(values).forEach(\n // @ts-ignore\n key => values[key] !== 0 && this[key] && this[key](values[key])\n );\n // @ts-ignore\n this.render();\n component.setState({ processing: false });\n });\n }, 200);\n\n private readonly resetFiltersValues = () => {\n this.setState(state => {\n sliders.reduce((output, current) => {\n state.values[current.key] = 0;\n return output;\n }, {});\n\n return state;\n });\n };\n\n public override render() {\n return (\n <Wrapper>\n <ul>\n {sliders.map(props => (\n <li key={props.key}>\n <Slider\n value={this.state.values[props.key]}\n min={0}\n max={100}\n disabled={this.state.processing}\n onInput={(value: string) => {\n this.setState(state => {\n const values = { ...state.values };\n values[props.key] = value;\n\n return { ...state, processing: true, values };\n }, this.applyFilters);\n }}\n {...props}\n />\n </li>\n ))}\n </ul>\n\n <div style={{ textAlign: \"center\" }}>\n <ButtonDefault\n onClick={() => {\n this.setState({ processing: true }, () => {\n this.resetFiltersValues();\n this.applyFilters();\n this.setState({ processing: false });\n });\n }}\n >\n Reset filters\n </ButtonDefault>\n </div>\n </Wrapper>\n );\n }\n}\n\nconst tool: ImageEditorTool = {\n name: \"filter\",\n icon({ activateTool }) {\n return (\n <Tooltip placement={\"bottom\"} content={\"Filter\"}>\n <IconButton\n icon={<FilterIcon />}\n onClick={() => activateTool(\"filter\")}\n data-testid={\"filter-item\"}\n />\n </Tooltip>\n );\n },\n renderForm(props) {\n return <RenderForm {...props} />;\n },\n cancel: ({ canvas }) => {\n // @ts-ignore\n Caman(canvas.current, function () {\n // @ts-ignore\n this.revert(false);\n // @ts-ignore\n this.render();\n });\n }\n};\n\nexport default tool;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AAXA;AACA;AACA;AACA;AAoBA,IAAMA,OAAO,oBAAGC,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EAC1BC,EAAE,EAAE;IACAC,SAAS,EAAE,QADX;IAEAC,EAAE,EAAE;MACAC,OAAO,EAAE,cADT;MAEAC,KAAK,EAAE,GAFP;MAGAC,OAAO,EAAE;IAHT;EAFJ,CADsB;EAS1B,YAAY;IACRJ,SAAS,EAAE;EADH;AATc,CAAjB,CAAb;AAcA,IAAMK,OAAO,GAAG,CACZ;EACIC,GAAG,EAAE,YADT;EAEIC,KAAK,EAAE,YAFX;EAGIC,GAAG,EAAE,CAAC;AAHV,CADY,EAMZ;EACIF,GAAG,EAAE,UADT;EAEIC,KAAK,EAAE,UAFX;EAGIC,GAAG,EAAE,CAAC;AAHV,CANY,EAWZ;EACIF,GAAG,EAAE,KADT;EAEIC,KAAK,EAAE,KAFX;EAGIC,GAAG,EAAE,CAAC;AAHV,CAXY,EAgBZ;EACIF,GAAG,EAAE,OADT;EAEIC,KAAK,EAAE;AAFX,CAhBY,EAoBZ;EACID,GAAG,EAAE,MADT;EAEIC,KAAK,EAAE;AAFX,CApBY,EAwBZ;EACID,GAAG,EAAE,WADT;EAEIC,KAAK,EAAE;AAFX,CAxBY,EA4BZ;EACID,GAAG,EAAE,UADT;EAEIC,KAAK,EAAE,UAFX;EAGIC,GAAG,EAAE,CAAC;AAHV,CA5BY,EAiCZ;EACIF,GAAG,EAAE,YADT;EAEIC,KAAK,EAAE,YAFX;EAGIC,GAAG,EAAE,CAAC;AAHV,CAjCY,EAsCZ;EACIF,GAAG,EAAE,UADT;EAEIC,KAAK,EAAE,UAFX;EAGIC,GAAG,EAAE,CAAC;AAHV,CAtCY,EA2CZ;EACIF,GAAG,EAAE,OADT;EAEIC,KAAK,EAAE;AAFX,CA3CY,EA+CZ;EACID,GAAG,EAAE,OADT;EAEIC,KAAK,EAAE;AAFX,CA/CY,EAmDZ;EACID,GAAG,EAAE,SADT;EAEIC,KAAK,EAAE;AAFX,CAnDY,CAAhB;;IAyDME,U;;;;;;;;;;;;;;;wFACuC;MACrCC,UAAU,EAAE,KADyB;MAErCC,MAAM,EAAE;IAF6B,C;+FAST,wBAAS,YAAM;MAC3C,IAAQC,MAAR,GAAmB,MAAKC,KAAxB,CAAQD,MAAR;MACA,IAAQD,MAAR,GAAmB,MAAKG,KAAxB,CAAQH,MAAR,CAF2C,CAG3C;;MACA,IAAMI,SAAS,8CAAf,CAJ2C,CAM3C;;MACAC,KAAK,CAACJ,MAAM,CAACK,OAAR,EAAiB,YAAY;QAAA;;QAC9B;QACA,KAAKC,MAAL,CAAY,KAAZ;QACAC,MAAM,CAACC,IAAP,CAAYT,MAAZ,EAAoBU,OAApB,EACI;QACA,UAAAf,GAAG;UAAA,OAAIK,MAAM,CAACL,GAAD,CAAN,KAAgB,CAAhB,IAAqB,MAAI,CAACA,GAAD,CAAzB,IAAkC,MAAI,CAACA,GAAD,CAAJ,CAAUK,MAAM,CAACL,GAAD,CAAhB,CAAtC;QAAA,CAFP,EAH8B,CAO9B;;QACA,KAAKgB,MAAL;QACAP,SAAS,CAACQ,QAAV,CAAmB;UAAEb,UAAU,EAAE;QAAd,CAAnB;MACH,CAVI,CAAL;IAWH,CAlB+B,EAkB7B,GAlB6B,C;qGAoBM,YAAM;MACxC,MAAKa,QAAL,CAAc,UAAAT,KAAK,EAAI;QACnBT,OAAO,CAACmB,MAAR,CAAe,UAACC,MAAD,EAASR,OAAT,EAAqB;UAChCH,KAAK,CAACH,MAAN,CAAaM,OAAO,CAACX,GAArB,IAA4B,CAA5B;UACA,OAAOmB,MAAP;QACH,CAHD,EAGG,EAHH;QAKA,OAAOX,KAAP;MACH,CAPD;IAQH,C;;;;;;WAjCD,6BAAoC;MAChC,KAAKY,kBAAL;IACH;;;WAiCD,kBAAyB;MAAA;;MACrB,oBACI,6BAAC,OAAD,qBACI,yCACKrB,OAAO,CAACsB,GAAR,CAAY,UAAAd,KAAK;QAAA,oBACd;UAAI,GAAG,EAAEA,KAAK,CAACP;QAAf,gBACI,6BAAC,cAAD;UACI,KAAK,EAAE,MAAI,CAACQ,KAAL,CAAWH,MAAX,CAAkBE,KAAK,CAACP,GAAxB,CADX;UAEI,GAAG,EAAE,CAFT;UAGI,GAAG,EAAE,GAHT;UAII,QAAQ,EAAE,MAAI,CAACQ,KAAL,CAAWJ,UAJzB;UAKI,OAAO,EAAE,iBAACkB,KAAD,EAAmB;YACxB,MAAI,CAACL,QAAL,CAAc,UAAAT,KAAK,EAAI;cACnB,IAAMH,MAAM,mCAAQG,KAAK,CAACH,MAAd,CAAZ;cACAA,MAAM,CAACE,KAAK,CAACP,GAAP,CAAN,GAAoBsB,KAApB;cAEA,mEAAYd,KAAZ;gBAAmBJ,UAAU,EAAE,IAA/B;gBAAqCC,MAAM,EAANA;cAArC;YACH,CALD,EAKG,MAAI,CAACkB,YALR;UAMH;QAZL,GAaQhB,KAbR,EADJ,CADc;MAAA,CAAjB,CADL,CADJ,eAuBI;QAAK,KAAK,EAAE;UAAEb,SAAS,EAAE;QAAb;MAAZ,gBACI,6BAAC,qBAAD;QACI,OAAO,EAAE,mBAAM;UACX,MAAI,CAACuB,QAAL,CAAc;YAAEb,UAAU,EAAE;UAAd,CAAd,EAAoC,YAAM;YACtC,MAAI,CAACgB,kBAAL;;YACA,MAAI,CAACG,YAAL;;YACA,MAAI,CAACN,QAAL,CAAc;cAAEb,UAAU,EAAE;YAAd,CAAd;UACH,CAJD;QAKH;MAPL,GAQC,eARD,CADJ,CAvBJ,CADJ;IAuCH;;;EAjFoBoB,cAAA,CAAMC,S;;AAoF/B,IAAMC,IAAqB,GAAG;EAC1BC,IAAI,EAAE,QADoB;EAE1BC,IAF0B,sBAEH;IAAA,IAAhBC,YAAgB,QAAhBA,YAAgB;IACnB,oBACI,6BAAC,gBAAD;MAAS,SAAS,EAAE,QAApB;MAA8B,OAAO,EAAE;IAAvC,gBACI,6BAAC,kBAAD;MACI,IAAI,eAAE,6BAAC,sBAAD,OADV;MAEI,OAAO,EAAE;QAAA,OAAMA,YAAY,CAAC,QAAD,CAAlB;MAAA,CAFb;MAGI,eAAa;IAHjB,EADJ,CADJ;EASH,CAZyB;EAa1BC,UAb0B,sBAafvB,KAbe,EAaR;IACd,oBAAO,6BAAC,UAAD,EAAgBA,KAAhB,CAAP;EACH,CAfyB;EAgB1BwB,MAAM,EAAE,uBAAgB;IAAA,IAAbzB,MAAa,SAAbA,MAAa;IACpB;IACAI,KAAK,CAACJ,MAAM,CAACK,OAAR,EAAiB,YAAY;MAC9B;MACA,KAAKC,MAAL,CAAY,KAAZ,EAF8B,CAG9B;;MACA,KAAKI,MAAL;IACH,CALI,CAAL;EAMH;AAxByB,CAA9B;eA2BeU,I"}
1
+ {"version":3,"names":["Wrapper","styled","ul","textAlign","li","display","width","padding","sliders","key","label","min","RenderForm","processing","values","canvas","props","state","component","Caman","current","revert","Object","keys","forEach","render","setState","reduce","output","resetFiltersValues","map","value","applyFilters","React","Component","tool","name","icon","activateTool","renderForm","cancel"],"sources":["filter.tsx"],"sourcesContent":["/**\n * When using Caman, we added @ts-ignore because it does not exist in packages, but it is loaded in packages/ui/src/ImageEditor/ImageEditor.tsx:38.\n * TODO: use some other library to edit images\n */\nimport React from \"react\";\nimport { ReactComponent as FilterIcon } from \"./icons/filter.svg\";\nimport { Slider } from \"~/Slider\";\nimport { ImageEditorTool } from \"./types\";\nimport { IconButton, ButtonDefault } from \"~/Button\";\nimport { Tooltip } from \"~/Tooltip\";\nimport { debounce } from \"lodash\";\nimport styled from \"@emotion/styled\";\n\ninterface RenderFormState {\n values: Record<string, any>;\n processing: boolean;\n}\n\ninterface RenderFormProps {\n canvas: any;\n renderApplyCancel?: Function;\n}\n\nconst Wrapper = styled(\"div\")({\n ul: {\n textAlign: \"center\",\n li: {\n display: \"inline-block\",\n width: 180,\n padding: 10\n }\n },\n \".buttons\": {\n textAlign: \"center\"\n }\n});\n\nconst sliders = [\n {\n key: \"brightness\",\n label: \"Brightness\",\n min: -100\n },\n {\n key: \"vibrance\",\n label: \"Vibrance\",\n min: -100\n },\n {\n key: \"hue\",\n label: \"Hue\",\n min: -100\n },\n {\n key: \"gamma\",\n label: \"Gamma\"\n },\n {\n key: \"clip\",\n label: \"Clip\"\n },\n {\n key: \"stackBlur\",\n label: \"Blur\"\n },\n {\n key: \"contrast\",\n label: \"Contrast\",\n min: -100\n },\n {\n key: \"saturation\",\n label: \"Saturation\",\n min: -100\n },\n {\n key: \"exposure\",\n label: \"Exposure\",\n min: -100\n },\n {\n key: \"sepia\",\n label: \"Sepia\"\n },\n {\n key: \"noise\",\n label: \"Noise\"\n },\n {\n key: \"sharpen\",\n label: \"Sharpen\"\n }\n];\n\nclass RenderForm extends React.Component<RenderFormProps, RenderFormState> {\n public override state: RenderFormState = {\n processing: false,\n values: {}\n };\n\n public override componentDidMount() {\n this.resetFiltersValues();\n }\n\n private readonly applyFilters = debounce(() => {\n const { canvas } = this.props;\n const { values } = this.state;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const component = this;\n\n // @ts-ignore\n Caman(canvas.current, function () {\n // @ts-ignore\n this.revert(false);\n Object.keys(values).forEach(\n // @ts-ignore\n key => values[key] !== 0 && this[key] && this[key](values[key])\n );\n // @ts-ignore\n this.render();\n component.setState({ processing: false });\n });\n }, 200);\n\n private readonly resetFiltersValues = () => {\n this.setState(state => {\n sliders.reduce((output, current) => {\n state.values[current.key] = 0;\n return output;\n }, {});\n\n return state;\n });\n };\n\n public override render() {\n return (\n <Wrapper>\n <ul>\n {sliders.map(props => (\n <li key={props.key}>\n <Slider\n value={this.state.values[props.key]}\n min={0}\n max={100}\n disabled={this.state.processing}\n onInput={(value: string) => {\n this.setState(state => {\n const values = { ...state.values };\n values[props.key] = value;\n\n return { ...state, processing: true, values };\n }, this.applyFilters);\n }}\n {...props}\n />\n </li>\n ))}\n </ul>\n\n <div style={{ textAlign: \"center\" }}>\n <ButtonDefault\n onClick={() => {\n this.setState({ processing: true }, () => {\n this.resetFiltersValues();\n this.applyFilters();\n this.setState({ processing: false });\n });\n }}\n >\n Reset filters\n </ButtonDefault>\n </div>\n </Wrapper>\n );\n }\n}\n\nconst tool: ImageEditorTool = {\n name: \"filter\",\n icon({ activateTool }) {\n return (\n <Tooltip placement={\"bottom\"} content={\"Filter\"}>\n <IconButton\n icon={<FilterIcon />}\n onClick={() => activateTool(\"filter\")}\n data-testid={\"filter-item\"}\n />\n </Tooltip>\n );\n },\n renderForm(props) {\n return <RenderForm {...props} />;\n },\n cancel: ({ canvas }) => {\n // @ts-ignore\n Caman(canvas.current, function () {\n // @ts-ignore\n this.revert(false);\n // @ts-ignore\n this.render();\n });\n }\n};\n\nexport default tool;\n"],"mappings":";;;;;;;;;;;;;;;AAIA;AACA;AACA;AAEA;AACA;AAEA;AAXA;AACA;AACA;AACA;;AAoBA,IAAMA,OAAO,oBAAGC,eAAM,EAAC,KAAK;EAAA;EAAA;AAAA,GAAE;EAC1BC,EAAE,EAAE;IACAC,SAAS,EAAE,QAAQ;IACnBC,EAAE,EAAE;MACAC,OAAO,EAAE,cAAc;MACvBC,KAAK,EAAE,GAAG;MACVC,OAAO,EAAE;IACb;EACJ,CAAC;EACD,UAAU,EAAE;IACRJ,SAAS,EAAE;EACf;AACJ,CAAC,CAAC;AAEF,IAAMK,OAAO,GAAG,CACZ;EACIC,GAAG,EAAE,YAAY;EACjBC,KAAK,EAAE,YAAY;EACnBC,GAAG,EAAE,CAAC;AACV,CAAC,EACD;EACIF,GAAG,EAAE,UAAU;EACfC,KAAK,EAAE,UAAU;EACjBC,GAAG,EAAE,CAAC;AACV,CAAC,EACD;EACIF,GAAG,EAAE,KAAK;EACVC,KAAK,EAAE,KAAK;EACZC,GAAG,EAAE,CAAC;AACV,CAAC,EACD;EACIF,GAAG,EAAE,OAAO;EACZC,KAAK,EAAE;AACX,CAAC,EACD;EACID,GAAG,EAAE,MAAM;EACXC,KAAK,EAAE;AACX,CAAC,EACD;EACID,GAAG,EAAE,WAAW;EAChBC,KAAK,EAAE;AACX,CAAC,EACD;EACID,GAAG,EAAE,UAAU;EACfC,KAAK,EAAE,UAAU;EACjBC,GAAG,EAAE,CAAC;AACV,CAAC,EACD;EACIF,GAAG,EAAE,YAAY;EACjBC,KAAK,EAAE,YAAY;EACnBC,GAAG,EAAE,CAAC;AACV,CAAC,EACD;EACIF,GAAG,EAAE,UAAU;EACfC,KAAK,EAAE,UAAU;EACjBC,GAAG,EAAE,CAAC;AACV,CAAC,EACD;EACIF,GAAG,EAAE,OAAO;EACZC,KAAK,EAAE;AACX,CAAC,EACD;EACID,GAAG,EAAE,OAAO;EACZC,KAAK,EAAE;AACX,CAAC,EACD;EACID,GAAG,EAAE,SAAS;EACdC,KAAK,EAAE;AACX,CAAC,CACJ;AAAC,IAEIE,UAAU;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,oFAC6B;MACrCC,UAAU,EAAE,KAAK;MACjBC,MAAM,EAAE,CAAC;IACb,CAAC;IAAA,2FAM+B,wBAAS,YAAM;MAC3C,IAAQC,MAAM,GAAK,MAAKC,KAAK,CAArBD,MAAM;MACd,IAAQD,MAAM,GAAK,MAAKG,KAAK,CAArBH,MAAM;MACd;MACA,IAAMI,SAAS,8CAAO;;MAEtB;MACAC,KAAK,CAACJ,MAAM,CAACK,OAAO,EAAE,YAAY;QAAA;QAC9B;QACA,IAAI,CAACC,MAAM,CAAC,KAAK,CAAC;QAClBC,MAAM,CAACC,IAAI,CAACT,MAAM,CAAC,CAACU,OAAO;QACvB;QACA,UAAAf,GAAG;UAAA,OAAIK,MAAM,CAACL,GAAG,CAAC,KAAK,CAAC,IAAI,MAAI,CAACA,GAAG,CAAC,IAAI,MAAI,CAACA,GAAG,CAAC,CAACK,MAAM,CAACL,GAAG,CAAC,CAAC;QAAA,EAClE;QACD;QACA,IAAI,CAACgB,MAAM,EAAE;QACbP,SAAS,CAACQ,QAAQ,CAAC;UAAEb,UAAU,EAAE;QAAM,CAAC,CAAC;MAC7C,CAAC,CAAC;IACN,CAAC,EAAE,GAAG,CAAC;IAAA,iGAE+B,YAAM;MACxC,MAAKa,QAAQ,CAAC,UAAAT,KAAK,EAAI;QACnBT,OAAO,CAACmB,MAAM,CAAC,UAACC,MAAM,EAAER,OAAO,EAAK;UAChCH,KAAK,CAACH,MAAM,CAACM,OAAO,CAACX,GAAG,CAAC,GAAG,CAAC;UAC7B,OAAOmB,MAAM;QACjB,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,OAAOX,KAAK;MAChB,CAAC,CAAC;IACN,CAAC;IAAA;EAAA;EAAA;IAAA;IAAA,OAjCD,6BAAoC;MAChC,IAAI,CAACY,kBAAkB,EAAE;IAC7B;EAAC;IAAA;IAAA,OAiCD,kBAAyB;MAAA;MACrB,oBACI,6BAAC,OAAO,qBACJ,yCACKrB,OAAO,CAACsB,GAAG,CAAC,UAAAd,KAAK;QAAA,oBACd;UAAI,GAAG,EAAEA,KAAK,CAACP;QAAI,gBACf,6BAAC,cAAM;UACH,KAAK,EAAE,MAAI,CAACQ,KAAK,CAACH,MAAM,CAACE,KAAK,CAACP,GAAG,CAAE;UACpC,GAAG,EAAE,CAAE;UACP,GAAG,EAAE,GAAI;UACT,QAAQ,EAAE,MAAI,CAACQ,KAAK,CAACJ,UAAW;UAChC,OAAO,EAAE,iBAACkB,KAAa,EAAK;YACxB,MAAI,CAACL,QAAQ,CAAC,UAAAT,KAAK,EAAI;cACnB,IAAMH,MAAM,mCAAQG,KAAK,CAACH,MAAM,CAAE;cAClCA,MAAM,CAACE,KAAK,CAACP,GAAG,CAAC,GAAGsB,KAAK;cAEzB,mEAAYd,KAAK;gBAAEJ,UAAU,EAAE,IAAI;gBAAEC,MAAM,EAANA;cAAM;YAC/C,CAAC,EAAE,MAAI,CAACkB,YAAY,CAAC;UACzB;QAAE,GACEhB,KAAK,EACX,CACD;MAAA,CACR,CAAC,CACD,eAEL;QAAK,KAAK,EAAE;UAAEb,SAAS,EAAE;QAAS;MAAE,gBAChC,6BAAC,qBAAa;QACV,OAAO,EAAE,mBAAM;UACX,MAAI,CAACuB,QAAQ,CAAC;YAAEb,UAAU,EAAE;UAAK,CAAC,EAAE,YAAM;YACtC,MAAI,CAACgB,kBAAkB,EAAE;YACzB,MAAI,CAACG,YAAY,EAAE;YACnB,MAAI,CAACN,QAAQ,CAAC;cAAEb,UAAU,EAAE;YAAM,CAAC,CAAC;UACxC,CAAC,CAAC;QACN;MAAE,GACL,eAED,CAAgB,CACd,CACA;IAElB;EAAC;EAAA;AAAA,EAjFoBoB,cAAK,CAACC,SAAS;AAoFxC,IAAMC,IAAqB,GAAG;EAC1BC,IAAI,EAAE,QAAQ;EACdC,IAAI,sBAAmB;IAAA,IAAhBC,YAAY,QAAZA,YAAY;IACf,oBACI,6BAAC,gBAAO;MAAC,SAAS,EAAE,QAAS;MAAC,OAAO,EAAE;IAAS,gBAC5C,6BAAC,kBAAU;MACP,IAAI,eAAE,6BAAC,sBAAU,OAAI;MACrB,OAAO,EAAE;QAAA,OAAMA,YAAY,CAAC,QAAQ,CAAC;MAAA,CAAC;MACtC,eAAa;IAAc,EAC7B,CACI;EAElB,CAAC;EACDC,UAAU,sBAACvB,KAAK,EAAE;IACd,oBAAO,6BAAC,UAAU,EAAKA,KAAK,CAAI;EACpC,CAAC;EACDwB,MAAM,EAAE,uBAAgB;IAAA,IAAbzB,MAAM,SAANA,MAAM;IACb;IACAI,KAAK,CAACJ,MAAM,CAACK,OAAO,EAAE,YAAY;MAC9B;MACA,IAAI,CAACC,MAAM,CAAC,KAAK,CAAC;MAClB;MACA,IAAI,CAACI,MAAM,EAAE;IACjB,CAAC,CAAC;EACN;AACJ,CAAC;AAAC,eAEaU,IAAI;AAAA"}
@@ -1,30 +1,21 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var _flip = require("./icons/flip.svg");
13
-
14
10
  var _cropperjs = _interopRequireDefault(require("cropperjs"));
15
-
16
11
  require("cropperjs/dist/cropper.css");
17
-
18
12
  var _Button = require("../../Button");
19
-
20
13
  var _Tooltip = require("../../Tooltip");
21
-
22
14
  var cropper;
23
15
  var flipped = {
24
16
  x: 1,
25
17
  y: 1
26
18
  };
27
-
28
19
  var renderForm = function renderForm() {
29
20
  return /*#__PURE__*/_react.default.createElement("div", {
30
21
  style: {
@@ -35,7 +26,6 @@ var renderForm = function renderForm() {
35
26
  if (!cropper) {
36
27
  return;
37
28
  }
38
-
39
29
  flipped.x = flipped.x === 1 ? -1 : 1;
40
30
  cropper.scaleX(flipped.x);
41
31
  }
@@ -44,13 +34,11 @@ var renderForm = function renderForm() {
44
34
  if (!cropper) {
45
35
  return;
46
36
  }
47
-
48
37
  flipped.y = flipped.y === 1 ? -1 : 1;
49
38
  cropper.scaleY(flipped.y);
50
39
  }
51
40
  }, "FlipY"));
52
41
  };
53
-
54
42
  var tool = {
55
43
  name: "flip",
56
44
  icon: function icon(_ref) {
@@ -88,14 +76,11 @@ var tool = {
88
76
  resolve();
89
77
  return;
90
78
  }
91
-
92
79
  var current = canvas.current;
93
80
  var src = cropper.getCroppedCanvas().toDataURL();
94
-
95
81
  if (current) {
96
82
  var image = new window.Image();
97
83
  var ctx = current.getContext("2d");
98
-
99
84
  image.onload = function () {
100
85
  ctx.drawImage(image, 0, 0);
101
86
  current.width = image.width;
@@ -103,10 +88,8 @@ var tool = {
103
88
  ctx.drawImage(image, 0, 0);
104
89
  resolve();
105
90
  };
106
-
107
91
  image.src = src;
108
92
  }
109
-
110
93
  cropper.destroy();
111
94
  });
112
95
  }
@@ -1 +1 @@
1
- {"version":3,"names":["cropper","flipped","x","y","renderForm","textAlign","scaleX","scaleY","tool","name","icon","activateTool","cancel","destroy","onActivate","canvas","Cropper","current","background","modal","guides","dragMode","highlight","autoCrop","apply","Promise","resolve","src","getCroppedCanvas","toDataURL","image","window","Image","ctx","getContext","onload","drawImage","width","height"],"sources":["flip.tsx"],"sourcesContent":["import React from \"react\";\nimport { ImageEditorTool } from \"./types\";\nimport { ReactComponent as FlipIcon } from \"./icons/flip.svg\";\nimport Cropper from \"cropperjs\";\nimport \"cropperjs/dist/cropper.css\";\n\nimport { IconButton, ButtonDefault } from \"../../Button\";\nimport { Tooltip } from \"~/Tooltip\";\n\nlet cropper: Cropper;\n\nconst flipped = { x: 1, y: 1 };\n\nconst renderForm = () => {\n return (\n <div style={{ textAlign: \"center\" }}>\n <ButtonDefault\n onClick={() => {\n if (!cropper) {\n return;\n }\n\n flipped.x = flipped.x === 1 ? -1 : 1;\n cropper.scaleX(flipped.x);\n }}\n >\n FlipX\n </ButtonDefault>\n <ButtonDefault\n onClick={() => {\n if (!cropper) {\n return;\n }\n\n flipped.y = flipped.y === 1 ? -1 : 1;\n cropper.scaleY(flipped.y);\n }}\n >\n FlipY\n </ButtonDefault>\n </div>\n );\n};\n\nconst tool: ImageEditorTool = {\n name: \"flip\",\n icon({ activateTool }) {\n return (\n <Tooltip placement={\"bottom\"} content={\"Flip\"}>\n <IconButton\n icon={<FlipIcon />}\n onClick={() => activateTool(\"flip\")}\n data-testid={\"flip-item\"}\n />\n </Tooltip>\n );\n },\n renderForm,\n cancel: () => cropper && cropper.destroy(),\n onActivate: ({ canvas }) => {\n cropper = new Cropper(canvas.current as HTMLCanvasElement, {\n background: false,\n modal: false,\n guides: false,\n dragMode: \"none\",\n highlight: false,\n autoCrop: false\n });\n },\n apply: ({ canvas }) => {\n return new Promise((resolve: any) => {\n if (!cropper) {\n resolve();\n return;\n }\n\n const current = canvas.current;\n const src = cropper.getCroppedCanvas().toDataURL();\n if (current) {\n const image = new window.Image();\n const ctx = current.getContext(\"2d\") as CanvasRenderingContext2D;\n image.onload = () => {\n ctx.drawImage(image, 0, 0);\n current.width = image.width;\n current.height = image.height;\n\n ctx.drawImage(image, 0, 0);\n resolve();\n };\n image.src = src;\n }\n\n cropper.destroy();\n });\n }\n};\n\nexport default tool;\n"],"mappings":"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"}
1
+ {"version":3,"names":["cropper","flipped","x","y","renderForm","textAlign","scaleX","scaleY","tool","name","icon","activateTool","cancel","destroy","onActivate","canvas","Cropper","current","background","modal","guides","dragMode","highlight","autoCrop","apply","Promise","resolve","src","getCroppedCanvas","toDataURL","image","window","Image","ctx","getContext","onload","drawImage","width","height"],"sources":["flip.tsx"],"sourcesContent":["import React from \"react\";\nimport { ImageEditorTool } from \"./types\";\nimport { ReactComponent as FlipIcon } from \"./icons/flip.svg\";\nimport Cropper from \"cropperjs\";\nimport \"cropperjs/dist/cropper.css\";\n\nimport { IconButton, ButtonDefault } from \"../../Button\";\nimport { Tooltip } from \"~/Tooltip\";\n\nlet cropper: Cropper;\n\nconst flipped = { x: 1, y: 1 };\n\nconst renderForm = () => {\n return (\n <div style={{ textAlign: \"center\" }}>\n <ButtonDefault\n onClick={() => {\n if (!cropper) {\n return;\n }\n\n flipped.x = flipped.x === 1 ? -1 : 1;\n cropper.scaleX(flipped.x);\n }}\n >\n FlipX\n </ButtonDefault>\n <ButtonDefault\n onClick={() => {\n if (!cropper) {\n return;\n }\n\n flipped.y = flipped.y === 1 ? -1 : 1;\n cropper.scaleY(flipped.y);\n }}\n >\n FlipY\n </ButtonDefault>\n </div>\n );\n};\n\nconst tool: ImageEditorTool = {\n name: \"flip\",\n icon({ activateTool }) {\n return (\n <Tooltip placement={\"bottom\"} content={\"Flip\"}>\n <IconButton\n icon={<FlipIcon />}\n onClick={() => activateTool(\"flip\")}\n data-testid={\"flip-item\"}\n />\n </Tooltip>\n );\n },\n renderForm,\n cancel: () => cropper && cropper.destroy(),\n onActivate: ({ canvas }) => {\n cropper = new Cropper(canvas.current as HTMLCanvasElement, {\n background: false,\n modal: false,\n guides: false,\n dragMode: \"none\",\n highlight: false,\n autoCrop: false\n });\n },\n apply: ({ canvas }) => {\n return new Promise((resolve: any) => {\n if (!cropper) {\n resolve();\n return;\n }\n\n const current = canvas.current;\n const src = cropper.getCroppedCanvas().toDataURL();\n if (current) {\n const image = new window.Image();\n const ctx = current.getContext(\"2d\") as CanvasRenderingContext2D;\n image.onload = () => {\n ctx.drawImage(image, 0, 0);\n current.width = image.width;\n current.height = image.height;\n\n ctx.drawImage(image, 0, 0);\n resolve();\n };\n image.src = src;\n }\n\n cropper.destroy();\n });\n }\n};\n\nexport default tool;\n"],"mappings":"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"}
@@ -51,19 +51,11 @@ Object.defineProperty(exports, "UndoIcon", {
51
51
  return _undo.ReactComponent;
52
52
  }
53
53
  });
54
-
55
54
  var _crop = require("./crop.svg");
56
-
57
55
  var _draw = require("./draw.svg");
58
-
59
56
  var _filter = require("./filter.svg");
60
-
61
57
  var _flip = require("./flip.svg");
62
-
63
58
  var _redo = require("./redo.svg");
64
-
65
59
  var _rotateLeft = require("./rotateLeft.svg");
66
-
67
60
  var _rotateRight = require("./rotateRight.svg");
68
-
69
61
  var _undo = require("./undo.svg");
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { ReactComponent as CropIcon } from \"./crop.svg\";\nexport { ReactComponent as DrawIcon } from \"./draw.svg\";\nexport { ReactComponent as FilterIcon } from \"./filter.svg\";\nexport { ReactComponent as FlipIcon } from \"./flip.svg\";\nexport { ReactComponent as RedoIcon } from \"./redo.svg\";\nexport { ReactComponent as RotateLeftIcon } from \"./rotateLeft.svg\";\nexport { ReactComponent as RotateRightIcon } from \"./rotateRight.svg\";\nexport { ReactComponent as UndoIcon } from \"./undo.svg\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { ReactComponent as CropIcon } from \"./crop.svg\";\nexport { ReactComponent as DrawIcon } from \"./draw.svg\";\nexport { ReactComponent as FilterIcon } from \"./filter.svg\";\nexport { ReactComponent as FlipIcon } from \"./flip.svg\";\nexport { ReactComponent as RedoIcon } from \"./redo.svg\";\nexport { ReactComponent as RotateLeftIcon } from \"./rotateLeft.svg\";\nexport { ReactComponent as RotateRightIcon } from \"./rotateRight.svg\";\nexport { ReactComponent as UndoIcon } from \"./undo.svg\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -29,11 +28,7 @@ Object.defineProperty(exports, "rotate", {
29
28
  return _rotate.default;
30
29
  }
31
30
  });
32
-
33
31
  var _crop = _interopRequireDefault(require("./crop"));
34
-
35
32
  var _flip = _interopRequireDefault(require("./flip"));
36
-
37
33
  var _filter = _interopRequireDefault(require("./filter"));
38
-
39
34
  var _rotate = _interopRequireDefault(require("./rotate"));
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { default as crop } from \"./crop\";\nexport { default as flip } from \"./flip\";\nexport { default as filter } from \"./filter\";\nexport { default as rotate } from \"./rotate\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { default as crop } from \"./crop\";\nexport { default as flip } from \"./flip\";\nexport { default as filter } from \"./filter\";\nexport { default as rotate } from \"./rotate\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA"}
@@ -1,70 +1,45 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
11
-
12
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
-
16
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
-
18
12
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
-
20
13
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
-
22
14
  var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
23
-
24
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
-
26
16
  var _react = _interopRequireDefault(require("react"));
27
-
28
17
  var _rotateRight = require("./icons/rotateRight.svg");
29
-
30
18
  var _Slider = require("../../Slider");
31
-
32
19
  var _Tooltip = require("../../Tooltip");
33
-
34
20
  var _Button = require("../../Button");
35
-
36
21
  var _cropperjs = _interopRequireDefault(require("cropperjs"));
37
-
38
22
  require("cropperjs/dist/cropper.css");
39
-
40
23
  var cropper;
41
-
42
24
  var RenderForm = /*#__PURE__*/function (_React$Component) {
43
25
  (0, _inherits2.default)(RenderForm, _React$Component);
44
-
45
26
  var _super = (0, _createSuper2.default)(RenderForm);
46
-
47
27
  function RenderForm() {
48
28
  var _this;
49
-
50
29
  (0, _classCallCheck2.default)(this, RenderForm);
51
-
52
30
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
53
31
  args[_key] = arguments[_key];
54
32
  }
55
-
56
33
  _this = _super.call.apply(_super, [this].concat(args));
57
34
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
58
35
  rangeInput: 0
59
36
  });
60
37
  return _this;
61
38
  }
62
-
63
39
  (0, _createClass2.default)(RenderForm, [{
64
40
  key: "render",
65
41
  value: function render() {
66
42
  var _this2 = this;
67
-
68
43
  return /*#__PURE__*/_react.default.createElement("div", {
69
44
  style: {
70
45
  width: "500px",
@@ -83,17 +58,14 @@ var RenderForm = /*#__PURE__*/function (_React$Component) {
83
58
  rangeInput: value
84
59
  }, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
85
60
  return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
86
- while (1) {
87
- switch (_context.prev = _context.next) {
88
- case 0:
89
- if (cropper) {
90
- cropper.rotateTo(parseInt(value, 10));
91
- }
92
-
93
- case 1:
94
- case "end":
95
- return _context.stop();
96
- }
61
+ while (1) switch (_context.prev = _context.next) {
62
+ case 0:
63
+ if (cropper) {
64
+ cropper.rotateTo(parseInt(value, 10));
65
+ }
66
+ case 1:
67
+ case "end":
68
+ return _context.stop();
97
69
  }
98
70
  }, _callee);
99
71
  })));
@@ -103,7 +75,6 @@ var RenderForm = /*#__PURE__*/function (_React$Component) {
103
75
  }]);
104
76
  return RenderForm;
105
77
  }(_react.default.Component);
106
-
107
78
  var tool = {
108
79
  name: "rotate",
109
80
  icon: function icon(_ref2) {
@@ -124,7 +95,6 @@ var tool = {
124
95
  },
125
96
  onActivate: function onActivate(_ref3) {
126
97
  var canvas = _ref3.canvas;
127
-
128
98
  /**
129
99
  * We can safely cast canvas.current as HTMLCanvasElement
130
100
  */
@@ -147,25 +117,20 @@ var tool = {
147
117
  resolve();
148
118
  return;
149
119
  }
150
-
151
120
  var current = canvas.current;
152
121
  var src = cropper.getCroppedCanvas().toDataURL();
153
-
154
122
  if (current) {
155
123
  var image = new window.Image();
156
124
  var ctx = current.getContext("2d");
157
-
158
125
  image.onload = function () {
159
126
  ctx.drawImage(image, 0, 0);
160
127
  current.width = image.width;
161
128
  current.height = image.height;
162
129
  ctx.drawImage(image, 0, 0);
163
130
  };
164
-
165
131
  image.src = src;
166
132
  resolve();
167
133
  }
168
-
169
134
  cropper.destroy();
170
135
  });
171
136
  }
@@ -1 +1 @@
1
- {"version":3,"names":["cropper","RenderForm","rangeInput","width","margin","state","value","setState","rotateTo","parseInt","React","Component","tool","name","icon","activateTool","renderForm","props","onActivate","canvas","Cropper","current","background","modal","guides","dragMode","highlight","autoCrop","cancel","destroy","apply","Promise","resolve","src","getCroppedCanvas","toDataURL","image","window","Image","ctx","getContext","onload","drawImage","height"],"sources":["rotate.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as RotateRight } from \"./icons/rotateRight.svg\";\nimport { ImageEditorTool } from \"./types\";\nimport { Slider } from \"../../Slider\";\nimport { Tooltip } from \"~/Tooltip\";\nimport { IconButton } from \"~/Button\";\n\nimport Cropper from \"cropperjs\";\nimport \"cropperjs/dist/cropper.css\";\n\nlet cropper: Cropper;\n\nclass RenderForm extends React.Component<any, any> {\n public override state = {\n rangeInput: 0\n };\n\n public override render() {\n return (\n <div style={{ width: \"500px\", margin: \"0 auto\" }}>\n <Slider\n label={\"Range Input\"}\n value={this.state.rangeInput}\n min={0}\n max={360}\n step={10}\n discrete={true}\n displayMarkers={true}\n onInput={(value: string) => {\n this.setState({ rangeInput: value }, async () => {\n if (cropper) {\n cropper.rotateTo(parseInt(value, 10));\n }\n });\n }}\n />\n </div>\n );\n }\n}\n\nconst tool: ImageEditorTool = {\n name: \"rotate\",\n icon({ activateTool }) {\n return (\n <Tooltip placement={\"bottom\"} content={\"Rotate\"}>\n <IconButton\n icon={<RotateRight />}\n onClick={() => activateTool(\"rotate\")}\n data-testid={\"rotate-item\"}\n />\n </Tooltip>\n );\n },\n renderForm(props) {\n return <RenderForm {...props} />;\n },\n onActivate: ({ canvas }) => {\n /**\n * We can safely cast canvas.current as HTMLCanvasElement\n */\n cropper = new Cropper(canvas.current as HTMLCanvasElement, {\n background: false,\n modal: false,\n guides: false,\n dragMode: \"none\",\n highlight: false,\n autoCrop: false\n });\n },\n cancel: () => cropper && cropper.destroy(),\n apply: ({ canvas }) => {\n return new Promise((resolve: any) => {\n if (!cropper) {\n resolve();\n return;\n }\n\n const current = canvas.current;\n const src = cropper.getCroppedCanvas().toDataURL();\n if (current) {\n const image = new window.Image();\n const ctx = current.getContext(\"2d\") as CanvasRenderingContext2D;\n image.onload = () => {\n ctx.drawImage(image, 0, 0);\n current.width = image.width;\n current.height = image.height;\n\n ctx.drawImage(image, 0, 0);\n };\n image.src = src;\n resolve();\n }\n\n cropper.destroy();\n });\n }\n};\n\nexport default tool;\n"],"mappings":"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"}
1
+ {"version":3,"names":["cropper","RenderForm","rangeInput","width","margin","state","value","setState","rotateTo","parseInt","React","Component","tool","name","icon","activateTool","renderForm","props","onActivate","canvas","Cropper","current","background","modal","guides","dragMode","highlight","autoCrop","cancel","destroy","apply","Promise","resolve","src","getCroppedCanvas","toDataURL","image","window","Image","ctx","getContext","onload","drawImage","height"],"sources":["rotate.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as RotateRight } from \"./icons/rotateRight.svg\";\nimport { ImageEditorTool } from \"./types\";\nimport { Slider } from \"../../Slider\";\nimport { Tooltip } from \"~/Tooltip\";\nimport { IconButton } from \"~/Button\";\n\nimport Cropper from \"cropperjs\";\nimport \"cropperjs/dist/cropper.css\";\n\nlet cropper: Cropper;\n\nclass RenderForm extends React.Component<any, any> {\n public override state = {\n rangeInput: 0\n };\n\n public override render() {\n return (\n <div style={{ width: \"500px\", margin: \"0 auto\" }}>\n <Slider\n label={\"Range Input\"}\n value={this.state.rangeInput}\n min={0}\n max={360}\n step={10}\n discrete={true}\n displayMarkers={true}\n onInput={(value: string) => {\n this.setState({ rangeInput: value }, async () => {\n if (cropper) {\n cropper.rotateTo(parseInt(value, 10));\n }\n });\n }}\n />\n </div>\n );\n }\n}\n\nconst tool: ImageEditorTool = {\n name: \"rotate\",\n icon({ activateTool }) {\n return (\n <Tooltip placement={\"bottom\"} content={\"Rotate\"}>\n <IconButton\n icon={<RotateRight />}\n onClick={() => activateTool(\"rotate\")}\n data-testid={\"rotate-item\"}\n />\n </Tooltip>\n );\n },\n renderForm(props) {\n return <RenderForm {...props} />;\n },\n onActivate: ({ canvas }) => {\n /**\n * We can safely cast canvas.current as HTMLCanvasElement\n */\n cropper = new Cropper(canvas.current as HTMLCanvasElement, {\n background: false,\n modal: false,\n guides: false,\n dragMode: \"none\",\n highlight: false,\n autoCrop: false\n });\n },\n cancel: () => cropper && cropper.destroy(),\n apply: ({ canvas }) => {\n return new Promise((resolve: any) => {\n if (!cropper) {\n resolve();\n return;\n }\n\n const current = canvas.current;\n const src = cropper.getCroppedCanvas().toDataURL();\n if (current) {\n const image = new window.Image();\n const ctx = current.getContext(\"2d\") as CanvasRenderingContext2D;\n image.onload = () => {\n ctx.drawImage(image, 0, 0);\n current.width = image.width;\n current.height = image.height;\n\n ctx.drawImage(image, 0, 0);\n };\n image.src = src;\n resolve();\n }\n\n cropper.destroy();\n });\n }\n};\n\nexport default tool;\n"],"mappings":"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"}