@webiny/ui 5.23.1 → 5.25.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 (379) hide show
  1. package/Accordion/Accordion.d.ts +4 -4
  2. package/Accordion/Accordion.js +1 -1
  3. package/Accordion/Accordion.js.map +1 -0
  4. package/Accordion/Accordion.stories.js.map +1 -0
  5. package/Accordion/AccordionItem.d.ts +4 -8
  6. package/Accordion/AccordionItem.js +5 -1
  7. package/Accordion/AccordionItem.js.map +1 -0
  8. package/Accordion/index.js.map +1 -0
  9. package/Alert/Alert.d.ts +4 -4
  10. package/Alert/Alert.js +1 -1
  11. package/Alert/Alert.js.map +1 -0
  12. package/Alert/Alert.stories.js.map +1 -0
  13. package/Alert/index.js.map +1 -0
  14. package/AutoComplete/AutoComplete.d.ts +11 -27
  15. package/AutoComplete/AutoComplete.js +9 -8
  16. package/AutoComplete/AutoComplete.js.map +1 -0
  17. package/AutoComplete/AutoComplete.stories.js.map +1 -0
  18. package/AutoComplete/MultiAutoComplete.d.ts +20 -43
  19. package/AutoComplete/MultiAutoComplete.js +13 -13
  20. package/AutoComplete/MultiAutoComplete.js.map +1 -0
  21. package/AutoComplete/MultiAutoComplete.stories.js.map +1 -0
  22. package/AutoComplete/index.js.map +1 -0
  23. package/AutoComplete/styles.js.map +1 -0
  24. package/AutoComplete/types.d.ts +4 -3
  25. package/AutoComplete/types.js.map +1 -0
  26. package/AutoComplete/utils.d.ts +11 -5
  27. package/AutoComplete/utils.js +2 -2
  28. package/AutoComplete/utils.js.map +1 -0
  29. package/Avatar/Avatar.d.ts +5 -11
  30. package/Avatar/Avatar.js +12 -7
  31. package/Avatar/Avatar.js.map +1 -0
  32. package/Avatar/Avatar.stories.js.map +1 -0
  33. package/Avatar/index.js.map +1 -0
  34. package/Button/Button.d.ts +8 -23
  35. package/Button/Button.js +7 -22
  36. package/Button/Button.js.map +1 -0
  37. package/Button/Button.stories.js.map +1 -0
  38. package/Button/CopyButton/CopyButton.d.ts +4 -7
  39. package/Button/CopyButton/CopyButton.js +1 -4
  40. package/Button/CopyButton/CopyButton.js.map +1 -0
  41. package/Button/CopyButton/CopyButton.stories.js.map +1 -0
  42. package/Button/IconButton/IconButton.d.ts +4 -7
  43. package/Button/IconButton/IconButton.js +1 -4
  44. package/Button/IconButton/IconButton.js.map +1 -0
  45. package/Button/IconButton/IconButton.stories.js.map +1 -0
  46. package/Button/index.js.map +1 -0
  47. package/Carousel/Carousel.d.ts +3 -3
  48. package/Carousel/Carousel.js +1 -1
  49. package/Carousel/Carousel.js.map +1 -0
  50. package/Carousel/Carouser.stories.js.map +1 -0
  51. package/Carousel/index.js.map +1 -0
  52. package/Checkbox/Checkbox.d.ts +4 -9
  53. package/Checkbox/Checkbox.js +8 -9
  54. package/Checkbox/Checkbox.js.map +1 -0
  55. package/Checkbox/Checkbox.stories.js.map +1 -0
  56. package/Checkbox/Checkbox.styles.js.map +1 -0
  57. package/Checkbox/CheckboxGroup.d.ts +1 -1
  58. package/Checkbox/CheckboxGroup.js +1 -1
  59. package/Checkbox/CheckboxGroup.js.map +1 -0
  60. package/Checkbox/CheckboxGroup.stories.js +1 -1
  61. package/Checkbox/CheckboxGroup.stories.js.map +1 -0
  62. package/Checkbox/index.js.map +1 -0
  63. package/Chips/Chip.d.ts +3 -8
  64. package/Chips/Chip.js +1 -1
  65. package/Chips/Chip.js.map +1 -0
  66. package/Chips/ChipIcon.d.ts +2 -2
  67. package/Chips/ChipIcon.js +1 -1
  68. package/Chips/ChipIcon.js.map +1 -0
  69. package/Chips/Chips.d.ts +4 -4
  70. package/Chips/Chips.js +1 -1
  71. package/Chips/Chips.js.map +1 -0
  72. package/Chips/Chips.stories.js.map +1 -0
  73. package/Chips/index.js.map +1 -0
  74. package/Chips/styles.js.map +1 -0
  75. package/CodeEditor/CodeEditor.d.ts +3 -8
  76. package/CodeEditor/CodeEditor.js +7 -9
  77. package/CodeEditor/CodeEditor.js.map +1 -0
  78. package/CodeEditor/CodeEditor.stories.js.map +1 -0
  79. package/CodeEditor/index.js.map +1 -0
  80. package/ColorPicker/ColorPicker.d.ts +9 -10
  81. package/ColorPicker/ColorPicker.js +8 -10
  82. package/ColorPicker/ColorPicker.js.map +1 -0
  83. package/ColorPicker/ColorPicker.stories.js +1 -1
  84. package/ColorPicker/ColorPicker.stories.js.map +1 -0
  85. package/ColorPicker/index.js.map +1 -0
  86. package/ConfirmationDialog/ConfirmationDialog.d.ts +13 -13
  87. package/ConfirmationDialog/ConfirmationDialog.js +7 -4
  88. package/ConfirmationDialog/ConfirmationDialog.js.map +1 -0
  89. package/ConfirmationDialog/ConfirmationDialog.stories.js +1 -1
  90. package/ConfirmationDialog/ConfirmationDialog.stories.js.map +1 -0
  91. package/ConfirmationDialog/index.js.map +1 -0
  92. package/ConfirmationDialog/withConfirmation.d.ts +2 -2
  93. package/ConfirmationDialog/withConfirmation.js +1 -1
  94. package/ConfirmationDialog/withConfirmation.js.map +1 -0
  95. package/Dialog/Dialog.d.ts +21 -30
  96. package/Dialog/Dialog.js +4 -1
  97. package/Dialog/Dialog.js.map +1 -0
  98. package/Dialog/Dialog.stories.js.map +1 -0
  99. package/Dialog/index.js.map +1 -0
  100. package/Drawer/Drawer.d.ts +1 -1
  101. package/Drawer/Drawer.js +1 -1
  102. package/Drawer/Drawer.js.map +1 -0
  103. package/Drawer/Drawer.stories.js.map +1 -0
  104. package/Drawer/index.js.map +1 -0
  105. package/DynamicFieldset/Fieldset.d.ts +26 -16
  106. package/DynamicFieldset/Fieldset.js +24 -14
  107. package/DynamicFieldset/Fieldset.js.map +1 -0
  108. package/DynamicFieldset/index.js.map +1 -0
  109. package/Elevation/Elevation.d.ts +1 -1
  110. package/Elevation/Elevation.js +1 -1
  111. package/Elevation/Elevation.js.map +1 -0
  112. package/Elevation/Elevation.stories.js +1 -1
  113. package/Elevation/Elevation.stories.js.map +1 -0
  114. package/Elevation/index.js.map +1 -0
  115. package/FormElementMessage/FormElementMessage.d.ts +1 -1
  116. package/FormElementMessage/FormElementMessage.js +1 -1
  117. package/FormElementMessage/FormElementMessage.js.map +1 -0
  118. package/FormElementMessage/index.js.map +1 -0
  119. package/FullName/FullName.js.map +1 -0
  120. package/FullName/index.js.map +1 -0
  121. package/Grid/Grid.d.ts +1 -1
  122. package/Grid/Grid.js +1 -1
  123. package/Grid/Grid.js.map +1 -0
  124. package/Grid/Grid.stories.js.map +1 -0
  125. package/Grid/index.js.map +1 -0
  126. package/Helpers/ClassNames.d.ts +4 -3
  127. package/Helpers/ClassNames.js +5 -3
  128. package/Helpers/ClassNames.js.map +1 -0
  129. package/Helpers/index.js.map +1 -0
  130. package/Icon/Icon.d.ts +3 -6
  131. package/Icon/Icon.js +1 -4
  132. package/Icon/Icon.js.map +1 -0
  133. package/Icon/Icon.stories.js.map +1 -0
  134. package/Icon/index.js.map +1 -0
  135. package/Image/Image.d.ts +4 -4
  136. package/Image/Image.js +6 -4
  137. package/Image/Image.js.map +1 -0
  138. package/Image/Image.stories.js +1 -1
  139. package/Image/Image.stories.js.map +1 -0
  140. package/Image/index.js.map +1 -0
  141. package/ImageEditor/ImageEditor.d.ts +32 -34
  142. package/ImageEditor/ImageEditor.js +41 -26
  143. package/ImageEditor/ImageEditor.js.map +1 -0
  144. package/ImageEditor/index.js.map +1 -0
  145. package/ImageEditor/toolbar/crop.js +5 -3
  146. package/ImageEditor/toolbar/crop.js.map +1 -0
  147. package/ImageEditor/toolbar/filter.js +3 -1
  148. package/ImageEditor/toolbar/filter.js.map +1 -0
  149. package/ImageEditor/toolbar/flip.js +4 -2
  150. package/ImageEditor/toolbar/flip.js.map +1 -0
  151. package/ImageEditor/toolbar/icons/index.js.map +1 -0
  152. package/ImageEditor/toolbar/index.js.map +1 -0
  153. package/ImageEditor/toolbar/rotate.js +8 -2
  154. package/ImageEditor/toolbar/rotate.js.map +1 -0
  155. package/ImageEditor/toolbar/types.d.ts +22 -12
  156. package/ImageEditor/toolbar/types.js.map +1 -0
  157. package/ImageUpload/Image.d.ts +6 -6
  158. package/ImageUpload/Image.js +1 -1
  159. package/ImageUpload/Image.js.map +1 -0
  160. package/ImageUpload/ImageEditorDialog.d.ts +11 -6
  161. package/ImageUpload/ImageEditorDialog.js +7 -2
  162. package/ImageUpload/ImageEditorDialog.js.map +1 -0
  163. package/ImageUpload/MultiImageUpload.d.ts +10 -31
  164. package/ImageUpload/MultiImageUpload.js +33 -15
  165. package/ImageUpload/MultiImageUpload.js.map +1 -0
  166. package/ImageUpload/MultiImageUpload.stories.js.map +1 -0
  167. package/ImageUpload/SingleImageUpload.d.ts +16 -37
  168. package/ImageUpload/SingleImageUpload.js +20 -12
  169. package/ImageUpload/SingleImageUpload.js.map +1 -0
  170. package/ImageUpload/SingleImageUpload.stories.js.map +1 -0
  171. package/ImageUpload/index.js.map +1 -0
  172. package/ImageUpload/styled.d.ts +18 -14
  173. package/ImageUpload/styled.js.map +1 -0
  174. package/Input/Input.d.ts +2 -8
  175. package/Input/Input.js +8 -8
  176. package/Input/Input.js.map +1 -0
  177. package/Input/Input.stories.js +1 -1
  178. package/Input/Input.stories.js.map +1 -0
  179. package/Input/__tests__/Input.test.js +32 -26
  180. package/Input/__tests__/Input.test.js.map +1 -0
  181. package/Input/index.js.map +1 -0
  182. package/List/CollapsibleList/CollapsibleList.stories.js.map +1 -0
  183. package/List/CollapsibleList/index.d.ts +2 -2
  184. package/List/CollapsibleList/index.js +1 -1
  185. package/List/CollapsibleList/index.js.map +1 -0
  186. package/List/DataList/DataList.d.ts +23 -43
  187. package/List/DataList/DataList.js +43 -9
  188. package/List/DataList/DataList.js.map +1 -0
  189. package/List/DataList/DataList.stories.js.map +1 -0
  190. package/List/DataList/DataListModalOverlay/DataListModalOverlay.d.ts +7 -8
  191. package/List/DataList/DataListModalOverlay/DataListModalOverlay.js.map +1 -0
  192. package/List/DataList/DataListModalOverlay/DataListModalOverlayAction.d.ts +3 -3
  193. package/List/DataList/DataListModalOverlay/DataListModalOverlayAction.js.map +1 -0
  194. package/List/DataList/DataListModalOverlay/DataListModalOverlayContext.d.ts +9 -4
  195. package/List/DataList/DataListModalOverlay/DataListModalOverlayContext.js +6 -1
  196. package/List/DataList/DataListModalOverlay/DataListModalOverlayContext.js.map +1 -0
  197. package/List/DataList/DataListModalOverlay/index.js.map +1 -0
  198. package/List/DataList/Loader.d.ts +2 -2
  199. package/List/DataList/Loader.js +6 -1
  200. package/List/DataList/Loader.js.map +1 -0
  201. package/List/DataList/NoData.d.ts +2 -2
  202. package/List/DataList/NoData.js +1 -1
  203. package/List/DataList/NoData.js.map +1 -0
  204. package/List/DataList/icons/index.d.ts +1 -1
  205. package/List/DataList/icons/index.js +1 -1
  206. package/List/DataList/icons/index.js.map +1 -0
  207. package/List/DataList/index.js.map +1 -0
  208. package/List/DataList/types.d.ts +1 -1
  209. package/List/DataList/types.js.map +1 -0
  210. package/List/List.d.ts +1 -1
  211. package/List/List.js +1 -1
  212. package/List/List.js.map +1 -0
  213. package/List/List.stories.js.map +1 -0
  214. package/List/icons/index.js.map +1 -0
  215. package/List/index.js.map +1 -0
  216. package/Menu/Menu.d.ts +14 -19
  217. package/Menu/Menu.js +1 -2
  218. package/Menu/Menu.js.map +1 -0
  219. package/Menu/Menu.stories.js +1 -1
  220. package/Menu/Menu.stories.js.map +1 -0
  221. package/Menu/index.js.map +1 -0
  222. package/Mosaic/Mosaic.d.ts +4 -14
  223. package/Mosaic/Mosaic.js +11 -3
  224. package/Mosaic/Mosaic.js.map +1 -0
  225. package/Mosaic/Mosaic.stories.js +1 -1
  226. package/Mosaic/Mosaic.stories.js.map +1 -0
  227. package/Mosaic/index.js.map +1 -0
  228. package/Progress/CircularProgress.d.ts +8 -16
  229. package/Progress/CircularProgress.js +12 -8
  230. package/Progress/CircularProgress.js.map +1 -0
  231. package/Progress/index.js.map +1 -0
  232. package/Radio/Radio.d.ts +1 -6
  233. package/Radio/Radio.js +8 -9
  234. package/Radio/Radio.js.map +1 -0
  235. package/Radio/Radio.styles.js.map +1 -0
  236. package/Radio/RadioGroup.d.ts +1 -6
  237. package/Radio/RadioGroup.js +8 -10
  238. package/Radio/RadioGroup.js.map +1 -0
  239. package/Radio/RadioGroup.stories.js +1 -1
  240. package/Radio/RadioGroup.stories.js.map +1 -0
  241. package/Radio/index.js.map +1 -0
  242. package/RichTextEditor/RichTextEditor.d.ts +6 -6
  243. package/RichTextEditor/RichTextEditor.js +26 -4
  244. package/RichTextEditor/RichTextEditor.js.map +1 -0
  245. package/RichTextEditor/RichTextEditor.stories.js +1 -1
  246. package/RichTextEditor/RichTextEditor.stories.js.map +1 -0
  247. package/RichTextEditor/createPropsFromConfig.d.ts +11 -1
  248. package/RichTextEditor/createPropsFromConfig.js +7 -3
  249. package/RichTextEditor/createPropsFromConfig.js.map +1 -0
  250. package/RichTextEditor/index.js.map +1 -0
  251. package/Ripple/Ripple.d.ts +4 -5
  252. package/Ripple/Ripple.js +1 -1
  253. package/Ripple/Ripple.js.map +1 -0
  254. package/Ripple/Ripple.stories.js +2 -2
  255. package/Ripple/Ripple.stories.js.map +1 -0
  256. package/Ripple/index.js.map +1 -0
  257. package/Scrollbar/Scrollbar.d.ts +5 -5
  258. package/Scrollbar/Scrollbar.js +1 -1
  259. package/Scrollbar/Scrollbar.js.map +1 -0
  260. package/Scrollbar/Scrollbar.stories.js +1 -1
  261. package/Scrollbar/Scrollbar.stories.js.map +1 -0
  262. package/Scrollbar/index.js.map +1 -0
  263. package/Section/Section.stories.js.map +1 -0
  264. package/Section/index.d.ts +4 -5
  265. package/Section/index.js +1 -1
  266. package/Section/index.js.map +1 -0
  267. package/Select/Select.d.ts +6 -9
  268. package/Select/Select.js +69 -11
  269. package/Select/Select.js.map +1 -0
  270. package/Select/Select.stories.js.map +1 -0
  271. package/Select/index.js.map +1 -0
  272. package/Slider/Slider.d.ts +1 -6
  273. package/Slider/Slider.js +7 -9
  274. package/Slider/Slider.js.map +1 -0
  275. package/Slider/Slider.stories.js +1 -1
  276. package/Slider/Slider.stories.js.map +1 -0
  277. package/Slider/index.js.map +1 -0
  278. package/Snackbar/Snackbar.d.ts +4 -7
  279. package/Snackbar/Snackbar.js +2 -5
  280. package/Snackbar/Snackbar.js.map +1 -0
  281. package/Snackbar/Snackbar.stories.js +1 -1
  282. package/Snackbar/Snackbar.stories.js.map +1 -0
  283. package/Snackbar/index.js.map +1 -0
  284. package/Switch/Switch.d.ts +1 -6
  285. package/Switch/Switch.js +8 -9
  286. package/Switch/Switch.js.map +1 -0
  287. package/Switch/Switch.stories.js.map +1 -0
  288. package/Switch/index.js.map +1 -0
  289. package/Tabs/Tab.d.ts +6 -2
  290. package/Tabs/Tab.js +1 -1
  291. package/Tabs/Tab.js.map +1 -0
  292. package/Tabs/Tabs.d.ts +19 -13
  293. package/Tabs/Tabs.js +30 -18
  294. package/Tabs/Tabs.js.map +1 -0
  295. package/Tabs/Tabs.stories.js +1 -1
  296. package/Tabs/Tabs.stories.js.map +1 -0
  297. package/Tabs/index.js.map +1 -0
  298. package/Tags/Tags.d.ts +5 -10
  299. package/Tags/Tags.js +12 -12
  300. package/Tags/Tags.js.map +1 -0
  301. package/Tags/Tags.stories.js.map +1 -0
  302. package/Tags/index.js.map +1 -0
  303. package/Tooltip/Tooltip.d.ts +8 -7
  304. package/Tooltip/Tooltip.js +8 -3
  305. package/Tooltip/Tooltip.js.map +1 -0
  306. package/Tooltip/Tooltip.stories.js.map +1 -0
  307. package/Tooltip/index.js.map +1 -0
  308. package/TopAppBar/TopAppBar.d.ts +1 -1
  309. package/TopAppBar/TopAppBar.js +1 -1
  310. package/TopAppBar/TopAppBar.js.map +1 -0
  311. package/TopAppBar/TopAppBar.stories.js.map +1 -0
  312. package/TopAppBar/TopAppBarActionItem.js +1 -1
  313. package/TopAppBar/TopAppBarActionItem.js.map +1 -0
  314. package/TopAppBar/TopAppBarNavigationIcon.js +1 -1
  315. package/TopAppBar/TopAppBarNavigationIcon.js.map +1 -0
  316. package/TopAppBar/TopAppBarPrimary.js +1 -1
  317. package/TopAppBar/TopAppBarPrimary.js.map +1 -0
  318. package/TopAppBar/TopAppBarSecondary.js +1 -1
  319. package/TopAppBar/TopAppBarSecondary.js.map +1 -0
  320. package/TopAppBar/TopAppBarSection.d.ts +1 -1
  321. package/TopAppBar/TopAppBarSection.js +1 -1
  322. package/TopAppBar/TopAppBarSection.js.map +1 -0
  323. package/TopAppBar/TopAppBarTitle.d.ts +1 -1
  324. package/TopAppBar/TopAppBarTitle.js +1 -1
  325. package/TopAppBar/TopAppBarTitle.js.map +1 -0
  326. package/TopAppBar/index.js.map +1 -0
  327. package/TopProgressBar/TopProgressBar.d.ts +7 -7
  328. package/TopProgressBar/TopProgressBar.js.map +1 -0
  329. package/TopProgressBar/TopProgressBar.stories.js +1 -1
  330. package/TopProgressBar/TopProgressBar.stories.js.map +1 -0
  331. package/TopProgressBar/hoc/index.js.map +1 -0
  332. package/TopProgressBar/hoc/withTopProgressBar.d.ts +1 -1
  333. package/TopProgressBar/hoc/withTopProgressBar.js +1 -1
  334. package/TopProgressBar/hoc/withTopProgressBar.js.map +1 -0
  335. package/TopProgressBar/index.js.map +1 -0
  336. package/Typography/Typography.d.ts +4 -4
  337. package/Typography/Typography.js +1 -1
  338. package/Typography/Typography.js.map +1 -0
  339. package/Typography/Typography.stories.js +1 -1
  340. package/Typography/Typography.stories.js.map +1 -0
  341. package/Typography/index.js.map +1 -0
  342. package/package.json +21 -12
  343. package/rmwc/base/LICENSE +21 -0
  344. package/rmwc/base/README.md +3 -0
  345. package/rmwc/base/code/component.d.ts +18 -0
  346. package/rmwc/base/code/component.js +163 -0
  347. package/rmwc/base/code/foundation-component.d.ts +79 -0
  348. package/rmwc/base/code/foundation-component.js +354 -0
  349. package/rmwc/base/code/index.d.ts +16 -0
  350. package/rmwc/base/code/index.js +25 -0
  351. package/rmwc/base/code/test-polyfill.d.ts +3 -0
  352. package/rmwc/base/code/test-polyfill.js +33 -0
  353. package/rmwc/base/code/utils/apply-passive.d.ts +8 -0
  354. package/rmwc/base/code/utils/apply-passive.js +63 -0
  355. package/rmwc/base/code/utils/debounce.d.ts +2 -0
  356. package/rmwc/base/code/utils/debounce.js +17 -0
  357. package/rmwc/base/code/utils/deprecation.d.ts +6 -0
  358. package/rmwc/base/code/utils/deprecation.js +76 -0
  359. package/rmwc/base/code/utils/emitter.d.ts +13 -0
  360. package/rmwc/base/code/utils/emitter.js +120 -0
  361. package/rmwc/base/code/utils/events-map.d.ts +87 -0
  362. package/rmwc/base/code/utils/events-map.js +90 -0
  363. package/rmwc/base/code/utils/index.d.ts +10 -0
  364. package/rmwc/base/code/utils/index.js +19 -0
  365. package/rmwc/base/code/utils/ponyfills.d.ts +3 -0
  366. package/rmwc/base/code/utils/ponyfills.js +29 -0
  367. package/rmwc/base/code/utils/random-id.d.ts +6 -0
  368. package/rmwc/base/code/utils/random-id.js +14 -0
  369. package/rmwc/base/code/utils/strings.d.ts +3 -0
  370. package/rmwc/base/code/utils/strings.js +13 -0
  371. package/rmwc/base/code/utils/use-knob.d.ts +2 -0
  372. package/rmwc/base/code/utils/use-knob.js +64 -0
  373. package/rmwc/base/code/utils/wrap-child.d.ts +3 -0
  374. package/rmwc/base/code/utils/wrap-child.js +55 -0
  375. package/rmwc/base/code/with-theme.d.ts +15 -0
  376. package/rmwc/base/code/with-theme.js +106 -0
  377. package/rmwc/base/package.json +40 -0
  378. package/types.d.ts +2 -2
  379. package/types.js.map +1 -0
