@channel.io/bezier-react 2.2.4 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/cjs/components/FeatureProvider/SmoothCornersFeature/SmoothCornersFeature.js +2 -2
  2. package/dist/cjs/components/FeatureProvider/SmoothCornersFeature/SmoothCornersFeature.js.map +1 -1
  3. package/dist/cjs/components/Toast/Toast.js +4 -3
  4. package/dist/cjs/components/Toast/Toast.js.map +1 -1
  5. package/dist/cjs/styles.css +1 -1
  6. package/dist/esm/components/FeatureProvider/SmoothCornersFeature/SmoothCornersFeature.mjs +2 -2
  7. package/dist/esm/components/FeatureProvider/SmoothCornersFeature/SmoothCornersFeature.mjs.map +1 -1
  8. package/dist/esm/components/Toast/Toast.mjs +4 -3
  9. package/dist/esm/components/Toast/Toast.mjs.map +1 -1
  10. package/dist/esm/styles.css +1 -1
  11. package/dist/types/components/Toast/Toast.d.ts +1 -1
  12. package/dist/types/components/Toast/Toast.d.ts.map +1 -1
  13. package/dist/types/components/Toast/Toast.types.d.ts +8 -0
  14. package/dist/types/components/Toast/Toast.types.d.ts.map +1 -1
  15. package/package.json +3 -3
  16. package/src/components/AlphaButton/Button.module.scss +3 -0
  17. package/src/components/AlphaFloatingButton/FloatingButton.module.scss +2 -0
  18. package/src/components/AlphaFloatingIconButton/FloatingIconButton.module.scss +2 -0
  19. package/src/components/AlphaIconButton/IconButton.module.scss +3 -0
  20. package/src/components/Banner/Banner.stories.tsx +2 -2
  21. package/src/components/Button/Button.module.scss +8 -0
  22. package/src/components/Icon/Icon.stories.tsx +1 -2
  23. package/src/components/Toast/Toast.tsx +7 -3
  24. package/src/components/Toast/Toast.types.ts +8 -0
  25. package/src/stories/alpha-color.mdx +64 -51
  26. package/src/styles/components/elevation.module.scss +1 -0
  27. package/src/styles/components/radius.module.scss +1 -0
  28. package/src/styles/components/z-index.module.scss +1 -0
@@ -22,9 +22,9 @@ var smoothCornersScript = require('./smoothCornersScript.js');
22
22
  * When enabled, the feature will be applied to components with the `smoothCorners` property set to `true`.
23
23
  */
