import { Chip, config, Icon, Icons, Menu, MenuItem, PopOut, RectCords, Text } from 'folds'; import React, { MouseEventHandler, useState } from 'react'; import FocusTrap from 'focus-trap-react'; import { isKeyHotkey } from 'is-hotkey'; import { useRoomCreatorsTag } from '../../hooks/useRoomCreatorsTag'; import { PowerColorBadge, PowerIcon } from '../power'; import { getPowerTagIconSrc } from '../../hooks/useMemberPowerTag'; import { useMatrixClient } from '../../hooks/useMatrixClient'; import { useMediaAuthentication } from '../../hooks/useMediaAuthentication'; import { stopPropagation } from '../../utils/keyboard'; import { useRoom } from '../../hooks/useRoom'; import { useSpaceOptionally } from '../../hooks/useSpace'; import { useOpenRoomSettings } from '../../state/hooks/roomSettings'; import { useOpenSpaceSettings } from '../../state/hooks/spaceSettings'; import { SpaceSettingsPage } from '../../state/spaceSettings'; import { RoomSettingsPage } from '../../state/roomSettings'; export function CreatorChip() { const mx = useMatrixClient(); const useAuthentication = useMediaAuthentication(); const room = useRoom(); const space = useSpaceOptionally(); const openRoomSettings = useOpenRoomSettings(); const openSpaceSettings = useOpenSpaceSettings(); const [cords, setCords] = useState(); const tag = useRoomCreatorsTag(); const tagIconSrc = tag.icon && getPowerTagIconSrc(mx, useAuthentication, tag.icon); const open: MouseEventHandler = (evt) => { setCords(evt.currentTarget.getBoundingClientRect()); }; const close = () => setCords(undefined); return ( isKeyHotkey('arrowdown', evt), isKeyBackward: (evt: KeyboardEvent) => isKeyHotkey('arrowup', evt), }} >
{ if (room.isSpaceRoom()) { openSpaceSettings( room.roomId, space?.roomId, SpaceSettingsPage.PermissionsPage ); } else { openRoomSettings(room.roomId, space?.roomId, RoomSettingsPage.PermissionsPage); } close(); }} > Manage Powers
} > ) : ( ) } after={tagIconSrc ? : undefined} onClick={open} aria-pressed={!!cords} > {tag.name}
); }