@webiny/ui 5.39.0-beta.0 → 5.39.0-beta.2

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 (156) hide show
  1. package/Accordion/Accordion.d.ts +1 -1
  2. package/Accordion/Accordion.js.map +1 -1
  3. package/Accordion/AccordionItem.d.ts +2 -2
  4. package/Accordion/AccordionItem.js +1 -4
  5. package/Accordion/AccordionItem.js.map +1 -1
  6. package/Accordion/AccordionItemActions.d.ts +5 -1
  7. package/Accordion/AccordionItemActions.js.map +1 -1
  8. package/Alert/Alert.d.ts +1 -1
  9. package/Alert/Alert.js.map +1 -1
  10. package/AutoComplete/AutoComplete.js +1 -2
  11. package/AutoComplete/AutoComplete.js.map +1 -1
  12. package/AutoComplete/MultiAutoComplete.d.ts +1 -1
  13. package/AutoComplete/MultiAutoComplete.js +2 -2
  14. package/AutoComplete/MultiAutoComplete.js.map +1 -1
  15. package/AutoComplete/types.d.ts +3 -3
  16. package/AutoComplete/types.js.map +1 -1
  17. package/Avatar/Avatar.d.ts +7 -1
  18. package/Avatar/Avatar.js.map +1 -1
  19. package/Button/Button.d.ts +5 -6
  20. package/Button/Button.js.map +1 -1
  21. package/Button/CopyButton/CopyButton.d.ts +2 -2
  22. package/Button/CopyButton/CopyButton.js.map +1 -1
  23. package/Button/IconButton/IconButton.d.ts +2 -1
  24. package/Button/IconButton/IconButton.js.map +1 -1
  25. package/Checkbox/Checkbox.d.ts +0 -1
  26. package/Checkbox/Checkbox.js +1 -3
  27. package/Checkbox/Checkbox.js.map +1 -1
  28. package/Chips/Chip.d.ts +2 -2
  29. package/Chips/Chip.js.map +1 -1
  30. package/Chips/Chips.d.ts +1 -1
  31. package/Chips/Chips.js.map +1 -1
  32. package/ColorPicker/ColorPicker.js +1 -1
  33. package/ColorPicker/ColorPicker.js.map +1 -1
  34. package/ConfirmationDialog/ConfirmationDialog.js +20 -47
  35. package/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
  36. package/ConfirmationDialog/withConfirmation.d.ts +2 -2
  37. package/ConfirmationDialog/withConfirmation.js.map +1 -1
  38. package/DataTable/ColumnDirection.d.ts +5 -0
  39. package/DataTable/ColumnDirection.js +20 -0
  40. package/DataTable/ColumnDirection.js.map +1 -0
  41. package/DataTable/ColumnsVisibility.d.ts +7 -0
  42. package/DataTable/ColumnsVisibility.js +65 -0
  43. package/DataTable/ColumnsVisibility.js.map +1 -0
  44. package/DataTable/DataTable.d.ts +16 -7
  45. package/DataTable/DataTable.js +87 -43
  46. package/DataTable/DataTable.js.map +1 -1
  47. package/DataTable/styled.d.ts +16 -3
  48. package/DataTable/styled.js +24 -6
  49. package/DataTable/styled.js.map +1 -1
  50. package/DateTime/Date.d.ts +7 -0
  51. package/DateTime/Date.js +41 -0
  52. package/DateTime/Date.js.map +1 -0
  53. package/DateTime/index.d.ts +1 -0
  54. package/DateTime/index.js +14 -0
  55. package/DateTime/index.js.map +1 -0
  56. package/DelayedOnChange/DelayedOnChange.d.ts +1 -2
  57. package/DelayedOnChange/DelayedOnChange.js.map +1 -1
  58. package/DelayedOnChange/withDelayedOnChange.d.ts +1 -1
  59. package/DelayedOnChange/withDelayedOnChange.js.map +1 -1
  60. package/Dialog/Dialog.d.ts +6 -7
  61. package/Dialog/Dialog.js.map +1 -1
  62. package/Drawer/Drawer.d.ts +6 -14
  63. package/Drawer/Drawer.js +31 -4
  64. package/Drawer/Drawer.js.map +1 -1
  65. package/DynamicFieldset/Fieldset.d.ts +3 -3
  66. package/DynamicFieldset/Fieldset.js.map +1 -1
  67. package/Icon/Icon.d.ts +2 -2
  68. package/Icon/Icon.js.map +1 -1
  69. package/Image/Image.d.ts +1 -2
  70. package/Image/Image.js.map +1 -1
  71. package/ImageEditor/ImageEditor.d.ts +3 -4
  72. package/ImageEditor/ImageEditor.js +26 -60
  73. package/ImageEditor/ImageEditor.js.map +1 -1
  74. package/ImageEditor/toolbar/filter.js +8 -8
  75. package/ImageEditor/toolbar/filter.js.map +1 -1
  76. package/ImageEditor/toolbar/rotate.js +11 -21
  77. package/ImageEditor/toolbar/rotate.js.map +1 -1
  78. package/ImageEditor/toolbar/types.d.ts +1 -2
  79. package/ImageEditor/toolbar/types.js.map +1 -1
  80. package/ImageUpload/Image.d.ts +2 -1
  81. package/ImageUpload/Image.js.map +1 -1
  82. package/ImageUpload/MultiImageUpload.d.ts +4 -2
  83. package/ImageUpload/MultiImageUpload.js +59 -132
  84. package/ImageUpload/MultiImageUpload.js.map +1 -1
  85. package/ImageUpload/SingleImageUpload.d.ts +4 -2
  86. package/ImageUpload/SingleImageUpload.js +14 -31
  87. package/ImageUpload/SingleImageUpload.js.map +1 -1
  88. package/ImageUpload/styled.d.ts +0 -2
  89. package/ImageUpload/styled.js +1 -2
  90. package/ImageUpload/styled.js.map +1 -1
  91. package/Input/Input.d.ts +7 -2
  92. package/Input/Input.js +15 -34
  93. package/Input/Input.js.map +1 -1
  94. package/Input/__tests__/Input.test.js +0 -2
  95. package/Input/__tests__/Input.test.js.map +1 -1
  96. package/List/CollapsibleList/index.d.ts +1 -1
  97. package/List/CollapsibleList/index.js.map +1 -1
  98. package/List/DataList/DataList.d.ts +31 -3
  99. package/List/DataList/DataList.js.map +1 -1
  100. package/List/DataList/DataList.stories.js +1 -1
  101. package/List/DataList/DataList.stories.js.map +1 -1
  102. package/List/DataList/DataListModalOverlay/DataListModalOverlay.d.ts +2 -2
  103. package/List/DataList/DataListModalOverlay/DataListModalOverlay.js +1 -1
  104. package/List/DataList/DataListModalOverlay/DataListModalOverlay.js.map +1 -1
  105. package/List/DataList/DataListModalOverlay/DataListModalOverlayAction.d.ts +1 -1
  106. package/List/DataList/DataListModalOverlay/DataListModalOverlayAction.js.map +1 -1
  107. package/List/DataList/DataListModalOverlay/DataListModalOverlayContext.d.ts +1 -1
  108. package/List/DataList/DataListModalOverlay/DataListModalOverlayContext.js.map +1 -1
  109. package/List/DataList/DataListWithSections.d.ts +31 -3
  110. package/List/DataList/DataListWithSections.js.map +1 -1
  111. package/List/DataList/NoData.d.ts +2 -2
  112. package/List/DataList/NoData.js.map +1 -1
  113. package/List/DataList/types.d.ts +6 -6
  114. package/List/DataList/types.js.map +1 -1
  115. package/List/List.d.ts +0 -1
  116. package/Menu/Menu.d.ts +2 -2
  117. package/Menu/Menu.js +1 -1
  118. package/Menu/Menu.js.map +1 -1
  119. package/Mosaic/Mosaic.d.ts +12 -1
  120. package/Mosaic/Mosaic.js +1 -1
  121. package/Mosaic/Mosaic.js.map +1 -1
  122. package/Progress/CircularProgress.d.ts +9 -1
  123. package/Progress/CircularProgress.js.map +1 -1
  124. package/Radio/Radio.d.ts +0 -1
  125. package/Radio/Radio.js +1 -3
  126. package/Radio/Radio.js.map +1 -1
  127. package/RichTextEditor/RichTextEditor.d.ts +2 -2
  128. package/RichTextEditor/RichTextEditor.js +10 -36
  129. package/RichTextEditor/RichTextEditor.js.map +1 -1
  130. package/Ripple/Ripple.d.ts +2 -1
  131. package/Ripple/Ripple.js.map +1 -1
  132. package/Scrollbar/Scrollbar.d.ts +1 -1
  133. package/Scrollbar/Scrollbar.js.map +1 -1
  134. package/Section/index.d.ts +3 -2
  135. package/Section/index.js.map +1 -1
  136. package/Select/Select.d.ts +5 -3
  137. package/Select/Select.js +1 -1
  138. package/Select/Select.js.map +1 -1
  139. package/Slider/Slider.d.ts +1 -1
  140. package/Slider/Slider.js.map +1 -1
  141. package/Snackbar/Snackbar.d.ts +0 -1
  142. package/Switch/Switch.d.ts +0 -1
  143. package/Switch/Switch.js.map +1 -1
  144. package/Tabs/Tab.d.ts +1 -1
  145. package/Tabs/Tab.js +1 -2
  146. package/Tabs/Tab.js.map +1 -1
  147. package/Tabs/Tabs.js +1 -2
  148. package/Tabs/Tabs.js.map +1 -1
  149. package/Tabs/Tabs.stories.js.map +1 -1
  150. package/Tags/Tags.d.ts +4 -4
  151. package/Tags/Tags.js.map +1 -1
  152. package/Tooltip/Tooltip.js +1 -1
  153. package/Tooltip/Tooltip.js.map +1 -1
  154. package/Typography/Typography.d.ts +1 -1
  155. package/Typography/Typography.js.map +1 -1
  156. package/package.json +7 -7