24
24
  class SmoothCornersFeature {
25
- name = FeatureProvider_types.FeatureType.SmoothCorners;
25
+ name = (() => FeatureProvider_types.FeatureType.SmoothCorners)();
26
26
  globalObject = null;
27
- activated = new WeakMap([[globalThis, false]]);
27
+ activated = (() => new WeakMap([[globalThis, false]]))();
28
28
  updateCurrentGlobalObject(globalObject) {
29
29
  this.globalObject = globalObject;
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SmoothCornersFeature.js","sources":["../../../../../src/components/FeatureProvider/SmoothCornersFeature/SmoothCornersFeature.ts"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { type Feature, FeatureType } from '../FeatureProvider.types'\n\nimport { smoothCornersScript } from './smoothCornersScript'\n\n/**\n * @see {@link https://fetch.spec.whatwg.org/#requestcredentials}\n */\ntype RequestCredentials = 'omit' | 'same-origin' | 'include'\n\ntype WorkletOptions = {\n credentials: RequestCredentials\n}\n\n/**\n * @see {@link https://html.spec.whatwg.org/multipage/worklets.html#worklets-worklet}\n */\ninterface Worklet {\n addModule: (moduleURL: string, options?: WorkletOptions) => Promise<void>\n}\n\ndeclare global {\n namespace CSS {\n export const paintWorklet: Worklet\n }\n}\n\n/**\n * 🚨 This is an experimental feature! It may not be suitable for use in production.\n *\n * Instead of CSS border-radius, Use *Superellipse* masking using the CSS Houdini API.\n * When enabled, the feature will be applied to components with the `smoothCorners` property set to `true`.\n */\nclass SmoothCornersFeature implements Feature {\n readonly name = FeatureType.SmoothCorners\n\n private globalObject: typeof globalThis | null = null\n\n private activated: WeakMap<typeof globalThis, boolean> = new WeakMap([\n [globalThis, false],\n ])\n\n private updateCurrentGlobalObject(globalObject: typeof globalThis) {\n this.globalObject = globalObject\n }\n\n private isGlobalObjectIdentical(globalObject: typeof globalThis) {\n return Object.is(this.globalObject, globalObject)\n }\n\n private supportCSSPaintWorklet(globalObject: typeof globalThis) {\n return (\n typeof globalObject.CSS !== 'undefined' &&\n 'paintWorklet' in globalObject.CSS\n )\n }\n\n async activate(globalObject: typeof globalThis = globalThis) {\n if (\n !this.isGlobalObjectIdentical(globalObject) &&\n this.supportCSSPaintWorklet(globalObject)\n ) {\n const workletURL = URL.createObjectURL(\n new Blob([smoothCornersScript], { type: 'application/javascript' })\n )\n\n try {\n await globalObject.CSS.paintWorklet.addModule(workletURL)\n this.activated.set(globalObject, true)\n } catch {\n this.activated.set(globalObject, false)\n }\n }\n\n this.updateCurrentGlobalObject(globalObject)\n\n return this.activated.get(globalObject) as boolean\n }\n}\n\nexport default new SmoothCornersFeature()\n"],"names":["SmoothCornersFeature","name","FeatureType","SmoothCorners","globalObject","activated","WeakMap","globalThis","updateCurrentGlobalObject","isGlobalObjectIdentical","Object","is","supportCSSPaintWorklet","CSS","activate","workletURL","URL","createObjectURL","Blob","smoothCornersScript","type","paintWorklet","addModule","set","get"],"mappings":";;;;;;;AAAA;;AAKA;AACA;AACA;;AAOA;AACA;AACA;;AAWA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,oBAAoB,CAAoB;EACnCC,IAAI,GAAGC,iCAAW,CAACC,aAAa,CAAA;AAEjCC,EAAAA,YAAY,GAA6B,IAAI,CAAA;EAE7CC,SAAS,GAAwC,IAAIC,OAAO,CAAC,CACnE,CAACC,UAAU,EAAE,KAAK,CAAC,CACpB,CAAC,CAAA;EAEMC,yBAAyBA,CAACJ,YAA+B,EAAE;IACjE,IAAI,CAACA,YAAY,GAAGA,YAAY,CAAA;AAClC,GAAA;EAEQK,uBAAuBA,CAACL,YAA+B,EAAE;IAC/D,OAAOM,MAAM,CAACC,EAAE,CAAC,IAAI,CAACP,YAAY,EAAEA,YAAY,CAAC,CAAA;AACnD,GAAA;EAEQQ,sBAAsBA,CAACR,YAA+B,EAAE;IAC9D,OACE,OAAOA,YAAY,CAACS,GAAG,KAAK,WAAW,IACvC,cAAc,IAAIT,YAAY,CAACS,GAAG,CAAA;AAEtC,GAAA;AAEA,EAAA,MAAMC,QAAQA,CAACV,YAA+B,GAAGG,UAAU,EAAE;AAC3D,IAAA,IACE,CAAC,IAAI,CAACE,uBAAuB,CAACL,YAAY,CAAC,IAC3C,IAAI,CAACQ,sBAAsB,CAACR,YAAY,CAAC,EACzC;AACA,MAAA,MAAMW,UAAU,GAAGC,GAAG,CAACC,eAAe,CACpC,IAAIC,IAAI,CAAC,CAACC,uCAAmB,CAAC,EAAE;AAAEC,QAAAA,IAAI,EAAE,wBAAA;AAAyB,OAAC,CACpE,CAAC,CAAA;MAED,IAAI;QACF,MAAMhB,YAAY,CAACS,GAAG,CAACQ,YAAY,CAACC,SAAS,CAACP,UAAU,CAAC,CAAA;QACzD,IAAI,CAACV,SAAS,CAACkB,GAAG,CAACnB,YAAY,EAAE,IAAI,CAAC,CAAA;AACxC,OAAC,CAAC,MAAM;QACN,IAAI,CAACC,SAAS,CAACkB,GAAG,CAACnB,YAAY,EAAE,KAAK,CAAC,CAAA;AACzC,OAAA;AACF,KAAA;AAEA,IAAA,IAAI,CAACI,yBAAyB,CAACJ,YAAY,CAAC,CAAA;AAE5C,IAAA,OAAO,IAAI,CAACC,SAAS,CAACmB,GAAG,CAACpB,YAAY,CAAC,CAAA;AACzC,GAAA;AACF,CAAA;AAEA,6BAAe,IAAIJ,oBAAoB,EAAE;;;;"}
1
+ {"version":3,"file":"SmoothCornersFeature.js","sources":["../../../../../src/components/FeatureProvider/SmoothCornersFeature/SmoothCornersFeature.ts"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { type Feature, FeatureType } from '../FeatureProvider.types'\n\nimport { smoothCornersScript } from './smoothCornersScript'\n\n/**\n * @see {@link https://fetch.spec.whatwg.org/#requestcredentials}\n */\ntype RequestCredentials = 'omit' | 'same-origin' | 'include'\n\ntype WorkletOptions = {\n credentials: RequestCredentials\n}\n\n/**\n * @see {@link https://html.spec.whatwg.org/multipage/worklets.html#worklets-worklet}\n */\ninterface Worklet {\n addModule: (moduleURL: string, options?: WorkletOptions) => Promise<void>\n}\n\ndeclare global {\n namespace CSS {\n export const paintWorklet: Worklet\n }\n}\n\n/**\n * 🚨 This is an experimental feature! It may not be suitable for use in production.\n *\n * Instead of CSS border-radius, Use *Superellipse* masking using the CSS Houdini API.\n * When enabled, the feature will be applied to components with the `smoothCorners` property set to `true`.\n */\nclass SmoothCornersFeature implements Feature {\n readonly name = FeatureType.SmoothCorners\n\n private globalObject: typeof globalThis | null = null\n\n private activated: WeakMap<typeof globalThis, boolean> = new WeakMap([\n [globalThis, false],\n ])\n\n private updateCurrentGlobalObject(globalObject: typeof globalThis) {\n this.globalObject = globalObject\n }\n\n private isGlobalObjectIdentical(globalObject: typeof globalThis) {\n return Object.is(this.globalObject, globalObject)\n }\n\n private supportCSSPaintWorklet(globalObject: typeof globalThis) {\n return (\n typeof globalObject.CSS !== 'undefined' &&\n 'paintWorklet' in globalObject.CSS\n )\n }\n\n async activate(globalObject: typeof globalThis = globalThis) {\n if (\n !this.isGlobalObjectIdentical(globalObject) &&\n this.supportCSSPaintWorklet(globalObject)\n ) {\n const workletURL = URL.createObjectURL(\n new Blob([smoothCornersScript], { type: 'application/javascript' })\n )\n\n try {\n await globalObject.CSS.paintWorklet.addModule(workletURL)\n this.activated.set(globalObject, true)\n } catch {\n this.activated.set(globalObject, false)\n }\n }\n\n this.updateCurrentGlobalObject(globalObject)\n\n return this.activated.get(globalObject) as boolean\n }\n}\n\nexport default new SmoothCornersFeature()\n"],"names":["SmoothCornersFeature","name","FeatureType","SmoothCorners","globalObject","activated","WeakMap","globalThis","updateCurrentGlobalObject","isGlobalObjectIdentical","Object","is","supportCSSPaintWorklet","CSS","activate","workletURL","URL","createObjectURL","Blob","smoothCornersScript","type","paintWorklet","addModule","set","get"],"mappings":";;;;;;;AAAA;;AAKA;AACA;AACA;;AAOA;AACA;AACA;;AAWA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,oBAAoB,CAAoB;EACnCC,IAAI,GAAA,CAAA,MAAGC,iCAAW,CAACC,aAAa,GAAA,CAAA;AAEjCC,EAAAA,YAAY,GAA6B,IAAI,CAAA;EAE7CC,SAAS,GAAA,CAAA,MAAwC,IAAIC,OAAO,CAAC,CACnE,CAACC,UAAU,EAAE,KAAK,CAAC,CACpB,CAAC,GAAA,CAAA;EAEMC,yBAAyBA,CAACJ,YAA+B,EAAE;IACjE,IAAI,CAACA,YAAY,GAAGA,YAAY,CAAA;AAClC,GAAA;EAEQK,uBAAuBA,CAACL,YAA+B,EAAE;IAC/D,OAAOM,MAAM,CAACC,EAAE,CAAC,IAAI,CAACP,YAAY,EAAEA,YAAY,CAAC,CAAA;AACnD,GAAA;EAEQQ,sBAAsBA,CAACR,YAA+B,EAAE;IAC9D,OACE,OAAOA,YAAY,CAACS,GAAG,KAAK,WAAW,IACvC,cAAc,IAAIT,YAAY,CAACS,GAAG,CAAA;AAEtC,GAAA;AAEA,EAAA,MAAMC,QAAQA,CAACV,YAA+B,GAAGG,UAAU,EAAE;AAC3D,IAAA,IACE,CAAC,IAAI,CAACE,uBAAuB,CAACL,YAAY,CAAC,IAC3C,IAAI,CAACQ,sBAAsB,CAACR,YAAY,CAAC,EACzC;AACA,MAAA,MAAMW,UAAU,GAAGC,GAAG,CAACC,eAAe,CACpC,IAAIC,IAAI,CAAC,CAACC,uCAAmB,CAAC,EAAE;AAAEC,QAAAA,IAAI,EAAE,wBAAA;AAAyB,OAAC,CACpE,CAAC,CAAA;MAED,IAAI;QACF,MAAMhB,YAAY,CAACS,GAAG,CAACQ,YAAY,CAACC,SAAS,CAACP,UAAU,CAAC,CAAA;QACzD,IAAI,CAACV,SAAS,CAACkB,GAAG,CAACnB,YAAY,EAAE,IAAI,CAAC,CAAA;AACxC,OAAC,CAAC,MAAM;QACN,IAAI,CAACC,SAAS,CAACkB,GAAG,CAACnB,YAAY,EAAE,KAAK,CAAC,CAAA;AACzC,OAAA;AACF,KAAA;AAEA,IAAA,IAAI,CAACI,yBAAyB,CAACJ,YAAY,CAAC,CAAA;AAE5C,IAAA,OAAO,IAAI,CAACC,SAAS,CAACmB,GAAG,CAACpB,YAAY,CAAC,CAAA;AACzC,GAAA;AACF,CAAA;AAEA,6BAAe,IAAIJ,oBAAoB,EAAE;;;;"}
@@ -60,7 +60,7 @@ function Toast({
60
60
  } = WindowProvider.useWindow();
61
61
  const dismissTimer = React.useRef();
62
62
  const [isSlidingOut, setIsSlidingOut] = React.useState(false);
63
- const className = index.default(Toast_module.default.ToastElement, zIndex && propsHelpers.getZIndexClassName(zIndex), placement && Toast_module.default[`placement-${placement}`], isSlidingOut && Toast_module.default['slide-out']);
63
+ const className = index.default(Toast_module.default.ToastElement, propsHelpers.getZIndexClassName(zIndex), placement && Toast_module.default[`placement-${placement}`], isSlidingOut && Toast_module.default['slide-out']);
64
64
  const runSlideOutAnimation = React.useCallback(() => {
65
65
  setIsSlidingOut(true);
66
66
  }, []);
@@ -129,6 +129,7 @@ const DEFAULT_OFFSET = {
129
129
  function ToastProvider({
130
130
  autoDismissTimeout = 3000,
131
131
  container: givenContainer,
132
+ zIndex = 'toast',
132
133
  offset = DEFAULT_OFFSET,
133
134
  children = []
134
135
  }) {
@@ -152,7 +153,7 @@ function ToastProvider({
152
153
  left: style.px(offset?.left ?? DEFAULT_OFFSET.left)
153
154
  })
154
155
  },
155
- className: Toast_module.default.ToastContainer
156
+ className: index.default(Toast_module.default.ToastContainer, propsHelpers.getZIndexClassName(zIndex))
156
157
  }, toasts.map(({
157
158
  id,
158
159
  onDismiss,
@@ -162,7 +163,7 @@ function ToastProvider({
162
163
  placement: placement,
163
164
  autoDismissTimeout: autoDismissTimeout,
164
165
  onDismiss: () => dismiss(id, onDismiss)
165
- }))))), [autoDismissTimeout, dismiss, offset]);
166
+ }))))), [autoDismissTimeout, dismiss, offset, zIndex]);
166
167
  return /*#__PURE__*/React.createElement(ToastContextProvider, {
167
168
  value: toastContextValue
168
169
  }, children, isMounted && /*#__PURE__*/ReactDOM.createPortal([createContainer('bottom-left', leftToasts), createContainer('bottom-right', rightToasts)], container));
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sources":["../../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport {\n CancelIcon,\n CheckCircleFilledIcon,\n ErrorTriangleFilledIcon,\n InfoFilledIcon,\n WifiIcon,\n WifiOffIcon,\n} from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport useIsMounted from '~/src/hooks/useIsMounted'\nimport { getZIndexClassName } from '~/src/types/props-helpers'\nimport { ariaAttr } from '~/src/utils/aria'\nimport { noop } from '~/src/utils/function'\nimport { createContext } from '~/src/utils/react'\nimport { px } from '~/src/utils/style'\nimport { isString } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Icon } from '~/src/components/Icon'\nimport { Text } from '~/src/components/Text'\nimport { InvertedThemeProvider } from '~/src/components/ThemeProvider'\nimport { useRootElement, useWindow } from '~/src/components/WindowProvider'\n\nimport {\n type ToastContextValue,\n type ToastPlacement,\n type ToastPreset,\n type ToastProps,\n type ToastProviderProps,\n type ToastType,\n} from './Toast.types'\nimport useToastProviderValues from './useToastContextValues'\n\nimport styles from './Toast.module.scss'\n\nfunction getToastPreset(preset: ToastPreset) {\n return {\n success: {\n icon: CheckCircleFilledIcon,\n appearance: 'success',\n },\n error: {\n icon: ErrorTriangleFilledIcon,\n appearance: 'error',\n },\n offline: {\n icon: WifiOffIcon,\n appearance: 'warning',\n },\n online: {\n icon: WifiIcon,\n appearance: 'success',\n },\n default: {\n icon: InfoFilledIcon,\n appearance: 'info',\n },\n }[preset]\n}\n\nexport function Toast({\n placement,\n appearance: appearanceProp,\n preset = 'default',\n icon: iconProp,\n content,\n zIndex = 'toast',\n autoDismiss = true,\n autoDismissTimeout,\n version = 0,\n onDismiss,\n}: ToastProps) {\n const { window } = useWindow()\n\n const dismissTimer = useRef<ReturnType<Window['setTimeout']>>()\n\n const [isSlidingOut, setIsSlidingOut] = useState(false)\n\n const className = classNames(\n styles.ToastElement,\n zIndex && getZIndexClassName(zIndex),\n placement && styles[`placement-${placement}`],\n isSlidingOut && styles['slide-out']\n )\n\n const runSlideOutAnimation = useCallback(() => {\n setIsSlidingOut(true)\n }, [])\n\n const handleAnimationEnd = useCallback<React.AnimationEventHandler>(\n (event) => {\n if (\n event.animationName === styles['slide-out-left'] ||\n event.animationName === styles['slide-out-right']\n ) {\n onDismiss?.()\n }\n },\n [onDismiss]\n )\n\n useEffect(\n function startDismissTimer() {\n if (autoDismiss) {\n dismissTimer.current = window.setTimeout(\n runSlideOutAnimation,\n autoDismissTimeout\n )\n }\n\n return function cleanup() {\n if (dismissTimer.current != null) {\n clearTimeout(dismissTimer.current)\n }\n }\n },\n [autoDismiss, autoDismissTimeout, runSlideOutAnimation, window, version]\n )\n\n const { appearance, icon } = getToastPreset(preset)\n\n return (\n <div\n role=\"status\"\n className={className}\n onAnimationEnd={handleAnimationEnd}\n aria-hidden={ariaAttr(isSlidingOut)}\n >\n <div\n className={classNames(\n styles.IconWrapper,\n styles[`appearance-${appearanceProp ?? appearance}`]\n )}\n >\n <Icon\n source={iconProp ?? icon}\n size=\"s\"\n />\n </div>\n\n <div className={styles.Content}>\n <Text\n className={styles.EllipsisableContent}\n typo=\"14\"\n color=\"txt-black-darkest\"\n truncated={5}\n >\n {isString(content)\n ? content.split('\\n').map((str, index) => (\n // eslint-disable-next-line react/no-array-index-key\n <React.Fragment key={index}>\n {index !== 0 && <br />}\n {str}\n </React.Fragment>\n ))\n : content}\n </Text>\n </div>\n\n <BaseButton\n className={styles.Close}\n onClick={runSlideOutAnimation}\n >\n <Icon\n source={CancelIcon}\n size=\"xs\"\n />\n </BaseButton>\n </div>\n )\n}\n\nconst [ToastContextProvider, useToastContext] =\n createContext<ToastContextValue>({\n add: () => '',\n update: () => '',\n remove: noop,\n removeAll: noop,\n leftToasts: [],\n rightToasts: [],\n })\n\nconst DEFAULT_OFFSET = {\n left: 0,\n right: 0,\n bottom: 0,\n}\n\nexport function ToastProvider({\n autoDismissTimeout = 3000,\n container: givenContainer,\n offset = DEFAULT_OFFSET,\n children = [],\n}: ToastProviderProps) {\n const rootElement = useRootElement()\n const isMounted = useIsMounted()\n\n const toastContextValue = useToastProviderValues()\n const { leftToasts, rightToasts, dismiss } = toastContextValue\n const container = givenContainer ?? rootElement\n\n const createContainer = useCallback(\n (placement: ToastPlacement, toasts: ToastType[]) => (\n <InvertedThemeProvider key={placement}>\n <div\n style={{\n bottom: px(offset?.bottom ?? DEFAULT_OFFSET.bottom),\n ...(placement === 'bottom-right'\n ? { right: px(offset?.right ?? DEFAULT_OFFSET.right) }\n : { left: px(offset?.left ?? DEFAULT_OFFSET.left) }),\n }}\n className={styles.ToastContainer}\n >\n {toasts.map(({ id, onDismiss, ...rest }) => (\n <Toast\n {...rest}\n key={id}\n placement={placement}\n autoDismissTimeout={autoDismissTimeout}\n onDismiss={() => dismiss(id, onDismiss)}\n />\n ))}\n </div>\n </InvertedThemeProvider>\n ),\n [autoDismissTimeout, dismiss, offset]\n )\n\n return (\n <ToastContextProvider value={toastContextValue}>\n {children}\n {isMounted &&\n createPortal(\n [\n createContainer('bottom-left', leftToasts),\n createContainer('bottom-right', rightToasts),\n ],\n container\n )}\n </ToastContextProvider>\n )\n}\n\nexport function useToast() {\n const context = useToastContext()\n\n if (!context) {\n throw Error(\"'useToast' must be used within 'ToastProvider'\")\n }\n\n return {\n addToast: context.add,\n updateToast: context.update,\n removeToast: context.remove,\n removeAllToasts: context.removeAll,\n leftToasts: context.leftToasts,\n rightToasts: context.rightToasts,\n }\n}\n"],"names":["getToastPreset","preset","success","icon","CheckCircleFilledIcon","appearance","error","ErrorTriangleFilledIcon","offline","WifiOffIcon","online","WifiIcon","default","InfoFilledIcon","Toast","placement","appearanceProp","iconProp","content","zIndex","autoDismiss","autoDismissTimeout","version","onDismiss","window","useWindow","dismissTimer","useRef","isSlidingOut","setIsSlidingOut","useState","className","classNames","styles","ToastElement","getZIndexClassName","runSlideOutAnimation","useCallback","handleAnimationEnd","event","animationName","useEffect","startDismissTimer","current","setTimeout","cleanup","clearTimeout","React","createElement","role","onAnimationEnd","ariaAttr","IconWrapper","Icon","source","size","Content","Text","EllipsisableContent","typo","color","truncated","isString","split","map","str","index","Fragment","key","BaseButton","Close","onClick","CancelIcon","ToastContextProvider","useToastContext","createContext","add","update","remove","noop","removeAll","leftToasts","rightToasts","DEFAULT_OFFSET","left","right","bottom","ToastProvider","container","givenContainer","offset","children","rootElement","useRootElement","isMounted","useIsMounted","toastContextValue","useToastProviderValues","dismiss","createContainer","toasts","InvertedThemeProvider","style","px","ToastContainer","id","rest","Object","assign","value","createPortal","useToast","context","Error","addToast","updateToast","removeToast","removeAllToasts"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAuCA,SAASA,cAAcA,CAACC,MAAmB,EAAE;EAC3C,OAAO;AACLC,IAAAA,OAAO,EAAE;AACPC,MAAAA,IAAI,EAAEC,iCAAqB;AAC3BC,MAAAA,UAAU,EAAE,SAAA;KACb;AACDC,IAAAA,KAAK,EAAE;AACLH,MAAAA,IAAI,EAAEI,mCAAuB;AAC7BF,MAAAA,UAAU,EAAE,OAAA;KACb;AACDG,IAAAA,OAAO,EAAE;AACPL,MAAAA,IAAI,EAAEM,uBAAW;AACjBJ,MAAAA,UAAU,EAAE,SAAA;KACb;AACDK,IAAAA,MAAM,EAAE;AACNP,MAAAA,IAAI,EAAEQ,oBAAQ;AACdN,MAAAA,UAAU,EAAE,SAAA;KACb;AACDO,IAAAA,OAAO,EAAE;AACPT,MAAAA,IAAI,EAAEU,0BAAc;AACpBR,MAAAA,UAAU,EAAE,MAAA;AACd,KAAA;GACD,CAACJ,MAAM,CAAC,CAAA;AACX,CAAA;AAEO,SAASa,KAAKA,CAAC;EACpBC,SAAS;AACTV,EAAAA,UAAU,EAAEW,cAAc;AAC1Bf,EAAAA,MAAM,GAAG,SAAS;AAClBE,EAAAA,IAAI,EAAEc,QAAQ;EACdC,OAAO;AACPC,EAAAA,MAAM,GAAG,OAAO;AAChBC,EAAAA,WAAW,GAAG,IAAI;EAClBC,kBAAkB;AAClBC,EAAAA,OAAO,GAAG,CAAC;AACXC,EAAAA,SAAAA;AACU,CAAC,EAAE;EACb,MAAM;AAAEC,IAAAA,MAAAA;GAAQ,GAAGC,wBAAS,EAAE,CAAA;AAE9B,EAAA,MAAMC,YAAY,GAAGC,YAAM,EAAoC,CAAA;EAE/D,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC,CAAA;AAEvD,EAAA,MAAMC,SAAS,GAAGC,aAAU,CAC1BC,oBAAM,CAACC,YAAY,EACnBf,MAAM,IAAIgB,+BAAkB,CAAChB,MAAM,CAAC,EACpCJ,SAAS,IAAIkB,oBAAM,CAAC,CAAalB,UAAAA,EAAAA,SAAS,CAAE,CAAA,CAAC,EAC7Ca,YAAY,IAAIK,oBAAM,CAAC,WAAW,CACpC,CAAC,CAAA;AAED,EAAA,MAAMG,oBAAoB,GAAGC,iBAAW,CAAC,MAAM;IAC7CR,eAAe,CAAC,IAAI,CAAC,CAAA;GACtB,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,MAAMS,kBAAkB,GAAGD,iBAAW,CACnCE,KAAK,IAAK;AACT,IAAA,IACEA,KAAK,CAACC,aAAa,KAAKP,oBAAM,CAAC,gBAAgB,CAAC,IAChDM,KAAK,CAACC,aAAa,KAAKP,oBAAM,CAAC,iBAAiB,CAAC,EACjD;AACAV,MAAAA,SAAS,IAAI,CAAA;AACf,KAAA;AACF,GAAC,EACD,CAACA,SAAS,CACZ,CAAC,CAAA;AAEDkB,EAAAA,eAAS,CACP,SAASC,iBAAiBA,GAAG;AAC3B,IAAA,IAAItB,WAAW,EAAE;MACfM,YAAY,CAACiB,OAAO,GAAGnB,MAAM,CAACoB,UAAU,CACtCR,oBAAoB,EACpBf,kBACF,CAAC,CAAA;AACH,KAAA;IAEA,OAAO,SAASwB,OAAOA,GAAG;AACxB,MAAA,IAAInB,YAAY,CAACiB,OAAO,IAAI,IAAI,EAAE;AAChCG,QAAAA,YAAY,CAACpB,YAAY,CAACiB,OAAO,CAAC,CAAA;AACpC,OAAA;KACD,CAAA;AACH,GAAC,EACD,CAACvB,WAAW,EAAEC,kBAAkB,EAAEe,oBAAoB,EAAEZ,MAAM,EAAEF,OAAO,CACzE,CAAC,CAAA;EAED,MAAM;IAAEjB,UAAU;AAAEF,IAAAA,IAAAA;AAAK,GAAC,GAAGH,cAAc,CAACC,MAAM,CAAC,CAAA;EAEnD,oBACE8C,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEC,IAAAA,IAAI,EAAC,QAAQ;AACblB,IAAAA,SAAS,EAAEA,SAAU;AACrBmB,IAAAA,cAAc,EAAEZ,kBAAmB;IACnC,aAAaa,EAAAA,aAAQ,CAACvB,YAAY,CAAA;GAElCmB,eAAAA,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEjB,IAAAA,SAAS,EAAEC,aAAU,CACnBC,oBAAM,CAACmB,WAAW,EAClBnB,oBAAM,CAAC,CAAcjB,WAAAA,EAAAA,cAAc,IAAIX,UAAU,EAAE,CACrD,CAAA;AAAE,GAAA,eAEF0C,KAAA,CAAAC,aAAA,CAACK,SAAI,EAAA;IACHC,MAAM,EAAErC,QAAQ,IAAId,IAAK;AACzBoD,IAAAA,IAAI,EAAC,GAAA;AAAG,GACT,CACE,CAAC,eAENR,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKjB,SAAS,EAAEE,oBAAM,CAACuB,OAAAA;AAAQ,GAAA,eAC7BT,KAAA,CAAAC,aAAA,CAACS,SAAI,EAAA;IACH1B,SAAS,EAAEE,oBAAM,CAACyB,mBAAoB;AACtCC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,KAAK,EAAC,mBAAmB;AACzBC,IAAAA,SAAS,EAAE,CAAA;AAAE,GAAA,EAEZC,aAAQ,CAAC5C,OAAO,CAAC,GACdA,OAAO,CAAC6C,KAAK,CAAC,IAAI,CAAC,CAACC,GAAG,CAAC,CAACC,GAAG,EAAEC,KAAK;AAAA;AACjC;AACAnB,EAAAA,KAAA,CAAAC,aAAA,CAACD,KAAK,CAACoB,QAAQ,EAAA;AAACC,IAAAA,GAAG,EAAEF,KAAAA;GAClBA,EAAAA,KAAK,KAAK,CAAC,iBAAInB,KAAA,CAAAC,aAAA,CAAK,IAAA,EAAA,IAAA,CAAC,EACrBiB,GACa,CACjB,CAAC,GACF/C,OACA,CACH,CAAC,eAEN6B,KAAA,CAAAC,aAAA,CAACqB,qBAAU,EAAA;IACTtC,SAAS,EAAEE,oBAAM,CAACqC,KAAM;AACxBC,IAAAA,OAAO,EAAEnC,oBAAAA;AAAqB,GAAA,eAE9BW,KAAA,CAAAC,aAAA,CAACK,SAAI,EAAA;AACHC,IAAAA,MAAM,EAAEkB,sBAAW;AACnBjB,IAAAA,IAAI,EAAC,IAAA;GACN,CACS,CACT,CAAC,CAAA;AAEV,CAAA;AAEA,MAAM,CAACkB,oBAAoB,EAAEC,eAAe,CAAC,GAC3CC,mBAAa,CAAoB;EAC/BC,GAAG,EAAEA,MAAM,EAAE;EACbC,MAAM,EAAEA,MAAM,EAAE;AAChBC,EAAAA,MAAM,EAAEC,cAAI;AACZC,EAAAA,SAAS,EAAED,cAAI;AACfE,EAAAA,UAAU,EAAE,EAAE;AACdC,EAAAA,WAAW,EAAE,EAAA;AACf,CAAC,CAAC,CAAA;AAEJ,MAAMC,cAAc,GAAG;AACrBC,EAAAA,IAAI,EAAE,CAAC;AACPC,EAAAA,KAAK,EAAE,CAAC;AACRC,EAAAA,MAAM,EAAE,CAAA;AACV,CAAC,CAAA;AAEM,SAASC,aAAaA,CAAC;AAC5BlE,EAAAA,kBAAkB,GAAG,IAAI;AACzBmE,EAAAA,SAAS,EAAEC,cAAc;AACzBC,EAAAA,MAAM,GAAGP,cAAc;AACvBQ,EAAAA,QAAQ,GAAG,EAAA;AACO,CAAC,EAAE;AACrB,EAAA,MAAMC,WAAW,GAAGC,6BAAc,EAAE,CAAA;AACpC,EAAA,MAAMC,SAAS,GAAGC,oBAAY,EAAE,CAAA;AAEhC,EAAA,MAAMC,iBAAiB,GAAGC,6BAAsB,EAAE,CAAA;EAClD,MAAM;IAAEhB,UAAU;IAAEC,WAAW;AAAEgB,IAAAA,OAAAA;AAAQ,GAAC,GAAGF,iBAAiB,CAAA;AAC9D,EAAA,MAAMR,SAAS,GAAGC,cAAc,IAAIG,WAAW,CAAA;AAE/C,EAAA,MAAMO,eAAe,GAAG9D,iBAAW,CACjC,CAACtB,SAAyB,EAAEqF,MAAmB,kBAC7CrD,KAAA,CAAAC,aAAA,CAACqD,mCAAqB,EAAA;AAACjC,IAAAA,GAAG,EAAErD,SAAAA;GAC1BgC,eAAAA,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEsD,IAAAA,KAAK,EAAE;MACLhB,MAAM,EAAEiB,QAAE,CAACb,MAAM,EAAEJ,MAAM,IAAIH,cAAc,CAACG,MAAM,CAAC;MACnD,IAAIvE,SAAS,KAAK,cAAc,GAC5B;QAAEsE,KAAK,EAAEkB,QAAE,CAACb,MAAM,EAAEL,KAAK,IAAIF,cAAc,CAACE,KAAK,CAAA;AAAE,OAAC,GACpD;QAAED,IAAI,EAAEmB,QAAE,CAACb,MAAM,EAAEN,IAAI,IAAID,cAAc,CAACC,IAAI,CAAA;OAAG,CAAA;KACrD;IACFrD,SAAS,EAAEE,oBAAM,CAACuE,cAAAA;AAAe,GAAA,EAEhCJ,MAAM,CAACpC,GAAG,CAAC,CAAC;IAAEyC,EAAE;IAAElF,SAAS;IAAE,GAAGmF,IAAAA;GAAM,kBACrC3D,KAAA,CAAAC,aAAA,CAAClC,KAAK,EAAA6F,MAAA,CAAAC,MAAA,CAAA,EAAA,EACAF,IAAI,EAAA;AACRtC,IAAAA,GAAG,EAAEqC,EAAG;AACR1F,IAAAA,SAAS,EAAEA,SAAU;AACrBM,IAAAA,kBAAkB,EAAEA,kBAAmB;AACvCE,IAAAA,SAAS,EAAEA,MAAM2E,OAAO,CAACO,EAAE,EAAElF,SAAS,CAAA;AAAE,GAAA,CACzC,CACF,CACE,CACgB,CACxB,EACD,CAACF,kBAAkB,EAAE6E,OAAO,EAAER,MAAM,CACtC,CAAC,CAAA;AAED,EAAA,oBACE3C,KAAA,CAAAC,aAAA,CAACyB,oBAAoB,EAAA;AAACoC,IAAAA,KAAK,EAAEb,iBAAAA;GAC1BL,EAAAA,QAAQ,EACRG,SAAS,iBACRgB,qBAAY,CACV,CACEX,eAAe,CAAC,aAAa,EAAElB,UAAU,CAAC,EAC1CkB,eAAe,CAAC,cAAc,EAAEjB,WAAW,CAAC,CAC7C,EACDM,SACF,CACkB,CAAC,CAAA;AAE3B,CAAA;AAEO,SAASuB,QAAQA,GAAG;AACzB,EAAA,MAAMC,OAAO,GAAGtC,eAAe,EAAE,CAAA;EAEjC,IAAI,CAACsC,OAAO,EAAE;IACZ,MAAMC,KAAK,CAAC,gDAAgD,CAAC,CAAA;AAC/D,GAAA;EAEA,OAAO;IACLC,QAAQ,EAAEF,OAAO,CAACpC,GAAG;IACrBuC,WAAW,EAAEH,OAAO,CAACnC,MAAM;IAC3BuC,WAAW,EAAEJ,OAAO,CAAClC,MAAM;IAC3BuC,eAAe,EAAEL,OAAO,CAAChC,SAAS;IAClCC,UAAU,EAAE+B,OAAO,CAAC/B,UAAU;IAC9BC,WAAW,EAAE8B,OAAO,CAAC9B,WAAAA;GACtB,CAAA;AACH;;;;;;"}
1
+ {"version":3,"file":"Toast.js","sources":["../../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport {\n CancelIcon,\n CheckCircleFilledIcon,\n ErrorTriangleFilledIcon,\n InfoFilledIcon,\n WifiIcon,\n WifiOffIcon,\n} from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport useIsMounted from '~/src/hooks/useIsMounted'\nimport { getZIndexClassName } from '~/src/types/props-helpers'\nimport { ariaAttr } from '~/src/utils/aria'\nimport { noop } from '~/src/utils/function'\nimport { createContext } from '~/src/utils/react'\nimport { px } from '~/src/utils/style'\nimport { isString } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Icon } from '~/src/components/Icon'\nimport { Text } from '~/src/components/Text'\nimport { InvertedThemeProvider } from '~/src/components/ThemeProvider'\nimport { useRootElement, useWindow } from '~/src/components/WindowProvider'\n\nimport {\n type ToastContextValue,\n type ToastPlacement,\n type ToastPreset,\n type ToastProps,\n type ToastProviderProps,\n type ToastType,\n} from './Toast.types'\nimport useToastProviderValues from './useToastContextValues'\n\nimport styles from './Toast.module.scss'\n\nfunction getToastPreset(preset: ToastPreset) {\n return {\n success: {\n icon: CheckCircleFilledIcon,\n appearance: 'success',\n },\n error: {\n icon: ErrorTriangleFilledIcon,\n appearance: 'error',\n },\n offline: {\n icon: WifiOffIcon,\n appearance: 'warning',\n },\n online: {\n icon: WifiIcon,\n appearance: 'success',\n },\n default: {\n icon: InfoFilledIcon,\n appearance: 'info',\n },\n }[preset]\n}\n\nexport function Toast({\n placement,\n appearance: appearanceProp,\n preset = 'default',\n icon: iconProp,\n content,\n zIndex = 'toast',\n autoDismiss = true,\n autoDismissTimeout,\n version = 0,\n onDismiss,\n}: ToastProps) {\n const { window } = useWindow()\n\n const dismissTimer = useRef<ReturnType<Window['setTimeout']>>()\n\n const [isSlidingOut, setIsSlidingOut] = useState(false)\n\n const className = classNames(\n styles.ToastElement,\n getZIndexClassName(zIndex),\n placement && styles[`placement-${placement}`],\n isSlidingOut && styles['slide-out']\n )\n\n const runSlideOutAnimation = useCallback(() => {\n setIsSlidingOut(true)\n }, [])\n\n const handleAnimationEnd = useCallback<React.AnimationEventHandler>(\n (event) => {\n if (\n event.animationName === styles['slide-out-left'] ||\n event.animationName === styles['slide-out-right']\n ) {\n onDismiss?.()\n }\n },\n [onDismiss]\n )\n\n useEffect(\n function startDismissTimer() {\n if (autoDismiss) {\n dismissTimer.current = window.setTimeout(\n runSlideOutAnimation,\n autoDismissTimeout\n )\n }\n\n return function cleanup() {\n if (dismissTimer.current != null) {\n clearTimeout(dismissTimer.current)\n }\n }\n },\n [autoDismiss, autoDismissTimeout, runSlideOutAnimation, window, version]\n )\n\n const { appearance, icon } = getToastPreset(preset)\n\n return (\n <div\n role=\"status\"\n className={className}\n onAnimationEnd={handleAnimationEnd}\n aria-hidden={ariaAttr(isSlidingOut)}\n >\n <div\n className={classNames(\n styles.IconWrapper,\n styles[`appearance-${appearanceProp ?? appearance}`]\n )}\n >\n <Icon\n source={iconProp ?? icon}\n size=\"s\"\n />\n </div>\n\n <div className={styles.Content}>\n <Text\n className={styles.EllipsisableContent}\n typo=\"14\"\n color=\"txt-black-darkest\"\n truncated={5}\n >\n {isString(content)\n ? content.split('\\n').map((str, index) => (\n // eslint-disable-next-line react/no-array-index-key\n <React.Fragment key={index}>\n {index !== 0 && <br />}\n {str}\n </React.Fragment>\n ))\n : content}\n </Text>\n </div>\n\n <BaseButton\n className={styles.Close}\n onClick={runSlideOutAnimation}\n >\n <Icon\n source={CancelIcon}\n size=\"xs\"\n />\n </BaseButton>\n </div>\n )\n}\n\nconst [ToastContextProvider, useToastContext] =\n createContext<ToastContextValue>({\n add: () => '',\n update: () => '',\n remove: noop,\n removeAll: noop,\n leftToasts: [],\n rightToasts: [],\n })\n\nconst DEFAULT_OFFSET = {\n left: 0,\n right: 0,\n bottom: 0,\n}\n\nexport function ToastProvider({\n autoDismissTimeout = 3000,\n container: givenContainer,\n zIndex = 'toast',\n offset = DEFAULT_OFFSET,\n children = [],\n}: ToastProviderProps) {\n const rootElement = useRootElement()\n const isMounted = useIsMounted()\n\n const toastContextValue = useToastProviderValues()\n const { leftToasts, rightToasts, dismiss } = toastContextValue\n const container = givenContainer ?? rootElement\n\n const createContainer = useCallback(\n (placement: ToastPlacement, toasts: ToastType[]) => (\n <InvertedThemeProvider key={placement}>\n <div\n style={{\n bottom: px(offset?.bottom ?? DEFAULT_OFFSET.bottom),\n ...(placement === 'bottom-right'\n ? { right: px(offset?.right ?? DEFAULT_OFFSET.right) }\n : { left: px(offset?.left ?? DEFAULT_OFFSET.left) }),\n }}\n className={classNames(\n styles.ToastContainer,\n getZIndexClassName(zIndex)\n )}\n >\n {toasts.map(({ id, onDismiss, ...rest }) => (\n <Toast\n {...rest}\n key={id}\n placement={placement}\n autoDismissTimeout={autoDismissTimeout}\n onDismiss={() => dismiss(id, onDismiss)}\n />\n ))}\n </div>\n </InvertedThemeProvider>\n ),\n [autoDismissTimeout, dismiss, offset, zIndex]\n )\n\n return (\n <ToastContextProvider value={toastContextValue}>\n {children}\n {isMounted &&\n createPortal(\n [\n createContainer('bottom-left', leftToasts),\n createContainer('bottom-right', rightToasts),\n ],\n container\n )}\n </ToastContextProvider>\n )\n}\n\nexport function useToast() {\n const context = useToastContext()\n\n if (!context) {\n throw Error(\"'useToast' must be used within 'ToastProvider'\")\n }\n\n return {\n addToast: context.add,\n updateToast: context.update,\n removeToast: context.remove,\n removeAllToasts: context.removeAll,\n leftToasts: context.leftToasts,\n rightToasts: context.rightToasts,\n }\n}\n"],"names":["getToastPreset","preset","success","icon","CheckCircleFilledIcon","appearance","error","ErrorTriangleFilledIcon","offline","WifiOffIcon","online","WifiIcon","default","InfoFilledIcon","Toast","placement","appearanceProp","iconProp","content","zIndex","autoDismiss","autoDismissTimeout","version","onDismiss","window","useWindow","dismissTimer","useRef","isSlidingOut","setIsSlidingOut","useState","className","classNames","styles","ToastElement","getZIndexClassName","runSlideOutAnimation","useCallback","handleAnimationEnd","event","animationName","useEffect","startDismissTimer","current","setTimeout","cleanup","clearTimeout","React","createElement","role","onAnimationEnd","ariaAttr","IconWrapper","Icon","source","size","Content","Text","EllipsisableContent","typo","color","truncated","isString","split","map","str","index","Fragment","key","BaseButton","Close","onClick","CancelIcon","ToastContextProvider","useToastContext","createContext","add","update","remove","noop","removeAll","leftToasts","rightToasts","DEFAULT_OFFSET","left","right","bottom","ToastProvider","container","givenContainer","offset","children","rootElement","useRootElement","isMounted","useIsMounted","toastContextValue","useToastProviderValues","dismiss","createContainer","toasts","InvertedThemeProvider","style","px","ToastContainer","id","rest","Object","assign","value","createPortal","useToast","context","Error","addToast","updateToast","removeToast","removeAllToasts"],"mappings":"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"}