From c3efcbf857f024060ab68da8d5b1b35180015381 Mon Sep 17 00:00:00 2001 From: Bill Date: Mon, 24 Oct 2022 02:42:49 -0400 Subject: [PATCH] Remove classnames dependency --- package.json | 1 - src/common/classNames.ts | 1 + src/common/index.ts | 2 + .../catalog/views/gift/CatalogGiftView.tsx | 50 +++++++++---------- .../groups/views/tabs/GroupTabColorsView.tsx | 7 ++- .../navigator/views/NavigatorRoomInfoView.tsx | 5 +- .../widgets/choosers/ChooserWidgetView.tsx | 3 +- .../widgets/furniture/FurnitureDimmerView.tsx | 5 +- .../room-tools/RoomToolsWidgetView.tsx | 5 +- 9 files changed, 37 insertions(+), 42 deletions(-) create mode 100644 src/common/classNames.ts diff --git a/package.json b/package.json index c02b1ba6..b75cf7f9 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "@nitrots/nitro-renderer": "^1.3.4", "@tanstack/react-virtual": "^3.0.0-beta.18", "animate.css": "^4.1.1", - "classnames": "^2.3.1", "cross-env": "^7.0.3", "emoji-toolkit": "^6.6.0", "react": "^18.2.0", diff --git a/src/common/classNames.ts b/src/common/classNames.ts new file mode 100644 index 00000000..2127d85e --- /dev/null +++ b/src/common/classNames.ts @@ -0,0 +1 @@ +export const classNames = (...classes: string[]) => classes.filter(Boolean).join(' '); diff --git a/src/common/index.ts b/src/common/index.ts index c9bbd4d0..3722c52f 100644 --- a/src/common/index.ts +++ b/src/common/index.ts @@ -5,6 +5,7 @@ export * from './ButtonGroup'; export * from './card'; export * from './card/accordion'; export * from './card/tabs'; +export * from './classNames'; export * from './Column'; export * from './draggable-window'; export * from './Flex'; @@ -14,6 +15,7 @@ export * from './GridContext'; export * from './HorizontalRule'; export * from './InfiniteScroll'; export * from './layout'; +export * from './layout/limited-edition'; export * from './Text'; export * from './transitions'; export * from './types'; diff --git a/src/components/catalog/views/gift/CatalogGiftView.tsx b/src/components/catalog/views/gift/CatalogGiftView.tsx index a169a55c..04eebeaa 100644 --- a/src/components/catalog/views/gift/CatalogGiftView.tsx +++ b/src/components/catalog/views/gift/CatalogGiftView.tsx @@ -1,9 +1,8 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { GiftReceiverNotFoundEvent, PurchaseFromCatalogAsGiftComposer } from '@nitrots/nitro-renderer'; -import classNames from 'classnames'; import { FC, useCallback, useEffect, useMemo, useState } from 'react'; import { GetSessionDataManager, LocalizeText, ProductTypeEnum, SendMessageComposer } from '../../../../api'; -import { Base, Button, ButtonGroup, Column, Flex, FormGroup, LayoutCurrencyIcon, LayoutFurniImageView, LayoutGiftTagView, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text } from '../../../../common'; +import { Base, Button, ButtonGroup, classNames, Column, Flex, FormGroup, LayoutCurrencyIcon, LayoutFurniImageView, LayoutGiftTagView, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text } from '../../../../common'; import { CatalogEvent, CatalogInitGiftEvent, CatalogPurchasedEvent } from '../../../../events'; import { useCatalog, useMessageEvent, useUiEvent } from '../../../../hooks'; @@ -41,29 +40,6 @@ export const CatalogGiftView: FC<{}> = props => if(colors.length) setSelectedColorId(colors[0].id); }, [ colors ]); - const onCatalogEvent = useCallback((event: CatalogEvent) => - { - switch(event.type) - { - case CatalogPurchasedEvent.PURCHASE_SUCCESS: - onClose(); - return; - case CatalogEvent.INIT_GIFT: - const castedEvent = (event as CatalogInitGiftEvent); - - onClose(); - - setPageId(castedEvent.pageId); - setOfferId(castedEvent.offerId); - setExtraData(castedEvent.extraData); - setIsVisible(true); - return; - } - }, [ onClose ]); - - useUiEvent(CatalogPurchasedEvent.PURCHASE_SUCCESS, onCatalogEvent); - useUiEvent(CatalogEvent.INIT_GIFT, onCatalogEvent); - const isBoxDefault = useMemo(() => { return giftConfiguration ? (giftConfiguration.defaultStuffTypes.findIndex(s => (s === giftConfiguration.boxTypes[selectedBoxIndex])) > -1) : true; @@ -115,6 +91,28 @@ export const CatalogGiftView: FC<{}> = props => useMessageEvent(GiftReceiverNotFoundEvent, event => setReceiverNotFound(true)); + useUiEvent([ + CatalogPurchasedEvent.PURCHASE_SUCCESS, + CatalogEvent.INIT_GIFT ], event => + { + switch(event.type) + { + case CatalogPurchasedEvent.PURCHASE_SUCCESS: + onClose(); + return; + case CatalogEvent.INIT_GIFT: + const castedEvent = (event as CatalogInitGiftEvent); + + onClose(); + + setPageId(castedEvent.pageId); + setOfferId(castedEvent.offerId); + setExtraData(castedEvent.extraData); + setIsVisible(true); + return; + } + }); + useEffect(() => { setReceiverNotFound(false); @@ -157,7 +155,7 @@ export const CatalogGiftView: FC<{}> = props => { LocalizeText('catalog.gift_wrapping.receiver') } - setReceiverName(e.target.value) } /> + setReceiverName(e.target.value) } /> { receiverNotFound && { LocalizeText('catalog.gift_wrapping.receiver_not_found.title') } } diff --git a/src/components/groups/views/tabs/GroupTabColorsView.tsx b/src/components/groups/views/tabs/GroupTabColorsView.tsx index 41ad29d5..61f3c86f 100644 --- a/src/components/groups/views/tabs/GroupTabColorsView.tsx +++ b/src/components/groups/views/tabs/GroupTabColorsView.tsx @@ -1,8 +1,7 @@ import { GroupSaveColorsComposer } from '@nitrots/nitro-renderer'; -import classNames from 'classnames'; import { Dispatch, FC, SetStateAction, useCallback, useEffect, useState } from 'react'; import { IGroupData, LocalizeText, SendMessageComposer } from '../../../../api'; -import { AutoGrid, Base, Column, Flex, Grid, Text } from '../../../../common'; +import { AutoGrid, Base, classNames, Column, Flex, Grid, Text } from '../../../../common'; import { useGroup } from '../../../../hooks'; interface GroupTabColorsViewProps @@ -110,7 +109,7 @@ export const GroupTabColorsView: FC = props => { groupData.groupColors && groupCustomize.groupColorsA && groupCustomize.groupColorsA.map((item, index) => { - return
selectColor(0, item.id) }>
+ return
selectColor(0, item.id) }>
}) }
@@ -119,7 +118,7 @@ export const GroupTabColorsView: FC = props => { groupData.groupColors && groupCustomize.groupColorsB && groupCustomize.groupColorsB.map((item, index) => { - return
selectColor(1, item.id) }>
+ return
selectColor(1, item.id) }>
}) }
diff --git a/src/components/navigator/views/NavigatorRoomInfoView.tsx b/src/components/navigator/views/NavigatorRoomInfoView.tsx index c522b9bb..2651d8a4 100644 --- a/src/components/navigator/views/NavigatorRoomInfoView.tsx +++ b/src/components/navigator/views/NavigatorRoomInfoView.tsx @@ -1,9 +1,8 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { RoomMuteComposer, RoomSettingsComposer, SecurityLevel, ToggleStaffPickMessageComposer, UpdateHomeRoomMessageComposer } from '@nitrots/nitro-renderer'; -import classNames from 'classnames'; import { FC, useEffect, useState } from 'react'; import { CreateLinkEvent, DispatchUiEvent, GetGroupInformation, GetSessionDataManager, LocalizeText, SendMessageComposer } from '../../../api'; -import { Button, Column, Flex, LayoutBadgeImageView, LayoutRoomThumbnailView, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text, UserProfileIconView } from '../../../common'; +import { Button, classNames, Column, Flex, LayoutBadgeImageView, LayoutRoomThumbnailView, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text, UserProfileIconView } from '../../../common'; import { RoomWidgetThumbnailEvent } from '../../../events'; import { useNavigator } from '../../../hooks'; @@ -104,7 +103,7 @@ export const NavigatorRoomInfoView: FC = props => - processAction('set_home_room') } className={ 'flex-shrink-0 icon icon-house-small cursor-pointer' + classNames({ ' gray': navigatorData.homeRoomId !== navigatorData.enteredGuestRoom.roomId }) } /> + processAction('set_home_room') } className={ classNames('flex-shrink-0 icon icon-house-small cursor-pointer', ((navigatorData.homeRoomId !== navigatorData.enteredGuestRoom.roomId) && 'gray')) } /> { navigatorData.enteredGuestRoom.roomName } { navigatorData.enteredGuestRoom.showOwner && diff --git a/src/components/room/widgets/choosers/ChooserWidgetView.tsx b/src/components/room/widgets/choosers/ChooserWidgetView.tsx index 8667a617..2f192d42 100644 --- a/src/components/room/widgets/choosers/ChooserWidgetView.tsx +++ b/src/components/room/widgets/choosers/ChooserWidgetView.tsx @@ -1,7 +1,6 @@ -import classNames from 'classnames'; import { FC, useEffect, useMemo, useState } from 'react'; import { GetSessionDataManager, LocalizeText, RoomObjectItem } from '../../../../api'; -import { Flex, InfiniteScroll, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text } from '../../../../common'; +import { classNames, Flex, InfiniteScroll, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text } from '../../../../common'; interface ChooserWidgetViewProps { diff --git a/src/components/room/widgets/furniture/FurnitureDimmerView.tsx b/src/components/room/widgets/furniture/FurnitureDimmerView.tsx index 4b17e281..1cf53baa 100644 --- a/src/components/room/widgets/furniture/FurnitureDimmerView.tsx +++ b/src/components/room/widgets/furniture/FurnitureDimmerView.tsx @@ -1,9 +1,8 @@ import { RoomEngineTriggerWidgetEvent } from '@nitrots/nitro-renderer'; -import classNames from 'classnames'; import { FC, useEffect, useMemo, useState } from 'react'; import ReactSlider from 'react-slider'; import { ColorUtils, FurnitureDimmerUtilities, GetConfiguration, LocalizeText } from '../../../../api'; -import { Base, Button, Column, Flex, Grid, NitroCardContentView, NitroCardHeaderView, NitroCardTabsItemView, NitroCardTabsView, NitroCardView, Text } from '../../../../common'; +import { Base, Button, classNames, Column, Flex, Grid, NitroCardContentView, NitroCardHeaderView, NitroCardTabsItemView, NitroCardTabsView, NitroCardView, Text } from '../../../../common'; import { useFurnitureDimmerWidget, useRoomEngineEvent } from '../../../../hooks'; export const FurnitureDimmerView: FC<{}> = props => @@ -56,7 +55,7 @@ export const FurnitureDimmerView: FC<{}> = props => { FurnitureDimmerUtilities.AVAILABLE_COLORS.map((color, index) => { return ( - setSelectedColor(color) } style={ { backgroundColor: FurnitureDimmerUtilities.HTML_COLORS[index] } } /> + setSelectedColor(color) } style={ { backgroundColor: FurnitureDimmerUtilities.HTML_COLORS[index] } } /> ); }) } } diff --git a/src/components/room/widgets/room-tools/RoomToolsWidgetView.tsx b/src/components/room/widgets/room-tools/RoomToolsWidgetView.tsx index 683e1ec0..ab1db4bc 100644 --- a/src/components/room/widgets/room-tools/RoomToolsWidgetView.tsx +++ b/src/components/room/widgets/room-tools/RoomToolsWidgetView.tsx @@ -1,8 +1,7 @@ import { GetGuestRoomResultEvent, RateFlatMessageComposer } from '@nitrots/nitro-renderer'; -import classNames from 'classnames'; import { FC, useEffect, useState } from 'react'; import { CreateLinkEvent, GetRoomEngine, LocalizeText, SendMessageComposer } from '../../../../api'; -import { Base, Column, Flex, Text, TransitionAnimation, TransitionAnimationTypes } from '../../../../common'; +import { Base, classNames, Column, Flex, Text, TransitionAnimation, TransitionAnimationTypes } from '../../../../common'; import { useMessageEvent, useNavigator, useRoom } from '../../../../hooks'; export const RoomToolsWidgetView: FC<{}> = props => @@ -71,7 +70,7 @@ export const RoomToolsWidgetView: FC<{}> = props => handleToolClick('settings') } /> - handleToolClick('zoom') } className={ 'icon ' + classNames({ 'icon-zoom-less': !isZoomedIn, 'icon-zoom-more': isZoomedIn }) } /> + handleToolClick('zoom') } className={ classNames('icon', (!isZoomedIn && 'icon-zoom-less'), (isZoomedIn && 'icon-zoom-more')) } /> handleToolClick('chat_history') } className="icon icon-chat-history" /> { navigatorData.canRate && handleToolClick('like_room') } className="icon icon-like-room" /> }