@channel.io/bezier-react 2.0.5 → 2.0.7
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.
- package/dist/cjs/components/AlphaAvatar/Avatar.js.map +1 -1
- package/dist/cjs/components/AlphaAvatarGroup/AvatarGroup.js.map +1 -1
- package/dist/cjs/components/AlphaButton/Button.js +18 -10
- package/dist/cjs/components/AlphaButton/Button.js.map +1 -1
- package/dist/cjs/components/AlphaFloatingButton/FloatingButton.js +18 -9
- package/dist/cjs/components/AlphaFloatingButton/FloatingButton.js.map +1 -1
- package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.js +57 -0
- package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.js.map +1 -0
- package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.module.scss.js +8 -0
- package/dist/cjs/components/AlphaFloatingIconButton/FloatingIconButton.module.scss.js.map +1 -0
- package/dist/cjs/components/AlphaIconButton/IconButton.js +5 -5
- package/dist/cjs/components/AlphaIconButton/IconButton.js.map +1 -1
- package/dist/cjs/components/AlphaSpinner/Spinner.js +38 -0
- package/dist/cjs/components/AlphaSpinner/Spinner.js.map +1 -0
- package/dist/cjs/components/AlphaSpinner/Spinner.module.scss.js +8 -0
- package/dist/cjs/components/AlphaSpinner/Spinner.module.scss.js.map +1 -0
- package/dist/cjs/components/AutoFocus/AutoFocus.js +2 -1
- package/dist/cjs/components/AutoFocus/AutoFocus.js.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
- package/dist/cjs/components/AvatarGroup/AvatarGroup.js.map +1 -1
- package/dist/cjs/components/Banner/Banner.js.map +1 -1
- package/dist/cjs/components/BaseTagBadge/BaseTagBadge.js +3 -2
- package/dist/cjs/components/BaseTagBadge/BaseTagBadge.js.map +1 -1
- package/dist/cjs/components/Box/Box.js.map +1 -1
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/Center/Center.js.map +1 -1
- package/dist/cjs/components/CheckableAvatar/CheckableAvatar.js.map +1 -1
- package/dist/cjs/components/Emoji/Emoji.js.map +1 -1
- package/dist/cjs/components/FeatureProvider/FeatureProvider.js +2 -1
- package/dist/cjs/components/FeatureProvider/FeatureProvider.js.map +1 -1
- package/dist/cjs/components/FeatureProvider/SmoothCornersFeature/smoothCornersScript.js.map +1 -1
- package/dist/cjs/components/FormControl/FormControl.js.map +1 -1
- package/dist/cjs/components/LegacyStack/LegacyStack/LegacyStack.js.map +1 -1
- package/dist/cjs/components/LegacyStack/LegacyStackItem/LegacyStackItem.js.map +1 -1
- package/dist/cjs/components/LegacyTooltip/utils.js.map +1 -1
- package/dist/cjs/components/ListItem/ListItem.js.map +1 -1
- package/dist/cjs/components/Modal/Modal.js.map +1 -1
- package/dist/cjs/components/NavGroup/NavGroup.js.map +1 -1
- package/dist/cjs/components/OutlineItem/OutlineItem.js.map +1 -1
- package/dist/cjs/components/Overlay/Overlay.js +3 -2
- package/dist/cjs/components/Overlay/Overlay.js.map +1 -1
- package/dist/cjs/components/Overlay/utils.js.map +1 -1
- package/dist/cjs/components/ProgressBar/ProgressBar.js.map +1 -1
- package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/cjs/components/Slider/Slider.js.map +1 -1
- package/dist/cjs/components/SmoothCornersBox/SmoothCornersBox.js.map +1 -1
- package/dist/cjs/components/Spinner/Spinner.js.map +1 -1
- package/dist/cjs/components/Stack/Stack.js.map +1 -1
- package/dist/cjs/components/Status/Status.js.map +1 -1
- package/dist/cjs/components/Switch/Switch.js.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
- package/dist/cjs/components/Text/Text.js.map +1 -1
- package/dist/cjs/components/TextArea/TextArea.js +2 -1
- package/dist/cjs/components/TextArea/TextArea.js.map +1 -1
- package/dist/cjs/components/TextField/TextField.js.map +1 -1
- package/dist/cjs/components/Toast/Toast.js +3 -2
- package/dist/cjs/components/Toast/Toast.js.map +1 -1
- package/dist/cjs/hooks/useIsomorphicLayoutEffect.js +13 -0
- package/dist/cjs/hooks/useIsomorphicLayoutEffect.js.map +1 -0
- package/dist/cjs/hooks/useMergeRefs.js.map +1 -1
- package/dist/cjs/index.js +6 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/styles.css +1 -1
- package/dist/cjs/types/props-helpers.js.map +1 -1
- package/dist/cjs/utils/react.js.map +1 -1
- package/dist/cjs/utils/string.js.map +1 -1
- package/dist/cjs/utils/style.js.map +1 -1
- package/dist/esm/components/AlphaAvatar/Avatar.mjs.map +1 -1
- package/dist/esm/components/AlphaAvatarGroup/AvatarGroup.mjs.map +1 -1
- package/dist/esm/components/AlphaButton/Button.mjs +18 -10
- package/dist/esm/components/AlphaButton/Button.mjs.map +1 -1
- package/dist/esm/components/AlphaFloatingButton/FloatingButton.mjs +18 -9
- package/dist/esm/components/AlphaFloatingButton/FloatingButton.mjs.map +1 -1
- package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.mjs +55 -0
- package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.mjs.map +1 -0
- package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.module.scss.mjs +4 -0
- package/dist/esm/components/AlphaFloatingIconButton/FloatingIconButton.module.scss.mjs.map +1 -0
- package/dist/esm/components/AlphaIconButton/IconButton.mjs +5 -5
- package/dist/esm/components/AlphaIconButton/IconButton.mjs.map +1 -1
- package/dist/esm/components/AlphaSpinner/Spinner.mjs +35 -0
- package/dist/esm/components/AlphaSpinner/Spinner.mjs.map +1 -0
- package/dist/esm/components/AlphaSpinner/Spinner.module.scss.mjs +4 -0
- package/dist/esm/components/AlphaSpinner/Spinner.module.scss.mjs.map +1 -0
- package/dist/esm/components/AutoFocus/AutoFocus.mjs +3 -2
- package/dist/esm/components/AutoFocus/AutoFocus.mjs.map +1 -1
- package/dist/esm/components/Avatar/Avatar.mjs.map +1 -1
- package/dist/esm/components/AvatarGroup/AvatarGroup.mjs.map +1 -1
- package/dist/esm/components/Banner/Banner.mjs.map +1 -1
- package/dist/esm/components/BaseTagBadge/BaseTagBadge.mjs +3 -2
- package/dist/esm/components/BaseTagBadge/BaseTagBadge.mjs.map +1 -1
- package/dist/esm/components/Box/Box.mjs.map +1 -1
- package/dist/esm/components/Button/Button.mjs.map +1 -1
- package/dist/esm/components/Center/Center.mjs.map +1 -1
- package/dist/esm/components/CheckableAvatar/CheckableAvatar.mjs.map +1 -1
- package/dist/esm/components/Emoji/Emoji.mjs.map +1 -1
- package/dist/esm/components/FeatureProvider/FeatureProvider.mjs +3 -2
- package/dist/esm/components/FeatureProvider/FeatureProvider.mjs.map +1 -1
- package/dist/esm/components/FeatureProvider/SmoothCornersFeature/smoothCornersScript.mjs.map +1 -1
- package/dist/esm/components/FormControl/FormControl.mjs.map +1 -1
- package/dist/esm/components/LegacyStack/LegacyStack/LegacyStack.mjs.map +1 -1
- package/dist/esm/components/LegacyStack/LegacyStackItem/LegacyStackItem.mjs.map +1 -1
- package/dist/esm/components/LegacyTooltip/utils.mjs.map +1 -1
- package/dist/esm/components/ListItem/ListItem.mjs.map +1 -1
- package/dist/esm/components/Modal/Modal.mjs.map +1 -1
- package/dist/esm/components/NavGroup/NavGroup.mjs.map +1 -1
- package/dist/esm/components/OutlineItem/OutlineItem.mjs.map +1 -1
- package/dist/esm/components/Overlay/Overlay.mjs +4 -3
- package/dist/esm/components/Overlay/Overlay.mjs.map +1 -1
- package/dist/esm/components/Overlay/utils.mjs.map +1 -1
- package/dist/esm/components/ProgressBar/ProgressBar.mjs.map +1 -1
- package/dist/esm/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
- package/dist/esm/components/Slider/Slider.mjs.map +1 -1
- package/dist/esm/components/SmoothCornersBox/SmoothCornersBox.mjs.map +1 -1
- package/dist/esm/components/Spinner/Spinner.mjs.map +1 -1
- package/dist/esm/components/Stack/Stack.mjs.map +1 -1
- package/dist/esm/components/Status/Status.mjs.map +1 -1
- package/dist/esm/components/Switch/Switch.mjs.map +1 -1
- package/dist/esm/components/Tabs/Tabs.mjs.map +1 -1
- package/dist/esm/components/Text/Text.mjs.map +1 -1
- package/dist/esm/components/TextArea/TextArea.mjs +3 -2
- package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
- package/dist/esm/components/TextField/TextField.mjs.map +1 -1
- package/dist/esm/components/Toast/Toast.mjs +3 -2
- package/dist/esm/components/Toast/Toast.mjs.map +1 -1
- package/dist/esm/hooks/useIsomorphicLayoutEffect.mjs +11 -0
- package/dist/esm/hooks/useIsomorphicLayoutEffect.mjs.map +1 -0
- package/dist/esm/hooks/useMergeRefs.mjs.map +1 -1
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/styles.css +1 -1
- package/dist/esm/types/props-helpers.mjs.map +1 -1
- package/dist/esm/utils/react.mjs.map +1 -1
- package/dist/esm/utils/string.mjs.map +1 -1
- package/dist/esm/utils/style.mjs.map +1 -1
- package/dist/types/components/AlphaButton/Button.d.ts.map +1 -1
- package/dist/types/components/AlphaButton/Button.types.d.ts +3 -2
- package/dist/types/components/AlphaButton/Button.types.d.ts.map +1 -1
- package/dist/types/components/AlphaFloatingButton/FloatingButton.d.ts.map +1 -1
- package/dist/types/components/AlphaFloatingButton/FloatingButton.types.d.ts +3 -2
- package/dist/types/components/AlphaFloatingButton/FloatingButton.types.d.ts.map +1 -1
- package/dist/types/components/AlphaFloatingIconButton/FloatingIconButton.d.ts +4 -0
- package/dist/types/components/AlphaFloatingIconButton/FloatingIconButton.d.ts.map +1 -0
- package/dist/types/components/AlphaFloatingIconButton/FloatingIconButton.types.d.ts +37 -0
- package/dist/types/components/AlphaFloatingIconButton/FloatingIconButton.types.d.ts.map +1 -0
- package/dist/types/components/AlphaFloatingIconButton/index.d.ts +3 -0
- package/dist/types/components/AlphaFloatingIconButton/index.d.ts.map +1 -0
- package/dist/types/components/AlphaIconButton/IconButton.d.ts.map +1 -1
- package/dist/types/components/AlphaIconButton/IconButton.types.d.ts +3 -2
- package/dist/types/components/AlphaIconButton/IconButton.types.d.ts.map +1 -1
- package/dist/types/components/AlphaIconButton/index.d.ts +1 -1
- package/dist/types/components/AlphaIconButton/index.d.ts.map +1 -1
- package/dist/types/components/AlphaSpinner/Spinner.d.ts +5 -0
- package/dist/types/components/AlphaSpinner/Spinner.d.ts.map +1 -0
- package/dist/types/components/AlphaSpinner/Spinner.types.d.ts +13 -0
- package/dist/types/components/AlphaSpinner/Spinner.types.d.ts.map +1 -0
- package/dist/types/components/AlphaSpinner/index.d.ts +3 -0
- package/dist/types/components/AlphaSpinner/index.d.ts.map +1 -0
- package/dist/types/components/AutoFocus/AutoFocus.d.ts.map +1 -1
- package/dist/types/components/BaseTagBadge/BaseTagBadge.d.ts.map +1 -1
- package/dist/types/components/FeatureProvider/FeatureProvider.d.ts.map +1 -1
- package/dist/types/components/Icon/Icon.types.d.ts +1 -1
- package/dist/types/components/Overlay/Overlay.d.ts.map +1 -1
- package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/types/components/Toast/Toast.d.ts.map +1 -1
- package/dist/types/hooks/useIsomorphicLayoutEffect.d.ts +8 -0
- package/dist/types/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/AlphaButton/AlphaButton.stories.tsx +2 -2
- package/src/components/AlphaButton/Button.tsx +34 -20
- package/src/components/AlphaButton/Button.types.ts +4 -2
- package/src/components/AlphaFloatingButton/AlphaFloatingButton.stories.tsx +2 -2
- package/src/components/AlphaFloatingButton/FloatingButton.tsx +30 -17
- package/src/components/AlphaFloatingButton/FloatingButton.types.ts +4 -2
- package/src/components/AlphaFloatingIconButton/AlphaFloatingIconButton.stories.tsx +28 -0
- package/src/components/AlphaFloatingIconButton/FloatingIconButton.module.scss +175 -0
- package/src/components/AlphaFloatingIconButton/FloatingIconButton.tsx +91 -0
- package/src/components/AlphaFloatingIconButton/FloatingIconButton.types.ts +64 -0
- package/src/components/AlphaFloatingIconButton/index.ts +2 -0
- package/src/components/AlphaIconButton/AlphaIconButton.stories.tsx +1 -1
- package/src/components/AlphaIconButton/IconButton.tsx +6 -4
- package/src/components/AlphaIconButton/IconButton.types.ts +5 -3
- package/src/components/AlphaIconButton/index.ts +1 -1
- package/src/components/AlphaSpinner/AlphaSpinner.stories.tsx +23 -0
- package/src/components/AlphaSpinner/Spinner.module.scss +66 -0
- package/src/components/AlphaSpinner/Spinner.test.tsx +34 -0
- package/src/components/AlphaSpinner/Spinner.tsx +50 -0
- package/src/components/AlphaSpinner/Spinner.types.ts +21 -0
- package/src/components/AlphaSpinner/index.ts +2 -0
- package/src/components/AutoFocus/AutoFocus.tsx +3 -2
- package/src/components/BaseTagBadge/BaseTagBadge.tsx +2 -1
- package/src/components/FeatureProvider/FeatureProvider.tsx +3 -2
- package/src/components/Icon/Icon.types.ts +1 -1
- package/src/components/Overlay/Overlay.tsx +3 -3
- package/src/components/TextArea/TextArea.tsx +3 -2
- package/src/components/Toast/Toast.module.scss +1 -1
- package/src/components/Toast/Toast.tsx +1 -2
- package/src/hooks/useIsomorphicLayoutEffect.ts +9 -0
- package/src/index.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Status.js","sources":["../../../../src/components/Status/Status.tsx"],"sourcesContent":["import React, { type CSSProperties, forwardRef, memo } from 'react'\n\nimport { LockIcon, MoonFilledIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { type SemanticColor } from '~/src/types/tokens'\nimport { cssVar } from '~/src/utils/style'\n\nimport { Icon } from '~/src/components/Icon'\n\nimport { type StatusProps, type StatusType } from './Status.types'\n\nimport styles from './Status.module.scss'\n\nconst statusTypesWithIcon: Readonly<StatusType[]> = [\n 'online-crescent',\n 'offline-crescent',\n 'lock',\n]\n\nconst statusColor: Readonly<Record<StatusType, SemanticColor>> = {\n online: 'bgtxt-green-normal',\n offline: 'bg-black-dark',\n 'online-crescent': 'bgtxt-green-normal',\n 'offline-crescent': 'bgtxt-yellow-normal',\n lock: 'txt-black-darker',\n}\n\n/**\n * `Status` is a component to indicate user status.\n */\nexport const Status = memo(\n forwardRef<HTMLDivElement, StatusProps>(function Status(\n { type, size = 'm', style, className, ...rest },\n forwardedRef\n ) {\n const withIcon = statusTypesWithIcon.includes(type)\n const backgroundColor = withIcon ? 'bg-white-high' : statusColor[type]\n\n return (\n <div\n ref={forwardedRef}\n style={\n {\n '--b-status-bg-color': cssVar(backgroundColor),\n ...style,\n } as CSSProperties\n }\n className={classNames(styles.Status, styles[`size-${size}`], className)}\n {...rest}\n >\n {withIcon && (\n <Icon\n source={type === 'lock' ? LockIcon : MoonFilledIcon}\n size={size === 'm' ? 'xxxs' : 'xs'}\n color={statusColor[type]}\n className={styles.Icon}\n />\n )}\n </div>\n )\n })\n)\n"],"names":["statusTypesWithIcon","statusColor","online","offline","lock","Status","memo","forwardRef","type","size","style","className","rest","forwardedRef","withIcon","includes","backgroundColor","React","createElement","Object","assign","ref","cssVar","classNames","styles","Icon","source","LockIcon","MoonFilledIcon","color"],"mappings":";;;;;;;;;AAcA,MAAMA,mBAA2C,GAAG,CAClD,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,CACP,CAAA;AAED,MAAMC,WAAwD,GAAG;AAC/DC,EAAAA,MAAM,EAAE,oBAAoB;AAC5BC,EAAAA,OAAO,EAAE,eAAe;AACxB,EAAA,iBAAiB,EAAE,oBAAoB;AACvC,EAAA,kBAAkB,EAAE,qBAAqB;AACzCC,EAAAA,IAAI,EAAE,kBAAA;AACR,CAAC,CAAA;;AAED;AACA;AACA;AACO,MAAMC,MAAM,gBAAGC,UAAI,eACxBC,gBAAU,CAA8B,SAASF,MAAMA,CACrD;EAAEG,IAAI;AAAEC,EAAAA,IAAI,GAAG,GAAG;SAAEC,OAAK;EAAEC,SAAS;EAAE,GAAGC,IAAAA;AAAK,CAAC,EAC/CC,YAAY,EACZ;AACA,EAAA,MAAMC,QAAQ,GAAGd,mBAAmB,CAACe,QAAQ,CAACP,IAAI,CAAC,CAAA;EACnD,MAAMQ,eAAe,GAAGF,QAAQ,GAAG,eAAe,GAAGb,WAAW,CAACO,IAAI,CAAC,CAAA;AAEtE,EAAA,oBACES,KAAA,CAAAC,aAAA,CAAAC,KAAAA,EAAAA,MAAA,CAAAC,MAAA,CAAA;AACEC,IAAAA,GAAG,EAAER,YAAa;AAClBH,IAAAA,KAAK,EACH;AACE,MAAA,qBAAqB,EAAEY,YAAM,CAACN,eAAe,CAAC;MAC9C,GAAGN,OAAAA;KAEN;AACDC,IAAAA,SAAS,EAAEY,aAAU,CAACC,qBAAM,CAACnB,MAAM,EAAEmB,qBAAM,
|
|
1
|
+
{"version":3,"file":"Status.js","sources":["../../../../src/components/Status/Status.tsx"],"sourcesContent":["import React, { type CSSProperties, forwardRef, memo } from 'react'\n\nimport { LockIcon, MoonFilledIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { type SemanticColor } from '~/src/types/tokens'\nimport { cssVar } from '~/src/utils/style'\n\nimport { Icon } from '~/src/components/Icon'\n\nimport { type StatusProps, type StatusType } from './Status.types'\n\nimport styles from './Status.module.scss'\n\nconst statusTypesWithIcon: Readonly<StatusType[]> = [\n 'online-crescent',\n 'offline-crescent',\n 'lock',\n]\n\nconst statusColor: Readonly<Record<StatusType, SemanticColor>> = {\n online: 'bgtxt-green-normal',\n offline: 'bg-black-dark',\n 'online-crescent': 'bgtxt-green-normal',\n 'offline-crescent': 'bgtxt-yellow-normal',\n lock: 'txt-black-darker',\n}\n\n/**\n * `Status` is a component to indicate user status.\n */\nexport const Status = memo(\n forwardRef<HTMLDivElement, StatusProps>(function Status(\n { type, size = 'm', style, className, ...rest },\n forwardedRef\n ) {\n const withIcon = statusTypesWithIcon.includes(type)\n const backgroundColor = withIcon ? 'bg-white-high' : statusColor[type]\n\n return (\n <div\n ref={forwardedRef}\n style={\n {\n '--b-status-bg-color': cssVar(backgroundColor),\n ...style,\n } as CSSProperties\n }\n className={classNames(styles.Status, styles[`size-${size}`], className)}\n {...rest}\n >\n {withIcon && (\n <Icon\n source={type === 'lock' ? LockIcon : MoonFilledIcon}\n size={size === 'm' ? 'xxxs' : 'xs'}\n color={statusColor[type]}\n className={styles.Icon}\n />\n )}\n </div>\n )\n })\n)\n"],"names":["statusTypesWithIcon","statusColor","online","offline","lock","Status","memo","forwardRef","type","size","style","className","rest","forwardedRef","withIcon","includes","backgroundColor","React","createElement","Object","assign","ref","cssVar","classNames","styles","Icon","source","LockIcon","MoonFilledIcon","color"],"mappings":";;;;;;;;;AAcA,MAAMA,mBAA2C,GAAG,CAClD,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,CACP,CAAA;AAED,MAAMC,WAAwD,GAAG;AAC/DC,EAAAA,MAAM,EAAE,oBAAoB;AAC5BC,EAAAA,OAAO,EAAE,eAAe;AACxB,EAAA,iBAAiB,EAAE,oBAAoB;AACvC,EAAA,kBAAkB,EAAE,qBAAqB;AACzCC,EAAAA,IAAI,EAAE,kBAAA;AACR,CAAC,CAAA;;AAED;AACA;AACA;AACO,MAAMC,MAAM,gBAAGC,UAAI,eACxBC,gBAAU,CAA8B,SAASF,MAAMA,CACrD;EAAEG,IAAI;AAAEC,EAAAA,IAAI,GAAG,GAAG;SAAEC,OAAK;EAAEC,SAAS;EAAE,GAAGC,IAAAA;AAAK,CAAC,EAC/CC,YAAY,EACZ;AACA,EAAA,MAAMC,QAAQ,GAAGd,mBAAmB,CAACe,QAAQ,CAACP,IAAI,CAAC,CAAA;EACnD,MAAMQ,eAAe,GAAGF,QAAQ,GAAG,eAAe,GAAGb,WAAW,CAACO,IAAI,CAAC,CAAA;AAEtE,EAAA,oBACES,KAAA,CAAAC,aAAA,CAAAC,KAAAA,EAAAA,MAAA,CAAAC,MAAA,CAAA;AACEC,IAAAA,GAAG,EAAER,YAAa;AAClBH,IAAAA,KAAK,EACH;AACE,MAAA,qBAAqB,EAAEY,YAAM,CAACN,eAAe,CAAC;MAC9C,GAAGN,OAAAA;KAEN;AACDC,IAAAA,SAAS,EAAEY,aAAU,CAACC,qBAAM,CAACnB,MAAM,EAAEmB,qBAAM,CAAC,CAAQf,KAAAA,EAAAA,IAAI,CAAE,CAAA,CAAC,EAAEE,SAAS,CAAA;GAClEC,EAAAA,IAAI,GAEPE,QAAQ,iBACPG,KAAA,CAAAC,aAAA,CAACO,SAAI,EAAA;AACHC,IAAAA,MAAM,EAAElB,IAAI,KAAK,MAAM,GAAGmB,oBAAQ,GAAGC,0BAAe;AACpDnB,IAAAA,IAAI,EAAEA,IAAI,KAAK,GAAG,GAAG,MAAM,GAAG,IAAK;AACnCoB,IAAAA,KAAK,EAAE5B,WAAW,CAACO,IAAI,CAAE;IACzBG,SAAS,EAAEa,qBAAM,CAACC,IAAAA;AAAK,GACxB,CAEA,CAAC,CAAA;AAEV,CAAC,CACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.js","sources":["../../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch'\nimport classNames from 'classnames'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { useFormFieldProps } from '~/src/components/FormControl'\n\nimport { type SwitchProps } from './Switch.types'\n\nimport styles from './Switch.module.scss'\n\nexport const SWITCH_TEST_ID = 'bezier-switch'\n\n/**\n * `Switch` is an input component where user can toggle checked state of the element.\n * @example\n * ```tsx\n * <Switch\n * size=\"m\"\n * checked\n * />\n * ```\n */\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n function Switch(\n {\n checked,\n defaultChecked = false,\n onCheckedChange,\n size = 'm',\n className,\n ...rest\n },\n forwardedRef\n ) {\n const { disabled, required, hasError, ...ownProps } =\n useFormFieldProps(rest)\n\n return (\n <SwitchPrimitive.Root\n asChild\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n required={required}\n disabled={disabled}\n data-testid={SWITCH_TEST_ID}\n {...ownProps}\n >\n <BaseButton\n ref={forwardedRef}\n className={classNames(\n styles.Switch,\n styles[`size-${size}`],\n className\n )}\n >\n <SwitchPrimitive.Thumb asChild>\n <span className={styles.SwitchThumb} />\n </SwitchPrimitive.Thumb>\n </BaseButton>\n </SwitchPrimitive.Root>\n )\n }\n)\n"],"names":["SWITCH_TEST_ID","Switch","forwardRef","checked","defaultChecked","onCheckedChange","size","className","rest","forwardedRef","disabled","required","hasError","ownProps","useFormFieldProps","React","createElement","SwitchPrimitive","Object","assign","asChild","BaseButton","ref","classNames","styles","SwitchThumb"],"mappings":";;;;;;;;;AAYO,MAAMA,cAAc,GAAG,gBAAe;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACaC,MAAM,gBAAGC,gBAAU,CAC9B,SAASD,MAAMA,CACb;EACEE,OAAO;AACPC,EAAAA,cAAc,GAAG,KAAK;EACtBC,eAAe;AACfC,EAAAA,IAAI,GAAG,GAAG;EACVC,SAAS;EACT,GAAGC,IAAAA;AACL,CAAC,EACDC,YAAY,EACZ;EACA,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,QAAQ;IAAE,GAAGC,QAAAA;AAAS,GAAC,GACjDC,6BAAiB,CAACN,IAAI,CAAC,CAAA;EAEzB,oBACEO,KAAA,CAAAC,aAAA,CAACC,UAAoB,EAAAC,MAAA,CAAAC,MAAA,CAAA;IACnBC,OAAO,EAAA,IAAA;AACPjB,IAAAA,OAAO,EAAEA,OAAQ;AACjBC,IAAAA,cAAc,EAAEA,cAAe;AAC/BC,IAAAA,eAAe,EAAEA,eAAgB;AACjCM,IAAAA,QAAQ,EAAEA,QAAS;AACnBD,IAAAA,QAAQ,EAAEA,QAAS;IACnB,aAAaV,EAAAA,cAAAA;AAAe,GAAA,EACxBa,QAAQ,CAEZE,eAAAA,KAAA,CAAAC,aAAA,CAACK,qBAAU,EAAA;AACTC,IAAAA,GAAG,EAAEb,YAAa;AAClBF,IAAAA,SAAS,EAAEgB,eAAU,CACnBC,qBAAM,CAACvB,MAAM,EACbuB,qBAAM,
|
|
1
|
+
{"version":3,"file":"Switch.js","sources":["../../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch'\nimport classNames from 'classnames'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { useFormFieldProps } from '~/src/components/FormControl'\n\nimport { type SwitchProps } from './Switch.types'\n\nimport styles from './Switch.module.scss'\n\nexport const SWITCH_TEST_ID = 'bezier-switch'\n\n/**\n * `Switch` is an input component where user can toggle checked state of the element.\n * @example\n * ```tsx\n * <Switch\n * size=\"m\"\n * checked\n * />\n * ```\n */\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n function Switch(\n {\n checked,\n defaultChecked = false,\n onCheckedChange,\n size = 'm',\n className,\n ...rest\n },\n forwardedRef\n ) {\n const { disabled, required, hasError, ...ownProps } =\n useFormFieldProps(rest)\n\n return (\n <SwitchPrimitive.Root\n asChild\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n required={required}\n disabled={disabled}\n data-testid={SWITCH_TEST_ID}\n {...ownProps}\n >\n <BaseButton\n ref={forwardedRef}\n className={classNames(\n styles.Switch,\n styles[`size-${size}`],\n className\n )}\n >\n <SwitchPrimitive.Thumb asChild>\n <span className={styles.SwitchThumb} />\n </SwitchPrimitive.Thumb>\n </BaseButton>\n </SwitchPrimitive.Root>\n )\n }\n)\n"],"names":["SWITCH_TEST_ID","Switch","forwardRef","checked","defaultChecked","onCheckedChange","size","className","rest","forwardedRef","disabled","required","hasError","ownProps","useFormFieldProps","React","createElement","SwitchPrimitive","Object","assign","asChild","BaseButton","ref","classNames","styles","SwitchThumb"],"mappings":";;;;;;;;;AAYO,MAAMA,cAAc,GAAG,gBAAe;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACaC,MAAM,gBAAGC,gBAAU,CAC9B,SAASD,MAAMA,CACb;EACEE,OAAO;AACPC,EAAAA,cAAc,GAAG,KAAK;EACtBC,eAAe;AACfC,EAAAA,IAAI,GAAG,GAAG;EACVC,SAAS;EACT,GAAGC,IAAAA;AACL,CAAC,EACDC,YAAY,EACZ;EACA,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,QAAQ;IAAE,GAAGC,QAAAA;AAAS,GAAC,GACjDC,6BAAiB,CAACN,IAAI,CAAC,CAAA;EAEzB,oBACEO,KAAA,CAAAC,aAAA,CAACC,UAAoB,EAAAC,MAAA,CAAAC,MAAA,CAAA;IACnBC,OAAO,EAAA,IAAA;AACPjB,IAAAA,OAAO,EAAEA,OAAQ;AACjBC,IAAAA,cAAc,EAAEA,cAAe;AAC/BC,IAAAA,eAAe,EAAEA,eAAgB;AACjCM,IAAAA,QAAQ,EAAEA,QAAS;AACnBD,IAAAA,QAAQ,EAAEA,QAAS;IACnB,aAAaV,EAAAA,cAAAA;AAAe,GAAA,EACxBa,QAAQ,CAEZE,eAAAA,KAAA,CAAAC,aAAA,CAACK,qBAAU,EAAA;AACTC,IAAAA,GAAG,EAAEb,YAAa;AAClBF,IAAAA,SAAS,EAAEgB,eAAU,CACnBC,qBAAM,CAACvB,MAAM,EACbuB,qBAAM,CAAC,CAAQlB,KAAAA,EAAAA,IAAI,CAAE,CAAA,CAAC,EACtBC,SACF,CAAA;AAAE,GAAA,eAEFQ,KAAA,CAAAC,aAAA,CAACC,WAAqB,EAAA;IAACG,OAAO,EAAA,IAAA;GAC5BL,eAAAA,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;IAAMT,SAAS,EAAEiB,qBAAM,CAACC,WAAAA;GAAc,CACjB,CACb,CACQ,CAAC,CAAA;AAE3B,CACF;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.js","sources":["../../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from 'react'\n\nimport { OpenInNewIcon } from '@channel.io/bezier-icons'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport * as ToolbarPrimitive from '@radix-ui/react-toolbar'\nimport classNames from 'classnames'\n\nimport { createContext } from '~/src/utils/react'\nimport { isNil } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Button } from '~/src/components/Button'\nimport { Icon } from '~/src/components/Icon'\nimport {\n type TabActionElement,\n type TabActionProps,\n type TabActionsProps,\n type TabContentProps,\n type TabItemProps,\n type TabItemsProps,\n type TabListContextValue,\n type TabListProps,\n type TabSize,\n type TabsProps,\n} from '~/src/components/Tabs/Tabs.types'\nimport { Text } from '~/src/components/Text'\n\nimport styles from './Tabs.module.scss'\n\n/**\n * `Tabs` is a set of layered section of content.\n *\n * `Tabs` is a context of the Tab-related components and gives accessibility properties to Tab-related components.\n * @example\n *\n * ```tsx\n * <Tabs>\n * <TabList>\n * <TabItems>\n * <TabItem />\n * <TabItems />\n * <TabActions>\n * <TabAction />\n * </TabActions>\n * </TabList>\n * <TabContent />\n * </Tabs>\n * ```\n */\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n { className, activationMode = 'automatic', dir, children, ...rest },\n forwardedRef\n) {\n return (\n <TabsPrimitive.Root\n className={classNames(styles.Tabs, className)}\n activationMode={activationMode}\n ref={forwardedRef}\n dir={dir as 'ltr' | 'rtl'}\n {...rest}\n >\n {children}\n </TabsPrimitive.Root>\n )\n})\n\nconst [TabListContextProvider, useTabListContext] =\n createContext<TabListContextValue>({\n size: 'm',\n })\n\n/**\n * `TabList` gives size context to its children and decides the layout of `TabItems` and `TabActions`.\n */\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(\n function TabList({ className, children, size = 'm', ...rest }, forwardedRef) {\n const heightContextValue = useMemo(\n () => ({\n size,\n }),\n [size]\n )\n\n return (\n <TabListContextProvider value={heightContextValue}>\n <div\n className={classNames(\n styles.TabList,\n styles[`size-${size}`],\n className\n )}\n ref={forwardedRef}\n {...rest}\n >\n {children}\n </div>\n </TabListContextProvider>\n )\n }\n)\n\n/**\n * `TabItems` is a flex container which has `TabItem` flex items.\n */\nexport const TabItems = forwardRef<HTMLDivElement, TabItemsProps>(\n function TabItems({ className, children, ...rest }, forwardedRef) {\n return (\n <TabsPrimitive.TabsList\n className={classNames(styles.TabItems, className)}\n ref={forwardedRef}\n {...rest}\n >\n {children}\n </TabsPrimitive.TabsList>\n )\n }\n)\n\nfunction getButtonSizeBy(size: TabSize) {\n return (\n {\n l: 'l',\n m: 'm',\n s: 's',\n } as const\n )[size]\n}\n\n/**\n * `TabItem` is a button that activates its associated content.\n */\nexport const TabItem = forwardRef<HTMLButtonElement, TabItemProps>(\n function TabItem(\n { className, disabled, value, children, ...rest },\n forwardedRef\n ) {\n const { size } = useTabListContext()\n\n if (typeof children !== 'string') {\n return null\n }\n\n return (\n <TabsPrimitive.TabsTrigger\n disabled={disabled}\n value={value}\n asChild\n >\n <Button\n className={classNames(styles.TabItem, className)}\n disabled={disabled}\n text={children}\n size={getButtonSizeBy(size)}\n colorVariant=\"monochrome-light\"\n styleVariant=\"tertiary\"\n ref={forwardedRef}\n {...rest}\n />\n </TabsPrimitive.TabsTrigger>\n )\n }\n)\n\n/**\n * `TabContent` has content associated with `TabItem`.\n */\nexport const TabContent = forwardRef<HTMLDivElement, TabContentProps>(\n function TabContent({ children, value, ...rest }, forwardedRef) {\n return (\n <TabsPrimitive.Content\n value={value}\n ref={forwardedRef}\n {...rest}\n >\n {children}\n </TabsPrimitive.Content>\n )\n }\n)\n\n/**\n * `TabActions` is a flex container which has `TabAction` flex items.\n * It also gives accessibility properties to its children.\n */\nexport const TabActions = forwardRef<HTMLDivElement, TabActionsProps>(\n function TabActions({ className, dir, children, ...rest }, forwardedRef) {\n return (\n <ToolbarPrimitive.Root\n className={classNames(styles.TabActions, className)}\n aria-label=\"More actions\"\n ref={forwardedRef}\n dir={dir as 'ltr' | 'rtl'}\n {...rest}\n >\n {children}\n </ToolbarPrimitive.Root>\n )\n }\n)\n\nfunction getTypoBy(size: TabSize) {\n return (\n {\n l: '14',\n m: '14',\n s: '13',\n } as const\n )[size]\n}\n\nfunction getIconSizeBy(size: TabSize) {\n return (\n {\n l: 's',\n m: 'xs',\n s: 'xs',\n } as const\n )[size]\n}\n\n/**\n * `TabAction` is a button for more action to open a new link or navigate to a different url.\n * If it has `href` props, it should act as a link.\n */\nexport const TabAction = forwardRef<\n TabActionElement<string | undefined>,\n TabActionProps<string | undefined>\n>(function TabAction(\n { className: classNameProp, href, children, onClick, ...rest },\n forwardedRef\n) {\n const { size } = useTabListContext()\n const className = classNames(\n styles.TabAction,\n styles[`size-${size}`],\n classNameProp\n )\n\n return isNil(href) ? (\n <ToolbarPrimitive.Button\n asChild\n className={className}\n onClick={onClick}\n ref={forwardedRef}\n {...rest}\n >\n <BaseButton>\n <Text\n bold\n typo={getTypoBy(size)}\n >\n {children}\n </Text>\n </BaseButton>\n </ToolbarPrimitive.Button>\n ) : (\n <ToolbarPrimitive.Link\n className={className}\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n // @ts-expect-error\n ref={forwardedRef}\n {...rest}\n >\n <Text\n bold\n typo={getTypoBy(size)}\n >\n {children}\n </Text>\n <Icon\n source={OpenInNewIcon}\n size={getIconSizeBy(size)}\n marginLeft={5}\n />\n </ToolbarPrimitive.Link>\n )\n}) as <Link extends string | undefined>(\n props: TabActionProps<Link> & {\n ref?: React.ForwardedRef<TabActionElement<Link>>\n }\n) => JSX.Element\n"],"names":["Tabs","forwardRef","className","activationMode","dir","children","rest","forwardedRef","React","createElement","TabsPrimitive","Object","assign","classNames","styles","ref","TabListContextProvider","useTabListContext","createContext","size","TabList","heightContextValue","useMemo","value","TabItems","getButtonSizeBy","l","m","s","TabItem","disabled","asChild","Button","text","colorVariant","styleVariant","TabContent","TabActions","ToolbarPrimitive","getTypoBy","getIconSizeBy","TabAction","classNameProp","href","onClick","isNil","BaseButton","Text","bold","typo","target","rel","Icon","source","OpenInNewIcon","marginLeft"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tabs.js","sources":["../../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from 'react'\n\nimport { OpenInNewIcon } from '@channel.io/bezier-icons'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport * as ToolbarPrimitive from '@radix-ui/react-toolbar'\nimport classNames from 'classnames'\n\nimport { createContext } from '~/src/utils/react'\nimport { isNil } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Button } from '~/src/components/Button'\nimport { Icon } from '~/src/components/Icon'\nimport {\n type TabActionElement,\n type TabActionProps,\n type TabActionsProps,\n type TabContentProps,\n type TabItemProps,\n type TabItemsProps,\n type TabListContextValue,\n type TabListProps,\n type TabSize,\n type TabsProps,\n} from '~/src/components/Tabs/Tabs.types'\nimport { Text } from '~/src/components/Text'\n\nimport styles from './Tabs.module.scss'\n\n/**\n * `Tabs` is a set of layered section of content.\n *\n * `Tabs` is a context of the Tab-related components and gives accessibility properties to Tab-related components.\n * @example\n *\n * ```tsx\n * <Tabs>\n * <TabList>\n * <TabItems>\n * <TabItem />\n * <TabItems />\n * <TabActions>\n * <TabAction />\n * </TabActions>\n * </TabList>\n * <TabContent />\n * </Tabs>\n * ```\n */\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n { className, activationMode = 'automatic', dir, children, ...rest },\n forwardedRef\n) {\n return (\n <TabsPrimitive.Root\n className={classNames(styles.Tabs, className)}\n activationMode={activationMode}\n ref={forwardedRef}\n dir={dir as 'ltr' | 'rtl'}\n {...rest}\n >\n {children}\n </TabsPrimitive.Root>\n )\n})\n\nconst [TabListContextProvider, useTabListContext] =\n createContext<TabListContextValue>({\n size: 'm',\n })\n\n/**\n * `TabList` gives size context to its children and decides the layout of `TabItems` and `TabActions`.\n */\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(\n function TabList({ className, children, size = 'm', ...rest }, forwardedRef) {\n const heightContextValue = useMemo(\n () => ({\n size,\n }),\n [size]\n )\n\n return (\n <TabListContextProvider value={heightContextValue}>\n <div\n className={classNames(\n styles.TabList,\n styles[`size-${size}`],\n className\n )}\n ref={forwardedRef}\n {...rest}\n >\n {children}\n </div>\n </TabListContextProvider>\n )\n }\n)\n\n/**\n * `TabItems` is a flex container which has `TabItem` flex items.\n */\nexport const TabItems = forwardRef<HTMLDivElement, TabItemsProps>(\n function TabItems({ className, children, ...rest }, forwardedRef) {\n return (\n <TabsPrimitive.TabsList\n className={classNames(styles.TabItems, className)}\n ref={forwardedRef}\n {...rest}\n >\n {children}\n </TabsPrimitive.TabsList>\n )\n }\n)\n\nfunction getButtonSizeBy(size: TabSize) {\n return (\n {\n l: 'l',\n m: 'm',\n s: 's',\n } as const\n )[size]\n}\n\n/**\n * `TabItem` is a button that activates its associated content.\n */\nexport const TabItem = forwardRef<HTMLButtonElement, TabItemProps>(\n function TabItem(\n { className, disabled, value, children, ...rest },\n forwardedRef\n ) {\n const { size } = useTabListContext()\n\n if (typeof children !== 'string') {\n return null\n }\n\n return (\n <TabsPrimitive.TabsTrigger\n disabled={disabled}\n value={value}\n asChild\n >\n <Button\n className={classNames(styles.TabItem, className)}\n disabled={disabled}\n text={children}\n size={getButtonSizeBy(size)}\n colorVariant=\"monochrome-light\"\n styleVariant=\"tertiary\"\n ref={forwardedRef}\n {...rest}\n />\n </TabsPrimitive.TabsTrigger>\n )\n }\n)\n\n/**\n * `TabContent` has content associated with `TabItem`.\n */\nexport const TabContent = forwardRef<HTMLDivElement, TabContentProps>(\n function TabContent({ children, value, ...rest }, forwardedRef) {\n return (\n <TabsPrimitive.Content\n value={value}\n ref={forwardedRef}\n {...rest}\n >\n {children}\n </TabsPrimitive.Content>\n )\n }\n)\n\n/**\n * `TabActions` is a flex container which has `TabAction` flex items.\n * It also gives accessibility properties to its children.\n */\nexport const TabActions = forwardRef<HTMLDivElement, TabActionsProps>(\n function TabActions({ className, dir, children, ...rest }, forwardedRef) {\n return (\n <ToolbarPrimitive.Root\n className={classNames(styles.TabActions, className)}\n aria-label=\"More actions\"\n ref={forwardedRef}\n dir={dir as 'ltr' | 'rtl'}\n {...rest}\n >\n {children}\n </ToolbarPrimitive.Root>\n )\n }\n)\n\nfunction getTypoBy(size: TabSize) {\n return (\n {\n l: '14',\n m: '14',\n s: '13',\n } as const\n )[size]\n}\n\nfunction getIconSizeBy(size: TabSize) {\n return (\n {\n l: 's',\n m: 'xs',\n s: 'xs',\n } as const\n )[size]\n}\n\n/**\n * `TabAction` is a button for more action to open a new link or navigate to a different url.\n * If it has `href` props, it should act as a link.\n */\nexport const TabAction = forwardRef<\n TabActionElement<string | undefined>,\n TabActionProps<string | undefined>\n>(function TabAction(\n { className: classNameProp, href, children, onClick, ...rest },\n forwardedRef\n) {\n const { size } = useTabListContext()\n const className = classNames(\n styles.TabAction,\n styles[`size-${size}`],\n classNameProp\n )\n\n return isNil(href) ? (\n <ToolbarPrimitive.Button\n asChild\n className={className}\n onClick={onClick}\n ref={forwardedRef}\n {...rest}\n >\n <BaseButton>\n <Text\n bold\n typo={getTypoBy(size)}\n >\n {children}\n </Text>\n </BaseButton>\n </ToolbarPrimitive.Button>\n ) : (\n <ToolbarPrimitive.Link\n className={className}\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n // @ts-expect-error\n ref={forwardedRef}\n {...rest}\n >\n <Text\n bold\n typo={getTypoBy(size)}\n >\n {children}\n </Text>\n <Icon\n source={OpenInNewIcon}\n size={getIconSizeBy(size)}\n marginLeft={5}\n />\n </ToolbarPrimitive.Link>\n )\n}) as <Link extends string | undefined>(\n props: TabActionProps<Link> & {\n ref?: React.ForwardedRef<TabActionElement<Link>>\n }\n) => JSX.Element\n"],"names":["Tabs","forwardRef","className","activationMode","dir","children","rest","forwardedRef","React","createElement","TabsPrimitive","Object","assign","classNames","styles","ref","TabListContextProvider","useTabListContext","createContext","size","TabList","heightContextValue","useMemo","value","TabItems","getButtonSizeBy","l","m","s","TabItem","disabled","asChild","Button","text","colorVariant","styleVariant","TabContent","TabActions","ToolbarPrimitive","getTypoBy","getIconSizeBy","TabAction","classNameProp","href","onClick","isNil","BaseButton","Text","bold","typo","target","rel","Icon","source","OpenInNewIcon","marginLeft"],"mappings":";;;;;;;;;;;;;;;AA6BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;MAEaA,IAAI,gBAAGC,gBAAU,CAA4B,SAASD,IAAIA,CACrE;EAAEE,SAAS;AAAEC,EAAAA,cAAc,GAAG,WAAW;EAAEC,GAAG;EAAEC,QAAQ;EAAE,GAAGC,IAAAA;AAAK,CAAC,EACnEC,YAAY,EACZ;EACA,oBACEC,KAAA,CAAAC,aAAA,CAACC,UAAkB,EAAAC,MAAA,CAAAC,MAAA,CAAA;IACjBV,SAAS,EAAEW,eAAU,CAACC,mBAAM,CAACd,IAAI,EAAEE,SAAS,CAAE;AAC9CC,IAAAA,cAAc,EAAEA,cAAe;AAC/BY,IAAAA,GAAG,EAAER,YAAa;AAClBH,IAAAA,GAAG,EAAEA,GAAAA;GACDE,EAAAA,IAAI,CAEPD,EAAAA,QACiB,CAAC,CAAA;AAEzB,CAAC,EAAC;AAEF,MAAM,CAACW,sBAAsB,EAAEC,iBAAiB,CAAC,GAC/CC,mBAAa,CAAsB;AACjCC,EAAAA,IAAI,EAAE,GAAA;AACR,CAAC,CAAC,CAAA;;AAEJ;AACA;AACA;MACaC,OAAO,gBAAGnB,gBAAU,CAC/B,SAASmB,OAAOA,CAAC;EAAElB,SAAS;EAAEG,QAAQ;AAAEc,EAAAA,IAAI,GAAG,GAAG;EAAE,GAAGb,IAAAA;AAAK,CAAC,EAAEC,YAAY,EAAE;AAC3E,EAAA,MAAMc,kBAAkB,GAAGC,aAAO,CAChC,OAAO;AACLH,IAAAA,IAAAA;AACF,GAAC,CAAC,EACF,CAACA,IAAI,CACP,CAAC,CAAA;AAED,EAAA,oBACEX,KAAA,CAAAC,aAAA,CAACO,sBAAsB,EAAA;AAACO,IAAAA,KAAK,EAAEF,kBAAAA;AAAmB,GAAA,eAChDb,KAAA,CAAAC,aAAA,CAAAE,KAAAA,EAAAA,MAAA,CAAAC,MAAA,CAAA;AACEV,IAAAA,SAAS,EAAEW,eAAU,CACnBC,mBAAM,CAACM,OAAO,EACdN,mBAAM,CAAC,QAAQK,IAAI,CAAA,CAAE,CAAC,EACtBjB,SACF,CAAE;AACFa,IAAAA,GAAG,EAAER,YAAAA;AAAa,GAAA,EACdD,IAAI,CAAA,EAEPD,QACE,CACiB,CAAC,CAAA;AAE7B,CACF,EAAC;;AAED;AACA;AACA;MACamB,QAAQ,gBAAGvB,gBAAU,CAChC,SAASuB,QAAQA,CAAC;EAAEtB,SAAS;EAAEG,QAAQ;EAAE,GAAGC,IAAAA;AAAK,CAAC,EAAEC,YAAY,EAAE;EAChE,oBACEC,KAAA,CAAAC,aAAA,CAACC,cAAsB,EAAAC,MAAA,CAAAC,MAAA,CAAA;IACrBV,SAAS,EAAEW,eAAU,CAACC,mBAAM,CAACU,QAAQ,EAAEtB,SAAS,CAAE;AAClDa,IAAAA,GAAG,EAAER,YAAAA;GACDD,EAAAA,IAAI,CAEPD,EAAAA,QACqB,CAAC,CAAA;AAE7B,CACF,EAAC;AAED,SAASoB,eAAeA,CAACN,IAAa,EAAE;EACtC,OACE;AACEO,IAAAA,CAAC,EAAE,GAAG;AACNC,IAAAA,CAAC,EAAE,GAAG;AACNC,IAAAA,CAAC,EAAE,GAAA;GACJ,CACDT,IAAI,CAAC,CAAA;AACT,CAAA;;AAEA;AACA;AACA;MACaU,OAAO,gBAAG5B,gBAAU,CAC/B,SAAS4B,OAAOA,CACd;EAAE3B,SAAS;EAAE4B,QAAQ;EAAEP,KAAK;EAAElB,QAAQ;EAAE,GAAGC,IAAAA;AAAK,CAAC,EACjDC,YAAY,EACZ;EACA,MAAM;AAAEY,IAAAA,IAAAA;GAAM,GAAGF,iBAAiB,EAAE,CAAA;AAEpC,EAAA,IAAI,OAAOZ,QAAQ,KAAK,QAAQ,EAAE;AAChC,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,oBACEG,KAAA,CAAAC,aAAA,CAACC,iBAAyB,EAAA;AACxBoB,IAAAA,QAAQ,EAAEA,QAAS;AACnBP,IAAAA,KAAK,EAAEA,KAAM;IACbQ,OAAO,EAAA,IAAA;GAEPvB,eAAAA,KAAA,CAAAC,aAAA,CAACuB,aAAM,EAAArB,MAAA,CAAAC,MAAA,CAAA;IACLV,SAAS,EAAEW,eAAU,CAACC,mBAAM,CAACe,OAAO,EAAE3B,SAAS,CAAE;AACjD4B,IAAAA,QAAQ,EAAEA,QAAS;AACnBG,IAAAA,IAAI,EAAE5B,QAAS;AACfc,IAAAA,IAAI,EAAEM,eAAe,CAACN,IAAI,CAAE;AAC5Be,IAAAA,YAAY,EAAC,kBAAkB;AAC/BC,IAAAA,YAAY,EAAC,UAAU;AACvBpB,IAAAA,GAAG,EAAER,YAAAA;GACDD,EAAAA,IAAI,CACT,CACwB,CAAC,CAAA;AAEhC,CACF,EAAC;;AAED;AACA;AACA;MACa8B,UAAU,gBAAGnC,gBAAU,CAClC,SAASmC,UAAUA,CAAC;EAAE/B,QAAQ;EAAEkB,KAAK;EAAE,GAAGjB,IAAAA;AAAK,CAAC,EAAEC,YAAY,EAAE;EAC9D,oBACEC,KAAA,CAAAC,aAAA,CAACC,aAAqB,EAAAC,MAAA,CAAAC,MAAA,CAAA;AACpBW,IAAAA,KAAK,EAAEA,KAAM;AACbR,IAAAA,GAAG,EAAER,YAAAA;GACDD,EAAAA,IAAI,CAEPD,EAAAA,QACoB,CAAC,CAAA;AAE5B,CACF,EAAC;;AAED;AACA;AACA;AACA;MACagC,UAAU,gBAAGpC,gBAAU,CAClC,SAASoC,UAAUA,CAAC;EAAEnC,SAAS;EAAEE,GAAG;EAAEC,QAAQ;EAAE,GAAGC,IAAAA;AAAK,CAAC,EAAEC,YAAY,EAAE;EACvE,oBACEC,KAAA,CAAAC,aAAA,CAAC6B,YAAqB,EAAA3B,MAAA,CAAAC,MAAA,CAAA;IACpBV,SAAS,EAAEW,eAAU,CAACC,mBAAM,CAACuB,UAAU,EAAEnC,SAAS,CAAE;AACpD,IAAA,YAAA,EAAW,cAAc;AACzBa,IAAAA,GAAG,EAAER,YAAa;AAClBH,IAAAA,GAAG,EAAEA,GAAAA;GACDE,EAAAA,IAAI,CAEPD,EAAAA,QACoB,CAAC,CAAA;AAE5B,CACF,EAAC;AAED,SAASkC,SAASA,CAACpB,IAAa,EAAE;EAChC,OACE;AACEO,IAAAA,CAAC,EAAE,IAAI;AACPC,IAAAA,CAAC,EAAE,IAAI;AACPC,IAAAA,CAAC,EAAE,IAAA;GACJ,CACDT,IAAI,CAAC,CAAA;AACT,CAAA;AAEA,SAASqB,aAAaA,CAACrB,IAAa,EAAE;EACpC,OACE;AACEO,IAAAA,CAAC,EAAE,GAAG;AACNC,IAAAA,CAAC,EAAE,IAAI;AACPC,IAAAA,CAAC,EAAE,IAAA;GACJ,CACDT,IAAI,CAAC,CAAA;AACT,CAAA;;AAEA;AACA;AACA;AACA;MACasB,SAAS,gBAAGxC,gBAAU,CAGjC,SAASwC,SAASA,CAClB;AAAEvC,EAAAA,SAAS,EAAEwC,aAAa;EAAEC,IAAI;EAAEtC,QAAQ;EAAEuC,OAAO;EAAE,GAAGtC,IAAAA;AAAK,CAAC,EAC9DC,YAAY,EACZ;EACA,MAAM;AAAEY,IAAAA,IAAAA;GAAM,GAAGF,iBAAiB,EAAE,CAAA;AACpC,EAAA,MAAMf,SAAS,GAAGW,eAAU,CAC1BC,mBAAM,CAAC2B,SAAS,EAChB3B,mBAAM,CAAC,QAAQK,IAAI,CAAA,CAAE,CAAC,EACtBuB,aACF,CAAC,CAAA;AAED,EAAA,OAAOG,UAAK,CAACF,IAAI,CAAC,gBAChBnC,KAAA,CAAAC,aAAA,CAAC6B,cAAuB,EAAA3B,MAAA,CAAAC,MAAA,CAAA;IACtBmB,OAAO,EAAA,IAAA;AACP7B,IAAAA,SAAS,EAAEA,SAAU;AACrB0C,IAAAA,OAAO,EAAEA,OAAQ;AACjB7B,IAAAA,GAAG,EAAER,YAAAA;AAAa,GAAA,EACdD,IAAI,CAAA,eAERE,KAAA,CAAAC,aAAA,CAACqC,qBAAU,EAAA,IAAA,eACTtC,KAAA,CAAAC,aAAA,CAACsC,SAAI,EAAA;IACHC,IAAI,EAAA,IAAA;IACJC,IAAI,EAAEV,SAAS,CAACpB,IAAI,CAAA;AAAE,GAAA,EAErBd,QACG,CACI,CACW,CAAC,gBAE1BG,KAAA,CAAAC,aAAA,CAAC6B,YAAqB,EAAA3B,MAAA,CAAAC,MAAA,CAAA;AACpBV,IAAAA,SAAS,EAAEA,SAAU;AACrByC,IAAAA,IAAI,EAAEA,IAAK;AACXO,IAAAA,MAAM,EAAC,QAAQ;AACfC,IAAAA,GAAG,EAAC,qBAAA;AACJ;AAAA;AACApC,IAAAA,GAAG,EAAER,YAAAA;AAAa,GAAA,EACdD,IAAI,CAERE,eAAAA,KAAA,CAAAC,aAAA,CAACsC,SAAI,EAAA;IACHC,IAAI,EAAA,IAAA;IACJC,IAAI,EAAEV,SAAS,CAACpB,IAAI,CAAA;AAAE,GAAA,EAErBd,QACG,CAAC,eACPG,KAAA,CAAAC,aAAA,CAAC2C,SAAI,EAAA;AACHC,IAAAA,MAAM,EAAEC,yBAAc;AACtBnC,IAAAA,IAAI,EAAEqB,aAAa,CAACrB,IAAI,CAAE;AAC1BoC,IAAAA,UAAU,EAAE,CAAA;AAAE,GACf,CACoB,CACxB,CAAA;AACH,CAAC;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Text.js","sources":["../../../../src/components/Text/Text.tsx"],"sourcesContent":["import { createElement, forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport { getMarginStyles, splitByMarginProps } from '~/src/types/props-helpers'\nimport { tokenCssVar } from '~/src/utils/style'\nimport { isNumber } from '~/src/utils/type'\n\nimport { type TextProps } from './Text.types'\n\nimport styles from './Text.module.scss'\n\n/**\n * `Text` is a component for representing the typography of a design system.\n * @example\n *\n * ```tsx\n * <Text\n * typo=\"15\"\n * color=\"txt-black-darkest\"\n * >\n * Hello, Channel!\n * </Text>\n * ```\n */\nexport const Text = forwardRef<HTMLElement, TextProps>(\n function Text(props, forwardedRef) {\n const [marginProps, marginRest] = splitByMarginProps(props)\n const marginStyles = getMarginStyles(marginProps)\n\n const {\n children,\n style,\n className,\n as = 'span',\n typo = '15',\n color,\n bold,\n italic,\n truncated,\n align,\n ...rest\n } = marginRest\n const isMultiLineTruncated = isNumber(truncated) && truncated >= 1\n\n return createElement(\n as,\n {\n ref: forwardedRef,\n style: {\n '--b-text-color': tokenCssVar(color),\n '--b-text-line-clamp': isMultiLineTruncated ? truncated : undefined,\n ...marginStyles.style,\n ...style,\n },\n className: classNames(\n styles.Text,\n styles[`typo-${typo}`],\n bold && styles.bold,\n italic && styles.italic,\n truncated === true\n ? styles.truncated\n : isMultiLineTruncated && styles['multi-line-truncated'],\n align && styles[`align-${align}`],\n marginStyles.className,\n className\n ),\n 'data-testid': 'bezier-text',\n ...rest,\n },\n children\n )\n }\n)\n"],"names":["Text","forwardRef","props","forwardedRef","marginProps","marginRest","splitByMarginProps","marginStyles","getMarginStyles","children","style","className","as","typo","color","bold","italic","truncated","align","rest","isMultiLineTruncated","isNumber","createElement","ref","tokenCssVar","undefined","classNames","styles"],"mappings":";;;;;;;;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,IAAI,gBAAGC,gBAAU,CAC5B,SAASD,IAAIA,CAACE,KAAK,EAAEC,YAAY,EAAE;EACjC,MAAM,CAACC,WAAW,EAAEC,UAAU,CAAC,GAAGC,+BAAkB,CAACJ,KAAK,CAAC,CAAA;AAC3D,EAAA,MAAMK,YAAY,GAAGC,4BAAe,CAACJ,WAAW,CAAC,CAAA;EAEjD,MAAM;IACJK,QAAQ;WACRC,OAAK;IACLC,SAAS;AACTC,IAAAA,EAAE,GAAG,MAAM;AACXC,IAAAA,IAAI,GAAG,IAAI;IACXC,KAAK;IACLC,IAAI;IACJC,MAAM;IACNC,SAAS;IACTC,KAAK;IACL,GAAGC,IAAAA;AACL,GAAC,GAAGd,UAAU,CAAA;EACd,MAAMe,oBAAoB,GAAGC,aAAQ,CAACJ,SAAS,CAAC,IAAIA,SAAS,IAAI,CAAC,CAAA;EAElE,oBAAOK,mBAAa,CAClBV,EAAE,EACF;AACEW,IAAAA,GAAG,EAAEpB,YAAY;AACjBO,IAAAA,KAAK,EAAE;AACL,MAAA,gBAAgB,EAAEc,iBAAW,CAACV,KAAK,CAAC;AACpC,MAAA,qBAAqB,EAAEM,oBAAoB,GAAGH,SAAS,GAAGQ,SAAS;MACnE,GAAGlB,YAAY,CAACG,KAAK;MACrB,GAAGA,OAAAA;KACJ;IACDC,SAAS,EAAEe,aAAU,CACnBC,mBAAM,CAAC3B,IAAI,EACX2B,mBAAM,
|
|
1
|
+
{"version":3,"file":"Text.js","sources":["../../../../src/components/Text/Text.tsx"],"sourcesContent":["import { createElement, forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport { getMarginStyles, splitByMarginProps } from '~/src/types/props-helpers'\nimport { tokenCssVar } from '~/src/utils/style'\nimport { isNumber } from '~/src/utils/type'\n\nimport { type TextProps } from './Text.types'\n\nimport styles from './Text.module.scss'\n\n/**\n * `Text` is a component for representing the typography of a design system.\n * @example\n *\n * ```tsx\n * <Text\n * typo=\"15\"\n * color=\"txt-black-darkest\"\n * >\n * Hello, Channel!\n * </Text>\n * ```\n */\nexport const Text = forwardRef<HTMLElement, TextProps>(\n function Text(props, forwardedRef) {\n const [marginProps, marginRest] = splitByMarginProps(props)\n const marginStyles = getMarginStyles(marginProps)\n\n const {\n children,\n style,\n className,\n as = 'span',\n typo = '15',\n color,\n bold,\n italic,\n truncated,\n align,\n ...rest\n } = marginRest\n const isMultiLineTruncated = isNumber(truncated) && truncated >= 1\n\n return createElement(\n as,\n {\n ref: forwardedRef,\n style: {\n '--b-text-color': tokenCssVar(color),\n '--b-text-line-clamp': isMultiLineTruncated ? truncated : undefined,\n ...marginStyles.style,\n ...style,\n },\n className: classNames(\n styles.Text,\n styles[`typo-${typo}`],\n bold && styles.bold,\n italic && styles.italic,\n truncated === true\n ? styles.truncated\n : isMultiLineTruncated && styles['multi-line-truncated'],\n align && styles[`align-${align}`],\n marginStyles.className,\n className\n ),\n 'data-testid': 'bezier-text',\n ...rest,\n },\n children\n )\n }\n)\n"],"names":["Text","forwardRef","props","forwardedRef","marginProps","marginRest","splitByMarginProps","marginStyles","getMarginStyles","children","style","className","as","typo","color","bold","italic","truncated","align","rest","isMultiLineTruncated","isNumber","createElement","ref","tokenCssVar","undefined","classNames","styles"],"mappings":";;;;;;;;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,IAAI,gBAAGC,gBAAU,CAC5B,SAASD,IAAIA,CAACE,KAAK,EAAEC,YAAY,EAAE;EACjC,MAAM,CAACC,WAAW,EAAEC,UAAU,CAAC,GAAGC,+BAAkB,CAACJ,KAAK,CAAC,CAAA;AAC3D,EAAA,MAAMK,YAAY,GAAGC,4BAAe,CAACJ,WAAW,CAAC,CAAA;EAEjD,MAAM;IACJK,QAAQ;WACRC,OAAK;IACLC,SAAS;AACTC,IAAAA,EAAE,GAAG,MAAM;AACXC,IAAAA,IAAI,GAAG,IAAI;IACXC,KAAK;IACLC,IAAI;IACJC,MAAM;IACNC,SAAS;IACTC,KAAK;IACL,GAAGC,IAAAA;AACL,GAAC,GAAGd,UAAU,CAAA;EACd,MAAMe,oBAAoB,GAAGC,aAAQ,CAACJ,SAAS,CAAC,IAAIA,SAAS,IAAI,CAAC,CAAA;EAElE,oBAAOK,mBAAa,CAClBV,EAAE,EACF;AACEW,IAAAA,GAAG,EAAEpB,YAAY;AACjBO,IAAAA,KAAK,EAAE;AACL,MAAA,gBAAgB,EAAEc,iBAAW,CAACV,KAAK,CAAC;AACpC,MAAA,qBAAqB,EAAEM,oBAAoB,GAAGH,SAAS,GAAGQ,SAAS;MACnE,GAAGlB,YAAY,CAACG,KAAK;MACrB,GAAGA,OAAAA;KACJ;IACDC,SAAS,EAAEe,aAAU,CACnBC,mBAAM,CAAC3B,IAAI,EACX2B,mBAAM,CAAC,CAAA,KAAA,EAAQd,IAAI,CAAA,CAAE,CAAC,EACtBE,IAAI,IAAIY,mBAAM,CAACZ,IAAI,EACnBC,MAAM,IAAIW,mBAAM,CAACX,MAAM,EACvBC,SAAS,KAAK,IAAI,GACdU,mBAAM,CAACV,SAAS,GAChBG,oBAAoB,IAAIO,mBAAM,CAAC,sBAAsB,CAAC,EAC1DT,KAAK,IAAIS,mBAAM,CAAC,CAAST,MAAAA,EAAAA,KAAK,CAAE,CAAA,CAAC,EACjCX,YAAY,CAACI,SAAS,EACtBA,SACF,CAAC;AACD,IAAA,aAAa,EAAE,aAAa;IAC5B,GAAGQ,IAAAA;GACJ,EACDV,QACF,CAAC,CAAA;AACH,CACF;;;;"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var index = require('../../node_modules/classnames/index.js');
|
|
5
5
|
var reactTextareaAutosize_esm = require('../../node_modules/react-textarea-autosize/dist/react-textarea-autosize.esm.js');
|
|
6
|
+
var useIsomorphicLayoutEffect = require('../../hooks/useIsomorphicLayoutEffect.js');
|
|
6
7
|
var useKeyboardActionLockerWhileComposing = require('../../hooks/useKeyboardActionLockerWhileComposing.js');
|
|
7
8
|
var useMergeRefs = require('../../hooks/useMergeRefs.js');
|
|
8
9
|
var TextArea_module = require('./TextArea.module.scss.js');
|
|
@@ -35,7 +36,7 @@ const TextArea = /*#__PURE__*/React.forwardRef(function TextArea({
|
|
|
35
36
|
onKeyDown,
|
|
36
37
|
onKeyUp
|
|
37
38
|
});
|
|
38
|
-
|
|
39
|
+
useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(function initialAutoFocus() {
|
|
39
40
|
function setSelectionToEnd() {
|
|
40
41
|
inputRef.current?.setSelectionRange(inputRef.current?.value.length, inputRef.current?.value.length);
|
|
41
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextArea.js","sources":["../../../../src/components/TextArea/TextArea.tsx"],"sourcesContent":["import React, { forwardRef,
|
|
1
|
+
{"version":3,"file":"TextArea.js","sources":["../../../../src/components/TextArea/TextArea.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react'\n\nimport classNames from 'classnames'\nimport TextareaAutosize from 'react-textarea-autosize'\n\nimport { useIsomorphicLayoutEffect } from '~/src/hooks/useIsomorphicLayoutEffect'\nimport {\n COMMON_IME_CONTROL_KEYS,\n useKeyboardActionLockerWhileComposing,\n} from '~/src/hooks/useKeyboardActionLockerWhileComposing'\nimport useMergeRefs from '~/src/hooks/useMergeRefs'\n\nimport { useFormFieldProps } from '~/src/components/FormControl'\n\nimport type { TextAreaProps } from './TextArea.types'\n\nimport styles from './TextArea.module.scss'\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n function TextArea(\n {\n style,\n className,\n minRows = 6,\n maxRows = 6,\n autoFocus = false,\n value = '',\n onKeyDown,\n onKeyUp,\n ...rest\n },\n forwardedRef\n ) {\n const { disabled, readOnly, hasError, ...ownProps } =\n useFormFieldProps(rest)\n\n const inputRef = useRef<HTMLTextAreaElement | null>(null)\n const mergedInputRef = useMergeRefs(inputRef, forwardedRef)\n\n const { handleKeyDown, handleKeyUp } =\n useKeyboardActionLockerWhileComposing({\n keysToLock: COMMON_IME_CONTROL_KEYS,\n onKeyDown,\n onKeyUp,\n })\n\n useIsomorphicLayoutEffect(function initialAutoFocus() {\n function setSelectionToEnd() {\n inputRef.current?.setSelectionRange(\n inputRef.current?.value.length,\n inputRef.current?.value.length\n )\n }\n\n if (autoFocus) {\n inputRef.current?.focus()\n setSelectionToEnd()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return (\n <TextareaAutosize\n {...ownProps}\n style={style}\n className={classNames(styles.TextArea, className)}\n ref={mergedInputRef}\n value={value}\n disabled={disabled}\n readOnly={readOnly}\n maxRows={maxRows}\n minRows={minRows}\n data-testid=\"bezier-text-area\"\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n />\n )\n }\n)\n"],"names":["TextArea","forwardRef","style","className","minRows","maxRows","autoFocus","value","onKeyDown","onKeyUp","rest","forwardedRef","disabled","readOnly","hasError","ownProps","useFormFieldProps","inputRef","useRef","mergedInputRef","useMergeRefs","handleKeyDown","handleKeyUp","useKeyboardActionLockerWhileComposing","keysToLock","COMMON_IME_CONTROL_KEYS","useIsomorphicLayoutEffect","initialAutoFocus","setSelectionToEnd","current","setSelectionRange","length","focus","React","createElement","TextareaAutosize","Object","assign","classNames","styles","ref"],"mappings":";;;;;;;;;;;MAkBaA,QAAQ,gBAAGC,gBAAU,CAChC,SAASD,QAAQA,CACf;EACEE,KAAK;EACLC,SAAS;AACTC,EAAAA,OAAO,GAAG,CAAC;AACXC,EAAAA,OAAO,GAAG,CAAC;AACXC,EAAAA,SAAS,GAAG,KAAK;AACjBC,EAAAA,KAAK,GAAG,EAAE;EACVC,SAAS;EACTC,OAAO;EACP,GAAGC,IAAAA;AACL,CAAC,EACDC,YAAY,EACZ;EACA,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,QAAQ;IAAE,GAAGC,QAAAA;AAAS,GAAC,GACjDC,6BAAiB,CAACN,IAAI,CAAC,CAAA;AAEzB,EAAA,MAAMO,QAAQ,GAAGC,YAAM,CAA6B,IAAI,CAAC,CAAA;AACzD,EAAA,MAAMC,cAAc,GAAGC,oBAAY,CAACH,QAAQ,EAAEN,YAAY,CAAC,CAAA;EAE3D,MAAM;IAAEU,aAAa;AAAEC,IAAAA,WAAAA;GAAa,GAClCC,2EAAqC,CAAC;AACpCC,IAAAA,UAAU,EAAEC,6DAAuB;IACnCjB,SAAS;AACTC,IAAAA,OAAAA;AACF,GAAC,CAAC,CAAA;AAEJiB,EAAAA,mDAAyB,CAAC,SAASC,gBAAgBA,GAAG;IACpD,SAASC,iBAAiBA,GAAG;MAC3BX,QAAQ,CAACY,OAAO,EAAEC,iBAAiB,CACjCb,QAAQ,CAACY,OAAO,EAAEtB,KAAK,CAACwB,MAAM,EAC9Bd,QAAQ,CAACY,OAAO,EAAEtB,KAAK,CAACwB,MAC1B,CAAC,CAAA;AACH,KAAA;AAEA,IAAA,IAAIzB,SAAS,EAAE;AACbW,MAAAA,QAAQ,CAACY,OAAO,EAAEG,KAAK,EAAE,CAAA;AACzBJ,MAAAA,iBAAiB,EAAE,CAAA;AACrB,KAAA;AACA;GACD,EAAE,EAAE,CAAC,CAAA;EAEN,oBACEK,KAAA,CAAAC,aAAA,CAACC,iCAAgB,EAAAC,MAAA,CAAAC,MAAA,CAAA,EAAA,EACXtB,QAAQ,EAAA;AACZb,IAAAA,KAAK,EAAEA,KAAM;IACbC,SAAS,EAAEmC,aAAU,CAACC,uBAAM,CAACvC,QAAQ,EAAEG,SAAS,CAAE;AAClDqC,IAAAA,GAAG,EAAErB,cAAe;AACpBZ,IAAAA,KAAK,EAAEA,KAAM;AACbK,IAAAA,QAAQ,EAAEA,QAAS;AACnBC,IAAAA,QAAQ,EAAEA,QAAS;AACnBR,IAAAA,OAAO,EAAEA,OAAQ;AACjBD,IAAAA,OAAO,EAAEA,OAAQ;AACjB,IAAA,aAAA,EAAY,kBAAkB;AAC9BI,IAAAA,SAAS,EAAEa,aAAc;AACzBZ,IAAAA,OAAO,EAAEa,WAAAA;AAAY,GAAA,CACtB,CAAC,CAAA;AAEN,CACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextField.js","sources":["../../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react'\n\nimport { CancelCircleFilledIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\nimport { v4 as uuid } from 'uuid'\n\nimport {\n COMMON_IME_CONTROL_KEYS,\n useKeyboardActionLockerWhileComposing,\n} from '~/src/hooks/useKeyboardActionLockerWhileComposing'\nimport { type FormFieldSize } from '~/src/types/props'\nimport { getFormFieldSizeClassName } from '~/src/types/props-helpers'\nimport { toString } from '~/src/utils/string'\nimport { isArray, isEmpty, isNil } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { useFormFieldProps } from '~/src/components/FormControl'\nimport { Icon } from '~/src/components/Icon'\nimport { useWindow } from '~/src/components/WindowProvider'\n\nimport {\n type SelectionRangeDirections,\n type TextFieldItemProps,\n type TextFieldProps,\n type TextFieldRef,\n} from './TextField.types'\n\nimport styles from './TextField.module.scss'\n\nexport const TEXT_INPUT_TEST_ID = 'bezier-text-input'\nexport const TEXT_INPUT_CLEAR_ICON_TEST_ID = 'bezier-text-input-clear-icon'\n\n/**\n * FIXME: This mapping constant was defined for UI consistency,\n * and it should be removed with size attribute\n */\nconst INPUT_LENGTH_BY_SIZE: Record<FormFieldSize, number> = {\n xs: 28,\n m: 36,\n l: 44,\n xl: 54,\n}\n\nfunction TextFieldLeftContent({\n children,\n wrapperStyle,\n wrapperClassName,\n withoutWrapper,\n}: {\n children: TextFieldProps['leftContent']\n wrapperStyle: TextFieldProps['leftWrapperStyle']\n wrapperClassName: TextFieldProps['leftWrapperClassName']\n withoutWrapper: TextFieldProps['withoutLeftContentWrapper']\n}) {\n if (isNil(children)) {\n return null\n }\n\n const Content = (() => {\n if ('icon' in children) {\n return (\n <Icon\n className={!isNil(children.onClick) ? styles.clickable : undefined}\n source={children.icon}\n size=\"s\"\n color={children.iconColor ?? 'txt-black-dark'}\n onClick={children.onClick}\n />\n )\n }\n\n return children\n })()\n\n if (withoutWrapper) {\n return Content\n }\n\n return (\n <div\n style={wrapperStyle}\n className={classNames(styles.LeftContentWrapper, wrapperClassName)}\n >\n {Content}\n </div>\n )\n}\n\nfunction TextFieldRightContent({\n children,\n wrapperStyle,\n wrapperClassName,\n withoutWrapper,\n}: {\n children: TextFieldProps['rightContent']\n wrapperStyle: TextFieldProps['rightWrapperStyle']\n wrapperClassName: TextFieldProps['rightWrapperClassName']\n withoutWrapper: TextFieldProps['withoutRightContentWrapper']\n}) {\n const renderRightItem = useCallback(\n (item: TextFieldItemProps, key?: string) => {\n if ('icon' in item) {\n const Comp = !isNil(item.onClick) ? BaseButton : 'div'\n\n return (\n <Comp\n key={key}\n className={styles.RightItemWrapper}\n onClick={item.onClick}\n >\n <Icon\n source={item.icon}\n size=\"xs\"\n color={item.iconColor ?? 'txt-black-dark'}\n />\n </Comp>\n )\n }\n\n return React.cloneElement(item, { key })\n },\n []\n )\n\n if (isNil(children) || isEmpty(children)) {\n return null\n }\n\n const contents = isArray(children)\n ? children.map((item) => renderRightItem(item, uuid()))\n : renderRightItem(children)\n\n if (withoutWrapper) {\n return <>{contents}</>\n }\n\n return (\n <div\n style={wrapperStyle}\n className={classNames(styles.RightContentWrapper, wrapperClassName)}\n >\n {contents}\n </div>\n )\n}\n\nexport const TextField = forwardRef<TextFieldRef, TextFieldProps>(\n function TextField(\n {\n type,\n size: sizeProps,\n autoFocus,\n autoComplete = 'off',\n variant = 'primary',\n allowClear = false,\n selectAllOnInit = false,\n selectAllOnFocus = false,\n leftContent,\n rightContent,\n withoutLeftContentWrapper = false,\n withoutRightContentWrapper = false,\n style,\n className,\n wrapperStyle,\n wrapperClassName,\n leftWrapperStyle,\n leftWrapperClassName,\n rightWrapperStyle,\n rightWrapperClassName,\n value,\n onFocus,\n onChange,\n onKeyDown,\n onKeyUp,\n ...rest\n },\n forwardedRef\n ) {\n const { window } = useWindow()\n\n const {\n disabled,\n readOnly,\n hasError,\n size: formFieldSize,\n ...ownProps\n } = useFormFieldProps(rest)\n\n const focusTimeout = useRef<ReturnType<Window['setTimeout']>>()\n const blurTimeout = useRef<ReturnType<Window['setTimeout']>>()\n\n const normalizedValue = isNil(value) ? undefined : toString(value)\n const activeInput = !disabled && !readOnly\n const activeClear = activeInput && allowClear && !isEmpty(normalizedValue)\n const size = sizeProps ?? formFieldSize ?? 'm'\n\n const inputRef = useRef<HTMLInputElement | null>(null)\n\n const focus = useCallback(() => {\n clearTimeout(focusTimeout.current)\n focusTimeout.current = window.setTimeout(() => {\n inputRef.current?.focus()\n }, 0)\n }, [window])\n\n const blur = useCallback(() => {\n clearTimeout(blurTimeout.current)\n blurTimeout.current = window.setTimeout(() => {\n inputRef.current?.blur()\n }, 0)\n }, [window])\n\n const setSelectionRange = useCallback(\n (start?: number, end?: number, direction?: SelectionRangeDirections) => {\n if (type && ['number', 'email', 'hidden'].includes(type)) {\n return\n }\n inputRef.current?.setSelectionRange(\n start || 0,\n end || 0,\n direction || 'none'\n )\n },\n [type]\n )\n\n const getSelectionRange = useCallback(\n (): [number, number] => [\n inputRef.current?.selectionStart || 0,\n inputRef.current?.selectionEnd || 0,\n ],\n []\n )\n\n const selectAll = useCallback(() => {\n focus()\n if (inputRef.current) {\n setSelectionRange(0, inputRef.current.value.length, 'backward')\n }\n }, [focus, setSelectionRange])\n\n const unselect = useCallback(() => {\n focus()\n if (inputRef.current) {\n const valueLen = inputRef.current.value.length\n setSelectionRange(valueLen, valueLen)\n }\n }, [focus, setSelectionRange])\n\n const getBoundingClientRect = useCallback((): DOMRect => {\n if (inputRef.current) {\n return inputRef.current.getBoundingClientRect()\n }\n return new DOMRect(undefined, undefined, 0, 0)\n }, [])\n\n const getDOMNode = useCallback(() => inputRef.current, [])\n\n const handle = useMemo(\n (): TextFieldRef => ({\n focus,\n blur,\n setSelectionRange,\n getSelectionRange,\n selectAll,\n unselect,\n getBoundingClientRect,\n getDOMNode,\n }),\n [\n focus,\n blur,\n setSelectionRange,\n getSelectionRange,\n selectAll,\n unselect,\n getBoundingClientRect,\n getDOMNode,\n ]\n )\n\n useImperativeHandle(forwardedRef, () => handle)\n\n useEffect(() => {\n if (autoFocus) {\n focus()\n }\n if (selectAllOnInit) {\n focus()\n selectAll()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n if (!activeInput) {\n return\n }\n if (selectAllOnFocus) {\n selectAll()\n }\n if (onFocus) {\n onFocus(event)\n }\n },\n [selectAllOnFocus, selectAll, activeInput, onFocus]\n )\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (activeInput && onChange) {\n onChange(event)\n }\n },\n [activeInput, onChange]\n )\n\n const {\n handleKeyDown: handleKeyDownWrappedWithComposingLocker,\n handleKeyUp: handleKeyUpWrappedWithComposingLocker,\n } = useKeyboardActionLockerWhileComposing({\n keysToLock: COMMON_IME_CONTROL_KEYS,\n onKeyDown,\n onKeyUp,\n })\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (activeInput && handleKeyDownWrappedWithComposingLocker) {\n handleKeyDownWrappedWithComposingLocker(event)\n }\n },\n [activeInput, handleKeyDownWrappedWithComposingLocker]\n )\n\n const handleKeyUp = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (activeInput && handleKeyUpWrappedWithComposingLocker) {\n handleKeyUpWrappedWithComposingLocker(event)\n }\n },\n [activeInput, handleKeyUpWrappedWithComposingLocker]\n )\n\n const handleClear = useCallback(() => {\n const input = inputRef.current\n if (activeInput && input) {\n const setValue = Object?.getOwnPropertyDescriptor(\n HTMLInputElement.prototype,\n 'value'\n )?.set\n const event = new Event('input', { bubbles: true })\n setValue?.call(input, '')\n input.dispatchEvent(event)\n }\n }, [activeInput])\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n style={wrapperStyle}\n className={classNames(\n styles.TextFieldWrapper,\n styles[`variant-${variant}`],\n styles[`size-${size}`],\n getFormFieldSizeClassName(size),\n wrapperClassName\n )}\n data-testid={TEXT_INPUT_TEST_ID}\n onMouseDown={focus}\n >\n <TextFieldLeftContent\n wrapperStyle={leftWrapperStyle}\n wrapperClassName={leftWrapperClassName}\n withoutWrapper={withoutLeftContentWrapper}\n >\n {leftContent}\n </TextFieldLeftContent>\n\n <input\n style={style}\n className={classNames(styles.TextFieldInput, className)}\n ref={inputRef}\n type={type}\n value={normalizedValue}\n /**\n * Invalid size attribute\n * FIXME: https://github.com/channel-io/bezier-react/issues/1053\n */\n size={INPUT_LENGTH_BY_SIZE[size]}\n autoComplete={autoComplete}\n readOnly={readOnly}\n disabled={disabled}\n onFocus={handleFocus}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n {...ownProps}\n />\n\n {activeClear && (\n <BaseButton\n className={styles.CloseIconWrapper}\n tabIndex={-1}\n onClick={handleClear}\n >\n <Icon\n className={styles.CloseIcon}\n data-testid={TEXT_INPUT_CLEAR_ICON_TEST_ID}\n source={CancelCircleFilledIcon}\n size=\"xs\"\n />\n </BaseButton>\n )}\n\n <TextFieldRightContent\n wrapperStyle={rightWrapperStyle}\n withoutWrapper={withoutRightContentWrapper}\n wrapperClassName={rightWrapperClassName}\n >\n {rightContent}\n </TextFieldRightContent>\n </div>\n )\n }\n)\n"],"names":["TEXT_INPUT_TEST_ID","TEXT_INPUT_CLEAR_ICON_TEST_ID","INPUT_LENGTH_BY_SIZE","xs","m","l","xl","TextFieldLeftContent","children","wrapperStyle","wrapperClassName","withoutWrapper","isNil","Content","React","createElement","Icon","className","onClick","styles","clickable","undefined","source","icon","size","color","iconColor","style","classNames","LeftContentWrapper","TextFieldRightContent","renderRightItem","useCallback","item","key","Comp","BaseButton","RightItemWrapper","cloneElement","isEmpty","contents","isArray","map","uuid","Fragment","RightContentWrapper","TextField","forwardRef","type","sizeProps","autoFocus","autoComplete","variant","allowClear","selectAllOnInit","selectAllOnFocus","leftContent","rightContent","withoutLeftContentWrapper","withoutRightContentWrapper","leftWrapperStyle","leftWrapperClassName","rightWrapperStyle","rightWrapperClassName","value","onFocus","onChange","onKeyDown","onKeyUp","rest","forwardedRef","window","useWindow","disabled","readOnly","hasError","formFieldSize","ownProps","useFormFieldProps","focusTimeout","useRef","blurTimeout","normalizedValue","toString","activeInput","activeClear","inputRef","focus","clearTimeout","current","setTimeout","blur","setSelectionRange","start","end","direction","includes","getSelectionRange","selectionStart","selectionEnd","selectAll","length","unselect","valueLen","getBoundingClientRect","DOMRect","getDOMNode","handle","useMemo","useImperativeHandle","useEffect","handleFocus","event","handleChange","handleKeyDown","handleKeyDownWrappedWithComposingLocker","handleKeyUp","handleKeyUpWrappedWithComposingLocker","useKeyboardActionLockerWhileComposing","keysToLock","COMMON_IME_CONTROL_KEYS","handleClear","input","setValue","Object","getOwnPropertyDescriptor","HTMLInputElement","prototype","set","Event","bubbles","call","dispatchEvent","TextFieldWrapper","getFormFieldSizeClassName","onMouseDown","assign","TextFieldInput","ref","CloseIconWrapper","tabIndex","CloseIcon","CancelCircleFilledIcon"],"mappings":";;;;;;;;;;;;;;;;AAoCO,MAAMA,kBAAkB,GAAG,oBAAmB;AAC9C,MAAMC,6BAA6B,GAAG,+BAA8B;;AAE3E;AACA;AACA;AACA;AACA,MAAMC,oBAAmD,GAAG;AAC1DC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,CAAC,EAAE,EAAE;AACLC,EAAAA,CAAC,EAAE,EAAE;AACLC,EAAAA,EAAE,EAAE,EAAA;AACN,CAAC,CAAA;AAED,SAASC,oBAAoBA,CAAC;EAC5BC,QAAQ;EACRC,YAAY;EACZC,gBAAgB;AAChBC,EAAAA,cAAAA;AAMF,CAAC,EAAE;AACD,EAAA,IAAIC,UAAK,CAACJ,QAAQ,CAAC,EAAE;AACnB,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EAEA,MAAMK,OAAO,GAAG,CAAC,MAAM;IACrB,IAAI,MAAM,IAAIL,QAAQ,EAAE;AACtB,MAAA,oBACEM,KAAA,CAAAC,aAAA,CAACC,SAAI,EAAA;AACHC,QAAAA,SAAS,EAAE,CAACL,UAAK,CAACJ,QAAQ,CAACU,OAAO,CAAC,GAAGC,wBAAM,CAACC,SAAS,GAAGC,SAAU;QACnEC,MAAM,EAAEd,QAAQ,CAACe,IAAK;AACtBC,QAAAA,IAAI,EAAC,GAAG;AACRC,QAAAA,KAAK,EAAEjB,QAAQ,CAACkB,SAAS,IAAI,gBAAiB;QAC9CR,OAAO,EAAEV,QAAQ,CAACU,OAAAA;AAAQ,OAC3B,CAAC,CAAA;AAEN,KAAA;AAEA,IAAA,OAAOV,QAAQ,CAAA;AACjB,GAAC,GAAG,CAAA;AAEJ,EAAA,IAAIG,cAAc,EAAE;AAClB,IAAA,OAAOE,OAAO,CAAA;AAChB,GAAA;EAEA,oBACEC,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEY,IAAAA,KAAK,EAAElB,YAAa;AACpBQ,IAAAA,SAAS,EAAEW,aAAU,CAACT,wBAAM,CAACU,kBAAkB,EAAEnB,gBAAgB,CAAA;AAAE,GAAA,EAElEG,OACE,CAAC,CAAA;AAEV,CAAA;AAEA,SAASiB,qBAAqBA,CAAC;EAC7BtB,QAAQ;EACRC,YAAY;EACZC,gBAAgB;AAChBC,EAAAA,cAAAA;AAMF,CAAC,EAAE;EACD,MAAMoB,eAAe,GAAGC,iBAAW,CACjC,CAACC,IAAwB,EAAEC,GAAY,KAAK;IAC1C,IAAI,MAAM,IAAID,IAAI,EAAE;AAClB,MAAA,MAAME,IAAI,GAAG,CAACvB,UAAK,CAACqB,IAAI,CAACf,OAAO,CAAC,GAAGkB,qBAAU,GAAG,KAAK,CAAA;AAEtD,MAAA,oBACEtB,KAAA,CAAAC,aAAA,CAACoB,IAAI,EAAA;AACHD,QAAAA,GAAG,EAAEA,GAAI;QACTjB,SAAS,EAAEE,wBAAM,CAACkB,gBAAiB;QACnCnB,OAAO,EAAEe,IAAI,CAACf,OAAAA;AAAQ,OAAA,eAEtBJ,KAAA,CAAAC,aAAA,CAACC,SAAI,EAAA;QACHM,MAAM,EAAEW,IAAI,CAACV,IAAK;AAClBC,QAAAA,IAAI,EAAC,IAAI;AACTC,QAAAA,KAAK,EAAEQ,IAAI,CAACP,SAAS,IAAI,gBAAA;AAAiB,OAC3C,CACG,CAAC,CAAA;AAEX,KAAA;AAEA,IAAA,oBAAOZ,KAAK,CAACwB,YAAY,CAACL,IAAI,EAAE;AAAEC,MAAAA,GAAAA;AAAI,KAAC,CAAC,CAAA;GACzC,EACD,EACF,CAAC,CAAA;EAED,IAAItB,UAAK,CAACJ,QAAQ,CAAC,IAAI+B,YAAO,CAAC/B,QAAQ,CAAC,EAAE;AACxC,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EAEA,MAAMgC,QAAQ,GAAGC,YAAO,CAACjC,QAAQ,CAAC,GAC9BA,QAAQ,CAACkC,GAAG,CAAET,IAAI,IAAKF,eAAe,CAACE,IAAI,EAAEU,UAAI,EAAE,CAAC,CAAC,GACrDZ,eAAe,CAACvB,QAAQ,CAAC,CAAA;AAE7B,EAAA,IAAIG,cAAc,EAAE;IAClB,oBAAOG,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAA8B,QAAA,EAAGJ,IAAAA,EAAAA,QAAW,CAAC,CAAA;AACxB,GAAA;EAEA,oBACE1B,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEY,IAAAA,KAAK,EAAElB,YAAa;AACpBQ,IAAAA,SAAS,EAAEW,aAAU,CAACT,wBAAM,CAAC0B,mBAAmB,EAAEnC,gBAAgB,CAAA;AAAE,GAAA,EAEnE8B,QACE,CAAC,CAAA;AAEV,CAAA;MAEaM,SAAS,gBAAGC,gBAAU,CACjC,SAASD,SAASA,CAChB;QACEE,MAAI;AACJxB,EAAAA,IAAI,EAAEyB,SAAS;EACfC,SAAS;AACTC,EAAAA,YAAY,GAAG,KAAK;AACpBC,EAAAA,OAAO,GAAG,SAAS;AACnBC,EAAAA,UAAU,GAAG,KAAK;AAClBC,EAAAA,eAAe,GAAG,KAAK;AACvBC,EAAAA,gBAAgB,GAAG,KAAK;EACxBC,WAAW;EACXC,YAAY;AACZC,EAAAA,yBAAyB,GAAG,KAAK;AACjCC,EAAAA,0BAA0B,GAAG,KAAK;EAClChC,KAAK;EACLV,SAAS;EACTR,YAAY;EACZC,gBAAgB;EAChBkD,gBAAgB;EAChBC,oBAAoB;EACpBC,iBAAiB;EACjBC,qBAAqB;EACrBC,KAAK;EACLC,OAAO;EACPC,QAAQ;EACRC,SAAS;EACTC,OAAO;EACP,GAAGC,IAAAA;AACL,CAAC,EACDC,YAAY,EACZ;EACA,MAAM;AAAEC,IAAAA,MAAAA;GAAQ,GAAGC,wBAAS,EAAE,CAAA;EAE9B,MAAM;IACJC,QAAQ;IACRC,QAAQ;IACRC,QAAQ;AACRnD,IAAAA,IAAI,EAAEoD,aAAa;IACnB,GAAGC,QAAAA;AACL,GAAC,GAAGC,6BAAiB,CAACT,IAAI,CAAC,CAAA;AAE3B,EAAA,MAAMU,YAAY,GAAGC,YAAM,EAAoC,CAAA;AAC/D,EAAA,MAAMC,WAAW,GAAGD,YAAM,EAAoC,CAAA;AAE9D,EAAA,MAAME,eAAe,GAAGtE,UAAK,CAACoD,KAAK,CAAC,GAAG3C,SAAS,GAAG8D,eAAQ,CAACnB,KAAK,CAAC,CAAA;AAClE,EAAA,MAAMoB,WAAW,GAAG,CAACX,QAAQ,IAAI,CAACC,QAAQ,CAAA;EAC1C,MAAMW,WAAW,GAAGD,WAAW,IAAI/B,UAAU,IAAI,CAACd,YAAO,CAAC2C,eAAe,CAAC,CAAA;AAC1E,EAAA,MAAM1D,IAAI,GAAGyB,SAAS,IAAI2B,aAAa,IAAI,GAAG,CAAA;AAE9C,EAAA,MAAMU,QAAQ,GAAGN,YAAM,CAA0B,IAAI,CAAC,CAAA;AAEtD,EAAA,MAAMO,KAAK,GAAGvD,iBAAW,CAAC,MAAM;AAC9BwD,IAAAA,YAAY,CAACT,YAAY,CAACU,OAAO,CAAC,CAAA;AAClCV,IAAAA,YAAY,CAACU,OAAO,GAAGlB,MAAM,CAACmB,UAAU,CAAC,MAAM;AAC7CJ,MAAAA,QAAQ,CAACG,OAAO,EAAEF,KAAK,EAAE,CAAA;KAC1B,EAAE,CAAC,CAAC,CAAA;AACP,GAAC,EAAE,CAAChB,MAAM,CAAC,CAAC,CAAA;AAEZ,EAAA,MAAMoB,IAAI,GAAG3D,iBAAW,CAAC,MAAM;AAC7BwD,IAAAA,YAAY,CAACP,WAAW,CAACQ,OAAO,CAAC,CAAA;AACjCR,IAAAA,WAAW,CAACQ,OAAO,GAAGlB,MAAM,CAACmB,UAAU,CAAC,MAAM;AAC5CJ,MAAAA,QAAQ,CAACG,OAAO,EAAEE,IAAI,EAAE,CAAA;KACzB,EAAE,CAAC,CAAC,CAAA;AACP,GAAC,EAAE,CAACpB,MAAM,CAAC,CAAC,CAAA;EAEZ,MAAMqB,iBAAiB,GAAG5D,iBAAW,CACnC,CAAC6D,KAAc,EAAEC,GAAY,EAAEC,SAAoC,KAAK;AACtE,IAAA,IAAI/C,MAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAACgD,QAAQ,CAAChD,MAAI,CAAC,EAAE;AACxD,MAAA,OAAA;AACF,KAAA;AACAsC,IAAAA,QAAQ,CAACG,OAAO,EAAEG,iBAAiB,CACjCC,KAAK,IAAI,CAAC,EACVC,GAAG,IAAI,CAAC,EACRC,SAAS,IAAI,MACf,CAAC,CAAA;AACH,GAAC,EACD,CAAC/C,MAAI,CACP,CAAC,CAAA;EAED,MAAMiD,iBAAiB,GAAGjE,iBAAW,CACnC,MAAwB,CACtBsD,QAAQ,CAACG,OAAO,EAAES,cAAc,IAAI,CAAC,EACrCZ,QAAQ,CAACG,OAAO,EAAEU,YAAY,IAAI,CAAC,CACpC,EACD,EACF,CAAC,CAAA;AAED,EAAA,MAAMC,SAAS,GAAGpE,iBAAW,CAAC,MAAM;AAClCuD,IAAAA,KAAK,EAAE,CAAA;IACP,IAAID,QAAQ,CAACG,OAAO,EAAE;AACpBG,MAAAA,iBAAiB,CAAC,CAAC,EAAEN,QAAQ,CAACG,OAAO,CAACzB,KAAK,CAACqC,MAAM,EAAE,UAAU,CAAC,CAAA;AACjE,KAAA;AACF,GAAC,EAAE,CAACd,KAAK,EAAEK,iBAAiB,CAAC,CAAC,CAAA;AAE9B,EAAA,MAAMU,QAAQ,GAAGtE,iBAAW,CAAC,MAAM;AACjCuD,IAAAA,KAAK,EAAE,CAAA;IACP,IAAID,QAAQ,CAACG,OAAO,EAAE;MACpB,MAAMc,QAAQ,GAAGjB,QAAQ,CAACG,OAAO,CAACzB,KAAK,CAACqC,MAAM,CAAA;AAC9CT,MAAAA,iBAAiB,CAACW,QAAQ,EAAEA,QAAQ,CAAC,CAAA;AACvC,KAAA;AACF,GAAC,EAAE,CAAChB,KAAK,EAAEK,iBAAiB,CAAC,CAAC,CAAA;AAE9B,EAAA,MAAMY,qBAAqB,GAAGxE,iBAAW,CAAC,MAAe;IACvD,IAAIsD,QAAQ,CAACG,OAAO,EAAE;AACpB,MAAA,OAAOH,QAAQ,CAACG,OAAO,CAACe,qBAAqB,EAAE,CAAA;AACjD,KAAA;IACA,OAAO,IAAIC,OAAO,CAACpF,SAAS,EAAEA,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;GAC/C,EAAE,EAAE,CAAC,CAAA;EAEN,MAAMqF,UAAU,GAAG1E,iBAAW,CAAC,MAAMsD,QAAQ,CAACG,OAAO,EAAE,EAAE,CAAC,CAAA;AAE1D,EAAA,MAAMkB,MAAM,GAAGC,aAAO,CACpB,OAAqB;IACnBrB,KAAK;IACLI,IAAI;IACJC,iBAAiB;IACjBK,iBAAiB;IACjBG,SAAS;IACTE,QAAQ;IACRE,qBAAqB;AACrBE,IAAAA,UAAAA;AACF,GAAC,CAAC,EACF,CACEnB,KAAK,EACLI,IAAI,EACJC,iBAAiB,EACjBK,iBAAiB,EACjBG,SAAS,EACTE,QAAQ,EACRE,qBAAqB,EACrBE,UAAU,CAEd,CAAC,CAAA;AAEDG,EAAAA,yBAAmB,CAACvC,YAAY,EAAE,MAAMqC,MAAM,CAAC,CAAA;AAE/CG,EAAAA,eAAS,CAAC,MAAM;AACd,IAAA,IAAI5D,SAAS,EAAE;AACbqC,MAAAA,KAAK,EAAE,CAAA;AACT,KAAA;AACA,IAAA,IAAIjC,eAAe,EAAE;AACnBiC,MAAAA,KAAK,EAAE,CAAA;AACPa,MAAAA,SAAS,EAAE,CAAA;AACb,KAAA;AACA;GACD,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,MAAMW,WAAW,GAAG/E,iBAAW,CAC5BgF,KAAyC,IAAK;IAC7C,IAAI,CAAC5B,WAAW,EAAE;AAChB,MAAA,OAAA;AACF,KAAA;AACA,IAAA,IAAI7B,gBAAgB,EAAE;AACpB6C,MAAAA,SAAS,EAAE,CAAA;AACb,KAAA;AACA,IAAA,IAAInC,OAAO,EAAE;MACXA,OAAO,CAAC+C,KAAK,CAAC,CAAA;AAChB,KAAA;GACD,EACD,CAACzD,gBAAgB,EAAE6C,SAAS,EAAEhB,WAAW,EAAEnB,OAAO,CACpD,CAAC,CAAA;AAED,EAAA,MAAMgD,YAAY,GAAGjF,iBAAW,CAC7BgF,KAA0C,IAAK;IAC9C,IAAI5B,WAAW,IAAIlB,QAAQ,EAAE;MAC3BA,QAAQ,CAAC8C,KAAK,CAAC,CAAA;AACjB,KAAA;AACF,GAAC,EACD,CAAC5B,WAAW,EAAElB,QAAQ,CACxB,CAAC,CAAA;EAED,MAAM;AACJgD,IAAAA,aAAa,EAAEC,uCAAuC;AACtDC,IAAAA,WAAW,EAAEC,qCAAAA;GACd,GAAGC,2EAAqC,CAAC;AACxCC,IAAAA,UAAU,EAAEC,6DAAuB;IACnCrD,SAAS;AACTC,IAAAA,OAAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,MAAM8C,aAAa,GAAGlF,iBAAW,CAC9BgF,KAA4C,IAAK;IAChD,IAAI5B,WAAW,IAAI+B,uCAAuC,EAAE;MAC1DA,uCAAuC,CAACH,KAAK,CAAC,CAAA;AAChD,KAAA;AACF,GAAC,EACD,CAAC5B,WAAW,EAAE+B,uCAAuC,CACvD,CAAC,CAAA;AAED,EAAA,MAAMC,WAAW,GAAGpF,iBAAW,CAC5BgF,KAA4C,IAAK;IAChD,IAAI5B,WAAW,IAAIiC,qCAAqC,EAAE;MACxDA,qCAAqC,CAACL,KAAK,CAAC,CAAA;AAC9C,KAAA;AACF,GAAC,EACD,CAAC5B,WAAW,EAAEiC,qCAAqC,CACrD,CAAC,CAAA;AAED,EAAA,MAAMI,WAAW,GAAGzF,iBAAW,CAAC,MAAM;AACpC,IAAA,MAAM0F,KAAK,GAAGpC,QAAQ,CAACG,OAAO,CAAA;IAC9B,IAAIL,WAAW,IAAIsC,KAAK,EAAE;AACxB,MAAA,MAAMC,QAAQ,GAAGC,MAAM,EAAEC,wBAAwB,CAC/CC,gBAAgB,CAACC,SAAS,EAC1B,OACF,CAAC,EAAEC,GAAG,CAAA;AACN,MAAA,MAAMhB,KAAK,GAAG,IAAIiB,KAAK,CAAC,OAAO,EAAE;AAAEC,QAAAA,OAAO,EAAE,IAAA;AAAK,OAAC,CAAC,CAAA;AACnDP,MAAAA,QAAQ,EAAEQ,IAAI,CAACT,KAAK,EAAE,EAAE,CAAC,CAAA;AACzBA,MAAAA,KAAK,CAACU,aAAa,CAACpB,KAAK,CAAC,CAAA;AAC5B,KAAA;AACF,GAAC,EAAE,CAAC5B,WAAW,CAAC,CAAC,CAAA;AAEjB,EAAA;AAAA;AACE;AACAtE,IAAAA,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEY,MAAAA,KAAK,EAAElB,YAAa;MACpBQ,SAAS,EAAEW,aAAU,CACnBT,wBAAM,CAACkH,gBAAgB,EACvBlH,wBAAM,CAAE,CAAUiC,QAAAA,EAAAA,OAAQ,CAAC,CAAA,CAAC,EAC5BjC,wBAAM,CAAE,CAAA,KAAA,EAAOK,IAAK,CAAA,CAAC,CAAC,EACtB8G,sCAAyB,CAAC9G,IAAI,CAAC,EAC/Bd,gBACF,CAAE;AACF,MAAA,aAAA,EAAaV,kBAAmB;AAChCuI,MAAAA,WAAW,EAAEhD,KAAAA;AAAM,KAAA,eAEnBzE,KAAA,CAAAC,aAAA,CAACR,oBAAoB,EAAA;AACnBE,MAAAA,YAAY,EAAEmD,gBAAiB;AAC/BlD,MAAAA,gBAAgB,EAAEmD,oBAAqB;AACvClD,MAAAA,cAAc,EAAE+C,yBAAAA;KAEfF,EAAAA,WACmB,CAAC,eAEvB1C,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA6G,MAAA,CAAAY,MAAA,CAAA;AACE7G,MAAAA,KAAK,EAAEA,KAAM;MACbV,SAAS,EAAEW,aAAU,CAACT,wBAAM,CAACsH,cAAc,EAAExH,SAAS,CAAE;AACxDyH,MAAAA,GAAG,EAAEpD,QAAS;AACdtC,MAAAA,IAAI,EAAEA,MAAK;AACXgB,MAAAA,KAAK,EAAEkB,eAAAA;AACP;AACV;AACA;AACA;AACU1D,MAAAA,IAAI,EAAEtB,oBAAoB,CAACsB,IAAI,CAAE;AACjC2B,MAAAA,YAAY,EAAEA,YAAa;AAC3BuB,MAAAA,QAAQ,EAAEA,QAAS;AACnBD,MAAAA,QAAQ,EAAEA,QAAS;AACnBR,MAAAA,OAAO,EAAE8C,WAAY;AACrB7C,MAAAA,QAAQ,EAAE+C,YAAa;AACvB9C,MAAAA,SAAS,EAAE+C,aAAc;AACzB9C,MAAAA,OAAO,EAAEgD,WAAAA;KACLvC,EAAAA,QAAQ,CACb,CAAC,EAEDQ,WAAW,iBACVvE,KAAA,CAAAC,aAAA,CAACqB,qBAAU,EAAA;MACTnB,SAAS,EAAEE,wBAAM,CAACwH,gBAAiB;MACnCC,QAAQ,EAAE,CAAC,CAAE;AACb1H,MAAAA,OAAO,EAAEuG,WAAAA;AAAY,KAAA,eAErB3G,KAAA,CAAAC,aAAA,CAACC,SAAI,EAAA;MACHC,SAAS,EAAEE,wBAAM,CAAC0H,SAAU;AAC5B,MAAA,aAAA,EAAa5I,6BAA8B;AAC3CqB,MAAAA,MAAM,EAAEwH,kCAAuB;AAC/BtH,MAAAA,IAAI,EAAC,IAAA;AAAI,KACV,CACS,CACb,eAEDV,KAAA,CAAAC,aAAA,CAACe,qBAAqB,EAAA;AACpBrB,MAAAA,YAAY,EAAEqD,iBAAkB;AAChCnD,MAAAA,cAAc,EAAEgD,0BAA2B;AAC3CjD,MAAAA,gBAAgB,EAAEqD,qBAAAA;AAAsB,KAAA,EAEvCN,YACoB,CACpB,CAAA;AAAC,IAAA;AAEV,CACF;;;;;;"}
|
|
1
|
+
{"version":3,"file":"TextField.js","sources":["../../../../src/components/TextField/TextField.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react'\n\nimport { CancelCircleFilledIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\nimport { v4 as uuid } from 'uuid'\n\nimport {\n COMMON_IME_CONTROL_KEYS,\n useKeyboardActionLockerWhileComposing,\n} from '~/src/hooks/useKeyboardActionLockerWhileComposing'\nimport { type FormFieldSize } from '~/src/types/props'\nimport { getFormFieldSizeClassName } from '~/src/types/props-helpers'\nimport { toString } from '~/src/utils/string'\nimport { isArray, isEmpty, isNil } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { useFormFieldProps } from '~/src/components/FormControl'\nimport { Icon } from '~/src/components/Icon'\nimport { useWindow } from '~/src/components/WindowProvider'\n\nimport {\n type SelectionRangeDirections,\n type TextFieldItemProps,\n type TextFieldProps,\n type TextFieldRef,\n} from './TextField.types'\n\nimport styles from './TextField.module.scss'\n\nexport const TEXT_INPUT_TEST_ID = 'bezier-text-input'\nexport const TEXT_INPUT_CLEAR_ICON_TEST_ID = 'bezier-text-input-clear-icon'\n\n/**\n * FIXME: This mapping constant was defined for UI consistency,\n * and it should be removed with size attribute\n */\nconst INPUT_LENGTH_BY_SIZE: Record<FormFieldSize, number> = {\n xs: 28,\n m: 36,\n l: 44,\n xl: 54,\n}\n\nfunction TextFieldLeftContent({\n children,\n wrapperStyle,\n wrapperClassName,\n withoutWrapper,\n}: {\n children: TextFieldProps['leftContent']\n wrapperStyle: TextFieldProps['leftWrapperStyle']\n wrapperClassName: TextFieldProps['leftWrapperClassName']\n withoutWrapper: TextFieldProps['withoutLeftContentWrapper']\n}) {\n if (isNil(children)) {\n return null\n }\n\n const Content = (() => {\n if ('icon' in children) {\n return (\n <Icon\n className={!isNil(children.onClick) ? styles.clickable : undefined}\n source={children.icon}\n size=\"s\"\n color={children.iconColor ?? 'txt-black-dark'}\n onClick={children.onClick}\n />\n )\n }\n\n return children\n })()\n\n if (withoutWrapper) {\n return Content\n }\n\n return (\n <div\n style={wrapperStyle}\n className={classNames(styles.LeftContentWrapper, wrapperClassName)}\n >\n {Content}\n </div>\n )\n}\n\nfunction TextFieldRightContent({\n children,\n wrapperStyle,\n wrapperClassName,\n withoutWrapper,\n}: {\n children: TextFieldProps['rightContent']\n wrapperStyle: TextFieldProps['rightWrapperStyle']\n wrapperClassName: TextFieldProps['rightWrapperClassName']\n withoutWrapper: TextFieldProps['withoutRightContentWrapper']\n}) {\n const renderRightItem = useCallback(\n (item: TextFieldItemProps, key?: string) => {\n if ('icon' in item) {\n const Comp = !isNil(item.onClick) ? BaseButton : 'div'\n\n return (\n <Comp\n key={key}\n className={styles.RightItemWrapper}\n onClick={item.onClick}\n >\n <Icon\n source={item.icon}\n size=\"xs\"\n color={item.iconColor ?? 'txt-black-dark'}\n />\n </Comp>\n )\n }\n\n return React.cloneElement(item, { key })\n },\n []\n )\n\n if (isNil(children) || isEmpty(children)) {\n return null\n }\n\n const contents = isArray(children)\n ? children.map((item) => renderRightItem(item, uuid()))\n : renderRightItem(children)\n\n if (withoutWrapper) {\n return <>{contents}</>\n }\n\n return (\n <div\n style={wrapperStyle}\n className={classNames(styles.RightContentWrapper, wrapperClassName)}\n >\n {contents}\n </div>\n )\n}\n\nexport const TextField = forwardRef<TextFieldRef, TextFieldProps>(\n function TextField(\n {\n type,\n size: sizeProps,\n autoFocus,\n autoComplete = 'off',\n variant = 'primary',\n allowClear = false,\n selectAllOnInit = false,\n selectAllOnFocus = false,\n leftContent,\n rightContent,\n withoutLeftContentWrapper = false,\n withoutRightContentWrapper = false,\n style,\n className,\n wrapperStyle,\n wrapperClassName,\n leftWrapperStyle,\n leftWrapperClassName,\n rightWrapperStyle,\n rightWrapperClassName,\n value,\n onFocus,\n onChange,\n onKeyDown,\n onKeyUp,\n ...rest\n },\n forwardedRef\n ) {\n const { window } = useWindow()\n\n const {\n disabled,\n readOnly,\n hasError,\n size: formFieldSize,\n ...ownProps\n } = useFormFieldProps(rest)\n\n const focusTimeout = useRef<ReturnType<Window['setTimeout']>>()\n const blurTimeout = useRef<ReturnType<Window['setTimeout']>>()\n\n const normalizedValue = isNil(value) ? undefined : toString(value)\n const activeInput = !disabled && !readOnly\n const activeClear = activeInput && allowClear && !isEmpty(normalizedValue)\n const size = sizeProps ?? formFieldSize ?? 'm'\n\n const inputRef = useRef<HTMLInputElement | null>(null)\n\n const focus = useCallback(() => {\n clearTimeout(focusTimeout.current)\n focusTimeout.current = window.setTimeout(() => {\n inputRef.current?.focus()\n }, 0)\n }, [window])\n\n const blur = useCallback(() => {\n clearTimeout(blurTimeout.current)\n blurTimeout.current = window.setTimeout(() => {\n inputRef.current?.blur()\n }, 0)\n }, [window])\n\n const setSelectionRange = useCallback(\n (start?: number, end?: number, direction?: SelectionRangeDirections) => {\n if (type && ['number', 'email', 'hidden'].includes(type)) {\n return\n }\n inputRef.current?.setSelectionRange(\n start || 0,\n end || 0,\n direction || 'none'\n )\n },\n [type]\n )\n\n const getSelectionRange = useCallback(\n (): [number, number] => [\n inputRef.current?.selectionStart || 0,\n inputRef.current?.selectionEnd || 0,\n ],\n []\n )\n\n const selectAll = useCallback(() => {\n focus()\n if (inputRef.current) {\n setSelectionRange(0, inputRef.current.value.length, 'backward')\n }\n }, [focus, setSelectionRange])\n\n const unselect = useCallback(() => {\n focus()\n if (inputRef.current) {\n const valueLen = inputRef.current.value.length\n setSelectionRange(valueLen, valueLen)\n }\n }, [focus, setSelectionRange])\n\n const getBoundingClientRect = useCallback((): DOMRect => {\n if (inputRef.current) {\n return inputRef.current.getBoundingClientRect()\n }\n return new DOMRect(undefined, undefined, 0, 0)\n }, [])\n\n const getDOMNode = useCallback(() => inputRef.current, [])\n\n const handle = useMemo(\n (): TextFieldRef => ({\n focus,\n blur,\n setSelectionRange,\n getSelectionRange,\n selectAll,\n unselect,\n getBoundingClientRect,\n getDOMNode,\n }),\n [\n focus,\n blur,\n setSelectionRange,\n getSelectionRange,\n selectAll,\n unselect,\n getBoundingClientRect,\n getDOMNode,\n ]\n )\n\n useImperativeHandle(forwardedRef, () => handle)\n\n useEffect(() => {\n if (autoFocus) {\n focus()\n }\n if (selectAllOnInit) {\n focus()\n selectAll()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n if (!activeInput) {\n return\n }\n if (selectAllOnFocus) {\n selectAll()\n }\n if (onFocus) {\n onFocus(event)\n }\n },\n [selectAllOnFocus, selectAll, activeInput, onFocus]\n )\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (activeInput && onChange) {\n onChange(event)\n }\n },\n [activeInput, onChange]\n )\n\n const {\n handleKeyDown: handleKeyDownWrappedWithComposingLocker,\n handleKeyUp: handleKeyUpWrappedWithComposingLocker,\n } = useKeyboardActionLockerWhileComposing({\n keysToLock: COMMON_IME_CONTROL_KEYS,\n onKeyDown,\n onKeyUp,\n })\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (activeInput && handleKeyDownWrappedWithComposingLocker) {\n handleKeyDownWrappedWithComposingLocker(event)\n }\n },\n [activeInput, handleKeyDownWrappedWithComposingLocker]\n )\n\n const handleKeyUp = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (activeInput && handleKeyUpWrappedWithComposingLocker) {\n handleKeyUpWrappedWithComposingLocker(event)\n }\n },\n [activeInput, handleKeyUpWrappedWithComposingLocker]\n )\n\n const handleClear = useCallback(() => {\n const input = inputRef.current\n if (activeInput && input) {\n const setValue = Object?.getOwnPropertyDescriptor(\n HTMLInputElement.prototype,\n 'value'\n )?.set\n const event = new Event('input', { bubbles: true })\n setValue?.call(input, '')\n input.dispatchEvent(event)\n }\n }, [activeInput])\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n style={wrapperStyle}\n className={classNames(\n styles.TextFieldWrapper,\n styles[`variant-${variant}`],\n styles[`size-${size}`],\n getFormFieldSizeClassName(size),\n wrapperClassName\n )}\n data-testid={TEXT_INPUT_TEST_ID}\n onMouseDown={focus}\n >\n <TextFieldLeftContent\n wrapperStyle={leftWrapperStyle}\n wrapperClassName={leftWrapperClassName}\n withoutWrapper={withoutLeftContentWrapper}\n >\n {leftContent}\n </TextFieldLeftContent>\n\n <input\n style={style}\n className={classNames(styles.TextFieldInput, className)}\n ref={inputRef}\n type={type}\n value={normalizedValue}\n /**\n * Invalid size attribute\n * FIXME: https://github.com/channel-io/bezier-react/issues/1053\n */\n size={INPUT_LENGTH_BY_SIZE[size]}\n autoComplete={autoComplete}\n readOnly={readOnly}\n disabled={disabled}\n onFocus={handleFocus}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n {...ownProps}\n />\n\n {activeClear && (\n <BaseButton\n className={styles.CloseIconWrapper}\n tabIndex={-1}\n onClick={handleClear}\n >\n <Icon\n className={styles.CloseIcon}\n data-testid={TEXT_INPUT_CLEAR_ICON_TEST_ID}\n source={CancelCircleFilledIcon}\n size=\"xs\"\n />\n </BaseButton>\n )}\n\n <TextFieldRightContent\n wrapperStyle={rightWrapperStyle}\n withoutWrapper={withoutRightContentWrapper}\n wrapperClassName={rightWrapperClassName}\n >\n {rightContent}\n </TextFieldRightContent>\n </div>\n )\n }\n)\n"],"names":["TEXT_INPUT_TEST_ID","TEXT_INPUT_CLEAR_ICON_TEST_ID","INPUT_LENGTH_BY_SIZE","xs","m","l","xl","TextFieldLeftContent","children","wrapperStyle","wrapperClassName","withoutWrapper","isNil","Content","React","createElement","Icon","className","onClick","styles","clickable","undefined","source","icon","size","color","iconColor","style","classNames","LeftContentWrapper","TextFieldRightContent","renderRightItem","useCallback","item","key","Comp","BaseButton","RightItemWrapper","cloneElement","isEmpty","contents","isArray","map","uuid","Fragment","RightContentWrapper","TextField","forwardRef","type","sizeProps","autoFocus","autoComplete","variant","allowClear","selectAllOnInit","selectAllOnFocus","leftContent","rightContent","withoutLeftContentWrapper","withoutRightContentWrapper","leftWrapperStyle","leftWrapperClassName","rightWrapperStyle","rightWrapperClassName","value","onFocus","onChange","onKeyDown","onKeyUp","rest","forwardedRef","window","useWindow","disabled","readOnly","hasError","formFieldSize","ownProps","useFormFieldProps","focusTimeout","useRef","blurTimeout","normalizedValue","toString","activeInput","activeClear","inputRef","focus","clearTimeout","current","setTimeout","blur","setSelectionRange","start","end","direction","includes","getSelectionRange","selectionStart","selectionEnd","selectAll","length","unselect","valueLen","getBoundingClientRect","DOMRect","getDOMNode","handle","useMemo","useImperativeHandle","useEffect","handleFocus","event","handleChange","handleKeyDown","handleKeyDownWrappedWithComposingLocker","handleKeyUp","handleKeyUpWrappedWithComposingLocker","useKeyboardActionLockerWhileComposing","keysToLock","COMMON_IME_CONTROL_KEYS","handleClear","input","setValue","Object","getOwnPropertyDescriptor","HTMLInputElement","prototype","set","Event","bubbles","call","dispatchEvent","TextFieldWrapper","getFormFieldSizeClassName","onMouseDown","assign","TextFieldInput","ref","CloseIconWrapper","tabIndex","CloseIcon","CancelCircleFilledIcon"],"mappings":"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"}
|
|
@@ -141,8 +141,9 @@ function ToastProvider({
|
|
|
141
141
|
dismiss
|
|
142
142
|
} = toastContextValue;
|
|
143
143
|
const container = givenContainer ?? rootElement;
|
|
144
|
-
const createContainer = React.useCallback((placement, toasts) => /*#__PURE__*/React.createElement(ThemeProvider.InvertedThemeProvider,
|
|
145
|
-
key: placement
|
|
144
|
+
const createContainer = React.useCallback((placement, toasts) => /*#__PURE__*/React.createElement(ThemeProvider.InvertedThemeProvider, {
|
|
145
|
+
key: placement
|
|
146
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
146
147
|
style: {
|
|
147
148
|
bottom: style.px(offset?.bottom ?? DEFAULT_OFFSET.bottom),
|
|
148
149
|
...(placement === 'bottom-right' ? {
|
|
@@ -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>\n <div\n key={placement}\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":"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"}
|
|
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;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;;;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @description This hook is used to handle the layout effect in a way that is compatible with SSR.
|
|
7
|
+
* In Server Environments, this hook will use `useEffect` instead of `useLayoutEffect`.
|
|
8
|
+
* @see https://react.dev/reference/react/useLayoutEffect#troubleshooting
|
|
9
|
+
*/
|
|
10
|
+
const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
|
|
11
|
+
|
|
12
|
+
exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;
|
|
13
|
+
//# sourceMappingURL=useIsomorphicLayoutEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsomorphicLayoutEffect.js","sources":["../../../src/hooks/useIsomorphicLayoutEffect.ts"],"sourcesContent":["import { useEffect, useLayoutEffect } from 'react'\n\n/**\n * @description This hook is used to handle the layout effect in a way that is compatible with SSR.\n * In Server Environments, this hook will use `useEffect` instead of `useLayoutEffect`.\n * @see https://react.dev/reference/react/useLayoutEffect#troubleshooting\n */\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect\n"],"names":["useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect"],"mappings":";;;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAMA,yBAAyB,GACpC,OAAOC,MAAM,KAAK,WAAW,GAAGC,qBAAe,GAAGC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMergeRefs.js","sources":["../../../src/hooks/useMergeRefs.ts"],"sourcesContent":["import { useMemo } from 'react'\n\ntype ReactRef<Node> =\n | React.RefCallback<Node>\n | React.MutableRefObject<Node | null>\n\ntype Ref<Node> = ReactRef<Node> | null | undefined\ntype Refs<Node> = Array<Ref<Node>>\n\nfunction assignRef<Node>(ref: Ref<Node>, value: Node | null) {\n if (ref === null || ref === undefined) {\n return\n }\n\n if (typeof ref === 'function') {\n ref(value)\n return\n }\n\n try {\n ref.current = value\n } catch (error) {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`)\n }\n}\n\nfunction mergeRefs<Node>(...refs: Refs<Node>) {\n return (node: Node | null) => {\n refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport default function useMergeRefs<Node>(...refs: Refs<Node>) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => mergeRefs(...refs), refs)\n}\n"],"names":["assignRef","ref","value","undefined","current","error","Error","mergeRefs","refs","node","forEach","useMergeRefs","useMemo"],"mappings":";;;;;;AASA,SAASA,SAASA,CAAOC,GAAc,EAAEC,KAAkB,EAAE;AAC3D,EAAA,IAAID,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAKE,SAAS,EAAE;AACrC,IAAA,OAAA;AACF,GAAA;AAEA,EAAA,IAAI,OAAOF,GAAG,KAAK,UAAU,EAAE;IAC7BA,GAAG,CAACC,KAAK,CAAC,CAAA;AACV,IAAA,OAAA;AACF,GAAA;EAEA,IAAI;IACFD,GAAG,CAACG,OAAO,GAAGF,KAAK,CAAA;GACpB,CAAC,OAAOG,KAAK,EAAE;IACd,MAAM,IAAIC,KAAK,
|
|
1
|
+
{"version":3,"file":"useMergeRefs.js","sources":["../../../src/hooks/useMergeRefs.ts"],"sourcesContent":["import { useMemo } from 'react'\n\ntype ReactRef<Node> =\n | React.RefCallback<Node>\n | React.MutableRefObject<Node | null>\n\ntype Ref<Node> = ReactRef<Node> | null | undefined\ntype Refs<Node> = Array<Ref<Node>>\n\nfunction assignRef<Node>(ref: Ref<Node>, value: Node | null) {\n if (ref === null || ref === undefined) {\n return\n }\n\n if (typeof ref === 'function') {\n ref(value)\n return\n }\n\n try {\n ref.current = value\n } catch (error) {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`)\n }\n}\n\nfunction mergeRefs<Node>(...refs: Refs<Node>) {\n return (node: Node | null) => {\n refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport default function useMergeRefs<Node>(...refs: Refs<Node>) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => mergeRefs(...refs), refs)\n}\n"],"names":["assignRef","ref","value","undefined","current","error","Error","mergeRefs","refs","node","forEach","useMergeRefs","useMemo"],"mappings":";;;;;;AASA,SAASA,SAASA,CAAOC,GAAc,EAAEC,KAAkB,EAAE;AAC3D,EAAA,IAAID,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAKE,SAAS,EAAE;AACrC,IAAA,OAAA;AACF,GAAA;AAEA,EAAA,IAAI,OAAOF,GAAG,KAAK,UAAU,EAAE;IAC7BA,GAAG,CAACC,KAAK,CAAC,CAAA;AACV,IAAA,OAAA;AACF,GAAA;EAEA,IAAI;IACFD,GAAG,CAACG,OAAO,GAAGF,KAAK,CAAA;GACpB,CAAC,OAAOG,KAAK,EAAE;IACd,MAAM,IAAIC,KAAK,CAAC,CAAA,qBAAA,EAAwBJ,KAAK,CAAaD,UAAAA,EAAAA,GAAG,GAAG,CAAC,CAAA;AACnE,GAAA;AACF,CAAA;AAEA,SAASM,SAASA,CAAO,GAAGC,IAAgB,EAAE;AAC5C,EAAA,OAAQC,IAAiB,IAAK;AAC5BD,IAAAA,IAAI,CAACE,OAAO,CAAET,GAAG,IAAK;AACpBD,MAAAA,SAAS,CAACC,GAAG,EAAEQ,IAAI,CAAC,CAAA;AACtB,KAAC,CAAC,CAAA;GACH,CAAA;AACH,CAAA;AAEe,SAASE,YAAYA,CAAO,GAAGH,IAAgB,EAAE;AAC9D;EACA,OAAOI,aAAO,CAAC,MAAML,SAAS,CAAC,GAAGC,IAAI,CAAC,EAAEA,IAAI,CAAC,CAAA;AAChD;;;;"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -7,7 +7,9 @@ var AvatarGroup = require('./components/AlphaAvatarGroup/AvatarGroup.js');
|
|
|
7
7
|
var Button = require('./components/AlphaButton/Button.js');
|
|
8
8
|
var DialogPrimitive = require('./components/AlphaDialogPrimitive/DialogPrimitive.js');
|
|
9
9
|
var FloatingButton = require('./components/AlphaFloatingButton/FloatingButton.js');
|
|
10
|
+
var FloatingIconButton = require('./components/AlphaFloatingIconButton/FloatingIconButton.js');
|
|
10
11
|
var IconButton = require('./components/AlphaIconButton/IconButton.js');
|
|
12
|
+
var Spinner = require('./components/AlphaSpinner/Spinner.js');
|
|
11
13
|
var TooltipPrimitive = require('./components/AlphaTooltipPrimitive/TooltipPrimitive.js');
|
|
12
14
|
var AppProvider = require('./components/AppProvider/AppProvider.js');
|
|
13
15
|
var AutoFocus = require('./components/AutoFocus/AutoFocus.js');
|
|
@@ -55,7 +57,7 @@ var SegmentedControl = require('./components/SegmentedControl/SegmentedControl.j
|
|
|
55
57
|
var Select = require('./components/Select/Select.js');
|
|
56
58
|
var Slider = require('./components/Slider/Slider.js');
|
|
57
59
|
var SmoothCornersBox = require('./components/SmoothCornersBox/SmoothCornersBox.js');
|
|
58
|
-
var Spinner = require('./components/Spinner/Spinner.js');
|
|
60
|
+
var Spinner$1 = require('./components/Spinner/Spinner.js');
|
|
59
61
|
var Stack = require('./components/Stack/Stack.js');
|
|
60
62
|
var Status = require('./components/Status/Status.js');
|
|
61
63
|
var Switch = require('./components/Switch/Switch.js');
|
|
@@ -88,7 +90,9 @@ exports.AlphaDialogPrimitivePortal = DialogPrimitive.DialogPrimitivePortal;
|
|
|
88
90
|
exports.AlphaDialogPrimitiveTitle = DialogPrimitive.DialogPrimitiveTitle;
|
|
89
91
|
exports.AlphaDialogPrimitiveTrigger = DialogPrimitive.DialogPrimitiveTrigger;
|
|
90
92
|
exports.AlphaFloatingButton = FloatingButton.FloatingButton;
|
|
93
|
+
exports.AlphaFloatingIconButton = FloatingIconButton.FloatingIconButton;
|
|
91
94
|
exports.AlphaIconButton = IconButton.IconButton;
|
|
95
|
+
exports.AlphaSpinner = Spinner.Spinner;
|
|
92
96
|
exports.AlphaTooltipPrimitive = TooltipPrimitive.TooltipPrimitive;
|
|
93
97
|
exports.AlphaTooltipPrimitiveArrow = TooltipPrimitive.TooltipPrimitiveArrow;
|
|
94
98
|
exports.AlphaTooltipPrimitiveContent = TooltipPrimitive.TooltipPrimitiveContent;
|
|
@@ -164,7 +168,7 @@ exports.SegmentedControlTabList = SegmentedControl.SegmentedControlTabList;
|
|
|
164
168
|
exports.Select = Select.Select;
|
|
165
169
|
exports.Slider = Slider.Slider;
|
|
166
170
|
exports.SmoothCornersBox = SmoothCornersBox.SmoothCornersBox;
|
|
167
|
-
exports.Spinner = Spinner.Spinner;
|
|
171
|
+
exports.Spinner = Spinner$1.Spinner;
|
|
168
172
|
exports.HStack = Stack.HStack;
|
|
169
173
|
exports.Stack = Stack.Stack;
|
|
170
174
|
exports.VStack = Stack.VStack;
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|