import { GroupIcon } from '@blocksuite/affine-components/icons'; import { GroupElementModel, MindmapElementModel, } from '@blocksuite/affine-model'; import type { GfxModel } from '@blocksuite/block-std/gfx'; import { WithDisposable } from '@blocksuite/global/utils'; import { css, html, LitElement, nothing } from 'lit'; import { property } from 'lit/decorators.js'; import type { EdgelessRootBlockComponent } from '../../edgeless/edgeless-root-block.js'; export class EdgelessAddGroupButton extends WithDisposable(LitElement) { static override styles = css` .label { padding-left: 4px; } `; private readonly _createGroup = () => { this.edgeless.service.createGroupFromSelected(); }; protected override render() { return html` ${GroupIcon}Group `; } @property({ attribute: false }) accessor edgeless!: EdgelessRootBlockComponent; } export function renderAddGroupButton( edgeless: EdgelessRootBlockComponent, elements: GfxModel[] ) { if (elements.length < 2) return nothing; if (elements[0] instanceof GroupElementModel) return nothing; if (elements.some(e => e.group instanceof MindmapElementModel)) return nothing; return html` `; }