package/Drawer/Drawer.js CHANGED
@@ -1,12 +1,16 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
- exports.DrawerHeader = exports.DrawerContent = exports.Drawer = void 0;
8
- var _react = _interopRequireDefault(require("react"));
8
+ exports.DrawerRight = exports.DrawerLeft = exports.DrawerHeader = exports.DrawerContent = exports.Drawer = void 0;
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
12
  var _drawer = require("@rmwc/drawer");
13
+ var _excluded = ["style", "children"];
10
14
  /**
11
15
  * Shows header of the drawer.
12
16
  */
@@ -21,12 +25,35 @@ var DrawerContent = function DrawerContent(props) {
21
25
  return /*#__PURE__*/_react.default.createElement(_drawer.DrawerContent, props);
22
26
  };
23
27
  exports.DrawerContent = DrawerContent;
28
+ var DirectionRTL = /*#__PURE__*/(0, _styled.default)("div", {
29
+ label: "DirectionRTL",
30
+ target: "el0bo470"
31
+ })(".mdc-drawer.mdc-drawer--modal,.mdc-drawer.mdc-drawer--dismissable{left:initial;right:0;}.mdc-drawer--animate{-webkit-transform:translateX(100%);transform:translateX(100%);}.mdc-drawer.mdc-drawer--opening{-webkit-transform:translateX(0%) !important;transform:translateX(0%) !important;}.mdc-drawer.mdc-drawer--closing{-webkit-transform:translateX(100%) !important;transform:translateX(100%) !important;}");
32
+
24
33
  /**
25
34
  * Use Drawer component to display navigation for the whole app or just a small section of it.
26
35
  */