package/Grid/Grid.js CHANGED
@@ -1,4 +1,4 @@
1
- import * as React from "react";
1
+ import React from "react";
2
2
  import { Grid as RmwcGrid, GridCell as RmwcGridCell, GridInner as RmwcGridInner } from "@rmwc/grid";
3
3
 
4
4
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Grid.tsx"],"names":["React","Grid","RmwcGrid","GridCell","RmwcGridCell","GridInner","RmwcGridInner","Cell","props","children","displayName"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SACIC,IAAI,IAAIC,QADZ,EAEIC,QAAQ,IAAIC,YAFhB,EAGIC,SAAS,IAAIC,aAHjB,QAMO,YANP;;AAwBA;AACA;AACA;AACA,OAAO,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAACC,KAAD,EAAsB;AACtC,sBAAO,oBAAC,YAAD,EAAkBA,KAAlB,EAA0BA,KAAK,CAACC,QAAhC,CAAP;AACH,CAFM;AAcP,OAAO,IAAMJ,SAAS,GAAG,SAAZA,SAAY,CAACG,KAAD,EAA2B;AAChD,sBAAO,oBAAC,aAAD,EAAmBA,KAAnB,EAA2BA,KAAK,CAACC,QAAjC,CAAP;AACH,CAFM;AAIPJ,SAAS,CAACK,WAAV,GAAwB,WAAxB;AAEA;AACA;AACA;;AACA,OAAO,IAAMT,IAAI,GAAG,SAAPA,IAAO,CAACO,KAAD,EAAsB;AACtC,sBAAO,oBAAC,QAAD,EAAcA,KAAd,EAAsBA,KAAK,CAACC,QAA5B,CAAP;AACH,CAFM","sourcesContent":["import React from \"react\";\nimport {\n Grid as RmwcGrid,\n GridCell as RmwcGridCell,\n GridInner as RmwcGridInner,\n GridCellProps as RmwcGridCellProps,\n GridProps as RmwcGridProps\n} from \"@rmwc/grid\";\nimport { CSSProperties } from \"react\";\n\nexport type CellProps = RmwcGridCellProps & {\n // One or more Cell components.\n children?: React.ReactNode;\n\n // CSS class name that will be added to the element\n className?: string;\n\n style?: { [key: string]: any };\n};\n\nexport type GridProps = RmwcGridProps & {\n className?: string;\n style?: CSSProperties;\n};\n\n/**\n * Cell must be direct children of Grid component.\n */\nexport const Cell = (props: CellProps) => {\n return <RmwcGridCell {...props}>{props.children}</RmwcGridCell>;\n};\n\nexport type GridInnerProps = {\n // One or more Cell components.\n children: React.ReactElement<typeof Cell> | React.ReactElement<typeof Cell>[];\n\n /**\n * CSS class name\n */\n className?: string;\n};\n\nexport const GridInner = (props: GridInnerProps) => {\n return <RmwcGridInner {...props}>{props.children}</RmwcGridInner>;\n};\n\nGridInner.displayName = \"GridInner\";\n\n/**\n * Use Grid component to display a list of choices, once the handler is triggered.\n */\nexport const Grid = (props: GridProps) => {\n return <RmwcGrid {...props}>{props.children}</RmwcGrid>;\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Grid.stories.tsx"],"names":["React","storiesOf","Story","StoryReadme","StorySandbox","readme","Grid","Cell","story","module","add","info","propTables"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,SAAT,QAA0B,kBAA1B;AACA,SAASC,KAAT,EAAgBC,WAAhB,EAA6BC,YAA7B,QAAiD,+BAAjD;AACA,OAAOC,MAAP;AACA,SAASC,IAAT,EAAeC,IAAf;AAEA,IAAMC,KAAK,GAAGP,SAAS,CAAC,iBAAD,EAAoBQ,MAApB,CAAvB;AAEAD,KAAK,CAACE,GAAN,CACI,OADJ,EAEI,YAAM;AACF,sBACI,oBAAC,KAAD,qBACI,oBAAC,WAAD,QAAcL,MAAd,CADJ,eAEI,oBAAC,YAAD;AAAc,IAAA,KAAK,EAAE;AAArB,kBACI,oBAAC,IAAD,qBACI,oBAAC,IAAD;AAAM,IAAA,IAAI,EAAE,CAAZ;AAAe,IAAA,MAAM,EAAE,CAAvB;AAA0B,IAAA,KAAK,EAAE;AAAjC,cADJ,eAII,oBAAC,IAAD;AAAM,IAAA,IAAI,EAAE,CAAZ;AAAe,IAAA,MAAM,EAAE,CAAvB;AAA0B,IAAA,KAAK,EAAE;AAAjC,eAJJ,eAOI,oBAAC,IAAD;AAAM,IAAA,IAAI,EAAE,CAAZ;AAAe,IAAA,MAAM,EAAE,CAAvB;AAA0B,IAAA,KAAK,EAAE;AAAjC,eAPJ,eAUI,oBAAC,IAAD;AAAM,IAAA,IAAI,EAAE,CAAZ;AAAe,IAAA,MAAM,EAAE,CAAvB;AAA0B,IAAA,KAAK,EAAE;AAAjC,oBAVJ,CADJ,CAFJ,CADJ;AAqBH,CAxBL,EAyBI;AAAEM,EAAAA,IAAI,EAAE;AAAEC,IAAAA,UAAU,EAAE,CAACN,IAAD,EAAOC,IAAP;AAAd;AAAR,CAzBJ","sourcesContent":["import React from \"react\";\nimport { storiesOf } from \"@storybook/react\";\nimport { Story, StoryReadme, StorySandbox } from \"@webiny/storybook-utils/Story\";\nimport readme from \"./../Grid/README.md\";\nimport { Grid, Cell } from \"./Grid\";\n\nconst story = storiesOf(\"Components/Grid\", module);\n\nstory.add(\n \"usage\",\n () => {\n return (\n <Story>\n <StoryReadme>{readme}</StoryReadme>\n <StorySandbox title={\"A simple grid.\"}>\n <Grid>\n <Cell span={3} tablet={6} phone={12}>\n Apples\n </Cell>\n <Cell span={3} tablet={6} phone={12}>\n Oranges\n </Cell>\n <Cell span={3} tablet={6} phone={12}>\n Bananas\n </Cell>\n <Cell span={3} tablet={6} phone={12}>\n Strawberries\n </Cell>\n </Grid>\n </StorySandbox>\n </Story>\n );\n },\n { info: { propTables: [Grid, Cell] } }\n);\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA","sourcesContent":["export * from \"./Grid\";\n"]}
@@ -3,8 +3,9 @@
3
3
  * the provided appendClasses(string) and any class names defined inside your props.
4
4
  * To you the function just do: {...getClasses (props)}
5
5
  * and make sure you are not spreading the `props` element, as this will clone and spread your current `props` element already.
6
- * @param {*} propList
7
- * @param {*} appendClasses
8
6
  */
9
- declare const getClasses: (propList: any, appendClasses: any) => any;
7
+ /**
8
+ * TODO @ts-refactor figure out propList type
9
+ */
10
+ declare const getClasses: (propList: any, appendClasses: string[] | string) => any;
10
11
  export { getClasses };
@@ -6,11 +6,13 @@ import classnames from "classnames";
6
6
  * the provided appendClasses(string) and any class names defined inside your props.
7
7
  * To you the function just do: {...getClasses (props)}
8
8
  * and make sure you are not spreading the `props` element, as this will clone and spread your current `props` element already.
9
- * @param {*} propList
10
- * @param {*} appendClasses
9
+ */
10
+
11
+ /**
12
+ * TODO @ts-refactor figure out propList type
11
13
  */
12
14
  var getClasses = function getClasses(propList, appendClasses) {
13
- var classes = {};
15
+ var classes = "";
14
16
 
15
17
  var props = _clone(propList);
16
18
 
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ClassNames.ts"],"names":["classnames","getClasses","propList","appendClasses","classes","props","hasOwnProperty","className"],"mappings":";AAAA,OAAOA,UAAP,MAAuB,YAAvB;;AAGA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,QAAD,EAAgBC,aAAhB,EAAqD;AACpE,MAAIC,OAAO,GAAG,EAAd;;AACA,MAAMC,KAAK,GAAG,OAAMH,QAAN,CAAd;;AACA,MAAIA,QAAQ,CAACI,cAAT,CAAwB,WAAxB,CAAJ,EAA0C;AACtCF,IAAAA,OAAO,GAAGJ,UAAU,CAACE,QAAQ,CAACK,SAAV,CAApB;AACA,WAAOF,KAAK,CAACE,SAAb;AACH;;AAED,MAAI,OAAOJ,aAAP,KAAyB,WAA7B,EAA0C;AACtCC,IAAAA,OAAO,GAAGJ,UAAU,CAACI,OAAD,EAAUD,aAAV,CAApB;AACH;;AAEDE,EAAAA,KAAK,CAACE,SAAN,GAAkBH,OAAlB;AAEA,SAAOC,KAAP;AACH,CAfD;;AAiBA,SAASJ,UAAT","sourcesContent":["import classnames from \"classnames\";\nimport { clone } from \"lodash\";\n\n/**\n * This is a pass-through that modifies your object's props and creates the required className prop by merging\n * the provided appendClasses(string) and any class names defined inside your props.\n * To you the function just do: {...getClasses (props)}\n * and make sure you are not spreading the `props` element, as this will clone and spread your current `props` element already.\n */\n/**\n * TODO @ts-refactor figure out propList type\n */\nconst getClasses = (propList: any, appendClasses: string[] | string) => {\n let classes = \"\";\n const props = clone(propList);\n if (propList.hasOwnProperty(\"className\")) {\n classes = classnames(propList.className);\n delete props.className;\n }\n\n if (typeof appendClasses !== \"undefined\") {\n classes = classnames(classes, appendClasses);\n }\n\n props.className = classes;\n\n return props;\n};\n\nexport { getClasses };\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["getClasses"],"mappings":"AAAA,SAASA,UAAT;AAEA,SAASA,UAAT","sourcesContent":["import { getClasses } from \"./ClassNames\";\n\nexport { getClasses };\n"]}
package/Icon/Icon.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import * as React from "react";
1
+ import React from "react";
2
2
  export declare type IconProps = {
3
3
  /**
4
4
  * SvgComponent containing the svg icon
5
5
  */
6
- icon: React.ReactElement<any>;
6
+ icon: React.ReactElement;
7
7
  /**
8
8
  * Optional onclick handler
9
9
  */
@@ -16,9 +16,6 @@ export declare type IconProps = {
16
16
  };
17
17
  /**
18
18
  * Use Icon component to display an icon.
19
- * @param props
20
- * @returns {*}
21
- * @constructor
22
19
  */
23
- declare const Icon: (props: IconProps) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, string | any | (new (props: any) => React.Component<any, any, any>)>) | (new (props: any) => React.Component<any, any, any>)>;
20
+ declare const Icon: React.FC<IconProps>;
24
21
  export { Icon };
