@codacy/ui-components 0.61.6 → 0.61.8

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.
@@ -4,9 +4,9 @@ import { IconFile, IconProps } from '../Icon/Icon.types';
4
4
  import { ContainerComponentProps } from '../types';
5
5
  export declare type ButtonSize = 'sm' | 'md';
6
6
  export declare type ButtonType = 'default' | 'primary' | 'link' | 'flat' | 'primaryFlat';
7
- export declare type ButtonColorScheme = 'primary' | 'danger' | 'subtle';
7
+ export declare type ButtonColorScheme = 'primary' | 'success' | 'danger' | 'subtle';
8
8
  /** @deprecated Use color prop instead */
9
- export declare type DeprecatedButtonType = 'danger' | 'subtle';
9
+ export declare type DeprecatedButtonType = 'danger' | 'success' | 'subtle';
10
10
  export interface ButtonProps extends ContainerComponentProps, SpaceProps {
11
11
  /** Disables the button, disallowing interaction */
12
12
  disabled?: boolean;
@@ -1,9 +1,16 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
- import React, { useMemo } from 'react';
3
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
+ import _styled from "@emotion/styled-base";
5
+ import React, { useEffect, useMemo } from 'react';
6
+ import { css } from '@emotion/core';
7
+ import { Box } from '../Flexbox';
8
+ import { hash } from '../utils/hash';
3
9
  import { StyledToastContainer } from './styles';
4
10
  import { ErrorIcon, WarningIcon, InfoIcon, SuccessIcon } from '../Icons';
5
11
  import { toast as launchToast, ToastContainer as ToastifyContainer } from 'react-toastify';
6
12
  import { Subheader, Paragraph } from '../Typography';
13
+ import { reactNodeToText } from '../utils/reactNodeToText';
7
14
  var DEFAULT_TOAST_TYPE = 'success';
8
15
  var TypeIcons = {
9
16
  "default": /*#__PURE__*/React.createElement(SuccessIcon, null),
@@ -13,11 +20,23 @@ var TypeIcons = {
13
20
  warning: /*#__PURE__*/React.createElement(WarningIcon, null)
14
21
  };
15
22
 
16
- var ToastContentWrapper = function ToastContentWrapper(_ref) {
17
- var content = _ref.content;
23
+ var StyledToastContent = /*#__PURE__*/_styled(Box, {
24
+ target: "emj4p720"
25
+ })(function (_ref) {
26
+ var instances = _ref.instances,
27
+ theme = _ref.theme;
28
+ return instances > 1 ? /*#__PURE__*/css(":after{content:\"", instances, "\";display:flex;position:absolute;justify-content:center;align-items:center;top:0.25rem;right:1.75rem;background:", theme.colors['background-secondary'], ";color:", theme.colors['text-complementary'], ";font-size:", theme.fontSizes[1], ";width:1.5rem;height:1.5rem;border-radius:50%;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Ub2FzdC9Ub2FzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUJTIiwiZmlsZSI6Ii4uLy4uL3NyYy9Ub2FzdC9Ub2FzdC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnXG5pbXBvcnQgeyBDb2RhY3lUaGVtZSB9IGZyb20gJy4uL3RoZW1lJ1xuaW1wb3J0IHsgQm94IH0gZnJvbSAnLi4vRmxleGJveCdcbmltcG9ydCB7IGhhc2ggfSBmcm9tICcuLi91dGlscy9oYXNoJ1xuaW1wb3J0IHsgU3R5bGVkVG9hc3RDb250YWluZXIgfSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IEVycm9ySWNvbiwgV2FybmluZ0ljb24sIEluZm9JY29uLCBTdWNjZXNzSWNvbiB9IGZyb20gJy4uL0ljb25zJ1xuaW1wb3J0IHsgVG9hc3RDb250ZW50LCBUb2FzdENvbmZpZywgVG9hc3RUeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IHRvYXN0IGFzIGxhdW5jaFRvYXN0LCBUb2FzdENvbnRhaW5lciBhcyBUb2FzdGlmeUNvbnRhaW5lciB9IGZyb20gJ3JlYWN0LXRvYXN0aWZ5J1xuaW1wb3J0IHsgU3ViaGVhZGVyLCBQYXJhZ3JhcGggfSBmcm9tICcuLi9UeXBvZ3JhcGh5J1xuaW1wb3J0IHsgcmVhY3ROb2RlVG9UZXh0IH0gZnJvbSAnLi4vdXRpbHMvcmVhY3ROb2RlVG9UZXh0J1xuXG5jb25zdCBERUZBVUxUX1RPQVNUX1RZUEUgPSAnc3VjY2VzcydcblxuY29uc3QgVHlwZUljb25zOiB7IFtrIGluIFRvYXN0VHlwZV06IFJlYWN0LlJlYWN0Tm9kZSB9ID0ge1xuICBkZWZhdWx0OiA8U3VjY2Vzc0ljb24gLz4sXG4gIHN1Y2Nlc3M6IDxTdWNjZXNzSWNvbiAvPixcbiAgZXJyb3I6IDxFcnJvckljb24gLz4sXG4gIGluZm86IDxJbmZvSWNvbiAvPixcbiAgd2FybmluZzogPFdhcm5pbmdJY29uIC8+LFxufVxuXG5jb25zdCBTdHlsZWRUb2FzdENvbnRlbnQgPSBzdHlsZWQoQm94KTx7IGluc3RhbmNlczogbnVtYmVyIH0sIENvZGFjeVRoZW1lPigoeyBpbnN0YW5jZXMsIHRoZW1lIH0pID0+XG4gIGluc3RhbmNlcyA+IDFcbiAgICA/IGNzc2BcbiAgICAgICAgOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIiR7aW5zdGFuY2VzfVwiO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgdG9wOiAwLjI1cmVtO1xuICAgICAgICAgIHJpZ2h0OiAxLjc1cmVtO1xuICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuY29sb3JzWydiYWNrZ3JvdW5kLXNlY29uZGFyeSddfTtcbiAgICAgICAgICBjb2xvcjogJHt0aGVtZS5jb2xvcnNbJ3RleHQtY29tcGxlbWVudGFyeSddfTtcbiAgICAgICAgICBmb250LXNpemU6ICR7dGhlbWUuZm9udFNpemVzWzFdfTtcbiAgICAgICAgICB3aWR0aDogMS41cmVtO1xuICAgICAgICAgIGhlaWdodDogMS41cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgfVxuICAgICAgYFxuICAgIDogJydcbilcblxuY29uc3QgVG9hc3RDb250ZW50V3JhcHBlcjogUmVhY3QuRkM8eyBjb250ZW50OiBUb2FzdENvbnRlbnQ7IGluc3RhbmNlcz86IG51bWJlciB9PiA9ICh7IGNvbnRlbnQsIGluc3RhbmNlcyA9IDEgfSkgPT4ge1xuICBpZiAoISFjb250ZW50ICYmIHR5cGVvZiBjb250ZW50ID09PSAnb2JqZWN0JyAmJiAnZGVzY3JpcHRpb24nIGluIGNvbnRlbnQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZFRvYXN0Q29udGVudCBpbnN0YW5jZXM9e2luc3RhbmNlc30+XG4gICAgICAgIHtjb250ZW50LnRpdGxlICYmIChcbiAgICAgICAgICA8U3ViaGVhZGVyIHNpemU9XCJsZ1wiIG1iPXsyfT5cbiAgICAgICAgICAgIHtjb250ZW50LnRpdGxlfVxuICAgICAgICAgIDwvU3ViaGVhZGVyPlxuICAgICAgICApfVxuICAgICAgICA8UGFyYWdyYXBoIGNvbG9yPVwic2Vjb25kYXJ5XCIgYXM9XCJkaXZcIj5cbiAgICAgICAgICB7Y29udGVudC5kZXNjcmlwdGlvbn1cbiAgICAgICAgPC9QYXJhZ3JhcGg+XG4gICAgICA8L1N0eWxlZFRvYXN0Q29udGVudD5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRUb2FzdENvbnRlbnQgaW5zdGFuY2VzPXtpbnN0YW5jZXN9PlxuICAgICAgPFBhcmFncmFwaCBjb2xvcj1cInNlY29uZGFyeVwiIGFzPVwiZGl2XCI+XG4gICAgICAgIHtjb250ZW50fVxuICAgICAgPC9QYXJhZ3JhcGg+XG4gICAgPC9TdHlsZWRUb2FzdENvbnRlbnQ+XG4gIClcbn1cblxuY29uc3QgdXNlVG9hc3QgPSAoZGVmYXVsdE9wdGlvbnM/OiBUb2FzdENvbmZpZykgPT4ge1xuICBjb25zdCBbYWN0aXZlVG9hc3RzLCBzZXRBY3RpdmVUb2FzdHNdID0gUmVhY3QudXNlU3RhdGU8UmVjb3JkPHN0cmluZywgbnVtYmVyPj4oe30pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IGxhdW5jaFRvYXN0Lm9uQ2hhbmdlKHBheWxvYWQgPT4ge1xuICAgICAgaWYgKHBheWxvYWQuc3RhdHVzID09PSAncmVtb3ZlZCcpIHtcbiAgICAgICAgc2V0QWN0aXZlVG9hc3RzKHByZXYgPT4gKHsgLi4ucHJldiwgW3BheWxvYWQuaWRdOiAwIH0pKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gKCkgPT4gdW5zdWJzY3JpYmUoKVxuICB9LCBbYWN0aXZlVG9hc3RzXSlcblxuICBjb25zdCBzaG93VG9hc3RGbiA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKGNvbnRlbnQ6IFRvYXN0Q29udGVudCwgb3B0aW9ucz86IFRvYXN0Q29uZmlnKSA9PiB7XG4gICAgICBjb25zdCBvcHMgPSB7XG4gICAgICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgfVxuXG4gICAgICBjb25zdCBpbm5lclRleHRIYXNoID0gaGFzaChnZXRJbm5lclRvYXN0VGV4dChjb250ZW50KSlcblxuICAgICAgaWYgKCFsYXVuY2hUb2FzdC5pc0FjdGl2ZShpbm5lclRleHRIYXNoKSkge1xuICAgICAgICBsYXVuY2hUb2FzdCg8VG9hc3RDb250ZW50V3JhcHBlciBjb250ZW50PXtjb250ZW50fSAvPiwge1xuICAgICAgICAgIC4uLm9wcyxcbiAgICAgICAgICBpY29uOiBUeXBlSWNvbnNbb3BzPy50eXBlIHx8IERFRkFVTFRfVE9BU1RfVFlQRV0sXG4gICAgICAgICAgYXV0b0Nsb3NlOiBvcHM/LmR1cmF0aW9uID09PSBudWxsID8gZmFsc2UgOiBvcHM/LmR1cmF0aW9uLFxuICAgICAgICAgIHRvYXN0SWQ6IGlubmVyVGV4dEhhc2gsXG4gICAgICAgIH0pXG5cbiAgICAgICAgc2V0QWN0aXZlVG9hc3RzKHByZXYgPT4gKHsgLi4ucHJldiwgW2lubmVyVGV4dEhhc2hdOiAxIH0pKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0QWN0aXZlVG9hc3RzKHByZXYgPT4ge1xuICAgICAgICAgIGxhdW5jaFRvYXN0LnVwZGF0ZShpbm5lclRleHRIYXNoLCB7XG4gICAgICAgICAgICByZW5kZXI6IDxUb2FzdENvbnRlbnRXcmFwcGVyIGNvbnRlbnQ9e2NvbnRlbnR9IGluc3RhbmNlcz17cHJldltpbm5lclRleHRIYXNoXSArIDF9IC8+LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXR1cm4geyAuLi5wcmV2LCBbaW5uZXJUZXh0SGFzaF06IHByZXZbaW5uZXJUZXh0SGFzaF0gKyAxIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtkZWZhdWx0T3B0aW9uc11cbiAgKVxuXG4gIHJldHVybiBzaG93VG9hc3RGblxufVxuXG5jb25zdCBnZXRJbm5lclRvYXN0VGV4dCA9IChjb250ZW50OiBUb2FzdENvbnRlbnQpID0+IHtcbiAgaWYgKCFjb250ZW50KSByZXR1cm4gJydcblxuICBzd2l0Y2ggKHR5cGVvZiBjb250ZW50KSB7XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiBjb250ZW50XG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIGlmICgndGl0bGUnIGluIGNvbnRlbnQgfHwgJ2Rlc2NyaXB0aW9uJyBpbiBjb250ZW50KSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29udGVudC5kZXNjcmlwdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICByZXR1cm4gYCR7Y29udGVudC50aXRsZSB8fCAnJ30gJHtyZWFjdE5vZGVUb1RleHQoY29udGVudC5kZXNjcmlwdGlvbil9YFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBgJHtjb250ZW50LnRpdGxlIHx8ICcnfSAke2NvbnRlbnQuZGVzY3JpcHRpb259YFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFjdE5vZGVUb1RleHQoY29udGVudCBhcyBSZWFjdC5SZWFjdE5vZGUpXG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICcnXG4gIH1cbn1cblxuY29uc3QgVG9hc3RDb250YWluZXIgPSAoKSA9PiAoXG4gIDxTdHlsZWRUb2FzdENvbnRhaW5lcj5cbiAgICA8VG9hc3RpZnlDb250YWluZXIgcG9zaXRpb249XCJib3R0b20tcmlnaHRcIiBhdXRvQ2xvc2U9ezMwMDB9IGhpZGVQcm9ncmVzc0JhciBuZXdlc3RPblRvcCBwYXVzZU9uSG92ZXIgLz5cbiAgPC9TdHlsZWRUb2FzdENvbnRhaW5lcj5cbilcblxuZXhwb3J0IHsgdXNlVG9hc3QsIFRvYXN0Q29udGFpbmVyIH1cbiJdfQ== */")) : '';
29
+ }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Ub2FzdC9Ub2FzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUIyQiIsImZpbGUiOiIuLi8uLi9zcmMvVG9hc3QvVG9hc3QudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9jb3JlJ1xuaW1wb3J0IHsgQ29kYWN5VGhlbWUgfSBmcm9tICcuLi90aGVtZSdcbmltcG9ydCB7IEJveCB9IGZyb20gJy4uL0ZsZXhib3gnXG5pbXBvcnQgeyBoYXNoIH0gZnJvbSAnLi4vdXRpbHMvaGFzaCdcbmltcG9ydCB7IFN0eWxlZFRvYXN0Q29udGFpbmVyIH0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyBFcnJvckljb24sIFdhcm5pbmdJY29uLCBJbmZvSWNvbiwgU3VjY2Vzc0ljb24gfSBmcm9tICcuLi9JY29ucydcbmltcG9ydCB7IFRvYXN0Q29udGVudCwgVG9hc3RDb25maWcsIFRvYXN0VHlwZSB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyB0b2FzdCBhcyBsYXVuY2hUb2FzdCwgVG9hc3RDb250YWluZXIgYXMgVG9hc3RpZnlDb250YWluZXIgfSBmcm9tICdyZWFjdC10b2FzdGlmeSdcbmltcG9ydCB7IFN1YmhlYWRlciwgUGFyYWdyYXBoIH0gZnJvbSAnLi4vVHlwb2dyYXBoeSdcbmltcG9ydCB7IHJlYWN0Tm9kZVRvVGV4dCB9IGZyb20gJy4uL3V0aWxzL3JlYWN0Tm9kZVRvVGV4dCdcblxuY29uc3QgREVGQVVMVF9UT0FTVF9UWVBFID0gJ3N1Y2Nlc3MnXG5cbmNvbnN0IFR5cGVJY29uczogeyBbayBpbiBUb2FzdFR5cGVdOiBSZWFjdC5SZWFjdE5vZGUgfSA9IHtcbiAgZGVmYXVsdDogPFN1Y2Nlc3NJY29uIC8+LFxuICBzdWNjZXNzOiA8U3VjY2Vzc0ljb24gLz4sXG4gIGVycm9yOiA8RXJyb3JJY29uIC8+LFxuICBpbmZvOiA8SW5mb0ljb24gLz4sXG4gIHdhcm5pbmc6IDxXYXJuaW5nSWNvbiAvPixcbn1cblxuY29uc3QgU3R5bGVkVG9hc3RDb250ZW50ID0gc3R5bGVkKEJveCk8eyBpbnN0YW5jZXM6IG51bWJlciB9LCBDb2RhY3lUaGVtZT4oKHsgaW5zdGFuY2VzLCB0aGVtZSB9KSA9PlxuICBpbnN0YW5jZXMgPiAxXG4gICAgPyBjc3NgXG4gICAgICAgIDphZnRlciB7XG4gICAgICAgICAgY29udGVudDogXCIke2luc3RhbmNlc31cIjtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIHRvcDogMC4yNXJlbTtcbiAgICAgICAgICByaWdodDogMS43NXJlbTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmNvbG9yc1snYmFja2dyb3VuZC1zZWNvbmRhcnknXX07XG4gICAgICAgICAgY29sb3I6ICR7dGhlbWUuY29sb3JzWyd0ZXh0LWNvbXBsZW1lbnRhcnknXX07XG4gICAgICAgICAgZm9udC1zaXplOiAke3RoZW1lLmZvbnRTaXplc1sxXX07XG4gICAgICAgICAgd2lkdGg6IDEuNXJlbTtcbiAgICAgICAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIH1cbiAgICAgIGBcbiAgICA6ICcnXG4pXG5cbmNvbnN0IFRvYXN0Q29udGVudFdyYXBwZXI6IFJlYWN0LkZDPHsgY29udGVudDogVG9hc3RDb250ZW50OyBpbnN0YW5jZXM/OiBudW1iZXIgfT4gPSAoeyBjb250ZW50LCBpbnN0YW5jZXMgPSAxIH0pID0+IHtcbiAgaWYgKCEhY29udGVudCAmJiB0eXBlb2YgY29udGVudCA9PT0gJ29iamVjdCcgJiYgJ2Rlc2NyaXB0aW9uJyBpbiBjb250ZW50KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRUb2FzdENvbnRlbnQgaW5zdGFuY2VzPXtpbnN0YW5jZXN9PlxuICAgICAgICB7Y29udGVudC50aXRsZSAmJiAoXG4gICAgICAgICAgPFN1YmhlYWRlciBzaXplPVwibGdcIiBtYj17Mn0+XG4gICAgICAgICAgICB7Y29udGVudC50aXRsZX1cbiAgICAgICAgICA8L1N1YmhlYWRlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFBhcmFncmFwaCBjb2xvcj1cInNlY29uZGFyeVwiIGFzPVwiZGl2XCI+XG4gICAgICAgICAge2NvbnRlbnQuZGVzY3JpcHRpb259XG4gICAgICAgIDwvUGFyYWdyYXBoPlxuICAgICAgPC9TdHlsZWRUb2FzdENvbnRlbnQ+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkVG9hc3RDb250ZW50IGluc3RhbmNlcz17aW5zdGFuY2VzfT5cbiAgICAgIDxQYXJhZ3JhcGggY29sb3I9XCJzZWNvbmRhcnlcIiBhcz1cImRpdlwiPlxuICAgICAgICB7Y29udGVudH1cbiAgICAgIDwvUGFyYWdyYXBoPlxuICAgIDwvU3R5bGVkVG9hc3RDb250ZW50PlxuICApXG59XG5cbmNvbnN0IHVzZVRvYXN0ID0gKGRlZmF1bHRPcHRpb25zPzogVG9hc3RDb25maWcpID0+IHtcbiAgY29uc3QgW2FjdGl2ZVRvYXN0cywgc2V0QWN0aXZlVG9hc3RzXSA9IFJlYWN0LnVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIG51bWJlcj4+KHt9KVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBsYXVuY2hUb2FzdC5vbkNoYW5nZShwYXlsb2FkID0+IHtcbiAgICAgIGlmIChwYXlsb2FkLnN0YXR1cyA9PT0gJ3JlbW92ZWQnKSB7XG4gICAgICAgIHNldEFjdGl2ZVRvYXN0cyhwcmV2ID0+ICh7IC4uLnByZXYsIFtwYXlsb2FkLmlkXTogMCB9KSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuICgpID0+IHVuc3Vic2NyaWJlKClcbiAgfSwgW2FjdGl2ZVRvYXN0c10pXG5cbiAgY29uc3Qgc2hvd1RvYXN0Rm4gPSB1c2VNZW1vKFxuICAgICgpID0+IChjb250ZW50OiBUb2FzdENvbnRlbnQsIG9wdGlvbnM/OiBUb2FzdENvbmZpZykgPT4ge1xuICAgICAgY29uc3Qgb3BzID0ge1xuICAgICAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIH1cblxuICAgICAgY29uc3QgaW5uZXJUZXh0SGFzaCA9IGhhc2goZ2V0SW5uZXJUb2FzdFRleHQoY29udGVudCkpXG5cbiAgICAgIGlmICghbGF1bmNoVG9hc3QuaXNBY3RpdmUoaW5uZXJUZXh0SGFzaCkpIHtcbiAgICAgICAgbGF1bmNoVG9hc3QoPFRvYXN0Q29udGVudFdyYXBwZXIgY29udGVudD17Y29udGVudH0gLz4sIHtcbiAgICAgICAgICAuLi5vcHMsXG4gICAgICAgICAgaWNvbjogVHlwZUljb25zW29wcz8udHlwZSB8fCBERUZBVUxUX1RPQVNUX1RZUEVdLFxuICAgICAgICAgIGF1dG9DbG9zZTogb3BzPy5kdXJhdGlvbiA9PT0gbnVsbCA/IGZhbHNlIDogb3BzPy5kdXJhdGlvbixcbiAgICAgICAgICB0b2FzdElkOiBpbm5lclRleHRIYXNoLFxuICAgICAgICB9KVxuXG4gICAgICAgIHNldEFjdGl2ZVRvYXN0cyhwcmV2ID0+ICh7IC4uLnByZXYsIFtpbm5lclRleHRIYXNoXTogMSB9KSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEFjdGl2ZVRvYXN0cyhwcmV2ID0+IHtcbiAgICAgICAgICBsYXVuY2hUb2FzdC51cGRhdGUoaW5uZXJUZXh0SGFzaCwge1xuICAgICAgICAgICAgcmVuZGVyOiA8VG9hc3RDb250ZW50V3JhcHBlciBjb250ZW50PXtjb250ZW50fSBpbnN0YW5jZXM9e3ByZXZbaW5uZXJUZXh0SGFzaF0gKyAxfSAvPixcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmV0dXJuIHsgLi4ucHJldiwgW2lubmVyVGV4dEhhc2hdOiBwcmV2W2lubmVyVGV4dEhhc2hdICsgMSB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbZGVmYXVsdE9wdGlvbnNdXG4gIClcblxuICByZXR1cm4gc2hvd1RvYXN0Rm5cbn1cblxuY29uc3QgZ2V0SW5uZXJUb2FzdFRleHQgPSAoY29udGVudDogVG9hc3RDb250ZW50KSA9PiB7XG4gIGlmICghY29udGVudCkgcmV0dXJuICcnXG5cbiAgc3dpdGNoICh0eXBlb2YgY29udGVudCkge1xuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICByZXR1cm4gY29udGVudFxuICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICBpZiAoJ3RpdGxlJyBpbiBjb250ZW50IHx8ICdkZXNjcmlwdGlvbicgaW4gY29udGVudCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQuZGVzY3JpcHRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgcmV0dXJuIGAke2NvbnRlbnQudGl0bGUgfHwgJyd9ICR7cmVhY3ROb2RlVG9UZXh0KGNvbnRlbnQuZGVzY3JpcHRpb24pfWBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYCR7Y29udGVudC50aXRsZSB8fCAnJ30gJHtjb250ZW50LmRlc2NyaXB0aW9ufWBcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVhY3ROb2RlVG9UZXh0KGNvbnRlbnQgYXMgUmVhY3QuUmVhY3ROb2RlKVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnJ1xuICB9XG59XG5cbmNvbnN0IFRvYXN0Q29udGFpbmVyID0gKCkgPT4gKFxuICA8U3R5bGVkVG9hc3RDb250YWluZXI+XG4gICAgPFRvYXN0aWZ5Q29udGFpbmVyIHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgYXV0b0Nsb3NlPXszMDAwfSBoaWRlUHJvZ3Jlc3NCYXIgbmV3ZXN0T25Ub3AgcGF1c2VPbkhvdmVyIC8+XG4gIDwvU3R5bGVkVG9hc3RDb250YWluZXI+XG4pXG5cbmV4cG9ydCB7IHVzZVRvYXN0LCBUb2FzdENvbnRhaW5lciB9XG4iXX0= */");
18
30
 
19
- if (typeof content === 'object' && 'description' in content) {
20
- return /*#__PURE__*/React.createElement(React.Fragment, null, content.title && /*#__PURE__*/React.createElement(Subheader, {
31
+ var ToastContentWrapper = function ToastContentWrapper(_ref2) {
32
+ var content = _ref2.content,
33
+ _ref2$instances = _ref2.instances,
34
+ instances = _ref2$instances === void 0 ? 1 : _ref2$instances;
35
+
36
+ if (!!content && typeof content === 'object' && 'description' in content) {
37
+ return /*#__PURE__*/React.createElement(StyledToastContent, {
38
+ instances: instances
39
+ }, content.title && /*#__PURE__*/React.createElement(Subheader, {
21
40
  size: "lg",
22
41
  mb: 2
23
42
  }, content.title), /*#__PURE__*/React.createElement(Paragraph, {
@@ -26,28 +45,88 @@ var ToastContentWrapper = function ToastContentWrapper(_ref) {
26
45
  }, content.description));
27
46
  }
28
47
 
29
- return /*#__PURE__*/React.createElement(Paragraph, {
48
+ return /*#__PURE__*/React.createElement(StyledToastContent, {
49
+ instances: instances
50
+ }, /*#__PURE__*/React.createElement(Paragraph, {
30
51
  color: "secondary",
31
52
  as: "div"
32
- }, content);
53
+ }, content));
33
54
  };
34
55
 
35
56
  var useToast = function useToast(defaultOptions) {
57
+ var _React$useState = React.useState({}),
58
+ _React$useState2 = _slicedToArray(_React$useState, 2),
59
+ activeToasts = _React$useState2[0],
60
+ setActiveToasts = _React$useState2[1];
61
+
62
+ useEffect(function () {
63
+ var unsubscribe = launchToast.onChange(function (payload) {
64
+ if (payload.status === 'removed') {
65
+ setActiveToasts(function (prev) {
66
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, payload.id, 0));
67
+ });
68
+ }
69
+ });
70
+ return function () {
71
+ return unsubscribe();
72
+ };
73
+ }, [activeToasts]);
36
74
  var showToastFn = useMemo(function () {
37
75
  return function (content, options) {
38
76
  var ops = _objectSpread(_objectSpread({}, defaultOptions), options);
39
77
 
40
- launchToast( /*#__PURE__*/React.createElement(ToastContentWrapper, {
41
- content: content
42
- }), _objectSpread(_objectSpread({}, ops), {}, {
43
- icon: TypeIcons[(ops === null || ops === void 0 ? void 0 : ops.type) || DEFAULT_TOAST_TYPE],
44
- autoClose: (ops === null || ops === void 0 ? void 0 : ops.duration) === null ? false : ops === null || ops === void 0 ? void 0 : ops.duration
45
- }));
78
+ var innerTextHash = hash(getInnerToastText(content));
79
+
80
+ if (!launchToast.isActive(innerTextHash)) {
81
+ launchToast( /*#__PURE__*/React.createElement(ToastContentWrapper, {
82
+ content: content
83
+ }), _objectSpread(_objectSpread({}, ops), {}, {
84
+ icon: TypeIcons[(ops === null || ops === void 0 ? void 0 : ops.type) || DEFAULT_TOAST_TYPE],
85
+ autoClose: (ops === null || ops === void 0 ? void 0 : ops.duration) === null ? false : ops === null || ops === void 0 ? void 0 : ops.duration,
86
+ toastId: innerTextHash
87
+ }));
88
+ setActiveToasts(function (prev) {
89
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, innerTextHash, 1));
90
+ });
91
+ } else {
92
+ setActiveToasts(function (prev) {
93
+ launchToast.update(innerTextHash, {
94
+ render: /*#__PURE__*/React.createElement(ToastContentWrapper, {
95
+ content: content,
96
+ instances: prev[innerTextHash] + 1
97
+ })
98
+ });
99
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, innerTextHash, prev[innerTextHash] + 1));
100
+ });
101
+ }
46
102
  };
47
103
  }, [defaultOptions]);
48
104
  return showToastFn;
49
105
  };
50
106
 
107
+ var getInnerToastText = function getInnerToastText(content) {
108
+ if (!content) return '';
109
+
110
+ switch (typeof content) {
111
+ case 'string':
112
+ return content;
113
+
114
+ case 'object':
115
+ if ('title' in content || 'description' in content) {
116
+ if (typeof content.description === 'object') {
117
+ return "".concat(content.title || '', " ").concat(reactNodeToText(content.description));
118
+ } else {
119
+ return "".concat(content.title || '', " ").concat(content.description);
120
+ }
121
+ }
122
+
123
+ return reactNodeToText(content);
124
+
125
+ default:
126
+ return '';
127
+ }
128
+ };
129
+
51
130
  var ToastContainer = function ToastContainer() {
52
131
  return /*#__PURE__*/React.createElement(StyledToastContainer, null, /*#__PURE__*/React.createElement(ToastifyContainer, {
53
132
  position: "bottom-right",
@@ -1,8 +1,8 @@
1
1
  /// <reference types="react" />
2
2
  import { ToastOptions } from 'react-toastify';
3
- export declare type ToastContent = React.ReactChild | {
3
+ export declare type ToastContent = string | React.ReactNode | {
4
4
  title?: string;
5
- description: React.ReactChild;
5
+ description: React.ReactNode;
6
6
  };
7
7
  export interface ToastConfig extends Pick<ToastOptions, 'onClose' | 'onOpen' | 'toastId' | 'type' | 'closeOnClick'> {
8
8
  duration?: number | null;
@@ -0,0 +1 @@
1
+ export declare const hash: (s: string) => number;
@@ -0,0 +1,9 @@
1
+ export var hash = function hash(s) {
2
+ var h = 9;
3
+
4
+ for (var i = 0; i < s.length;) {
5
+ h = Math.imul(h ^ s.charCodeAt(i++), Math.pow(9, 9));
6
+ }
7
+
8
+ return h ^ h >>> 9;
9
+ };
@@ -0,0 +1,2 @@
1
+ import { ReactNode } from 'react';
2
+ export declare const reactNodeToText: (children: ReactNode | ReactNode[]) => string;
@@ -0,0 +1,38 @@
1
+ // From https://github.com/fernandopasik/react-children-utilities
2
+ import { Children, isValidElement } from 'react';
3
+
4
+ var hasChildren = function hasChildren(element) {
5
+ return isValidElement(element) && Boolean(element.props.children);
6
+ };
7
+
8
+ var childToString = function childToString(child) {
9
+ if (typeof child === 'undefined' || child === null || typeof child === 'boolean') {
10
+ return '';
11
+ }
12
+
13
+ if (JSON.stringify(child) === '{}') {
14
+ return '';
15
+ }
16
+
17
+ return child.toString();
18
+ };
19
+
20
+ export var reactNodeToText = function reactNodeToText(children) {
21
+ if (!(children instanceof Array) && !isValidElement(children)) {
22
+ return childToString(children);
23
+ }
24
+
25
+ return Children.toArray(children).reduce(function (text, child) {
26
+ var newText = '';
27
+
28
+ if (isValidElement(child) && hasChildren(child)) {
29
+ newText = reactNodeToText(child.props.children);
30
+ } else if (isValidElement(child) && !hasChildren(child)) {
31
+ newText = '';
32
+ } else {
33
+ newText = childToString(child);
34
+ }
35
+
36
+ return text.concat(newText);
37
+ }, '');
38
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codacy/ui-components",
3
- "version": "0.61.6",
3
+ "version": "0.61.8",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "author": "",
@@ -94,7 +94,7 @@
94
94
  "react": "^18.2.0",
95
95
  "react-docgen-typescript-loader": "^3.7.2",
96
96
  "react-dom": "^18.2.0",
97
- "react-toastify": "^8.0.2",
97
+ "react-toastify": "9.0.3",
98
98
  "reakit": "^1.3.11",
99
99
  "rimraf": "^3.0.2",
100
100
  "styled-system": "^5.1.5",
@@ -108,9 +108,9 @@
108
108
  "@popperjs/core": "^2.5.4",
109
109
  "lodash": "^4.17.20",
110
110
  "numeral": "^2.0.6",
111
- "react": "=>17.0.2",
112
- "react-dom": "=>17.0.2",
113
- "react-toastify": "^8.0.2",
111
+ "react": "^17.0.2",
112
+ "react-dom": "^17.0.2",
113
+ "react-toastify": "9.0.3",
114
114
  "reakit": "^1.3.11",
115
115
  "styled-system": "^5.1.5",
116
116
  "typeface-clear-sans": "0.0.44"
@@ -132,5 +132,6 @@
132
132
  "*.md": [
133
133
  "prettier --write"
134
134
  ]
135
- }
135
+ },
136
+ "packageManager": "yarn@1.22.19"
136
137
  }