27
- var Drawer = function Drawer(props) {
28
- return /*#__PURE__*/_react.default.createElement(_drawer.Drawer, props);
36
+ var Drawer = function Drawer(_ref) {
37
+ var style = _ref.style,
38
+ children = _ref.children,
39
+ props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
40
+ // Style the drawer using the styles that were passed in.
41
+ var Drawer = (0, _react.useMemo)(function () {
42
+ return style ? /*#__PURE__*/(0, _styled.default)(_drawer.Drawer, {
43
+ target: "el0bo471",
44
+ label: "Drawer"
45
+ })(style) : _drawer.Drawer;
46
+ }, [style]);
47
+ return /*#__PURE__*/_react.default.createElement(Drawer, props, children);
29
48
  };
30
49
  exports.Drawer = Drawer;
50
+ var DrawerRight = function DrawerRight(props) {
51
+ return /*#__PURE__*/_react.default.createElement(DirectionRTL, null, /*#__PURE__*/_react.default.createElement(Drawer, props));
52
+ };
53
+ exports.DrawerRight = DrawerRight;
54
+ var DrawerLeft = function DrawerLeft(props) {
55
+ return /*#__PURE__*/_react.default.createElement(Drawer, props);
56
+ };
57
+ exports.DrawerLeft = DrawerLeft;
31
58
 
32
59
  //# sourceMappingURL=Drawer.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_drawer","DrawerHeader","props","default","createElement","exports","DrawerContent","Drawer"],"sources":["Drawer.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n Drawer as RmwcDrawer,\n DrawerContent as RmwcDrawerContent,\n DrawerHeader as RmwcDrawerHeader,\n DrawerProps as RmwcDrawerProps,\n DrawerHeaderProps as RmwcDrawerHeaderProps,\n DrawerContentProps as RmwcDrawerContentProps\n} from \"@rmwc/drawer\";\n\ntype DrawerHeaderProps = RmwcDrawerHeaderProps & {\n /**\n * Drawer direction.\n */\n dir?: string;\n /**\n * Drawer content.\n */\n children: React.ReactNode;\n\n /**\n * CSS class name\n */\n className?: string;\n};\n\n/**\n * Shows header of the drawer.\n */\nconst DrawerHeader = (props: DrawerHeaderProps) => <RmwcDrawerHeader {...props} />;\n\nexport type DrawerContentProps = RmwcDrawerContentProps & {\n /**\n * Drawer direction.\n */\n dir?: string;\n /**\n * Drawer content.\n */\n children: React.ReactNode;\n\n /**\n * CSS class name\n */\n className?: string;\n};\n\n/**\n * Shows drawer content. It can be anything, but commonly a List component would suffice here.\n */\nconst DrawerContent = (props: DrawerContentProps) => <RmwcDrawerContent {...props} />;\n\ntype DrawerProps = RmwcDrawerProps & {\n /**\n * Drawer direction.\n */\n dir?: string;\n /**\n * Drawer content.\n */\n children: React.ReactNode;\n\n /**\n * CSS class name\n */\n className?: string;\n};\n/**\n * Use Drawer component to display navigation for the whole app or just a small section of it.\n */\nconst Drawer = (props: DrawerProps) => {\n return <RmwcDrawer {...props} />;\n};\n\nexport { Drawer, DrawerHeader, DrawerContent };\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAyBA;AACA;AACA;AACA,IAAME,YAAY,GAAG,SAAfA,YAAYA,CAAIC,KAAwB;EAAA,oBAAKL,MAAA,CAAAM,OAAA,CAAAC,aAAA,CAACJ,OAAA,CAAAC,YAAgB,EAAKC,KAAQ,CAAC;AAAA;AAACG,OAAA,CAAAJ,YAAA,GAAAA,YAAA;AAkBnF;AACA;AACA;AACA,IAAMK,aAAa,GAAG,SAAhBA,aAAaA,CAAIJ,KAAyB;EAAA,oBAAKL,MAAA,CAAAM,OAAA,CAAAC,aAAA,CAACJ,OAAA,CAAAM,aAAiB,EAAKJ,KAAQ,CAAC;AAAA;AAACG,OAAA,CAAAC,aAAA,GAAAA,aAAA;AAiBtF;AACA;AACA;AACA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAIL,KAAkB,EAAK;EACnC,oBAAOL,MAAA,CAAAM,OAAA,CAAAC,aAAA,CAACJ,OAAA,CAAAO,MAAU,EAAKL,KAAQ,CAAC;AACpC,CAAC;AAACG,OAAA,CAAAE,MAAA,GAAAA,MAAA"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_styled","_interopRequireDefault","_drawer","_excluded","DrawerHeader","props","default","createElement","exports","DrawerContent","DirectionRTL","styled","label","target","Drawer","_ref","style","children","_objectWithoutProperties2","useMemo","RmwcDrawer","DrawerRight","DrawerLeft"],"sources":["Drawer.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { CSSObject } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport {\n Drawer as RmwcDrawer,\n DrawerContent as RmwcDrawerContent,\n DrawerHeader as RmwcDrawerHeader,\n DrawerProps as RmwcDrawerProps,\n DrawerHeaderProps as RmwcDrawerHeaderProps,\n DrawerContentProps as RmwcDrawerContentProps\n} from \"@rmwc/drawer\";\n\ntype DrawerHeaderProps = RmwcDrawerHeaderProps & {\n /**\n * Drawer content.\n */\n children: React.ReactNode;\n\n /**\n * CSS class name\n */\n className?: string;\n};\n\n/**\n * Shows header of the drawer.\n */\nconst DrawerHeader = (props: DrawerHeaderProps) => <RmwcDrawerHeader {...props} />;\n\nexport type DrawerContentProps = RmwcDrawerContentProps & {\n /**\n * Drawer content.\n */\n children: React.ReactNode;\n\n /**\n * CSS class name\n */\n className?: string;\n};\n\n/**\n * Shows drawer content. It can be anything, but commonly a List component would suffice here.\n */\nconst DrawerContent = (props: DrawerContentProps) => <RmwcDrawerContent {...props} />;\n\ntype DrawerProps = RmwcDrawerProps & {\n /**\n * Drawer content.\n */\n children: React.ReactNode;\n\n /**\n * CSS class name\n */\n className?: string;\n\n style?: CSSObject;\n};\n\nconst DirectionRTL = styled.div`\n .mdc-drawer.mdc-drawer--modal,\n .mdc-drawer.mdc-drawer--dismissable {\n left: initial;\n right: 0;\n }\n\n .mdc-drawer--animate {\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n }\n\n .mdc-drawer.mdc-drawer--opening {\n -webkit-transform: translateX(0%) !important;\n transform: translateX(0%) !important;\n }\n\n .mdc-drawer.mdc-drawer--closing {\n -webkit-transform: translateX(100%) !important;\n transform: translateX(100%) !important;\n }\n`;\n\n/**\n * Use Drawer component to display navigation for the whole app or just a small section of it.\n */\nconst Drawer = ({ style, children, ...props }: DrawerProps) => {\n // Style the drawer using the styles that were passed in.\n const Drawer = useMemo(() => (style ? styled(RmwcDrawer)(style) : RmwcDrawer), [style]);\n\n return <Drawer {...props}>{children}</Drawer>;\n};\n\nconst DrawerRight = (props: DrawerProps) => {\n return (\n <DirectionRTL>\n <Drawer {...props} />\n </DirectionRTL>\n );\n};\n\nconst DrawerLeft = (props: DrawerProps) => {\n return <Drawer {...props} />;\n};\n\nexport { Drawer, DrawerHeader, DrawerContent, DrawerRight, DrawerLeft };\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAOsB,IAAAI,SAAA;AActB;AACA;AACA;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,KAAwB;EAAA,oBAAKR,MAAA,CAAAS,OAAA,CAAAC,aAAA,CAACL,OAAA,CAAAE,YAAgB,EAAKC,KAAQ,CAAC;AAAA;AAACG,OAAA,CAAAJ,YAAA,GAAAA,YAAA;AAcnF;AACA;AACA;AACA,IAAMK,aAAa,GAAG,SAAhBA,aAAaA,CAAIJ,KAAyB;EAAA,oBAAKR,MAAA,CAAAS,OAAA,CAAAC,aAAA,CAACL,OAAA,CAAAO,aAAiB,EAAKJ,KAAQ,CAAC;AAAA;AAACG,OAAA,CAAAC,aAAA,GAAAA,aAAA;AAgBtF,IAAMC,YAAY,oBAAGC,eAAM;EAAAC,KAAA;EAAAC,MAAA;AAAA,wZAqB1B;;AAED;AACA;AACA;AACA,IAAMC,MAAM,GAAG,SAAAA,OAAAC,IAAA,EAAgD;EAAA,IAA7CC,KAAK,GAAAD,IAAA,CAALC,KAAK;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IAAKZ,KAAK,OAAAa,yBAAA,CAAAZ,OAAA,EAAAS,IAAA,EAAAZ,SAAA;EACvC;EACA,IAAMW,MAAM,GAAG,IAAAK,cAAO,EAAC;IAAA,OAAOH,KAAK,oBAAGL,eAAM,EAACS,cAAU;MAAAP,MAAA;MAAAD,KAAA;IAAA,GAAEI,KAAK,IAAII,cAAU;EAAA,CAAC,EAAE,CAACJ,KAAK,CAAC,CAAC;EAEvF,oBAAOnB,MAAA,CAAAS,OAAA,CAAAC,aAAA,CAACO,MAAM,EAAKT,KAAK,EAAGY,QAAiB,CAAC;AACjD,CAAC;AAACT,OAAA,CAAAM,MAAA,GAAAA,MAAA;AAEF,IAAMO,WAAW,GAAG,SAAdA,WAAWA,CAAIhB,KAAkB,EAAK;EACxC,oBACIR,MAAA,CAAAS,OAAA,CAAAC,aAAA,CAACG,YAAY,qBACTb,MAAA,CAAAS,OAAA,CAAAC,aAAA,CAACO,MAAM,EAAKT,KAAQ,CACV,CAAC;AAEvB,CAAC;AAACG,OAAA,CAAAa,WAAA,GAAAA,WAAA;AAEF,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIjB,KAAkB,EAAK;EACvC,oBAAOR,MAAA,CAAAS,OAAA,CAAAC,aAAA,CAACO,MAAM,EAAKT,KAAQ,CAAC;AAChC,CAAC;AAACG,OAAA,CAAAc,UAAA,GAAAA,UAAA"}
@@ -14,8 +14,8 @@ interface ChildrenRenderPropEmptyCallable {
14
14
  }
15
15
  interface ChildrenRenderProp {
16
16
  actions: {
17
- add: Function;
18
- remove: Function;
17
+ add: (index?: number) => () => void;
18
+ remove: (index: number) => () => void;
19
19
  };
20
20
  header: (cb: ChildrenRenderPropHeaderCallable) => React.ReactNode;
21
21
  row: (cb: ChildrenRenderPropRowCallable) => React.ReactNode;
@@ -28,7 +28,7 @@ interface FieldsetProps {
28
28
  isValid: null | boolean;
29
29
  message?: string;
30
30
  };
31
- onChange: Function;
31
+ onChange: (value: any) => void;
32
32
  children: (props: ChildrenRenderProp) => React.ReactNode;
33
33
  }
34
34
  declare class Fieldset extends React.Component<FieldsetProps> {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_dotPropImmutable","_FormElementMessage","_styled","DynamicFieldsetRow","styled","target","label","paddingBottom","padding","display","Fieldset","_React$Component","_inherits2","default","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty2","_assertThisInitialized2","add","index","undefined","addData","remove","removeData","_this$props","props","value","onChange","dotProp","delete","_toConsumableArray2","slice","cb","header","rows","map","record","createElement","key","data","empty","_createClass2","renderComponent","children","actions","renderHeader","row","renderRow","renderEmpty","Fragment","render","_this$props2","description","_this$props2$validati","validation","isValid","FormElementMessage","error","message","React","Component","_default","exports"],"sources":["Fieldset.tsx"],"sourcesContent":["import React from \"react\";\nimport dotProp from \"dot-prop-immutable\";\nimport { FormElementMessage } from \"~/FormElementMessage\";\nimport styled from \"@emotion/styled\";\n\ninterface ChildrenRenderPropRowCallableParams {\n index: number;\n data: any;\n}\ninterface ChildrenRenderPropRowCallable {\n (params: ChildrenRenderPropRowCallableParams): React.ReactNode;\n}\n\ninterface ChildrenRenderPropHeaderCallable {\n (): React.ReactNode;\n}\ninterface ChildrenRenderPropEmptyCallable {\n (): React.ReactNode;\n}\ninterface ChildrenRenderProp {\n actions: {\n add: Function;\n remove: Function;\n };\n header: (cb: ChildrenRenderPropHeaderCallable) => React.ReactNode;\n row: (cb: ChildrenRenderPropRowCallable) => React.ReactNode;\n empty: (cb: ChildrenRenderPropEmptyCallable) => React.ReactNode;\n}\n\ninterface FieldsetProps {\n value?: any[];\n description?: string;\n validation?: { isValid: null | boolean; message?: string };\n onChange: Function;\n children: (props: ChildrenRenderProp) => React.ReactNode;\n}\n\nconst DynamicFieldsetRow = styled(\"div\")({\n paddingBottom: 10,\n \"> .mdc-layout-grid\": {\n padding: 0,\n \"> .mdc-layout-grid__inner\": {\n display: \"block\"\n }\n }\n});\n\nclass Fieldset extends React.Component<FieldsetProps> {\n static defaultProps: Partial<FieldsetProps> = {\n value: []\n };\n\n header: React.ReactNode = null;\n rows: React.ReactNode = null;\n empty: React.ReactNode = null;\n\n actions = {\n add:\n (index = -1) =>\n () =>\n this.addData(index),\n remove:\n (index = -1) =>\n () =>\n this.removeData(index)\n };\n\n removeData = (index: number) => {\n const { value, onChange } = this.props;\n onChange(dotProp.delete(value, index));\n };\n\n addData = (index = -1) => {\n const { onChange } = this.props;\n let value = this.props.value;\n if (!value) {\n value = [];\n }\n if (index < 0) {\n onChange([...value, {}]);\n } else {\n onChange([...value.slice(0, index + 1), {}, ...value.slice(index + 1)]);\n }\n };\n\n renderHeader = (cb: () => React.ReactNode): React.ReactNode => {\n this.header = cb();\n return null;\n };\n\n renderRow = (cb: ChildrenRenderPropRowCallable): React.ReactNode => {\n const { value } = this.props;\n if (!value) {\n return null;\n }\n this.rows = value.map((record, index) => {\n return (\n <DynamicFieldsetRow key={index}>{cb({ data: record, index })}</DynamicFieldsetRow>\n );\n });\n return null;\n };\n\n renderEmpty = (cb: () => React.ReactNode): React.ReactNode => {\n this.empty = cb();\n return null;\n };\n\n public renderComponent(): React.ReactNode {\n const { value } = this.props;\n const { children } = this.props;\n\n children({\n actions: this.actions,\n header: this.renderHeader,\n row: this.renderRow,\n empty: this.renderEmpty\n });\n\n if (!value || value.length === 0) {\n return this.empty;\n }\n\n return (\n <React.Fragment>\n {this.header}\n {this.rows}\n </React.Fragment>\n );\n }\n\n public override render() {\n const { description, validation = { isValid: null } } = this.props;\n\n return (\n <>\n {this.renderComponent()}\n {validation.isValid === false && (\n <FormElementMessage error>{validation.message}</FormElementMessage>\n )}\n\n {validation.isValid !== false && description && (\n <FormElementMessage>{description}</FormElementMessage>\n )}\n </>\n );\n }\n}\n\nexport default Fieldset;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_dotPropImmutable","_FormElementMessage","_styled","DynamicFieldsetRow","styled","target","label","paddingBottom","padding","display","Fieldset","_React$Component","_inherits2","default","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty2","_assertThisInitialized2","add","index","undefined","addData","remove","removeData","_this$props","props","value","onChange","dotProp","delete","_toConsumableArray2","slice","cb","header","rows","map","record","createElement","key","data","empty","_createClass2","renderComponent","children","actions","renderHeader","row","renderRow","renderEmpty","Fragment","render","_this$props2","description","_this$props2$validati","validation","isValid","FormElementMessage","error","message","React","Component","_default","exports"],"sources":["Fieldset.tsx"],"sourcesContent":["import React from \"react\";\nimport dotProp from \"dot-prop-immutable\";\nimport { FormElementMessage } from \"~/FormElementMessage\";\nimport styled from \"@emotion/styled\";\n\ninterface ChildrenRenderPropRowCallableParams {\n index: number;\n data: any;\n}\ninterface ChildrenRenderPropRowCallable {\n (params: ChildrenRenderPropRowCallableParams): React.ReactNode;\n}\n\ninterface ChildrenRenderPropHeaderCallable {\n (): React.ReactNode;\n}\ninterface ChildrenRenderPropEmptyCallable {\n (): React.ReactNode;\n}\ninterface ChildrenRenderProp {\n actions: {\n add: (index?: number) => () => void;\n remove: (index: number) => () => void;\n };\n header: (cb: ChildrenRenderPropHeaderCallable) => React.ReactNode;\n row: (cb: ChildrenRenderPropRowCallable) => React.ReactNode;\n empty: (cb: ChildrenRenderPropEmptyCallable) => React.ReactNode;\n}\n\ninterface FieldsetProps {\n value?: any[];\n description?: string;\n validation?: { isValid: null | boolean; message?: string };\n onChange: (value: any) => void;\n children: (props: ChildrenRenderProp) => React.ReactNode;\n}\n\nconst DynamicFieldsetRow = styled(\"div\")({\n paddingBottom: 10,\n \"> .mdc-layout-grid\": {\n padding: 0,\n \"> .mdc-layout-grid__inner\": {\n display: \"block\"\n }\n }\n});\n\nclass Fieldset extends React.Component<FieldsetProps> {\n static defaultProps: Partial<FieldsetProps> = {\n value: []\n };\n\n header: React.ReactNode = null;\n rows: React.ReactNode = null;\n empty: React.ReactNode = null;\n\n actions = {\n add:\n (index = -1) =>\n () =>\n this.addData(index),\n remove:\n (index = -1) =>\n () =>\n this.removeData(index)\n };\n\n removeData = (index: number) => {\n const { value, onChange } = this.props;\n onChange(dotProp.delete(value, index));\n };\n\n addData = (index = -1) => {\n const { onChange } = this.props;\n let value = this.props.value;\n if (!value) {\n value = [];\n }\n if (index < 0) {\n onChange([...value, {}]);\n } else {\n onChange([...value.slice(0, index + 1), {}, ...value.slice(index + 1)]);\n }\n };\n\n renderHeader = (cb: () => React.ReactNode): React.ReactNode => {\n this.header = cb();\n return null;\n };\n\n renderRow = (cb: ChildrenRenderPropRowCallable): React.ReactNode => {\n const { value } = this.props;\n if (!value) {\n return null;\n }\n this.rows = value.map((record, index) => {\n return (\n <DynamicFieldsetRow key={index}>{cb({ data: record, index })}</DynamicFieldsetRow>\n );\n });\n return null;\n };\n\n renderEmpty = (cb: () => React.ReactNode): React.ReactNode => {\n this.empty = cb();\n return null;\n };\n\n public renderComponent(): React.ReactNode {\n const { value } = this.props;\n const { children } = this.props;\n\n children({\n actions: this.actions,\n header: this.renderHeader,\n row: this.renderRow,\n empty: this.renderEmpty\n });\n\n if (!value || value.length === 0) {\n return this.empty;\n }\n\n return (\n <React.Fragment>\n {this.header}\n {this.rows}\n </React.Fragment>\n );\n }\n\n public override render() {\n const { description, validation = { isValid: null } } = this.props;\n\n return (\n <>\n {this.renderComponent()}\n {validation.isValid === false && (\n <FormElementMessage error>{validation.message}</FormElementMessage>\n )}\n\n {validation.isValid !== false && description && (\n <FormElementMessage>{description}</FormElementMessage>\n )}\n </>\n );\n }\n}\n\nexport default Fieldset;\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAkCA,IAAMI,kBAAkB,oBAAGC,eAAM,EAAC,KAAK;EAAAC,MAAA;EAAAC,KAAA;AAAA,GAAE;EACrCC,aAAa,EAAE,EAAE;EACjB,oBAAoB,EAAE;IAClBC,OAAO,EAAE,CAAC;IACV,2BAA2B,EAAE;MACzBC,OAAO,EAAE;IACb;EACJ;AACJ,CAAC,CAAC;AAAC,IAEGC,QAAQ,0BAAAC,gBAAA;EAAA,IAAAC,UAAA,CAAAC,OAAA,EAAAH,QAAA,EAAAC,gBAAA;EAAA,IAAAG,MAAA,OAAAC,aAAA,CAAAF,OAAA,EAAAH,QAAA;EAAA,SAAAA,SAAA;IAAA,IAAAM,KAAA;IAAA,IAAAC,gBAAA,CAAAJ,OAAA,QAAAH,QAAA;IAAA,SAAAQ,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IAAAP,KAAA,GAAAF,MAAA,CAAAU,IAAA,CAAAC,KAAA,CAAAX,MAAA,SAAAY,MAAA,CAAAL,IAAA;IAAA,IAAAM,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,aAKgB,IAAI;IAAA,IAAAW,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,WACN,IAAI;IAAA,IAAAW,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,YACH,IAAI;IAAA,IAAAW,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,cAEnB;MACNa,GAAG,EACC,SAAAA,IAAA;QAAA,IAACC,KAAK,GAAAX,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAY,SAAA,GAAAZ,SAAA,MAAG,CAAC,CAAC;QAAA,OACX;UAAA,OACIH,KAAA,CAAKgB,OAAO,CAACF,KAAK,CAAC;QAAA;MAAA;MAC3BG,MAAM,EACF,SAAAA,OAAA;QAAA,IAACH,KAAK,GAAAX,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAY,SAAA,GAAAZ,SAAA,MAAG,CAAC,CAAC;QAAA,OACX;UAAA,OACIH,KAAA,CAAKkB,UAAU,CAACJ,KAAK,CAAC;QAAA;MAAA;IAClC,CAAC;IAAA,IAAAH,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,iBAEY,UAACc,KAAa,EAAK;MAC5B,IAAAK,WAAA,GAA4BnB,KAAA,CAAKoB,KAAK;QAA9BC,KAAK,GAAAF,WAAA,CAALE,KAAK;QAAEC,QAAQ,GAAAH,WAAA,CAARG,QAAQ;MACvBA,QAAQ,CAACC,yBAAO,CAACC,MAAM,CAACH,KAAK,EAAEP,KAAK,CAAC,CAAC;IAC1C,CAAC;IAAA,IAAAH,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,cAES,YAAgB;MAAA,IAAfc,KAAK,GAAAX,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAY,SAAA,GAAAZ,SAAA,MAAG,CAAC,CAAC;MACjB,IAAQmB,QAAQ,GAAKtB,KAAA,CAAKoB,KAAK,CAAvBE,QAAQ;MAChB,IAAID,KAAK,GAAGrB,KAAA,CAAKoB,KAAK,CAACC,KAAK;MAC5B,IAAI,CAACA,KAAK,EAAE;QACRA,KAAK,GAAG,EAAE;MACd;MACA,IAAIP,KAAK,GAAG,CAAC,EAAE;QACXQ,QAAQ,IAAAZ,MAAA,KAAAe,mBAAA,CAAA5B,OAAA,EAAKwB,KAAK,IAAE,CAAC,CAAC,EAAC,CAAC;MAC5B,CAAC,MAAM;QACHC,QAAQ,IAAAZ,MAAA,KAAAe,mBAAA,CAAA5B,OAAA,EAAKwB,KAAK,CAACK,KAAK,CAAC,CAAC,EAAEZ,KAAK,GAAG,CAAC,CAAC,IAAE,CAAC,CAAC,OAAAW,mBAAA,CAAA5B,OAAA,EAAKwB,KAAK,CAACK,KAAK,CAACZ,KAAK,GAAG,CAAC,CAAC,EAAC,CAAC;MAC3E;IACJ,CAAC;IAAA,IAAAH,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,mBAEc,UAAC2B,EAAyB,EAAsB;MAC3D3B,KAAA,CAAK4B,MAAM,GAAGD,EAAE,CAAC,CAAC;MAClB,OAAO,IAAI;IACf,CAAC;IAAA,IAAAhB,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,gBAEW,UAAC2B,EAAiC,EAAsB;MAChE,IAAQN,KAAK,GAAKrB,KAAA,CAAKoB,KAAK,CAApBC,KAAK;MACb,IAAI,CAACA,KAAK,EAAE;QACR,OAAO,IAAI;MACf;MACArB,KAAA,CAAK6B,IAAI,GAAGR,KAAK,CAACS,GAAG,CAAC,UAACC,MAAM,EAAEjB,KAAK,EAAK;QACrC,oBACIjC,MAAA,CAAAgB,OAAA,CAAAmC,aAAA,CAAC7C,kBAAkB;UAAC8C,GAAG,EAAEnB;QAAM,GAAEa,EAAE,CAAC;UAAEO,IAAI,EAAEH,MAAM;UAAEjB,KAAK,EAALA;QAAM,CAAC,CAAsB,CAAC;MAE1F,CAAC,CAAC;MACF,OAAO,IAAI;IACf,CAAC;IAAA,IAAAH,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,kBAEa,UAAC2B,EAAyB,EAAsB;MAC1D3B,KAAA,CAAKmC,KAAK,GAAGR,EAAE,CAAC,CAAC;MACjB,OAAO,IAAI;IACf,CAAC;IAAA,OAAA3B,KAAA;EAAA;EAAA,IAAAoC,aAAA,CAAAvC,OAAA,EAAAH,QAAA;IAAAuC,GAAA;IAAAZ,KAAA,EAED,SAAAgB,gBAAA,EAA0C;MACtC,IAAQhB,KAAK,GAAK,IAAI,CAACD,KAAK,CAApBC,KAAK;MACb,IAAQiB,QAAQ,GAAK,IAAI,CAAClB,KAAK,CAAvBkB,QAAQ;MAEhBA,QAAQ,CAAC;QACLC,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBX,MAAM,EAAE,IAAI,CAACY,YAAY;QACzBC,GAAG,EAAE,IAAI,CAACC,SAAS;QACnBP,KAAK,EAAE,IAAI,CAACQ;MAChB,CAAC,CAAC;MAEF,IAAI,CAACtB,KAAK,IAAIA,KAAK,CAACjB,MAAM,KAAK,CAAC,EAAE;QAC9B,OAAO,IAAI,CAAC+B,KAAK;MACrB;MAEA,oBACItD,MAAA,CAAAgB,OAAA,CAAAmC,aAAA,CAACnD,MAAA,CAAAgB,OAAK,CAAC+C,QAAQ,QACV,IAAI,CAAChB,MAAM,EACX,IAAI,CAACC,IACM,CAAC;IAEzB;EAAC;IAAAI,GAAA;IAAAZ,KAAA,EAED,SAAAwB,OAAA,EAAyB;MACrB,IAAAC,YAAA,GAAwD,IAAI,CAAC1B,KAAK;QAA1D2B,WAAW,GAAAD,YAAA,CAAXC,WAAW;QAAAC,qBAAA,GAAAF,YAAA,CAAEG,UAAU;QAAVA,UAAU,GAAAD,qBAAA,cAAG;UAAEE,OAAO,EAAE;QAAK,CAAC,GAAAF,qBAAA;MAEnD,oBACInE,MAAA,CAAAgB,OAAA,CAAAmC,aAAA,CAAAnD,MAAA,CAAAgB,OAAA,CAAA+C,QAAA,QACK,IAAI,CAACP,eAAe,CAAC,CAAC,EACtBY,UAAU,CAACC,OAAO,KAAK,KAAK,iBACzBrE,MAAA,CAAAgB,OAAA,CAAAmC,aAAA,CAAC/C,mBAAA,CAAAkE,kBAAkB;QAACC,KAAK;MAAA,GAAEH,UAAU,CAACI,OAA4B,CACrE,EAEAJ,UAAU,CAACC,OAAO,KAAK,KAAK,IAAIH,WAAW,iBACxClE,MAAA,CAAAgB,OAAA,CAAAmC,aAAA,CAAC/C,mBAAA,CAAAkE,kBAAkB,QAAEJ,WAAgC,CAE3D,CAAC;IAEX;EAAC;EAAA,OAAArD,QAAA;AAAA,EAnGkB4D,cAAK,CAACC,SAAS;AAAA,IAAA5C,gBAAA,CAAAd,OAAA,EAAhCH,QAAQ,kBACoC;EAC1C2B,KAAK,EAAE;AACX,CAAC;AAAA,IAAAmC,QAAA,GAmGU9D,QAAQ;AAAA+D,OAAA,CAAA5D,OAAA,GAAA2D,QAAA"}
package/Icon/Icon.d.ts CHANGED
@@ -7,7 +7,7 @@ export declare type IconProps = {
7
7
  /**
8
8
  * Optional onclick handler
9
9
  */
10
- onClick?: Function;
10
+ onClick?: (value: any) => void;
11
11
  /**
12
12
  * CSS class to be added to the icon
13
13
  */
@@ -17,5 +17,5 @@ export declare type IconProps = {
17
17
  /**
18
18
  * Use Icon component to display an icon.
19
19
  */
20
- declare const Icon: React.FC<IconProps>;
20
+ declare const Icon: (props: IconProps) => React.ReactElement<any, string | React.JSXElementConstructor<any>>;
21
21
  export { Icon };
package/Icon/Icon.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_emotion","_classnames","webinyIcon","css","marginLeft","width","display","Icon","props","React","cloneElement","icon","className","classNames","onClick","exports"],"sources":["Icon.tsx"],"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"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAH,sBAAA,CAAAC,OAAA;AAsBA,IAAMG,UAAU,gBAAG,IAAAC,YAAG,EAClB,CAAC,CAAC,EACF;EACI,oBAAoB,EAAE;IAClBC,UAAU,EAAE,CAAC;IACbC,KAAK,EAAE,SAAS;IAChBC,OAAO,EAAE;EACb;AACJ,CAAC,qBACL,CAAC;;AAED;AACA;AACA;AACA,IAAMC,IAAyB,GAAG,SAA5BA,IAAyBA,CAAGC,KAAK,EAAI;EACvC,oBAAOC,cAAK,CAACC,YAAY,CAACF,KAAK,CAACG,IAAI,EAAE;IAClC,aAAa,EAAEH,KAAK,CAAC,aAAa,CAAC;IACnCI,SAAS,EAAE,IAAAC,mBAAU,EAAC,iCAAiC,EAAEX,UAAU,EAAEM,KAAK,CAACI,SAAS,CAAC;IACrFE,OAAO,EAAEN,KAAK,CAACM;EACnB,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAR,IAAA,GAAAA,IAAA"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_emotion","_classnames","webinyIcon","css","marginLeft","width","display","Icon","props","React","cloneElement","icon","className","classNames","onClick","exports"],"sources":["Icon.tsx"],"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?: (value: any) => void;\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 = (props: IconProps) => {\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"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAH,sBAAA,CAAAC,OAAA;AAsBA,IAAMG,UAAU,gBAAG,IAAAC,YAAG,EAClB,CAAC,CAAC,EACF;EACI,oBAAoB,EAAE;IAClBC,UAAU,EAAE,CAAC;IACbC,KAAK,EAAE,SAAS;IAChBC,OAAO,EAAE;EACb;AACJ,CAAC,qBACL,CAAC;;AAED;AACA;AACA;AACA,IAAMC,IAAI,GAAG,SAAPA,IAAIA,CAAIC,KAAgB,EAAK;EAC/B,oBAAOC,cAAK,CAACC,YAAY,CAACF,KAAK,CAACG,IAAI,EAAE;IAClC,aAAa,EAAEH,KAAK,CAAC,aAAa,CAAC;IACnCI,SAAS,EAAE,IAAAC,mBAAU,EAAC,iCAAiC,EAAEX,UAAU,EAAEM,KAAK,CAACI,SAAS,CAAC;IACrFE,OAAO,EAAEN,KAAK,CAACM;EACnB,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAR,IAAA,GAAAA,IAAA"}
package/Image/Image.d.ts CHANGED
@@ -1,7 +1,6 @@
1
- /// <reference types="web" />
2
1
  import React from "react";
3
2
  interface Props extends React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> {
4
3
  [key: string]: any;
5
4
  }
6
- declare const Image: React.FC<Props>;
5
+ declare const Image: ({ ...rest }: Props) => JSX.Element;
7
6
  export { Image };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","Image","_ref","rest","Object","assign","_objectDestructuringEmpty2","default","finalProps","_objectSpread2","srcSet","keys","map","key","concat","join","createElement","exports"],"sources":["Image.tsx"],"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"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA;;AAMA,IAAMC,KAAsB,GAAG,SAAzBA,KAAsBA,CAAAC,IAAA,EAAoB;EAAA,IAAXC,IAAI,GAAAC,MAAA,CAAAC,MAAA,UAAAC,0BAAA,CAAAC,OAAA,EAAAL,IAAA,GAAAA,IAAA;EACrC,IAAMM,UAAU,OAAAC,cAAA,CAAAF,OAAA,MAAQJ,IAAI,CAAE;EAC9B,IAAMO,MAAM,GAAGF,UAAU,CAACE,MAAM;EAChC,IAAIA,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;IACtCF,UAAU,CAACE,MAAM,GAAGN,MAAM,CAACO,IAAI,CAACD,MAAM,CAAC,CAClCE,GAAG,CAAC,UAAAC,GAAG;MAAA,UAAAC,MAAA,CAAOJ,MAAM,CAACG,GAAG,CAAC,OAAAC,MAAA,CAAID,GAAG;IAAA,CAAE,CAAC,CACnCE,IAAI,CAAC,IAAI,CAAC;EACnB;EAEA,oBAAOjB,MAAA,CAAAS,OAAA,CAAAS,aAAA,QAASR,UAAa,CAAC;AAClC,CAAC;AAACS,OAAA,CAAAhB,KAAA,GAAAA,KAAA"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","Image","_ref","rest","Object","assign","_objectDestructuringEmpty2","default","finalProps","_objectSpread2","srcSet","keys","map","key","concat","join","createElement","exports"],"sources":["Image.tsx"],"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 = ({ ...rest }: Props) => {\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"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA;;AAMA,IAAMC,KAAK,GAAG,SAARA,KAAKA,CAAAC,IAAA,EAA2B;EAAA,IAAlBC,IAAI,GAAAC,MAAA,CAAAC,MAAA,UAAAC,0BAAA,CAAAC,OAAA,EAAAL,IAAA,GAAAA,IAAA;EACpB,IAAMM,UAAU,OAAAC,cAAA,CAAAF,OAAA,MAAQJ,IAAI,CAAE;EAC9B,IAAMO,MAAM,GAAGF,UAAU,CAACE,MAAM;EAChC,IAAIA,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;IACtCF,UAAU,CAACE,MAAM,GAAGN,MAAM,CAACO,IAAI,CAACD,MAAM,CAAC,CAClCE,GAAG,CAAC,UAAAC,GAAG;MAAA,UAAAC,MAAA,CAAOJ,MAAM,CAACG,GAAG,CAAC,OAAAC,MAAA,CAAID,GAAG;IAAA,CAAE,CAAC,CACnCE,IAAI,CAAC,IAAI,CAAC;EACnB;EAEA,oBAAOjB,MAAA,CAAAS,OAAA,CAAAS,aAAA,QAASR,UAAa,CAAC;AAClC,CAAC;AAACS,OAAA,CAAAhB,KAAA,GAAAA,KAAA"}
@@ -1,8 +1,7 @@
1
- /// <reference types="web" />
2
1
  import React from "react";
3
2
  import { ImageEditorTool, ToolbarTool } from "./toolbar/types";
4
3
  interface RenderPropArgs {
5
- render: Function;
4
+ render: () => React.ReactNode;
6
5
  getCanvasDataUrl: () => string;
7
6
  activeTool: ImageEditorTool | null;
8
7
  applyActiveTool: () => Promise<void>;
@@ -20,8 +19,8 @@ interface ImageEditorProps {
20
19
  crop: ImageEditorPropsPropsOptions;
21
20
  rotate: ImageEditorPropsPropsOptions;
22
21
  };
23
- onToolActivate?: Function;
24
- onToolDeactivate?: Function;
22
+ onToolActivate?: () => void;
23
+ onToolDeactivate?: () => void;
25
24
  children?: (props: RenderPropArgs) => React.ReactNode;
26
25
  }
27
26
  interface ImageEditorState {
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.ImageEditor = void 0;
8
- var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
10
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
@@ -21,7 +19,7 @@ var _Button = require("../Button");
21
19
  var _loadScript = _interopRequireDefault(require("load-script"));
22
20
  /**
23
21
  * Package load-script does not have types.
24
- */ // @ts-ignore
22
+ */ // @ts-expect-error
25
23
  var toolbar = {
26
24
  flip: _toolbar.flip,
27
25
  filter: _toolbar.filter,
@@ -65,7 +63,7 @@ var ApplyCancelActions = /*#__PURE__*/(0, _styled.default)("div", {
65
63
  });
66
64
  var initScripts = function initScripts() {
67
65
  return new Promise(function (resolve) {
68
- // @ts-ignore
66
+ // @ts-expect-error
69
67
  if (window.Caman) {
70
68
  return resolve();
71
69
  }
@@ -133,62 +131,30 @@ var ImageEditor = /*#__PURE__*/function (_React$Component) {
133
131
  }
134
132
  return "";
135
133
  });
136
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "applyActiveTool", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
137
- var tool;
138
- return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
139
- while (1) switch (_context.prev = _context.next) {
140
- case 0:
141
- tool = _this.state.tool;
142
- if (tool) {
143
- _context.next = 3;
144
- break;
145
- }
146
- return _context.abrupt("return");
147
- case 3:
148
- if (!tool.apply) {
149
- _context.next = 6;
150
- break;
151
- }
152
- _context.next = 6;
153
- return tool.apply({
154
- canvas: _this.canvas
155
- });
156
- case 6:
157
- _this.deactivateTool();
158
- case 7:
159
- case "end":
160
- return _context.stop();
161
- }
162
- }, _callee);
163
- })));
164
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "cancelActiveTool", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2() {
165
- var tool;
166
- return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
167
- while (1) switch (_context2.prev = _context2.next) {
168
- case 0:
169
- tool = _this.state.tool;
170
- if (tool) {
171
- _context2.next = 3;
172
- break;
173
- }
174
- return _context2.abrupt("return");
175
- case 3:
176
- if (!tool.cancel) {
177
- _context2.next = 6;
178
- break;
179
- }
180
- _context2.next = 6;
181
- return tool.cancel({
182
- canvas: _this.canvas
183
- });
184
- case 6:
185
- _this.deactivateTool();
186
- case 7:
187
- case "end":
188
- return _context2.stop();
189
- }
190
- }, _callee2);
191
- })));
134
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "applyActiveTool", async function () {
135
+ var tool = _this.state.tool;
136
+ if (!tool) {
137
+ return;
138
+ }
139
+ if (tool.apply) {
140
+ await tool.apply({
141
+ canvas: _this.canvas
142
+ });
143
+ }
144
+ _this.deactivateTool();
145
+ });
146
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "cancelActiveTool", async function () {
147
+ var tool = _this.state.tool;
148
+ if (!tool) {
149
+ return;
150
+ }
151
+ if (tool.cancel) {
152
+ await tool.cancel({
153
+ canvas: _this.canvas
154
+ });
155
+ }
156
+ _this.deactivateTool();
157
+ });
192
158
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getToolOptions", function (tool) {
193
159
  var options = _this.props.options;