package/Icon/Icon.js CHANGED
@@ -1,4 +1,4 @@
1
- import * as React from "react";
1
+ import React from "react";
2
2
  import { css } from "emotion";
3
3
  import classNames from "classnames";
4
4
  var webinyIcon = /*#__PURE__*/css({}, {
@@ -10,9 +10,6 @@ var webinyIcon = /*#__PURE__*/css({}, {
10
10
  }, "label:webinyIcon;");
11
11
  /**
12
12
  * Use Icon component to display an icon.
13
- * @param props
14
- * @returns {*}
15
- * @constructor
16
13
  */
17
14
 
18
15
  var Icon = function Icon(props) {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Icon.tsx"],"names":["React","css","classNames","webinyIcon","marginLeft","width","display","Icon","props","cloneElement","icon","className","onClick"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,GAAT,QAAoB,SAApB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AAsBA,IAAMC,UAAU,gBAAGF,GAAG,CAClB,EADkB,EAElB;AACI,wBAAsB;AAClBG,IAAAA,UAAU,EAAE,CADM;AAElBC,IAAAA,KAAK,EAAE,SAFW;AAGlBC,IAAAA,OAAO,EAAE;AAHS;AAD1B,CAFkB,sBAAtB;AAWA;AACA;AACA;;AACA,IAAMC,IAAyB,GAAG,SAA5BA,IAA4B,CAAAC,KAAK,EAAI;AACvC,sBAAOR,KAAK,CAACS,YAAN,CAAmBD,KAAK,CAACE,IAAzB,EAA+B;AAClC,mBAAeF,KAAK,CAAC,aAAD,CADc;AAElCG,IAAAA,SAAS,EAAET,UAAU,CAAC,iCAAD,EAAoCC,UAApC,EAAgDK,KAAK,CAACG,SAAtD,CAFa;AAGlCC,IAAAA,OAAO,EAAEJ,KAAK,CAACI;AAHmB,GAA/B,CAAP;AAKH,CAND;;AAQA,SAASL,IAAT","sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\nimport classNames from \"classnames\";\n\nexport type IconProps = {\n /**\n * SvgComponent containing the svg icon\n */\n icon: React.ReactElement;\n\n /**\n * Optional onclick handler\n */\n onClick?: Function;\n\n /**\n * CSS class to be added to the icon\n */\n className?: string;\n\n // For testing purposes.\n \"data-testid\"?: string;\n};\n\nconst webinyIcon = css(\n {},\n {\n \"&.mdc-button__icon\": {\n marginLeft: 0,\n width: \"inherit\",\n display: \"block\"\n }\n }\n);\n\n/**\n * Use Icon component to display an icon.\n */\nconst Icon: React.FC<IconProps> = props => {\n return React.cloneElement(props.icon, {\n \"data-testid\": props[\"data-testid\"],\n className: classNames(\"mdc-button__icon webiny-ui-icon\", webinyIcon, props.className),\n onClick: props.onClick\n });\n};\n\nexport { Icon };\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Icon.stories.tsx"],"names":["React","storiesOf","Story","StoryReadme","StorySandbox","readme","ReactComponent","AutoRenewIcon","CloudDoneIcon","BaselineDeleteIcon","BaselineDoneIcon","Icon","story","module","add","info","propTables"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,SAAT,QAA0B,kBAA1B;AACA,SAASC,KAAT,EAAgBC,WAAhB,EAA6BC,YAA7B,QAAiD,+BAAjD;AACA,OAAOC,MAAP;AAEA,SAASC,cAAc,IAAIC,aAA3B;AACA,SAASD,cAAc,IAAIE,aAA3B;AACA,SAASF,cAAc,IAAIG,kBAA3B;AACA,SAASH,cAAc,IAAII,gBAA3B;AACA,SAASC,IAAT;AAEA,IAAMC,KAAK,GAAGX,SAAS,CAAC,iBAAD,EAAoBY,MAApB,CAAvB;AAEAD,KAAK,CAACE,GAAN,CACI,OADJ,EAEI,YAAM;AACF,sBACI,oBAAC,KAAD,qBACI,oBAAC,WAAD,QAAcT,MAAd,CADJ,eAEI,oBAAC,YAAD;AAAc,IAAA,KAAK,EAAE;AAArB,kBACI,8CACI,oBAAC,IAAD;AAAM,IAAA,IAAI,eAAE,oBAAC,aAAD;AAAZ,IADJ,uBAGI,oBAAC,IAAD;AAAM,IAAA,IAAI,eAAE,oBAAC,aAAD;AAAZ,IAHJ,uBAKI,oBAAC,IAAD;AAAM,IAAA,IAAI,eAAE,oBAAC,kBAAD;AAAZ,IALJ,uBAOI,oBAAC,IAAD;AAAM,IAAA,IAAI,eAAE,oBAAC,gBAAD;AAAZ,IAPJ,SADJ,CAFJ,CADJ;AAiBH,CApBL,EAqBI;AAAEU,EAAAA,IAAI,EAAE;AAAEC,IAAAA,UAAU,EAAE,CAACL,IAAD;AAAd;AAAR,CArBJ","sourcesContent":["import React from \"react\";\nimport { storiesOf } from \"@storybook/react\";\nimport { Story, StoryReadme, StorySandbox } from \"@webiny/storybook-utils/Story\";\nimport readme from \"./../Icon/README.md\";\n\nimport { ReactComponent as AutoRenewIcon } from \"./svg/baseline-autorenew-24px.svg\";\nimport { ReactComponent as CloudDoneIcon } from \"./svg/baseline-cloud_done-24px.svg\";\nimport { ReactComponent as BaselineDeleteIcon } from \"./svg/baseline-delete-24px.svg\";\nimport { ReactComponent as BaselineDoneIcon } from \"./svg/baseline-done-24px.svg\";\nimport { Icon } from \"./Icon\";\n\nconst story = storiesOf(\"Components/Icon\", module);\n\nstory.add(\n \"usage\",\n () => {\n return (\n <Story>\n <StoryReadme>{readme}</StoryReadme>\n <StorySandbox title={\"A simple icon\"}>\n <div>\n <Icon icon={<AutoRenewIcon />} />\n &nbsp;\n <Icon icon={<CloudDoneIcon />} />\n &nbsp;\n <Icon icon={<BaselineDeleteIcon />} />\n &nbsp;\n <Icon icon={<BaselineDoneIcon />} />\n &nbsp;\n </div>\n </StorySandbox>\n </Story>\n );\n },\n { info: { propTables: [Icon] } }\n);\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA","sourcesContent":["export * from \"./Icon\";\n"]}
package/Image/Image.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- /// <reference types="react" />
2
- declare type Props = {
1
+ import React from "react";
2
+ interface Props extends React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> {
3
3
  [key: string]: any;
4
- };
5
- declare const Image: ({ ...rest }: Props) => JSX.Element;
4
+ }
5
+ declare const Image: React.FC<Props>;
6
6
  export { Image };
package/Image/Image.js CHANGED
@@ -1,14 +1,16 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
- import * as React from "react"; // Accepts all props that a normal <img> element would accept.
2
+ import React from "react"; // Accepts all props that a normal <img> element would accept.
3
3
 
4
4
  var Image = function Image(_ref) {
5
5
  var rest = Object.assign({}, _ref);
6
6
 
7
7
  var finalProps = _objectSpread({}, rest);
8
8
 
9
- if (finalProps.srcSet && typeof finalProps.srcSet === "object") {
10
- finalProps.srcSet = Object.keys(finalProps.srcSet).map(function (key) {
11
- return "".concat(finalProps.srcSet[key], " ").concat(key);
9
+ var srcSet = finalProps.srcSet;
10
+
11
+ if (srcSet && typeof srcSet === "object") {
12
+ finalProps.srcSet = Object.keys(srcSet).map(function (key) {
13
+ return "".concat(srcSet[key], " ").concat(key);
12
14
  }).join(", ");
13
15
  }
14
16
 
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Image.tsx"],"names":["React","Image","rest","finalProps","srcSet","Object","keys","map","key","join"],"mappings":";AAAA,OAAOA,KAAP,MAAkB,OAAlB,C,CAEA;;AAMA,IAAMC,KAAsB,GAAG,SAAzBA,KAAyB,OAAiB;AAAA,MAAXC,IAAW;;AAC5C,MAAMC,UAAU,qBAAQD,IAAR,CAAhB;;AACA,MAAME,MAAM,GAAGD,UAAU,CAACC,MAA1B;;AACA,MAAIA,MAAM,IAAI,OAAOA,MAAP,KAAkB,QAAhC,EAA0C;AACtCD,IAAAA,UAAU,CAACC,MAAX,GAAoBC,MAAM,CAACC,IAAP,CAAYF,MAAZ,EACfG,GADe,CACX,UAAAC,GAAG;AAAA,uBAAOJ,MAAM,CAACI,GAAD,CAAb,cAAsBA,GAAtB;AAAA,KADQ,EAEfC,IAFe,CAEV,IAFU,CAApB;AAGH;;AAED,sBAAO,2BAASN,UAAT,CAAP;AACH,CAVD;;AAYA,SAASF,KAAT","sourcesContent":["import React from \"react\";\n\n// Accepts all props that a normal <img> element would accept.\ninterface Props\n extends React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> {\n [key: string]: any;\n}\n\nconst Image: React.FC<Props> = ({ ...rest }) => {\n const finalProps = { ...rest };\n const srcSet = finalProps.srcSet;\n if (srcSet && typeof srcSet === \"object\") {\n finalProps.srcSet = Object.keys(srcSet)\n .map(key => `${srcSet[key]} ${key}`)\n .join(\", \");\n }\n\n return <img {...finalProps} />;\n};\n\nexport { Image };\n"]}
@@ -1,4 +1,4 @@
1
- import * as React from "react";
1
+ import React from "react";
2
2
  import { storiesOf } from "@storybook/react";
3
3
  import { Story, StoryReadme, StorySandboxCode, StorySandbox, StorySandboxExample } from "@webiny/storybook-utils/Story";
4
4
  import readme from "./../Image/README.md";
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Image.stories.tsx"],"names":["React","storiesOf","Story","StoryReadme","StorySandboxCode","StorySandbox","StorySandboxExample","readme","withKnobs","Image","story","module","addDecorator","add","info","propTables"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,SAAT,QAA0B,kBAA1B;AACA,SACIC,KADJ,EAEIC,WAFJ,EAGIC,gBAHJ,EAIIC,YAJJ,EAKIC,mBALJ,QAMO,+BANP;AAQA,OAAOC,MAAP;AACA,SAASC,SAAT,QAA0B,wBAA1B;AAEA,SAASC,KAAT;AAEA,IAAMC,KAAK,GAAGT,SAAS,CAAC,kBAAD,EAAqBU,MAArB,CAAvB;AACAD,KAAK,CAACE,YAAN,CAAmBJ,SAAnB;AAEAE,KAAK,CAACG,GAAN,CACI,OADJ,EAEI,YAAM;AACF,sBACI,oBAAC,KAAD,qBACI,oBAAC,WAAD,QAAcN,MAAd,CADJ,eAEI,oBAAC,YAAD,qBACI,oBAAC,mBAAD,qBACI,oBAAC,KAAD;AAAO,IAAA,GAAG,EAAC,iCAAX;AAA6C,IAAA,GAAG,EAAC;AAAjD,IADJ,CADJ,eAII,oBAAC,gBAAD,qBACI,oBAAC,KAAD;AAAO,IAAA,GAAG,EAAC,iCAAX;AAA6C,IAAA,GAAG,EAAC;AAAjD,IADJ,CAJJ,CAFJ,CADJ;AAaH,CAhBL,EAiBI;AAAEO,EAAAA,IAAI,EAAE;AAAEC,IAAAA,UAAU,EAAE,CAACN,KAAD;AAAd;AAAR,CAjBJ","sourcesContent":["import React from \"react\";\nimport { storiesOf } from \"@storybook/react\";\nimport {\n Story,\n StoryReadme,\n StorySandboxCode,\n StorySandbox,\n StorySandboxExample\n} from \"@webiny/storybook-utils/Story\";\n\nimport readme from \"./../Image/README.md\";\nimport { withKnobs } from \"@storybook/addon-knobs\";\n\nimport { Image } from \"./Image\";\n\nconst story = storiesOf(\"Components/Image\", module);\nstory.addDecorator(withKnobs);\n\nstory.add(\n \"usage\",\n () => {\n return (\n <Story>\n <StoryReadme>{readme}</StoryReadme>\n <StorySandbox>\n <StorySandboxExample>\n <Image src=\"http://i.pravatar.cc/150?img=49\" alt=\"Nice image.\" />\n </StorySandboxExample>\n <StorySandboxCode>\n <Image src=\"http://i.pravatar.cc/150?img=49\" alt=\"Nice image.\" />\n </StorySandboxCode>\n </StorySandbox>\n </Story>\n );\n },\n { info: { propTables: [Image] } }\n);\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA","sourcesContent":["export * from \"./Image\";\n"]}
@@ -1,47 +1,45 @@
1
- import * as React from "react";
2
- import { ImageEditorTool } from "./toolbar/types";
3
- export declare type ToolbarTool = "crop" | "flip" | "rotate" | "filter";
4
- declare type RenderPropArgs = {
1
+ import React from "react";
2
+ import { ImageEditorTool, ToolbarTool } from "./toolbar/types";
3
+ interface RenderPropArgs {
5
4
  render: Function;
6
5
  getCanvasDataUrl: () => string;
7
- activeTool?: ImageEditorTool;
8
- applyActiveTool: Function;
9
- cancelActiveTool: Function;
10
- };
11
- declare type Props = {
6
+ activeTool: ImageEditorTool | null;
7
+ applyActiveTool: () => Promise<void>;
8
+ cancelActiveTool: () => Promise<void>;
9
+ }
10
+ interface ImageEditorPropsPropsOptions {
11
+ autoEnable: boolean;
12
+ }
13
+ interface ImageEditorProps {
12
14
  src: string;
13
15
  tools: ToolbarTool[];
14
16
  options?: {
15
- [key: string]: any;
17
+ flip: ImageEditorPropsPropsOptions;
18
+ filter: ImageEditorPropsPropsOptions;
19
+ crop: ImageEditorPropsPropsOptions;
20
+ rotate: ImageEditorPropsPropsOptions;
16
21
  };
17
22
  onToolActivate?: Function;
18
23
  onToolDeactivate?: Function;
19
24
  children?: (props: RenderPropArgs) => React.ReactNode;
20
- };
21
- declare type State = {
22
- tool?: {
23
- [key: string]: any;
24
- };
25
+ }
26
+ interface ImageEditorState {
27
+ tool: ImageEditorTool | null;
25
28
  src: string;
26
- };
27
- declare class ImageEditor extends React.Component<Props, State> {
28
- static defaultProps: {
29
- tools: string[];
30
- };
31
- state: {
32
- tool: any;
33
- src: string;
34
- };
35
- canvas: React.RefObject<unknown>;
36
- image: any;
29
+ }
30
+ declare class ImageEditor extends React.Component<ImageEditorProps, ImageEditorState> {
31
+ static defaultProps: Partial<ImageEditorProps>;
32
+ state: ImageEditorState;
33
+ canvas: React.RefObject<HTMLCanvasElement>;
34
+ image?: HTMLImageElement;
37
35
  componentDidMount(): void;
38
- updateCanvas: () => void;
39
- activateTool: (tool: string | ImageEditorTool) => void;
40
- deactivateTool: () => void;
41
- getCanvasDataUrl: () => string;
42
- applyActiveTool: () => Promise<void>;
43
- cancelActiveTool: () => Promise<void>;
44
- getToolOptions: (tool: ImageEditorTool) => any;
45
- render(): {};
36
+ private readonly updateCanvas;
37
+ private readonly activateTool;
38
+ private readonly deactivateTool;
39
+ readonly getCanvasDataUrl: () => string;
40
+ private readonly applyActiveTool;
41
+ private readonly cancelActiveTool;
42
+ private readonly getToolOptions;
43
+ render(): React.ReactNode;
46
44
  }
47
45
  export { ImageEditor };
@@ -6,12 +6,23 @@ import _inherits from "@babel/runtime/helpers/inherits";
6
6
  import _createSuper from "@babel/runtime/helpers/createSuper";
7
7
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
8
  import _regeneratorRuntime from "@babel/runtime/regenerator";
9
- import * as React from "react";
10
- import * as toolbar from "./toolbar";
9
+ import React from "react";
10
+ import { flip, filter, crop, rotate } from "./toolbar";
11
11
  import styled from "@emotion/styled";
12
12
  import classNames from "classnames";
13
13
  import { ButtonSecondary, ButtonPrimary } from "../Button";
14
+ /**
15
+ * Package load-script does not have types.
16
+ */
17
+ // @ts-ignore
18
+
14
19
  import loadScript from "load-script";
20
+ var toolbar = {
21
+ flip: flip,
22
+ filter: filter,
23
+ crop: crop,
24
+ rotate: rotate
25
+ };
15
26
  var Toolbar = /*#__PURE__*/styled("div", {
16
27
  target: "eq22gs70",
17
28
  label: "Toolbar"
@@ -82,7 +93,7 @@ var ImageEditor = /*#__PURE__*/function (_React$Component) {
82
93
 
83
94
  _defineProperty(_assertThisInitialized(_this), "canvas", /*#__PURE__*/React.createRef());
84
95
 
85
- _defineProperty(_assertThisInitialized(_this), "image", null);
96
+ _defineProperty(_assertThisInitialized(_this), "image", void 0);
86
97
 
87
98
  _defineProperty(_assertThisInitialized(_this), "updateCanvas", function () {
88
99
  var src = _this.props.src;
@@ -157,22 +168,20 @@ var ImageEditor = /*#__PURE__*/function (_React$Component) {
157
168
  return _context.abrupt("return");
158
169
 
159
170
  case 3:
160
- _context.t0 = tool.apply;
161
-
162
- if (!_context.t0) {
163
- _context.next = 7;
171
+ if (!tool.apply) {
172
+ _context.next = 6;
164
173
  break;
165
174
  }
166
175
 
167
- _context.next = 7;
176
+ _context.next = 6;
168
177
  return tool.apply({
169
178
  canvas: _this.canvas
170
179
  });
171
180
 
172
- case 7:
181
+ case 6:
173
182
  _this.deactivateTool();
174
183
 
175
- case 8:
184
+ case 7:
176
185
  case "end":
177
186
  return _context.stop();
178
187
  }
@@ -196,22 +205,20 @@ var ImageEditor = /*#__PURE__*/function (_React$Component) {
196
205
  return _context2.abrupt("return");
197
206
 
198
207
  case 3:
199
- _context2.t0 = tool.cancel;
200
-
201
- if (!_context2.t0) {
202
- _context2.next = 7;
208
+ if (!tool.cancel) {
209
+ _context2.next = 6;
203
210
  break;
204
211
  }
205
212
 
206
- _context2.next = 7;
213
+ _context2.next = 6;
207
214
  return tool.cancel({
208
215
  canvas: _this.canvas
209
216
  });
210
217
 
211
- case 7:
218
+ case 6:
212
219
  _this.deactivateTool();
213
220
 
214
- case 8:
221
+ case 7:
215
222
  case "end":
216
223
  return _context2.stop();
217
224
  }
@@ -243,13 +250,17 @@ var ImageEditor = /*#__PURE__*/function (_React$Component) {
243
250
  setTimeout(function () {
244
251
  var options = _this2.props.options;
245
252
 
246
- if (typeof options === "object" && options) {
247
- for (var _key2 in options) {
248
- if (options[_key2].autoEnable === true) {
249
- var tool = toolbar[_key2];
250
- tool && _this2.activateTool(tool);
251
- break;
252
- }
253
+ if (!options || typeof options !== "object") {
254
+ return;
255
+ }
256
+
257
+ for (var key in options) {
258
+ var option = options[key];
259
+
260
+ if (option.autoEnable === true) {
261
+ var tool = toolbar[key];
262
+ tool && _this2.activateTool(tool);
263
+ break;
253
264
  }
254
265
  }
255
266
  }, 250);
@@ -287,9 +298,13 @@ var ImageEditor = /*#__PURE__*/function (_React$Component) {
287
298
  image: this.image,
288
299
  canvas: this.canvas
289
300
  }), /*#__PURE__*/React.createElement(ApplyCancelActions, null, /*#__PURE__*/React.createElement(ButtonSecondary, {
290
- onClick: this.cancelActiveTool
301
+ onClick: function onClick() {
302
+ _this3.cancelActiveTool();
303
+ }
291
304
  }, "Cancel"), "\xA0", /*#__PURE__*/React.createElement(ButtonPrimary, {
292
- onClick: this.applyActiveTool
305
+ onClick: function onClick() {
306
+ _this3.applyActiveTool();
307
+ }
293
308
  }, "Apply"))) : /*#__PURE__*/React.createElement("div", {
294
309
  style: {
295
310
  textAlign: "center"
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ImageEditor.tsx"],"names":["React","flip","filter","crop","rotate","styled","classNames","ButtonSecondary","ButtonPrimary","loadScript","toolbar","Toolbar","display","justifyContent","alignItems","backgroundColor","margin","padding","position","width","boxSizing","zIndex","opacity","pointerEvents","ToolOptions","borderTop","ApplyCancelActions","textAlign","initScripts","Promise","resolve","window","Caman","ImageEditor","tool","src","createRef","props","image","Image","canvas","current","onload","height","ctx","getContext","drawImage","setState","tt","onActivate","options","getToolOptions","startsWith","toDataURL","state","apply","deactivateTool","cancel","name","then","updateCanvas","setTimeout","key","option","autoEnable","activateTool","tools","children","editor","map","disabled","icon","renderForm","cancelActiveTool","applyActiveTool","maxWidth","render","getCanvasDataUrl","activeTool","Component"],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { flip, filter, crop, rotate } from \"./toolbar\";\nimport { ImageEditorTool, ToolbarTool } from \"./toolbar/types\";\nimport styled from \"@emotion/styled\";\nimport classNames from \"classnames\";\nimport { ButtonSecondary, ButtonPrimary } from \"../Button\";\n/**\n * Package load-script does not have types.\n */\n// @ts-ignore\nimport loadScript from \"load-script\";\n\nconst toolbar = {\n flip,\n filter,\n crop,\n rotate\n};\n\nconst Toolbar = styled(\"div\")({\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n backgroundColor: \"var(--mdc-theme-secondary)\",\n margin: \"-24px -24px 0px -24px\",\n padding: 2,\n position: \"absolute\",\n width: \"100%\",\n boxSizing: \"border-box\",\n zIndex: 10,\n \"> div.disabled\": {\n opacity: 0.5,\n pointerEvents: \"none\"\n }\n});\n\nconst ToolOptions = styled(\"div\")({\n margin: \"50px -24px 10px -24px\",\n boxSizing: \"border-box\",\n padding: 10,\n backgroundColor: \"var(--mdc-theme-background)\",\n borderTop: \"1px solid var(--mdc-theme-on-background)\"\n});\n\nconst ApplyCancelActions = styled(\"div\")({\n textAlign: \"center\"\n});\n\nconst initScripts = (): Promise<string> => {\n return new Promise((resolve: any) => {\n // @ts-ignore\n if (window.Caman) {\n return resolve();\n }\n return loadScript(\n \"https://cdnjs.cloudflare.com/ajax/libs/camanjs/4.1.2/caman.full.min.js\",\n resolve\n );\n });\n};\n\ninterface RenderPropArgs {\n render: Function;\n getCanvasDataUrl: () => string;\n activeTool: ImageEditorTool | null;\n applyActiveTool: () => Promise<void>;\n cancelActiveTool: () => Promise<void>;\n}\n\ninterface ImageEditorPropsPropsOptions {\n autoEnable: boolean;\n}\n\ninterface ImageEditorProps {\n src: string;\n tools: ToolbarTool[];\n options?: {\n flip: ImageEditorPropsPropsOptions;\n filter: ImageEditorPropsPropsOptions;\n crop: ImageEditorPropsPropsOptions;\n rotate: ImageEditorPropsPropsOptions;\n };\n onToolActivate?: Function;\n onToolDeactivate?: Function;\n children?: (props: RenderPropArgs) => React.ReactNode;\n}\n\ninterface ImageEditorState {\n tool: ImageEditorTool | null;\n src: string;\n}\n\nclass ImageEditor extends React.Component<ImageEditorProps, ImageEditorState> {\n static defaultProps: Partial<ImageEditorProps> = {\n tools: [\"crop\", \"flip\", \"rotate\", \"filter\"]\n };\n\n public override state: ImageEditorState = {\n tool: null,\n src: \"\"\n };\n\n public canvas = React.createRef<HTMLCanvasElement>();\n public image?: HTMLImageElement;\n\n public override componentDidMount() {\n initScripts().then(() => {\n this.updateCanvas();\n setTimeout(() => {\n const { options } = this.props;\n if (!options || typeof options !== \"object\") {\n return;\n }\n for (const key in options) {\n const option = options[key as ToolbarTool];\n if (option.autoEnable === true) {\n const tool: ImageEditorTool | null = toolbar[key as ToolbarTool];\n tool && this.activateTool(tool);\n break;\n }\n }\n }, 250);\n });\n }\n\n private readonly updateCanvas = (): void => {\n const { src } = this.props;\n this.image = new window.Image();\n const canvas = this.canvas.current;\n if (canvas) {\n this.image.onload = () => {\n if (this.image) {\n canvas.width = this.image.width;\n canvas.height = this.image.height;\n const ctx = canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n ctx.drawImage(this.image, 0, 0);\n }\n };\n\n this.image.src = src;\n }\n };\n\n private readonly activateTool = (tool: ToolbarTool | ImageEditorTool): void => {\n if (typeof tool === \"string\") {\n tool = toolbar[tool];\n }\n\n this.setState({ tool }, () => {\n const tt = tool as ImageEditorTool;\n typeof tt.onActivate === \"function\" &&\n tt.onActivate({ canvas: this.canvas, options: this.getToolOptions(tt) });\n });\n };\n\n private readonly deactivateTool = (): void => {\n this.setState({\n tool: null\n });\n };\n\n public readonly getCanvasDataUrl = (): string => {\n const canvas = this.canvas.current as HTMLCanvasElement;\n if (canvas) {\n const { src } = this.props;\n if (src.startsWith(\"data:image/jpeg;\")) {\n return canvas.toDataURL(\"image/jpeg\", 1.0);\n }\n\n return canvas.toDataURL();\n }\n\n return \"\";\n };\n\n private readonly applyActiveTool = async (): Promise<void> => {\n const { tool } = this.state;\n if (!tool) {\n return;\n }\n\n if (tool.apply) {\n await tool.apply({\n canvas: this.canvas\n });\n }\n this.deactivateTool();\n };\n\n private readonly cancelActiveTool = async (): Promise<void> => {\n const { tool } = this.state;\n if (!tool) {\n return;\n }\n\n if (tool.cancel) {\n await tool.cancel({\n canvas: this.canvas\n });\n }\n this.deactivateTool();\n };\n\n private readonly getToolOptions = (\n tool: ImageEditorTool\n ): Partial<ImageEditorPropsPropsOptions> => {\n const { options } = this.props;\n if (!options || typeof options !== \"object\") {\n return {};\n }\n\n return options[tool.name as ToolbarTool] || {};\n };\n\n public override render(): React.ReactNode {\n const { src, tools, children } = this.props;\n const { tool } = this.state;\n const editor = (\n <React.Fragment>\n <Toolbar>\n {tools.map(key => {\n const tool: ImageEditorTool = toolbar[key];\n if (!tool) {\n return null;\n }\n\n return (\n <div key={key} className={classNames({ disabled: this.state.tool })}>\n {tool.icon({\n activateTool: () => this.activateTool(tool)\n })}\n </div>\n );\n })}\n </Toolbar>\n\n <ToolOptions>\n {tool ? (\n <>\n {typeof tool.renderForm === \"function\" &&\n tool.renderForm({\n options: this.getToolOptions(tool as ImageEditorTool),\n image: this.image as HTMLImageElement,\n canvas: this.canvas\n })}\n\n <ApplyCancelActions>\n <ButtonSecondary\n onClick={() => {\n this.cancelActiveTool();\n }}\n >\n Cancel\n </ButtonSecondary>\n &nbsp;\n <ButtonPrimary\n onClick={() => {\n this.applyActiveTool();\n }}\n >\n Apply\n </ButtonPrimary>\n </ApplyCancelActions>\n </>\n ) : (\n <div style={{ textAlign: \"center\" }}>\n Select a tool to start working on your image.\n </div>\n )}\n </ToolOptions>\n\n <div style={{ margin: \"0 auto\", textAlign: \"center\" }}>\n <canvas\n key={src}\n id={\"canvas\"}\n style={{ maxWidth: 700 }}\n ref={this.canvas as React.Ref<any>}\n />\n </div>\n </React.Fragment>\n );\n\n if (typeof children === \"function\") {\n return children({\n render: () => editor,\n // canvas: this.canvas,\n getCanvasDataUrl: this.getCanvasDataUrl,\n activeTool: this.state.tool,\n applyActiveTool: this.applyActiveTool,\n cancelActiveTool: this.cancelActiveTool\n });\n }\n\n return editor;\n }\n}\n\nexport { ImageEditor };\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA","sourcesContent":["export * from \"./ImageEditor\";\n"]}
@@ -4,7 +4,7 @@ import { IconButton } from "../../Button";
4
4
  import { Tooltip } from "../../Tooltip";
5
5
  import Cropper from "cropperjs";
6
6
  import "cropperjs/dist/cropper.css";
7
- var cropper = null;
7
+ var cropper = undefined;
8
8
 
9
9
  var renderForm = function renderForm() {
10
10
  return /*#__PURE__*/React.createElement("div", {
@@ -23,7 +23,9 @@ var tool = {
23
23
  content: "Crop"
24
24
  }, /*#__PURE__*/React.createElement(IconButton, {
25
25
  icon: /*#__PURE__*/React.createElement(CropIcon, null),
26
- onClick: activateTool
26
+ onClick: function onClick() {
27
+ return activateTool("crop");
28
+ }
27
29
  }));
28
30
  },
29
31
  renderForm: renderForm,
@@ -62,7 +64,7 @@ var tool = {
62
64
  }
63
65
 
64
66
  cropper.destroy();
65
- cropper = null;
67
+ cropper = undefined;
66
68
  });
67
69
  }
68
70
  };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["crop.tsx"],"names":["React","ReactComponent","CropIcon","IconButton","Tooltip","Cropper","cropper","undefined","renderForm","textAlign","tool","name","icon","activateTool","onActivate","canvas","options","current","cancel","destroy","apply","Promise","resolve","src","getCroppedCanvas","toDataURL","image","window","Image","ctx","getContext","onload","drawImage","width","height"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,cAAc,IAAIC,QAA3B;AACA,SAASC,UAAT;AACA,SAASC,OAAT;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAO,4BAAP;AAEA,IAAIC,OAA4B,GAAGC,SAAnC;;AAEA,IAAMC,UAAU,GAAG,SAAbA,UAAa,GAAM;AACrB,sBACI;AAAK,IAAA,KAAK,EAAE;AAAEC,MAAAA,SAAS,EAAE;AAAb;AAAZ,0FADJ;AAKH,CAND;;AAQA,IAAMC,IAAqB,GAAG;AAC1BC,EAAAA,IAAI,EAAE,MADoB;AAE1BC,EAAAA,IAF0B,sBAEH;AAAA,QAAhBC,YAAgB,QAAhBA,YAAgB;AACnB,wBACI,oBAAC,OAAD;AAAS,MAAA,SAAS,EAAE,QAApB;AAA8B,MAAA,OAAO,EAAE;AAAvC,oBACI,oBAAC,UAAD;AAAY,MAAA,IAAI,eAAE,oBAAC,QAAD,OAAlB;AAAgC,MAAA,OAAO,EAAE;AAAA,eAAMA,YAAY,CAAC,MAAD,CAAlB;AAAA;AAAzC,MADJ,CADJ;AAKH,GARyB;AAS1BL,EAAAA,UAAU,EAAVA,UAT0B;AAU1BM,EAAAA,UAAU,EAAE,2BAAyB;AAAA,QAAtBC,MAAsB,SAAtBA,MAAsB;AAAA,QAAdC,OAAc,SAAdA,OAAc;AACjCV,IAAAA,OAAO,GAAG,IAAID,OAAJ,CAAYU,MAAM,CAACE,OAAnB,EAAiDD,OAAjD,CAAV;AACH,GAZyB;AAa1BE,EAAAA,MAAM,EAAE;AAAA,WAAMZ,OAAO,IAAIA,OAAO,CAACa,OAAR,EAAjB;AAAA,GAbkB;AAc1BC,EAAAA,KAAK,EAAE,sBAAgB;AAAA,QAAbL,MAAa,SAAbA,MAAa;AACnB,WAAO,IAAIM,OAAJ,CAAY,UAACC,OAAD,EAAkB;AACjC,UAAI,CAAChB,OAAL,EAAc;AACVgB,QAAAA,OAAO;AACP;AACH;;AAED,UAAML,OAAO,GAAGF,MAAM,CAACE,OAAvB;AACA,UAAMM,GAAG,GAAGjB,OAAO,CAACkB,gBAAR,GAA2BC,SAA3B,EAAZ;;AACA,UAAIR,OAAJ,EAAa;AACT,YAAMS,KAAK,GAAG,IAAIC,MAAM,CAACC,KAAX,EAAd;AACA,YAAMC,GAAG,GAAGZ,OAAO,CAACa,UAAR,CAAmB,IAAnB,CAAZ;;AACAJ,QAAAA,KAAK,CAACK,MAAN,GAAe,YAAM;AACjBF,UAAAA,GAAG,CAACG,SAAJ,CAAcN,KAAd,EAAqB,CAArB,EAAwB,CAAxB;AACAT,UAAAA,OAAO,CAACgB,KAAR,GAAgBP,KAAK,CAACO,KAAtB;AACAhB,UAAAA,OAAO,CAACiB,MAAR,GAAiBR,KAAK,CAACQ,MAAvB;AAEAL,UAAAA,GAAG,CAACG,SAAJ,CAAcN,KAAd,EAAqB,CAArB,EAAwB,CAAxB;AACAJ,UAAAA,OAAO;AACV,SAPD;;AAQAI,QAAAA,KAAK,CAACH,GAAN,GAAYA,GAAZ;AACH;;AAEDjB,MAAAA,OAAO,CAACa,OAAR;AACAb,MAAAA,OAAO,GAAGC,SAAV;AACH,KAxBM,CAAP;AAyBH;AAxCyB,CAA9B;AA2CA,eAAeG,IAAf","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 icon={<CropIcon />} onClick={() => activateTool(\"crop\")} />\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"]}
@@ -199,7 +199,9 @@ var tool = {
199
199
  content: "Filter"
200
200
  }, /*#__PURE__*/React.createElement(IconButton, {
201
201
  icon: /*#__PURE__*/React.createElement(FilterIcon, null),
202
- onClick: activateTool
202
+ onClick: function onClick() {
203
+ return activateTool("filter");
204
+ }
203
205
  }));
204
206
  },
205
207
  renderForm: function renderForm(props) {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["filter.tsx"],"names":["React","ReactComponent","FilterIcon","Slider","IconButton","ButtonDefault","Tooltip","styled","Wrapper","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","Component","tool","name","icon","activateTool","renderForm","cancel"],"mappings":"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","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 icon={<FilterIcon />} onClick={() => activateTool(\"filter\")} />\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"]}
@@ -4,7 +4,7 @@ import Cropper from "cropperjs";
4
4
  import "cropperjs/dist/cropper.css";
5
5
  import { IconButton, ButtonDefault } from "../../Button";
6
6
  import { Tooltip } from "../../Tooltip";
7
- var cropper = null;
7
+ var cropper;
8
8
  var flipped = {
9
9
  x: 1,
10
10
  y: 1
@@ -45,7 +45,9 @@ var tool = {
45
45
  content: "Flip"
46
46
  }, /*#__PURE__*/React.createElement(IconButton, {
47
47
  icon: /*#__PURE__*/React.createElement(FlipIcon, null),
48
- onClick: activateTool
48
+ onClick: function onClick() {
49
+ return activateTool("flip");
50
+ }
49
51
  }));
50
52
  },
51
53
  renderForm: renderForm,
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["flip.tsx"],"names":["React","ReactComponent","FlipIcon","Cropper","IconButton","ButtonDefault","Tooltip","cropper","flipped","x","y","renderForm","textAlign","scaleX","scaleY","tool","name","icon","activateTool","cancel","destroy","onActivate","canvas","current","background","modal","guides","dragMode","highlight","autoCrop","apply","Promise","resolve","src","getCroppedCanvas","toDataURL","image","window","Image","ctx","getContext","onload","drawImage","width","height"],"mappings":"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","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 icon={<FlipIcon />} onClick={() => activateTool(\"flip\")} />\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"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["ReactComponent","CropIcon","DrawIcon","FilterIcon","FlipIcon","RedoIcon","RotateLeftIcon","RotateRightIcon","UndoIcon"],"mappings":"AAAA,SAASA,cAAc,IAAIC,QAA3B;AACA,SAASD,cAAc,IAAIE,QAA3B;AACA,SAASF,cAAc,IAAIG,UAA3B;AACA,SAASH,cAAc,IAAII,QAA3B;AACA,SAASJ,cAAc,IAAIK,QAA3B;AACA,SAASL,cAAc,IAAIM,cAA3B;AACA,SAASN,cAAc,IAAIO,eAA3B;AACA,SAASP,cAAc,IAAIQ,QAA3B","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"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["default","crop","flip","filter","rotate"],"mappings":"AAAA,SAASA,OAAO,IAAIC,IAApB;AACA,SAASD,OAAO,IAAIE,IAApB;AACA,SAASF,OAAO,IAAIG,MAApB;AACA,SAASH,OAAO,IAAII,MAApB","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"]}
@@ -13,7 +13,7 @@ import { Tooltip } from "../../Tooltip";
13
13
  import { IconButton } from "../../Button";
14
14
  import Cropper from "cropperjs";
15
15
  import "cropperjs/dist/cropper.css";
16
- var cropper = null;
16
+ var cropper;
17
17
 
18
18
  var RenderForm = /*#__PURE__*/function (_React$Component) {
19
19
  _inherits(RenderForm, _React$Component);
@@ -92,7 +92,9 @@ var tool = {
92
92
  content: "Rotate"
93
93
  }, /*#__PURE__*/React.createElement(IconButton, {
94
94
  icon: /*#__PURE__*/React.createElement(RotateRight, null),
95
- onClick: activateTool
95
+ onClick: function onClick() {
96
+ return activateTool("rotate");
97
+ }
96
98
  }));
97
99
  },
98
100
  renderForm: function renderForm(props) {
@@ -100,6 +102,10 @@ var tool = {
100
102
  },
101
103
  onActivate: function onActivate(_ref3) {
102
104
  var canvas = _ref3.canvas;
105
+
106
+ /**
107
+ * We can safely cast canvas.current as HTMLCanvasElement
108
+ */
103
109
  cropper = new Cropper(canvas.current, {
104
110
  background: false,
105
111
  modal: false,