chore: merge blocksuite source code (#9213)

This commit is contained in:
Mirone
2024-12-20 15:38:06 +08:00
committed by GitHub
parent 2c9ef916f4
commit 30200ff86d
2031 changed files with 238888 additions and 229 deletions
@@ -0,0 +1,88 @@
import type { RootBlockModel } from '@blocksuite/affine-model';
import { WidgetComponent } from '@blocksuite/block-std';
import { css, html } from 'lit';
import { state } from 'lit/decorators.js';
import { classMap } from 'lit/directives/class-map.js';
import { styleMap } from 'lit/directives/style-map.js';
import type { PageRootBlockComponent } from '../../index.js';
export const AFFINE_VIEWPORT_OVERLAY_WIDGET = 'affine-viewport-overlay-widget';
export class AffineViewportOverlayWidget extends WidgetComponent<
RootBlockModel,
PageRootBlockComponent
> {
static override styles = css`
.affine-viewport-overlay-widget {
position: absolute;
top: 0;
left: 0;
background: transparent;
pointer-events: none;
z-index: calc(var(--affine-z-index-popover) - 1);
}
.affine-viewport-overlay-widget.lock {
pointer-events: auto;
}
`;
override connectedCallback() {
super.connectedCallback();
this.handleEvent(
'dragStart',
() => {
return this._lockViewport;
},
{ global: true }
);
this.handleEvent(
'pointerDown',
() => {
return this._lockViewport;
},
{ global: true }
);
this.handleEvent(
'click',
() => {
return this._lockViewport;
},
{ global: true }
);
}
lock() {
this._lockViewport = true;
}
override render() {
const classes = classMap({
'affine-viewport-overlay-widget': true,
lock: this._lockViewport,
});
const style = styleMap({
width: `${this._lockViewport ? '100vw' : '0'}`,
height: `${this._lockViewport ? '100%' : '0'}`,
});
return html` <div class=${classes} style=${style}></div> `;
}
toggleLock() {
this._lockViewport = !this._lockViewport;
}
unlock() {
this._lockViewport = false;
}
@state()
private accessor _lockViewport = false;
}
declare global {
interface HTMLElementTagNameMap {
[AFFINE_VIEWPORT_OVERLAY_WIDGET]: AffineViewportOverlayWidget;
}
}