194
160
  if (!options || typeof options !== "object") {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_toolbar","_styled","_classnames","_Button","_loadScript","toolbar","flip","filter","crop","rotate","Toolbar","styled","target","label","display","justifyContent","alignItems","backgroundColor","margin","padding","position","width","boxSizing","zIndex","opacity","pointerEvents","ToolOptions","borderTop","ApplyCancelActions","textAlign","initScripts","Promise","resolve","window","Caman","loadScript","ImageEditor","_React$Component","_inherits2","default","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty2","_assertThisInitialized2","tool","src","React","createRef","props","image","Image","canvas","current","onload","height","ctx","getContext","drawImage","setState","tt","onActivate","options","getToolOptions","startsWith","toDataURL","_asyncToGenerator2","_regeneratorRuntime2","mark","_callee","wrap","_callee$","_context","prev","next","state","abrupt","deactivateTool","stop","_callee2","_callee2$","_context2","cancel","name","_createClass2","key","value","componentDidMount","_this2","then","updateCanvas","setTimeout","option","autoEnable","activateTool","render","_this3","_this$props","tools","children","editor","createElement","Fragment","map","className","classNames","disabled","icon","renderForm","ButtonSecondary","onClick","cancelActiveTool","ButtonPrimary","applyActiveTool","style","id","maxWidth","ref","getCanvasDataUrl","activeTool","Component","exports"],"sources":["ImageEditor.tsx"],"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 data-testid=\"button-cancel\"\n onClick={() => {\n this.cancelActiveTool();\n }}\n >\n Cancel\n </ButtonSecondary>\n &nbsp;\n <ButtonPrimary\n data-testid=\"button-apply\"\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"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,WAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAKA,IAAAK,WAAA,GAAAN,sBAAA,CAAAC,OAAA;AAJA;AACA;AACA,GAFA,CAGA;AAGA,IAAMM,OAAO,GAAG;EACZC,IAAI,EAAJA,aAAI;EACJC,MAAM,EAANA,eAAM;EACNC,IAAI,EAAJA,aAAI;EACJC,MAAM,EAANA;AACJ,CAAC;AAED,IAAMC,OAAO,oBAAGC,eAAM,EAAC,KAAK;EAAAC,MAAA;EAAAC,KAAA;AAAA,GAAE;EAC1BC,OAAO,EAAE,MAAM;EACfC,cAAc,EAAE,QAAQ;EACxBC,UAAU,EAAE,QAAQ;EACpBC,eAAe,EAAE,4BAA4B;EAC7CC,MAAM,EAAE,uBAAuB;EAC/BC,OAAO,EAAE,CAAC;EACVC,QAAQ,EAAE,UAAU;EACpBC,KAAK,EAAE,MAAM;EACbC,SAAS,EAAE,YAAY;EACvBC,MAAM,EAAE,EAAE;EACV,gBAAgB,EAAE;IACdC,OAAO,EAAE,GAAG;IACZC,aAAa,EAAE;EACnB;AACJ,CAAC,CAAC;AAEF,IAAMC,WAAW,oBAAGf,eAAM,EAAC,KAAK;EAAAC,MAAA;EAAAC,KAAA;AAAA,GAAE;EAC9BK,MAAM,EAAE,uBAAuB;EAC/BI,SAAS,EAAE,YAAY;EACvBH,OAAO,EAAE,EAAE;EACXF,eAAe,EAAE,6BAA6B;EAC9CU,SAAS,EAAE;AACf,CAAC,CAAC;AAEF,IAAMC,kBAAkB,oBAAGjB,eAAM,EAAC,KAAK;EAAAC,MAAA;EAAAC,KAAA;AAAA,GAAE;EACrCgB,SAAS,EAAE;AACf,CAAC,CAAC;AAEF,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAA,EAA0B;EACvC,OAAO,IAAIC,OAAO,CAAC,UAACC,OAAY,EAAK;IACjC;IACA,IAAIC,MAAM,CAACC,KAAK,EAAE;MACd,OAAOF,OAAO,CAAC,CAAC;IACpB;IACA,OAAO,IAAAG,mBAAU,EACb,wEAAwE,EACxEH,OACJ,CAAC;EACL,CAAC,CAAC;AACN,CAAC;AAAC,IAiCII,WAAW,0BAAAC,gBAAA;EAAA,IAAAC,UAAA,CAAAC,OAAA,EAAAH,WAAA,EAAAC,gBAAA;EAAA,IAAAG,MAAA,OAAAC,aAAA,CAAAF,OAAA,EAAAH,WAAA;EAAA,SAAAA,YAAA;IAAA,IAAAM,KAAA;IAAA,IAAAC,gBAAA,CAAAJ,OAAA,QAAAH,WAAA;IAAA,SAAAQ,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IAAAP,KAAA,GAAAF,MAAA,CAAAU,IAAA,CAAAC,KAAA,CAAAX,MAAA,SAAAY,MAAA,CAAAL,IAAA;IAAA,IAAAM,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,YAK6B;MACtCa,IAAI,EAAE,IAAI;MACVC,GAAG,EAAE;IACT,CAAC;IAAA,IAAAH,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,0BAEee,cAAK,CAACC,SAAS,CAAoB,CAAC;IAAA,IAAAL,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,mBAuBpB,YAAY;MACxC,IAAQc,GAAG,GAAKd,KAAA,CAAKiB,KAAK,CAAlBH,GAAG;MACXd,KAAA,CAAKkB,KAAK,GAAG,IAAI3B,MAAM,CAAC4B,KAAK,CAAC,CAAC;MAC/B,IAAMC,MAAM,GAAGpB,KAAA,CAAKoB,MAAM,CAACC,OAAO;MAClC,IAAID,MAAM,EAAE;QACRpB,KAAA,CAAKkB,KAAK,CAACI,MAAM,GAAG,YAAM;UACtB,IAAItB,KAAA,CAAKkB,KAAK,EAAE;YACZE,MAAM,CAACzC,KAAK,GAAGqB,KAAA,CAAKkB,KAAK,CAACvC,KAAK;YAC/ByC,MAAM,CAACG,MAAM,GAAGvB,KAAA,CAAKkB,KAAK,CAACK,MAAM;YACjC,IAAMC,GAAG,GAAGJ,MAAM,CAACK,UAAU,CAAC,IAAI,CAA6B;YAC/DD,GAAG,CAACE,SAAS,CAAC1B,KAAA,CAAKkB,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;UACnC;QACJ,CAAC;QAEDlB,KAAA,CAAKkB,KAAK,CAACJ,GAAG,GAAGA,GAAG;MACxB;IACJ,CAAC;IAAA,IAAAH,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,mBAE+B,UAACa,IAAmC,EAAW;MAC3E,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;QAC1BA,IAAI,GAAGlD,OAAO,CAACkD,IAAI,CAAC;MACxB;MAEAb,KAAA,CAAK2B,QAAQ,CAAC;QAAEd,IAAI,EAAJA;MAAK,CAAC,EAAE,YAAM;QAC1B,IAAMe,EAAE,GAAGf,IAAuB;QAClC,OAAOe,EAAE,CAACC,UAAU,KAAK,UAAU,IAC/BD,EAAE,CAACC,UAAU,CAAC;UAAET,MAAM,EAAEpB,KAAA,CAAKoB,MAAM;UAAEU,OAAO,EAAE9B,KAAA,CAAK+B,cAAc,CAACH,EAAE;QAAE,CAAC,CAAC;MAChF,CAAC,CAAC;IACN,CAAC;IAAA,IAAAjB,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,qBAEiC,YAAY;MAC1CA,KAAA,CAAK2B,QAAQ,CAAC;QACVd,IAAI,EAAE;MACV,CAAC,CAAC;IACN,CAAC;IAAA,IAAAF,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,uBAEkC,YAAc;MAC7C,IAAMoB,MAAM,GAAGpB,KAAA,CAAKoB,MAAM,CAACC,OAA4B;MACvD,IAAID,MAAM,EAAE;QACR,IAAQN,GAAG,GAAKd,KAAA,CAAKiB,KAAK,CAAlBH,GAAG;QACX,IAAIA,GAAG,CAACkB,UAAU,CAAC,kBAAkB,CAAC,EAAE;UACpC,OAAOZ,MAAM,CAACa,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC;QAC9C;QAEA,OAAOb,MAAM,CAACa,SAAS,CAAC,CAAC;MAC7B;MAEA,OAAO,EAAE;IACb,CAAC;IAAA,IAAAtB,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,uCAAAkC,kBAAA,CAAArC,OAAA,oBAAAsC,oBAAA,CAAAtC,OAAA,IAAAuC,IAAA,CAEkC,SAAAC,QAAA;MAAA,IAAAxB,IAAA;MAAA,WAAAsB,oBAAA,CAAAtC,OAAA,IAAAyC,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YACvB7B,IAAI,GAAKb,KAAA,CAAK2C,KAAK,CAAnB9B,IAAI;YAAA,IACPA,IAAI;cAAA2B,QAAA,CAAAE,IAAA;cAAA;YAAA;YAAA,OAAAF,QAAA,CAAAI,MAAA;UAAA;YAAA,KAIL/B,IAAI,CAACJ,KAAK;cAAA+B,QAAA,CAAAE,IAAA;cAAA;YAAA;YAAAF,QAAA,CAAAE,IAAA;YAAA,OACJ7B,IAAI,CAACJ,KAAK,CAAC;cACbW,MAAM,EAAEpB,KAAA,CAAKoB;YACjB,CAAC,CAAC;UAAA;YAENpB,KAAA,CAAK6C,cAAc,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAL,QAAA,CAAAM,IAAA;QAAA;MAAA,GAAAT,OAAA;IAAA,CACzB;IAAA,IAAA1B,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,wCAAAkC,kBAAA,CAAArC,OAAA,oBAAAsC,oBAAA,CAAAtC,OAAA,IAAAuC,IAAA,CAEmC,SAAAW,SAAA;MAAA,IAAAlC,IAAA;MAAA,WAAAsB,oBAAA,CAAAtC,OAAA,IAAAyC,IAAA,UAAAU,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAR,IAAA,GAAAQ,SAAA,CAAAP,IAAA;UAAA;YACxB7B,IAAI,GAAKb,KAAA,CAAK2C,KAAK,CAAnB9B,IAAI;YAAA,IACPA,IAAI;cAAAoC,SAAA,CAAAP,IAAA;cAAA;YAAA;YAAA,OAAAO,SAAA,CAAAL,MAAA;UAAA;YAAA,KAIL/B,IAAI,CAACqC,MAAM;cAAAD,SAAA,CAAAP,IAAA;cAAA;YAAA;YAAAO,SAAA,CAAAP,IAAA;YAAA,OACL7B,IAAI,CAACqC,MAAM,CAAC;cACd9B,MAAM,EAAEpB,KAAA,CAAKoB;YACjB,CAAC,CAAC;UAAA;YAENpB,KAAA,CAAK6C,cAAc,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAI,SAAA,CAAAH,IAAA;QAAA;MAAA,GAAAC,QAAA;IAAA,CACzB;IAAA,IAAApC,gBAAA,CAAAd,OAAA,MAAAe,uBAAA,CAAAf,OAAA,EAAAG,KAAA,qBAEiC,UAC9Ba,IAAqB,EACmB;MACxC,IAAQiB,OAAO,GAAK9B,KAAA,CAAKiB,KAAK,CAAtBa,OAAO;MACf,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;QACzC,OAAO,CAAC,CAAC;MACb;MAEA,OAAOA,OAAO,CAACjB,IAAI,CAACsC,IAAI,CAAgB,IAAI,CAAC,CAAC;IAClD,CAAC;IAAA,OAAAnD,KAAA;EAAA;EAAA,IAAAoD,aAAA,CAAAvD,OAAA,EAAAH,WAAA;IAAA2D,GAAA;IAAAC,KAAA,EA3GD,SAAAC,kBAAA,EAAoC;MAAA,IAAAC,MAAA;MAChCpE,WAAW,CAAC,CAAC,CAACqE,IAAI,CAAC,YAAM;QACrBD,MAAI,CAACE,YAAY,CAAC,CAAC;QACnBC,UAAU,CAAC,YAAM;UACb,IAAQ7B,OAAO,GAAK0B,MAAI,CAACvC,KAAK,CAAtBa,OAAO;UACf,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;YACzC;UACJ;UACA,KAAK,IAAMuB,GAAG,IAAIvB,OAAO,EAAE;YACvB,IAAM8B,MAAM,GAAG9B,OAAO,CAACuB,GAAG,CAAgB;YAC1C,IAAIO,MAAM,CAACC,UAAU,KAAK,IAAI,EAAE;cAC5B,IAAMhD,IAA4B,GAAGlD,OAAO,CAAC0F,GAAG,CAAgB;cAChExC,IAAI,IAAI2C,MAAI,CAACM,YAAY,CAACjD,IAAI,CAAC;cAC/B;YACJ;UACJ;QACJ,CAAC,EAAE,GAAG,CAAC;MACX,CAAC,CAAC;IACN;EAAC;IAAAwC,GAAA;IAAAC,KAAA,EA2FD,SAAAS,OAAA,EAA0C;MAAA,IAAAC,MAAA;MACtC,IAAAC,WAAA,GAAiC,IAAI,CAAChD,KAAK;QAAnCH,GAAG,GAAAmD,WAAA,CAAHnD,GAAG;QAAEoD,KAAK,GAAAD,WAAA,CAALC,KAAK;QAAEC,QAAQ,GAAAF,WAAA,CAARE,QAAQ;MAC5B,IAAQtD,IAAI,GAAK,IAAI,CAAC8B,KAAK,CAAnB9B,IAAI;MACZ,IAAMuD,MAAM,gBACRjH,MAAA,CAAA0C,OAAA,CAAAwE,aAAA,CAAClH,MAAA,CAAA0C,OAAK,CAACyE,QAAQ,qBACXnH,MAAA,CAAA0C,OAAA,CAAAwE,aAAA,CAACrG,OAAO,QACHkG,KAAK,CAACK,GAAG,CAAC,UAAAlB,GAAG,EAAI;QACd,IAAMxC,IAAqB,GAAGlD,OAAO,CAAC0F,GAAG,CAAC;QAC1C,IAAI,CAACxC,IAAI,EAAE;UACP,OAAO,IAAI;QACf;QAEA,oBACI1D,MAAA,CAAA0C,OAAA,CAAAwE,aAAA;UAAKhB,GAAG,EAAEA,GAAI;UAACmB,SAAS,EAAE,IAAAC,mBAAU,EAAC;YAAEC,QAAQ,EAAEV,MAAI,CAACrB,KAAK,CAAC9B;UAAK,CAAC;QAAE,GAC/DA,IAAI,CAAC8D,IAAI,CAAC;UACPb,YAAY,EAAE,SAAAA,aAAA;YAAA,OAAME,MAAI,CAACF,YAAY,CAACjD,IAAI,CAAC;UAAA;QAC/C,CAAC,CACA,CAAC;MAEd,CAAC,CACI,CAAC,eAEV1D,MAAA,CAAA0C,OAAA,CAAAwE,aAAA,CAACrF,WAAW,QACP6B,IAAI,gBACD1D,MAAA,CAAA0C,OAAA,CAAAwE,aAAA,CAAAlH,MAAA,CAAA0C,OAAA,CAAAyE,QAAA,QACK,OAAOzD,IAAI,CAAC+D,UAAU,KAAK,UAAU,IAClC/D,IAAI,CAAC+D,UAAU,CAAC;QACZ9C,OAAO,EAAE,IAAI,CAACC,cAAc,CAAClB,IAAuB,CAAC;QACrDK,KAAK,EAAE,IAAI,CAACA,KAAyB;QACrCE,MAAM,EAAE,IAAI,CAACA;MACjB,CAAC,CAAC,eAENjE,MAAA,CAAA0C,OAAA,CAAAwE,aAAA,CAACnF,kBAAkB,qBACf/B,MAAA,CAAA0C,OAAA,CAAAwE,aAAA,CAAC5G,OAAA,CAAAoH,eAAe;QACZ,eAAY,eAAe;QAC3BC,OAAO,EAAE,SAAAA,QAAA,EAAM;UACXd,MAAI,CAACe,gBAAgB,CAAC,CAAC;QAC3B;MAAE,GACL,QAEgB,CAAC,QAElB,eAAA5H,MAAA,CAAA0C,OAAA,CAAAwE,aAAA,CAAC5G,OAAA,CAAAuH,aAAa;QACV,eAAY,cAAc;QAC1BF,OAAO,EAAE,SAAAA,QAAA,EAAM;UACXd,MAAI,CAACiB,eAAe,CAAC,CAAC;QAC1B;MAAE,GACL,OAEc,CACC,CACtB,CAAC,gBAEH9H,MAAA,CAAA0C,OAAA,CAAAwE,aAAA;QAAKa,KAAK,EAAE;UAAE/F,SAAS,EAAE;QAAS;MAAE,GAAC,+CAEhC,CAEA,CAAC,eAEdhC,MAAA,CAAA0C,OAAA,CAAAwE,aAAA;QAAKa,KAAK,EAAE;UAAE1G,MAAM,EAAE,QAAQ;UAAEW,SAAS,EAAE;QAAS;MAAE,gBAClDhC,MAAA,CAAA0C,OAAA,CAAAwE,aAAA;QACIhB,GAAG,EAAEvC,GAAI;QACTqE,EAAE,EAAE,QAAS;QACbD,KAAK,EAAE;UAAEE,QAAQ,EAAE;QAAI,CAAE;QACzBC,GAAG,EAAE,IAAI,CAACjE;MAAyB,CACtC,CACA,CACO,CACnB;MAED,IAAI,OAAO+C,QAAQ,KAAK,UAAU,EAAE;QAChC,OAAOA,QAAQ,CAAC;UACZJ,MAAM,EAAE,SAAAA,OAAA;YAAA,OAAMK,MAAM;UAAA;UACpB;UACAkB,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;UACvCC,UAAU,EAAE,IAAI,CAAC5C,KAAK,CAAC9B,IAAI;UAC3BoE,eAAe,EAAE,IAAI,CAACA,eAAe;UACrCF,gBAAgB,EAAE,IAAI,CAACA;QAC3B,CAAC,CAAC;MACN;MAEA,OAAOX,MAAM;IACjB;EAAC;EAAA,OAAA1E,WAAA;AAAA,EA5MqBqB,cAAK,CAACyE,SAAS;AAAAC,OAAA,CAAA/F,WAAA,GAAAA,WAAA;AAAA,IAAAiB,gBAAA,CAAAd,OAAA,EAAnCH,WAAW,kBACoC;EAC7CwE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;AAC9C,CAAC"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_toolbar","_styled","_classnames","_Button","_loadScript","toolbar","flip","filter","crop","rotate","Toolbar","styled","target","label","display","justifyContent","alignItems","backgroundColor","margin","padding","position","width","boxSizing","zIndex","opacity","pointerEvents","ToolOptions","borderTop","ApplyCancelActions","textAlign","initScripts","Promise","resolve","window","Caman","loadScript","ImageEditor","_React$Component","_inherits2","default","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty2","_assertThisInitialized2","tool","src","React","createRef","props","image","Image","canvas","current","onload","height","ctx","getContext","drawImage","setState","tt","onActivate","options","getToolOptions","startsWith","toDataURL","state","deactivateTool","cancel","name","_createClass2","key","value","componentDidMount","_this2","then","updateCanvas","setTimeout","option","autoEnable","activateTool","render","_this3","_this$props","tools","children","editor","createElement","Fragment","map","className","classNames","disabled","icon","renderForm","ButtonSecondary","onClick","cancelActiveTool","ButtonPrimary","applyActiveTool","style","id","maxWidth","ref","getCanvasDataUrl","activeTool","Component","exports"],"sources":["ImageEditor.tsx"],"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-expect-error\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-expect-error\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: () => React.ReactNode;\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?: () => void;\n onToolDeactivate?: () => void;\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 data-testid=\"button-cancel\"\n onClick={() => {\n this.cancelActiveTool();\n }}\n >\n Cancel\n </ButtonSecondary>\n &nbsp;\n <ButtonPrimary\n data-testid=\"button-apply\"\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"],"mappings":"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"}
@@ -20,7 +20,7 @@ var _Tooltip = require("../../Tooltip");
20
20
  var _debounce = _interopRequireDefault(require("lodash/debounce"));
21
21
  var _styled = _interopRequireDefault(require("@emotion/styled"));
22
22
  /**
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.
23
+ * When using Caman, we added @ts-expect-error because it does not exist in packages, but it is loaded in packages/ui/src/ImageEditor/ImageEditor.tsx:38.
24
24
  * TODO: use some other library to edit images
25
25
  */
26
26
 
@@ -103,17 +103,17 @@ var RenderForm = /*#__PURE__*/function (_React$Component) {
103
103
  // eslint-disable-next-line @typescript-eslint/no-this-alias
104
104
  var component = (0, _assertThisInitialized2.default)(_this);
105
105
 
106
- // @ts-ignore
106
+ // @ts-expect-error
107
107
  Caman(canvas.current, function () {
108
108
  var _this2 = this;
109
- // @ts-ignore
109
+ // @ts-expect-error
110
110
  this.revert(false);
111
111
  Object.keys(values).forEach(
112
- // @ts-ignore
112
+ // @ts-expect-error
113
113
  function (key) {
114
114
  return values[key] !== 0 && _this2[key] && _this2[key](values[key]);
115
115
  });
116
- // @ts-ignore
116
+ // @ts-expect-error
117
117
  this.render();
118
118
  component.setState({
119
119
  processing: false
@@ -200,11 +200,11 @@ var tool = {
200
200
  },
201
201
  cancel: function cancel(_ref2) {
202
202
  var canvas = _ref2.canvas;
203
- // @ts-ignore
203
+ // @ts-expect-error
204
204
  Caman(canvas.current, function () {
205
- // @ts-ignore
205
+ // @ts-expect-error
206
206
  this.revert(false);
207
- // @ts-ignore
207
+ // @ts-expect-error
208
208
  this.render();
209
209
  });
210
210
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_filter","_Slider","_Button","_Tooltip","_debounce","_styled","Wrapper","styled","target","label","ul","textAlign","li","display","width","padding","sliders","key","min","RenderForm","_React$Component","_inherits2","default","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty2","_assertThisInitialized2","processing","values","debounce","canvas","props","state","component","Caman","current","_this2","revert","Object","keys","forEach","render","setState","reduce","output","_createClass2","value","componentDidMount","resetFiltersValues","_this3","createElement","map","Slider","assign","max","disabled","onInput","_objectSpread2","applyFilters","style","ButtonDefault","onClick","React","Component","tool","name","icon","_ref","activateTool","Tooltip","placement","content","IconButton","ReactComponent","renderForm","cancel","_ref2","_default","exports"],"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/debounce\";\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":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_filter","_Slider","_Button","_Tooltip","_debounce","_styled","Wrapper","styled","target","label","ul","textAlign","li","display","width","padding","sliders","key","min","RenderForm","_React$Component","_inherits2","default","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty2","_assertThisInitialized2","processing","values","debounce","canvas","props","state","component","Caman","current","_this2","revert","Object","keys","forEach","render","setState","reduce","output","_createClass2","value","componentDidMount","resetFiltersValues","_this3","createElement","map","Slider","assign","max","disabled","onInput","_objectSpread2","applyFilters","style","ButtonDefault","onClick","React","Component","tool","name","icon","_ref","activateTool","Tooltip","placement","content","IconButton","ReactComponent","renderForm","cancel","_ref2","_default","exports"],"sources":["filter.tsx"],"sourcesContent":["/**\n * When using Caman, we added @ts-expect-error 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/debounce\";\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?: () => void;\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-expect-error\n Caman(canvas.current, function () {\n // @ts-expect-error\n this.revert(false);\n Object.keys(values).forEach(\n // @ts-expect-error\n key => values[key] !== 0 && this[key] && this[key](values[key])\n );\n // @ts-expect-error\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-expect-error\n Caman(canvas.current, function () {\n // @ts-expect-error\n this.revert(false);\n // @ts-expect-error\n this.render();\n });\n }\n};\n\nexport default tool;\n"],"mappings":"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"}
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
10
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
@@ -56,19 +54,11 @@ var RenderForm = /*#__PURE__*/function (_React$Component) {
56
54
  onInput: function onInput(value) {
57
55
  _this2.setState({
58
56
  rangeInput: value
59
- }, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
60
- return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
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();
69
- }
70
- }, _callee);
71
- })));
57
+ }, async function () {
58
+ if (cropper) {
59
+ cropper.rotateTo(parseInt(value, 10));
60
+ }
61
+ });
72
62
  }
