mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-02 18:09:58 +08:00
refactor(editor): remove assertExists (#10615)
This commit is contained in:
+3
-3
@@ -16,7 +16,6 @@ import {
|
||||
} from '@blocksuite/affine-shared/commands';
|
||||
import type { AffineTextAttributes } from '@blocksuite/affine-shared/types';
|
||||
import type { EditorHost } from '@blocksuite/block-std';
|
||||
import { assertExists } from '@blocksuite/global/utils';
|
||||
import { computePosition, flip, offset, shift } from '@floating-ui/dom';
|
||||
import { html } from 'lit';
|
||||
import { ref, type RefOrCallback } from 'lit/directives/ref.js';
|
||||
@@ -125,8 +124,9 @@ export const HighlightButton = (formatBar: AffineFormatBarWidget) => {
|
||||
formatBar.shadowRoot?.querySelector<HTMLElement>('.highlight-button');
|
||||
const panel =
|
||||
formatBar.shadowRoot?.querySelector<HTMLElement>('.highlight-panel');
|
||||
assertExists(button);
|
||||
assertExists(panel);
|
||||
if (!button || !panel) {
|
||||
return;
|
||||
}
|
||||
panel.style.display = 'flex';
|
||||
computePosition(button, panel, {
|
||||
placement: 'bottom',
|
||||
|
||||
@@ -3,7 +3,6 @@ import { ArrowDownIcon } from '@blocksuite/affine-components/icons';
|
||||
import { textConversionConfigs } from '@blocksuite/affine-components/rich-text';
|
||||
import type { ParagraphBlockModel } from '@blocksuite/affine-model';
|
||||
import type { EditorHost } from '@blocksuite/block-std';
|
||||
import { assertExists } from '@blocksuite/global/utils';
|
||||
import { computePosition, flip, offset, shift } from '@floating-ui/dom';
|
||||
import { html } from 'lit';
|
||||
import { ref, type RefOrCallback } from 'lit/directives/ref.js';
|
||||
@@ -85,13 +84,11 @@ export const ParagraphButton = (formatBar: AffineFormatBarWidget) => {
|
||||
return;
|
||||
}
|
||||
const formatQuickBarElement = formatBar.formatBarElement;
|
||||
const button =
|
||||
formatBar.shadowRoot?.querySelector<HTMLElement>('.paragraph-button');
|
||||
const panel =
|
||||
formatBar.shadowRoot?.querySelector<HTMLElement>('.paragraph-panel');
|
||||
assertExists(button);
|
||||
assertExists(panel);
|
||||
assertExists(formatQuickBarElement, 'format quick bar should exist');
|
||||
if (!panel || !formatQuickBarElement) {
|
||||
return;
|
||||
}
|
||||
panel.style.display = 'flex';
|
||||
computePosition(formatQuickBarElement, panel, {
|
||||
placement: 'top-start',
|
||||
|
||||
@@ -62,7 +62,6 @@ import type {
|
||||
InitCommandCtx,
|
||||
} from '@blocksuite/block-std';
|
||||
import { tableViewMeta } from '@blocksuite/data-view/view-presets';
|
||||
import { assertExists } from '@blocksuite/global/utils';
|
||||
import { MoreVerticalIcon } from '@blocksuite/icons/lit';
|
||||
import { Slice, toDraftModel } from '@blocksuite/store';
|
||||
import { html, type TemplateResult } from 'lit';
|
||||
@@ -377,13 +376,17 @@ export const BUILT_IN_GROUPS: MenuItemGroup<FormatBarContext>[] = [
|
||||
.try<{ currentSelectionPath: string }>(cmd => [
|
||||
cmd.pipe(getTextSelectionCommand).pipe((ctx, next) => {
|
||||
const textSelection = ctx.currentTextSelection;
|
||||
assertExists(textSelection);
|
||||
if (!textSelection) {
|
||||
return;
|
||||
}
|
||||
const end = textSelection.to ?? textSelection.from;
|
||||
next({ currentSelectionPath: end.blockId });
|
||||
}),
|
||||
cmd.pipe(getBlockSelectionsCommand).pipe((ctx, next) => {
|
||||
const currentBlockSelections = ctx.currentBlockSelections;
|
||||
assertExists(currentBlockSelections);
|
||||
if (!currentBlockSelections) {
|
||||
return;
|
||||
}
|
||||
const blockSelection = currentBlockSelections.at(-1);
|
||||
if (!blockSelection) {
|
||||
return;
|
||||
|
||||
@@ -29,11 +29,7 @@ import {
|
||||
TextSelection,
|
||||
WidgetComponent,
|
||||
} from '@blocksuite/block-std';
|
||||
import {
|
||||
assertExists,
|
||||
DisposableGroup,
|
||||
nextTick,
|
||||
} from '@blocksuite/global/utils';
|
||||
import { DisposableGroup, nextTick } from '@blocksuite/global/utils';
|
||||
import type { BaseSelection } from '@blocksuite/store';
|
||||
import {
|
||||
autoUpdate,
|
||||
@@ -239,7 +235,9 @@ export class AffineFormatBarWidget extends WidgetComponent {
|
||||
|
||||
private _listenFloatingElement() {
|
||||
const formatQuickBarElement = this.formatBarElement;
|
||||
assertExists(formatQuickBarElement, 'format quick bar should exist');
|
||||
if (!formatQuickBarElement) {
|
||||
return;
|
||||
}
|
||||
|
||||
const listenFloatingElement = (
|
||||
getElement: () => ReferenceElement | void
|
||||
@@ -249,7 +247,10 @@ export class AffineFormatBarWidget extends WidgetComponent {
|
||||
return;
|
||||
}
|
||||
|
||||
assertExists(this._floatDisposables);
|
||||
if (!this._floatDisposables) {
|
||||
return;
|
||||
}
|
||||
|
||||
HoverController.globalAbortController?.abort();
|
||||
this._floatDisposables.add(
|
||||
autoUpdate(
|
||||
@@ -512,7 +513,9 @@ export class AffineFormatBarWidget extends WidgetComponent {
|
||||
this._abortController = new AbortController();
|
||||
|
||||
const rootComponent = this.block;
|
||||
assertExists(rootComponent);
|
||||
if (!rootComponent) {
|
||||
return;
|
||||
}
|
||||
const widgets = rootComponent.widgets;
|
||||
|
||||
// check if the host use the format bar widget
|
||||
|
||||
@@ -4,7 +4,7 @@ import type {
|
||||
MenuItemGroup,
|
||||
} from '@blocksuite/affine-components/toolbar';
|
||||
import { renderGroups } from '@blocksuite/affine-components/toolbar';
|
||||
import { assertExists, noop } from '@blocksuite/global/utils';
|
||||
import { noop } from '@blocksuite/global/utils';
|
||||
import { MoreVerticalIcon } from '@blocksuite/icons/lit';
|
||||
import { flip, offset } from '@floating-ui/dom';
|
||||
import { html, LitElement } from 'lit';
|
||||
@@ -57,7 +57,9 @@ export class AffineImageToolbar extends LitElement {
|
||||
|
||||
this._currentOpenMenu = this._popMenuAbortController;
|
||||
|
||||
assertExists(this._moreButton);
|
||||
if (!this._moreButton) {
|
||||
return;
|
||||
}
|
||||
|
||||
createLitPortal({
|
||||
template: html`
|
||||
|
||||
@@ -4,7 +4,6 @@ import {
|
||||
isInsidePageEditor,
|
||||
} from '@blocksuite/affine-shared/utils';
|
||||
import { BlockSelection } from '@blocksuite/block-std';
|
||||
import { assertExists } from '@blocksuite/global/utils';
|
||||
|
||||
export function duplicate(
|
||||
block: ImageBlockComponent,
|
||||
@@ -23,7 +22,10 @@ export function duplicate(
|
||||
|
||||
const { doc } = model;
|
||||
const parent = doc.getParent(model);
|
||||
assertExists(parent, 'Parent not found');
|
||||
if (!parent) {
|
||||
console.error(`Parent not found for block(${model.flavour}) ${model.id}`);
|
||||
return;
|
||||
}
|
||||
|
||||
const index = parent?.children.indexOf(model);
|
||||
const duplicateId = doc.addBlock(
|
||||
|
||||
@@ -13,11 +13,7 @@ import {
|
||||
isFuzzyMatch,
|
||||
substringMatchScore,
|
||||
} from '@blocksuite/affine-shared/utils';
|
||||
import {
|
||||
assertExists,
|
||||
throttle,
|
||||
WithDisposable,
|
||||
} from '@blocksuite/global/utils';
|
||||
import { throttle, WithDisposable } from '@blocksuite/global/utils';
|
||||
import { autoPlacement, offset } from '@floating-ui/dom';
|
||||
import { html, LitElement, nothing, type PropertyValues } from 'lit';
|
||||
import { property, state } from 'lit/decorators.js';
|
||||
@@ -592,7 +588,11 @@ export class InnerSlashMenu extends WithDisposable(LitElement) {
|
||||
override willUpdate(changedProperties: PropertyValues<this>) {
|
||||
if (changedProperties.has('menu') && this.menu.length !== 0) {
|
||||
const firstItem = getFirstNotDividerItem(this.menu);
|
||||
assertExists(firstItem);
|
||||
if (!firstItem) {
|
||||
console.error('No item found in slash menu');
|
||||
return;
|
||||
}
|
||||
|
||||
this._activeItem = firstItem;
|
||||
|
||||
// this case happen on query updated
|
||||
|
||||
@@ -7,8 +7,8 @@ import {
|
||||
GfxControllerIdentifier,
|
||||
type GfxModel,
|
||||
} from '@blocksuite/block-std/gfx';
|
||||
import { BlockSuiteError } from '@blocksuite/global/exceptions';
|
||||
import { Bound } from '@blocksuite/global/gfx';
|
||||
import { assertExists } from '@blocksuite/global/utils';
|
||||
|
||||
export const edgelessToBlob = async (
|
||||
host: EditorHost,
|
||||
@@ -24,24 +24,25 @@ export const edgelessToBlob = async (
|
||||
const isBlock = isTopLevelBlock(edgelessElement);
|
||||
const gfx = host.std.get(GfxControllerIdentifier);
|
||||
|
||||
return exportManager
|
||||
.edgelessToCanvas(
|
||||
options.surfaceRenderer,
|
||||
bound,
|
||||
gfx,
|
||||
isBlock ? [edgelessElement] : undefined,
|
||||
isBlock ? undefined : [edgelessElement],
|
||||
{ zoom: options.surfaceRenderer.viewport.zoom }
|
||||
)
|
||||
.then(canvas => {
|
||||
assertExists(canvas);
|
||||
return new Promise((resolve, reject) => {
|
||||
canvas.toBlob(
|
||||
blob => (blob ? resolve(blob) : reject(null)),
|
||||
'image/png'
|
||||
);
|
||||
});
|
||||
});
|
||||
const canvas = await exportManager.edgelessToCanvas(
|
||||
options.surfaceRenderer,
|
||||
bound,
|
||||
gfx,
|
||||
isBlock ? [edgelessElement] : undefined,
|
||||
isBlock ? undefined : [edgelessElement],
|
||||
{ zoom: options.surfaceRenderer.viewport.zoom }
|
||||
);
|
||||
|
||||
if (!canvas) {
|
||||
throw new BlockSuiteError(
|
||||
BlockSuiteError.ErrorCode.ValueNotExists,
|
||||
'Failed to export edgeless to canvas'
|
||||
);
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
canvas.toBlob(blob => (blob ? resolve(blob) : reject(null)), 'image/png');
|
||||
});
|
||||
};
|
||||
|
||||
export const writeImageBlobToClipboard = async (blob: Blob) => {
|
||||
|
||||
Reference in New Issue
Block a user