Commit Graph

84 Commits

Author SHA1 Message Date
Saul-Mirone 4d3eee3bad feat(editor): brush gfx package (#11131) 2025-03-24 09:28:46 +00:00
Saul-Mirone ef1ed383cb feat(editor): command for ungroup and group (#11116) 2025-03-24 15:34:38 +09:00
Flrande 4bacfbd640 feat(editor): support member node (#11075)
Close [BS-2793](https://linear.app/affine-design/issue/BS-2793/inline-member)
2025-03-24 05:57:03 +00:00
Saul-Mirone b8df65a2b0 refactor(editor): move mindmap transform to its package (#11115) 2025-03-24 05:19:30 +00:00
Flrande 29fdbb7105 fix(editor): disable popover when start with space (#11092) 2025-03-24 03:53:17 +00:00
Saul-Mirone dfd633b8b0 refactor(editor): remove unused panels (#11103) 2025-03-24 03:14:23 +00:00
Saul-Mirone 5525c2bc8d refactor(editor): move mindmap view to mindmap package (#11102) 2025-03-24 03:14:23 +00:00
Saul-Mirone 8e08b9000d feat(editor): create gfx mindmap package (#11100) 2025-03-24 03:14:22 +00:00
Saul-Mirone 1f0fc9d47a feat(editor): gfx connector package (#11091) 2025-03-22 14:39:05 +00:00
Saul-Mirone d398ee4dfa refactor(editor): move present components to its package (#11089) 2025-03-22 14:39:05 +00:00
Saul-Mirone e3735f40b8 feat(editor): gfx note package (#11088) 2025-03-22 14:39:04 +00:00
Saul-Mirone e1fa10af47 refactor(editor): improve page viewport implementation (#11090) 2025-03-22 04:41:40 +00:00
Saul-Mirone c1d426d8e9 refactor(editor): move frame toolbar config and components to its package (#11084) 2025-03-21 16:47:40 +00:00
Saul-Mirone f5fb5c848e refactor(editor): move text toolbar config and components to its package (#11083) 2025-03-21 16:47:40 +00:00
Saul-Mirone f762797772 refactor(editor): move shape toolbar config and components to its package (#11082) 2025-03-21 16:47:39 +00:00
Saul-Mirone 73807193cb refactor(editor): extract common toolbar config (#11069) 2025-03-21 11:45:33 +00:00
Saul-Mirone ee3494e01d refactor(editor): extract draggable helper of edgeless toolbar (#11068) 2025-03-21 11:45:33 +00:00
Saul-Mirone 35e986cb94 refactor(editor): extract common mixin of edgeless toolbar (#11067) 2025-03-21 11:45:32 +00:00
Saul-Mirone 6777c16683 feat(editor): edgeless toolbar widget package (#11064) 2025-03-21 11:45:32 +00:00
Saul-Mirone 51d89edb02 refactor(editor): use extension to register edgeless toolbar button (#11062) 2025-03-21 11:45:31 +00:00
Saul-Mirone 8109c718c7 feat(editor): gfx shape package (#11060) 2025-03-21 06:13:11 +00:00
Saul-Mirone e50d09db50 feat(editor): latex inline package (#11051) 2025-03-21 01:38:08 +00:00
Saul-Mirone e5e429e7b2 feat(editor): add inline packages (#11048) 2025-03-20 13:47:35 +00:00
Saul-Mirone 66ea3038af refactor(editor): align rich text util apis (#11039) 2025-03-20 10:40:11 +00:00
fundon 27a8afa33f chore(editor): remove redundant line styles components (#10980)
* Moved `edgeless-line-styles-panel` and `edgeless-line-width-panel` into components pkg
2025-03-20 09:48:02 +00:00
L-Sun da63d51b7e refactor(editor): group and expose parameters of createButtonPopper (#10999) 2025-03-20 08:37:59 +00:00
Saul-Mirone 92d76ba571 refactor(editor): merge inline to std (#11025) 2025-03-20 05:46:56 +00:00
Saul-Mirone 75580e881b refactor(editor): move gfx frame title to widget (#11021) 2025-03-20 04:10:56 +00:00
fundon b88e7f0e35 chore(editor): remove redundant card-style-panel component (#10973)
Moved `CardStylePanel` into `CardStyleDropdownMenu`.
2025-03-20 02:08:22 +00:00
fundon 1c0c698375 chore(editor): remove redundant edgeless-align-panel component (#10972) 2025-03-20 02:08:22 +00:00
fundon 8b995ea420 chore(editor): remove edgeless element toolbar (#10900) 2025-03-20 02:08:21 +00:00
fundon 831f290f84 refactor(editor): edgeless toolbar chevron down icon (#10898) 2025-03-20 02:08:20 +00:00
fundon a7acd5c5b1 refactor(editor): fix edgeless toolbar theme (#10897) 2025-03-20 02:08:20 +00:00
fundon ccc210f88a refactor(core): edgeless toolbar ai action config extension (#10884) 2025-03-20 02:08:19 +00:00
fundon a004a2cfab refactor(editor): edgeless toolbar more actions (#10882) 2025-03-20 02:08:18 +00:00
fundon 39704aac66 refactor(editor): edgeless toolbar alignment actions (#10881) 2025-03-20 02:08:18 +00:00
fundon e4b8b367ce refactor(editor): edgeless toolbar add frame action (#10880) 2025-03-20 02:08:17 +00:00
fundon 4a4893a380 refactor(editor): edgeless toolbar add group action and release group action (#10879) 2025-03-20 02:08:17 +00:00
fundon 07a64eb004 refactor(editor): edgeless toolbar lock and unlock actions (#10878) 2025-03-20 02:08:16 +00:00
fundon bd9b78f7d2 refactor(editor): edgeless toolbar quick connect action (#10876) 2025-03-20 02:08:16 +00:00
fundon 54bc60aa4d refactor(editor): edgeless shape toolbar config extension (#10821) 2025-03-20 02:08:16 +00:00
fundon 1acc7e5a9e refactor(editor): edgeless text toolbar config extension (#10811) 2025-03-20 02:08:15 +00:00
Saul-Mirone cdd405bbe5 refactor(editor): improve edgeless editors (#11019) 2025-03-20 01:49:56 +00:00
Saul-Mirone 258c70cf07 refactor(editor): store should not rely on inline (#11017) 2025-03-20 01:33:29 +00:00
Saul-Mirone 76dc55f328 refactor(editor): remove legacy block service spec slots (#11013) 2025-03-20 01:04:18 +09:00
doouding 1c8d25bc29 feat: add ElementTransformManager for edgeless element basic manipulation (#10824)
### Overview:
We've been working with some legacy code in the default-tool and edgeless-selected-rect modules, which are responsible for fundamental operations like moving, resizing, and rotating elements. Currently, these operations are hardcoded, making it challenging to extend functionalities without diving deep into the code.

### What's Changing:
Introducing `ElementTransformManager` to streamline the handling of basic transformations (move, resize, rotate) while allowing the business logic to dictate when these actions occur.

Providing two ways to extend the transformations behaviour:
- Extends inside element view definition: Elements can decide how to handle move/resize events, such as enforcing size constraints.
- Extension mechanism provided by this manager: Adjust or completely override default drag behaviors, like snapping elements into alignment.

### Code Examples:
Delegate element movement to TransformManager:
```typescript
class DefaultTool {
  override dragStart(event) {
    if(this.dragType === DragType.ContentMoving) {
      const transformManager = this.std.get(TransformManagerIdentifier);
      transformManager.startDrag({ selectedElements, event });
    }
  }
}
```

 Enforce minimum width inside view definition:
```typescript
class EdgelessNoteBlock extends GfxBlockComponent {
  onResizeDelta({ dw, dh }) {
    const bound = this.model.elementBound;
    bound.w = Math.min(MAX_WIDTH, bound.w + dw);
    bound.h = Math.min(MAX_HEIGHT, bound.h + dh);
    this.model.xywh = bound.serialize();
  }
}
```

Use extension to implement element snapping:
```typescript
import { TransformerExtension } from '@blocksuite/std/gfx';

// Just extends the TransformerExtension
class SnapManager extends TransformerExtension {
  static override key = 'snap-manager';
  onDragInitialize() {
    return {
      onDragMove(context) {
        const { dx, dy } = this.getAlignmentMoveDistance(context.elements);
        context.dx = dx;
        context.dy = dy;
      }
    }
  }
}
```

### Others

The migration will be divided into several PRs. This PR mostly focus on refactoring elements movement part of `default-tool`.
- Delegate elements movement to `TransformManager`
- Rewrite the default tool extension into `TransformManager` extension
- Add drag handler interface to gfx view (both `GfxBlockComponent` and `GfxElementModelView`) to allow element to define how it gonna react on drag
2025-03-19 15:30:06 +00:00
fundon c98f0900cc refactor(editor): edgeless mindmap toolbar config extension (#10803) 2025-03-19 14:50:55 +00:00
fundon 7f34667b78 refactor(editor): edgeless connector toolbar config extension (#10798) 2025-03-19 14:50:55 +00:00
fundon 03ffc688c3 refactor(editor): edgeless brush toolbar config extension (#10796) 2025-03-19 12:34:19 +00:00
fundon c44a339bd9 refactor(editor): edgeless group toolbar config extension (#10787) 2025-03-19 12:34:19 +00:00