import { NoteDisplayMode } from '@blocksuite/affine-model'; import { ShadowlessElement } from '@blocksuite/block-std'; import { ArrowDownSmallIcon } from '@blocksuite/icons/lit'; import { html } from 'lit'; import { property } from 'lit/decorators.js'; const DisplayModeMap = { [NoteDisplayMode.DocAndEdgeless]: 'Both', [NoteDisplayMode.EdgelessOnly]: 'Edgeless', [NoteDisplayMode.DocOnly]: 'Page', } as const satisfies Record; export class EdgelessNoteDisplayModeDropdownMenu extends ShadowlessElement { get mode() { return DisplayModeMap[this.displayMode]; } select(detail: NoteDisplayMode) { this.dispatchEvent(new CustomEvent('select', { detail })); } override render() { const { displayMode, mode } = this; return html` Show in ${mode} ${ArrowDownSmallIcon()} `} > this.select(newMode)} > `; } @property({ attribute: false }) accessor displayMode!: NoteDisplayMode; } declare global { interface HTMLElementTagNameMap { 'edgeless-note-display-mode-dropdown-menu': EdgelessNoteDisplayModeDropdownMenu; } }