73
63
  }));
74
64
  }
@@ -77,8 +67,8 @@ var RenderForm = /*#__PURE__*/function (_React$Component) {
77
67
  }(_react.default.Component);
78
68
  var tool = {
79
69
  name: "rotate",
80
- icon: function icon(_ref2) {
81
- var activateTool = _ref2.activateTool;
70
+ icon: function icon(_ref) {
71
+ var activateTool = _ref.activateTool;
82
72
  return /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
83
73
  placement: "bottom",
84
74
  content: "Rotate"
@@ -93,8 +83,8 @@ var tool = {
93
83
  renderForm: function renderForm(props) {
94
84
  return /*#__PURE__*/_react.default.createElement(RenderForm, props);
95
85
  },
96
- onActivate: function onActivate(_ref3) {
97
- var canvas = _ref3.canvas;
86
+ onActivate: function onActivate(_ref2) {
87
+ var canvas = _ref2.canvas;
98
88
  /**
99
89
  * We can safely cast canvas.current as HTMLCanvasElement
100
90
  */
@@ -110,8 +100,8 @@ var tool = {
110
100
  cancel: function cancel() {
111
101
  return cropper && cropper.destroy();
112
102
  },
113
- apply: function apply(_ref4) {
114
- var canvas = _ref4.canvas;
103
+ apply: function apply(_ref3) {
104
+ var canvas = _ref3.canvas;
115
105
  return new Promise(function (resolve) {
116
106
  if (!cropper) {
117
107
  resolve();