import { ShadowlessElement, WithDisposable } from '@cbi-blocksuite/block-std'; import { FrameBlockModel } from '@cbi-blocksuite/blocks'; import { css, html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { FastImage2ImageServiceKind, Image2ImageServiceKind, Image2TextServiceKind, Text2ImageServiceKind, } from '../copilot-service/service-base.js'; import type { AILogic } from '../logic.js'; import { getSurfaceElementFromEditor, stopPropagation, } from '../utils/selection-utils.js'; @customElement('copilot-edgeless-panel') export class CopilotEdgelessPanel extends WithDisposable(ShadowlessElement) { static override styles = css``; @property({ attribute: false }) logic!: AILogic; get host() { return this.logic.getHost(); } protected override render(): unknown { const frames = getSurfaceElementFromEditor(this.host).model.children.filter( v => v instanceof FrameBlockModel ) as FrameBlockModel[]; const changeFromFrame = (e: Event) => { this.logic.edgeless.fromFrame = (e.target as HTMLSelectElement).value; }; const toggleAutoGen = () => { this.logic.edgeless.toggleAutoGen(); this.requestUpdate(); }; return html`
Make It Real
Select some shapes and text to generate html
service:
Create Image
Type prompt to create an image.
service:
Edit Image
Select some shapes and type prompt to edit them.
service:
HTML Block Test
Generate a html block
${this.logic.edgeless.autoGen ? 'Stop auto gen image' : 'Start auto gen image'}
Based on the shapes in frame
Generate images to all connected frames
service:
`; } } declare global { interface HTMLElementTagNameMap { 'copilot-edgeless-panel': CopilotEdgelessPanel; } }