mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-04 03:01:25 +08:00
383 lines
18 KiB
TypeScript
383 lines
18 KiB
TypeScript
import { effects as gfxCanvasTextEffects } from '@blocksuite/affine-gfx-text/effects';
|
|
|
|
import { EdgelessAutoCompletePanel } from './edgeless/components/auto-complete/auto-complete-panel.js';
|
|
import { EdgelessAutoComplete } from './edgeless/components/auto-complete/edgeless-auto-complete.js';
|
|
import { EdgelessToolIconButton } from './edgeless/components/buttons/tool-icon-button.js';
|
|
import { EdgelessToolbarButton } from './edgeless/components/buttons/toolbar-button.js';
|
|
import { EdgelessConnectorHandle } from './edgeless/components/connector/connector-handle.js';
|
|
import {
|
|
NOTE_SLICER_WIDGET,
|
|
NoteSlicer,
|
|
} from './edgeless/components/note-slicer/index.js';
|
|
import { EdgelessAlignPanel } from './edgeless/components/panel/align-panel.js';
|
|
import { CardStylePanel } from './edgeless/components/panel/card-style-panel.js';
|
|
import { EdgelessFontFamilyPanel } from './edgeless/components/panel/font-family-panel.js';
|
|
import { EdgelessFontWeightAndStylePanel } from './edgeless/components/panel/font-weight-and-style-panel.js';
|
|
import { EdgelessLineWidthPanel } from './edgeless/components/panel/line-width-panel.js';
|
|
import { NoteDisplayModePanel } from './edgeless/components/panel/note-display-mode-panel.js';
|
|
import { EdgelessNoteShadowPanel } from './edgeless/components/panel/note-shadow-panel.js';
|
|
import { EdgelessScalePanel } from './edgeless/components/panel/scale-panel.js';
|
|
import { EdgelessShapePanel } from './edgeless/components/panel/shape-panel.js';
|
|
import { EdgelessShapeStylePanel } from './edgeless/components/panel/shape-style-panel.js';
|
|
import { EdgelessSizePanel } from './edgeless/components/panel/size-panel.js';
|
|
import { StrokeStylePanel } from './edgeless/components/panel/stroke-style-panel.js';
|
|
import {
|
|
EDGELESS_DRAGGING_AREA_WIDGET,
|
|
EdgelessDraggingAreaRectWidget,
|
|
} from './edgeless/components/rects/edgeless-dragging-area-rect.js';
|
|
import {
|
|
EDGELESS_SELECTED_RECT_WIDGET,
|
|
EdgelessSelectedRectWidget,
|
|
} from './edgeless/components/rects/edgeless-selected-rect.js';
|
|
import { EdgelessConnectorLabelEditor } from './edgeless/components/text/edgeless-connector-label-editor.js';
|
|
import { EdgelessFrameTitleEditor } from './edgeless/components/text/edgeless-frame-title-editor.js';
|
|
import { EdgelessGroupTitleEditor } from './edgeless/components/text/edgeless-group-title-editor.js';
|
|
import { EdgelessShapeTextEditor } from './edgeless/components/text/edgeless-shape-text-editor.js';
|
|
import { EdgelessBrushMenu } from './edgeless/components/toolbar/brush/brush-menu.js';
|
|
import { EdgelessBrushToolButton } from './edgeless/components/toolbar/brush/brush-tool-button.js';
|
|
import { EdgelessSlideMenu } from './edgeless/components/toolbar/common/slide-menu.js';
|
|
import { ToolbarArrowUpIcon } from './edgeless/components/toolbar/common/toolbar-arrow-up-icon.js';
|
|
import { EdgelessConnectorMenu } from './edgeless/components/toolbar/connector/connector-menu.js';
|
|
import { EdgelessConnectorToolButton } from './edgeless/components/toolbar/connector/connector-tool-button.js';
|
|
import { EdgelessDefaultToolButton } from './edgeless/components/toolbar/default/default-tool-button.js';
|
|
import { EdgelessToolbarWidget } from './edgeless/components/toolbar/edgeless-toolbar.js';
|
|
import { EdgelessEraserToolButton } from './edgeless/components/toolbar/eraser/eraser-tool-button.js';
|
|
import { EdgelessFrameMenu } from './edgeless/components/toolbar/frame/frame-menu.js';
|
|
import { EdgelessFrameToolButton } from './edgeless/components/toolbar/frame/frame-tool-button.js';
|
|
import { EdgelessLassoToolButton } from './edgeless/components/toolbar/lasso/lasso-tool-button.js';
|
|
import { EdgelessLinkToolButton } from './edgeless/components/toolbar/link/link-tool-button.js';
|
|
import { MindMapPlaceholder } from './edgeless/components/toolbar/mindmap/mindmap-importing-placeholder.js';
|
|
import { EdgelessMindmapMenu } from './edgeless/components/toolbar/mindmap/mindmap-menu.js';
|
|
import { EdgelessMindmapToolButton } from './edgeless/components/toolbar/mindmap/mindmap-tool-button.js';
|
|
import { EdgelessNoteMenu } from './edgeless/components/toolbar/note/note-menu.js';
|
|
import { EdgelessNoteSeniorButton } from './edgeless/components/toolbar/note/note-senior-button.js';
|
|
import { EdgelessNoteToolButton } from './edgeless/components/toolbar/note/note-tool-button.js';
|
|
import { EdgelessFrameOrderButton } from './edgeless/components/toolbar/present/frame-order-button.js';
|
|
import { EdgelessFrameOrderMenu } from './edgeless/components/toolbar/present/frame-order-menu.js';
|
|
import { EdgelessNavigatorSettingButton } from './edgeless/components/toolbar/present/navigator-setting-button.js';
|
|
import { EdgelessPresentButton } from './edgeless/components/toolbar/present/present-button.js';
|
|
import { PresentationToolbar } from './edgeless/components/toolbar/presentation-toolbar.js';
|
|
import { EdgelessToolbarShapeDraggable } from './edgeless/components/toolbar/shape/shape-draggable.js';
|
|
import { EdgelessShapeMenu } from './edgeless/components/toolbar/shape/shape-menu.js';
|
|
import { EdgelessShapeToolButton } from './edgeless/components/toolbar/shape/shape-tool-button.js';
|
|
import { EdgelessShapeToolElement } from './edgeless/components/toolbar/shape/shape-tool-element.js';
|
|
import { OverlayScrollbar } from './edgeless/components/toolbar/template/overlay-scrollbar.js';
|
|
import { AffineTemplateLoading } from './edgeless/components/toolbar/template/template-loading.js';
|
|
import { EdgelessTemplatePanel } from './edgeless/components/toolbar/template/template-panel.js';
|
|
import { EdgelessTemplateButton } from './edgeless/components/toolbar/template/template-tool-button.js';
|
|
import { EdgelessTextMenu } from './edgeless/components/toolbar/text/text-menu.js';
|
|
import {
|
|
AffineImageToolbarWidget,
|
|
AffineModalWidget,
|
|
EDGELESS_TOOLBAR_WIDGET,
|
|
EdgelessRootBlockComponent,
|
|
EdgelessRootPreviewBlockComponent,
|
|
PageRootBlockComponent,
|
|
PreviewRootBlockComponent,
|
|
} from './index.js';
|
|
import {
|
|
EDGELESS_NAVIGATOR_BLACK_BACKGROUND_WIDGET,
|
|
EdgelessNavigatorBlackBackgroundWidget,
|
|
} from './widgets/edgeless-navigator-bg/index.js';
|
|
import {
|
|
AFFINE_EDGELESS_ZOOM_TOOLBAR_WIDGET,
|
|
AffineEdgelessZoomToolbarWidget,
|
|
} from './widgets/edgeless-zoom-toolbar/index.js';
|
|
import { ZoomBarToggleButton } from './widgets/edgeless-zoom-toolbar/zoom-bar-toggle-button.js';
|
|
import { EdgelessZoomToolbar } from './widgets/edgeless-zoom-toolbar/zoom-toolbar.js';
|
|
import { effects as widgetEdgelessElementToolbarEffects } from './widgets/element-toolbar/effects.js';
|
|
import { AffineImageToolbar } from './widgets/image-toolbar/components/image-toolbar.js';
|
|
import { AFFINE_IMAGE_TOOLBAR_WIDGET } from './widgets/image-toolbar/index.js';
|
|
import {
|
|
AFFINE_INNER_MODAL_WIDGET,
|
|
AffineInnerModalWidget,
|
|
} from './widgets/inner-modal/inner-modal.js';
|
|
import { effects as widgetMobileToolbarEffects } from './widgets/keyboard-toolbar/effects.js';
|
|
import { effects as widgetLinkedDocEffects } from './widgets/linked-doc/effects.js';
|
|
import { Loader } from './widgets/linked-doc/import-doc/loader.js';
|
|
import { AffineCustomModal } from './widgets/modal/custom-modal.js';
|
|
import { AFFINE_MODAL_WIDGET } from './widgets/modal/modal.js';
|
|
import {
|
|
AFFINE_PAGE_DRAGGING_AREA_WIDGET,
|
|
AffinePageDraggingAreaWidget,
|
|
} from './widgets/page-dragging-area/page-dragging-area.js';
|
|
import {
|
|
AFFINE_SURFACE_REF_TOOLBAR,
|
|
AffineSurfaceRefToolbar,
|
|
} from './widgets/surface-ref-toolbar/surface-ref-toolbar.js';
|
|
import {
|
|
AFFINE_VIEWPORT_OVERLAY_WIDGET,
|
|
AffineViewportOverlayWidget,
|
|
} from './widgets/viewport-overlay/viewport-overlay.js';
|
|
|
|
export function effects() {
|
|
// Run other effects
|
|
widgetEdgelessElementToolbarEffects();
|
|
widgetMobileToolbarEffects();
|
|
widgetLinkedDocEffects();
|
|
|
|
// Register components by category
|
|
registerRootComponents();
|
|
registerGfxEffects();
|
|
registerWidgets();
|
|
registerEdgelessToolbarComponents();
|
|
registerEdgelessPanelComponents();
|
|
registerEdgelessEditorComponents();
|
|
registerMiscComponents();
|
|
}
|
|
|
|
function registerRootComponents() {
|
|
customElements.define('affine-page-root', PageRootBlockComponent);
|
|
customElements.define('affine-preview-root', PreviewRootBlockComponent);
|
|
customElements.define('affine-edgeless-root', EdgelessRootBlockComponent);
|
|
customElements.define(
|
|
'affine-edgeless-root-preview',
|
|
EdgelessRootPreviewBlockComponent
|
|
);
|
|
}
|
|
|
|
function registerGfxEffects() {
|
|
gfxCanvasTextEffects();
|
|
}
|
|
|
|
function registerWidgets() {
|
|
customElements.define(AFFINE_INNER_MODAL_WIDGET, AffineInnerModalWidget);
|
|
customElements.define(AFFINE_MODAL_WIDGET, AffineModalWidget);
|
|
customElements.define(
|
|
AFFINE_PAGE_DRAGGING_AREA_WIDGET,
|
|
AffinePageDraggingAreaWidget
|
|
);
|
|
customElements.define(AFFINE_IMAGE_TOOLBAR_WIDGET, AffineImageToolbarWidget);
|
|
customElements.define(
|
|
AFFINE_VIEWPORT_OVERLAY_WIDGET,
|
|
AffineViewportOverlayWidget
|
|
);
|
|
customElements.define(
|
|
AFFINE_EDGELESS_ZOOM_TOOLBAR_WIDGET,
|
|
AffineEdgelessZoomToolbarWidget
|
|
);
|
|
customElements.define(AFFINE_SURFACE_REF_TOOLBAR, AffineSurfaceRefToolbar);
|
|
}
|
|
|
|
function registerEdgelessToolbarComponents() {
|
|
// Tool buttons
|
|
customElements.define('edgeless-brush-tool-button', EdgelessBrushToolButton);
|
|
customElements.define(
|
|
'edgeless-connector-tool-button',
|
|
EdgelessConnectorToolButton
|
|
);
|
|
customElements.define(
|
|
'edgeless-default-tool-button',
|
|
EdgelessDefaultToolButton
|
|
);
|
|
customElements.define(
|
|
'edgeless-eraser-tool-button',
|
|
EdgelessEraserToolButton
|
|
);
|
|
customElements.define('edgeless-frame-tool-button', EdgelessFrameToolButton);
|
|
customElements.define('edgeless-link-tool-button', EdgelessLinkToolButton);
|
|
customElements.define('edgeless-lasso-tool-button', EdgelessLassoToolButton);
|
|
customElements.define(
|
|
'edgeless-mindmap-tool-button',
|
|
EdgelessMindmapToolButton
|
|
);
|
|
customElements.define('edgeless-note-tool-button', EdgelessNoteToolButton);
|
|
customElements.define('edgeless-shape-tool-button', EdgelessShapeToolButton);
|
|
customElements.define('edgeless-template-button', EdgelessTemplateButton);
|
|
|
|
// Menus
|
|
customElements.define('edgeless-brush-menu', EdgelessBrushMenu);
|
|
customElements.define('edgeless-connector-menu', EdgelessConnectorMenu);
|
|
customElements.define('edgeless-frame-menu', EdgelessFrameMenu);
|
|
customElements.define('edgeless-mindmap-menu', EdgelessMindmapMenu);
|
|
customElements.define('edgeless-note-menu', EdgelessNoteMenu);
|
|
customElements.define('edgeless-shape-menu', EdgelessShapeMenu);
|
|
customElements.define('edgeless-text-menu', EdgelessTextMenu);
|
|
customElements.define('edgeless-slide-menu', EdgelessSlideMenu);
|
|
|
|
// Toolbar components
|
|
customElements.define(EDGELESS_TOOLBAR_WIDGET, EdgelessToolbarWidget);
|
|
customElements.define('edgeless-toolbar-button', EdgelessToolbarButton);
|
|
customElements.define('edgeless-tool-icon-button', EdgelessToolIconButton);
|
|
customElements.define(
|
|
'edgeless-toolbar-shape-draggable',
|
|
EdgelessToolbarShapeDraggable
|
|
);
|
|
customElements.define('toolbar-arrow-up-icon', ToolbarArrowUpIcon);
|
|
|
|
// Frame order components
|
|
customElements.define(
|
|
'edgeless-frame-order-button',
|
|
EdgelessFrameOrderButton
|
|
);
|
|
customElements.define('edgeless-frame-order-menu', EdgelessFrameOrderMenu);
|
|
customElements.define(
|
|
'edgeless-navigator-setting-button',
|
|
EdgelessNavigatorSettingButton
|
|
);
|
|
customElements.define('edgeless-present-button', EdgelessPresentButton);
|
|
customElements.define(
|
|
'edgeless-note-senior-button',
|
|
EdgelessNoteSeniorButton
|
|
);
|
|
}
|
|
|
|
function registerEdgelessPanelComponents() {
|
|
customElements.define('edgeless-align-panel', EdgelessAlignPanel);
|
|
customElements.define('card-style-panel', CardStylePanel);
|
|
customElements.define('edgeless-line-width-panel', EdgelessLineWidthPanel);
|
|
customElements.define(
|
|
'edgeless-font-weight-and-style-panel',
|
|
EdgelessFontWeightAndStylePanel
|
|
);
|
|
customElements.define('edgeless-note-shadow-panel', EdgelessNoteShadowPanel);
|
|
customElements.define('edgeless-size-panel', EdgelessSizePanel);
|
|
customElements.define('edgeless-scale-panel', EdgelessScalePanel);
|
|
customElements.define('edgeless-font-family-panel', EdgelessFontFamilyPanel);
|
|
customElements.define('edgeless-shape-panel', EdgelessShapePanel);
|
|
customElements.define('note-display-mode-panel', NoteDisplayModePanel);
|
|
customElements.define('stroke-style-panel', StrokeStylePanel);
|
|
customElements.define('edgeless-shape-style-panel', EdgelessShapeStylePanel);
|
|
}
|
|
|
|
function registerEdgelessEditorComponents() {
|
|
customElements.define(
|
|
'edgeless-connector-label-editor',
|
|
EdgelessConnectorLabelEditor
|
|
);
|
|
customElements.define('edgeless-shape-text-editor', EdgelessShapeTextEditor);
|
|
customElements.define(
|
|
'edgeless-group-title-editor',
|
|
EdgelessGroupTitleEditor
|
|
);
|
|
customElements.define(
|
|
'edgeless-frame-title-editor',
|
|
EdgelessFrameTitleEditor
|
|
);
|
|
}
|
|
|
|
function registerMiscComponents() {
|
|
// Modal and menu components
|
|
customElements.define('affine-custom-modal', AffineCustomModal);
|
|
|
|
// Loading and preview components
|
|
customElements.define('loader-element', Loader);
|
|
customElements.define('affine-template-loading', AffineTemplateLoading);
|
|
|
|
// Toolbar and UI components
|
|
customElements.define('affine-image-toolbar', AffineImageToolbar);
|
|
customElements.define('presentation-toolbar', PresentationToolbar);
|
|
customElements.define('edgeless-zoom-toolbar', EdgelessZoomToolbar);
|
|
customElements.define('zoom-bar-toggle-button', ZoomBarToggleButton);
|
|
customElements.define('overlay-scrollbar', OverlayScrollbar);
|
|
|
|
// Auto-complete components
|
|
customElements.define(
|
|
'edgeless-auto-complete-panel',
|
|
EdgelessAutoCompletePanel
|
|
);
|
|
customElements.define('edgeless-auto-complete', EdgelessAutoComplete);
|
|
|
|
// Note and template components
|
|
customElements.define(NOTE_SLICER_WIDGET, NoteSlicer);
|
|
customElements.define('edgeless-templates-panel', EdgelessTemplatePanel);
|
|
|
|
// Navigation components
|
|
customElements.define(
|
|
EDGELESS_NAVIGATOR_BLACK_BACKGROUND_WIDGET,
|
|
EdgelessNavigatorBlackBackgroundWidget
|
|
);
|
|
|
|
// Dragging area components
|
|
customElements.define(
|
|
EDGELESS_DRAGGING_AREA_WIDGET,
|
|
EdgelessDraggingAreaRectWidget
|
|
);
|
|
customElements.define(
|
|
EDGELESS_SELECTED_RECT_WIDGET,
|
|
EdgelessSelectedRectWidget
|
|
);
|
|
|
|
// Mindmap components
|
|
customElements.define('mindmap-import-placeholder', MindMapPlaceholder);
|
|
|
|
// Shape components
|
|
customElements.define(
|
|
'edgeless-shape-tool-element',
|
|
EdgelessShapeToolElement
|
|
);
|
|
|
|
// Connector components
|
|
customElements.define('edgeless-connector-handle', EdgelessConnectorHandle);
|
|
}
|
|
|
|
declare global {
|
|
interface HTMLElementTagNameMap {
|
|
'affine-edgeless-root': EdgelessRootBlockComponent;
|
|
'affine-edgeless-root-preview': EdgelessRootPreviewBlockComponent;
|
|
'edgeless-auto-complete-panel': EdgelessAutoCompletePanel;
|
|
'edgeless-auto-complete': EdgelessAutoComplete;
|
|
'edgeless-tool-icon-button': EdgelessToolIconButton;
|
|
'edgeless-toolbar-button': EdgelessToolbarButton;
|
|
'edgeless-connector-handle': EdgelessConnectorHandle;
|
|
'note-slicer': NoteSlicer;
|
|
'edgeless-align-panel': EdgelessAlignPanel;
|
|
'card-style-panel': CardStylePanel;
|
|
'edgeless-font-family-panel': EdgelessFontFamilyPanel;
|
|
'edgeless-font-weight-and-style-panel': EdgelessFontWeightAndStylePanel;
|
|
'edgeless-line-width-panel': EdgelessLineWidthPanel;
|
|
'note-display-mode-panel': NoteDisplayModePanel;
|
|
'edgeless-note-shadow-panel': EdgelessNoteShadowPanel;
|
|
'edgeless-scale-panel': EdgelessScalePanel;
|
|
'edgeless-shape-panel': EdgelessShapePanel;
|
|
'edgeless-shape-style-panel': EdgelessShapeStylePanel;
|
|
'edgeless-size-panel': EdgelessSizePanel;
|
|
'stroke-style-panel': StrokeStylePanel;
|
|
'edgeless-navigator-black-background': EdgelessNavigatorBlackBackgroundWidget;
|
|
'edgeless-dragging-area-rect': EdgelessDraggingAreaRectWidget;
|
|
'edgeless-selected-rect': EdgelessSelectedRectWidget;
|
|
'edgeless-connector-label-editor': EdgelessConnectorLabelEditor;
|
|
'edgeless-frame-title-editor': EdgelessFrameTitleEditor;
|
|
'edgeless-group-title-editor': EdgelessGroupTitleEditor;
|
|
'edgeless-shape-text-editor': EdgelessShapeTextEditor;
|
|
'edgeless-toolbar-widget': EdgelessToolbarWidget;
|
|
'presentation-toolbar': PresentationToolbar;
|
|
'edgeless-brush-menu': EdgelessBrushMenu;
|
|
'edgeless-brush-tool-button': EdgelessBrushToolButton;
|
|
'edgeless-slide-menu': EdgelessSlideMenu;
|
|
'toolbar-arrow-up-icon': ToolbarArrowUpIcon;
|
|
'edgeless-connector-menu': EdgelessConnectorMenu;
|
|
'edgeless-connector-tool-button': EdgelessConnectorToolButton;
|
|
'edgeless-default-tool-button': EdgelessDefaultToolButton;
|
|
'edgeless-eraser-tool-button': EdgelessEraserToolButton;
|
|
'edgeless-frame-menu': EdgelessFrameMenu;
|
|
'edgeless-frame-tool-button': EdgelessFrameToolButton;
|
|
'edgeless-lasso-tool-button': EdgelessLassoToolButton;
|
|
'edgeless-link-tool-button': EdgelessLinkToolButton;
|
|
'mindmap-import-placeholder': MindMapPlaceholder;
|
|
'edgeless-mindmap-menu': EdgelessMindmapMenu;
|
|
'edgeless-mindmap-tool-button': EdgelessMindmapToolButton;
|
|
'edgeless-note-menu': EdgelessNoteMenu;
|
|
'edgeless-note-tool-button': EdgelessNoteToolButton;
|
|
'edgeless-frame-order-menu': EdgelessFrameOrderMenu;
|
|
'edgeless-navigator-setting-button': EdgelessNavigatorSettingButton;
|
|
'edgeless-present-button': EdgelessPresentButton;
|
|
'edgeless-toolbar-shape-draggable': EdgelessToolbarShapeDraggable;
|
|
'edgeless-shape-menu': EdgelessShapeMenu;
|
|
'edgeless-shape-tool-button': EdgelessShapeToolButton;
|
|
'edgeless-shape-tool-element': EdgelessShapeToolElement;
|
|
'overlay-scrollbar': OverlayScrollbar;
|
|
'affine-template-loading': AffineTemplateLoading;
|
|
'edgeless-templates-panel': EdgelessTemplatePanel;
|
|
'edgeless-text-menu': EdgelessTextMenu;
|
|
'affine-page-root': PageRootBlockComponent;
|
|
'zoom-bar-toggle-button': ZoomBarToggleButton;
|
|
'edgeless-zoom-toolbar': EdgelessZoomToolbar;
|
|
'affine-image-toolbar': AffineImageToolbar;
|
|
|
|
[AFFINE_EDGELESS_ZOOM_TOOLBAR_WIDGET]: AffineEdgelessZoomToolbarWidget;
|
|
[AFFINE_IMAGE_TOOLBAR_WIDGET]: AffineImageToolbarWidget;
|
|
[AFFINE_INNER_MODAL_WIDGET]: AffineInnerModalWidget;
|
|
}
|
|
}
|