| 
						
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -1,16 +1,17 @@
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import { PermissionList } from '@/components/PermissionList';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import { Button } from 'antd';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import clsx from 'clsx';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import React, { PropsWithChildren, useState } from 'react';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import React, { PropsWithChildren, useMemo, useState } from 'react';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  ALL_PERMISSION,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  getDefaultPermissionList,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  GroupPanelType,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  t,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  useAppSelector,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  useEvent,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  useLazyValue,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				} from 'tailchat-shared';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import _isEqual from 'lodash/isEqual';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import { LoadingSpinner } from '@/components/LoadingSpinner';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				interface AdvanceGroupPanelPermissionProps {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  height?: number;
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -32,10 +33,15 @@ export const AdvanceGroupPanelPermission: React.FC<AdvanceGroupPanelPermissionPr
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      return groupInfo.roles;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    const panelInfo = useAppSelector((state) => {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      const groupInfo = state.group.groups[props.groupId];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      const panelInfo = groupInfo.panels.find((p) => p.id === props.panelId);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      return panelInfo;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    const permissionMap: Record<string | typeof ALL_PERMISSION, string[]> =
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      useAppSelector((state) => {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        const groupInfo = state.group.groups[props.groupId];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        const panelInfo = groupInfo.panels.find((p) => p.id === props.panelId);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      useMemo(() => {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (!panelInfo) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          return { [ALL_PERMISSION]: getDefaultPermissionList() };
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        } else {
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -45,7 +51,7 @@ export const AdvanceGroupPanelPermission: React.FC<AdvanceGroupPanelPermissionPr
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            ...panelInfo.permissionMap,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          };
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      }, _isEqual);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      }, [panelInfo]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    const [editPermissionMap, setEditPermissionMap] = useLazyValue(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      permissionMap,
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -64,6 +70,10 @@ export const AdvanceGroupPanelPermission: React.FC<AdvanceGroupPanelPermissionPr
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      props.onChange(undefined);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!panelInfo) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      return <LoadingSpinner />;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return (
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      <div className="flex" style={{ width: 540 }}>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        <div>
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -88,6 +98,11 @@ export const AdvanceGroupPanelPermission: React.FC<AdvanceGroupPanelPermissionPr
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            <Button onClick={handleSyncWithGroup}>{t('与群组配置同步')}</Button>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          </div>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          <PermissionList
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            panelType={
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              panelInfo.type === GroupPanelType.PLUGIN
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                ? panelInfo.pluginPanelName
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                : panelInfo.type
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            value={editPermissionMap[selectedRoleId] ?? []}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            onChange={handleUpdatePermissionMap}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          />
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |