Yifeng Wang
963cc2e40e
refactor(editor): reduce redundant canvas refresh on init ( #10364 )
2025-02-22 21:58:13 +08:00
doodlewind
c362737441
perf(editor): reduce dom ops in viewport update ( #10333 )
2025-02-21 03:30:10 +00:00
doouding
eed00e0b26
fix: mindmap ai preview ( #10222 )
2025-02-17 12:45:20 +00:00
doouding
8ece812017
feat: dnd image preview && edgeless dnd preview issue ( #10177 )
...
### Changed
- Add new image block to render dnd preview
- Fixed the bug that dragging uploaded image does not have width and height
- Fixed the bug that drag image block from page to edgeless does not have width and height
- Better edgeless dnd preview
2025-02-14 16:02:03 +00:00
Saul-Mirone
d111f8ac88
feat(editor): add WidgetViewExtension ( #10180 )
...
Closes: [BS-2282](https://linear.app/affine-design/issue/BS-2282/replace-widgetviewmapextension-with-widgetextension )
2025-02-14 11:00:01 +00:00
Saul-Mirone
9321ce94a7
refactor(editor): remove global types in config ( #10143 )
...
Closes: [BS-2554](https://linear.app/affine-design/issue/BS-2554/remove-global-types-in-block-config )
2025-02-13 04:35:35 +00:00
doouding
f89fcf82f8
feat: edgeless dnd ( #9988 )
...
### Changed
- Support edgelss dnd
- Simplify the drag-handle state
2025-02-12 12:37:06 +00:00
Saul-Mirone
e7cc710f8e
refactor(editor): remove service global type ( #10129 )
...
Closes: [BS-2566](https://linear.app/affine-design/issue/BS-2566/remove-global-types-in-service )
2025-02-12 11:46:10 +00:00
donteatfriedrice
bd041cbfcf
fix(editor): shadowless element should remove style element correctly ( #10128 )
...
[BS-2565](https://linear.app/affine-design/issue/BS-2565/关闭-chat-block-center-peek-后新生成的-chat-block-最后一个-message-样式不正确 )
2025-02-12 10:38:07 +00:00
Saul-Mirone
39eb8625d6
refactor(editor): remove block models global type ( #10086 )
2025-02-11 11:00:57 +00:00
Saul-Mirone
652865c7cf
refactor(editor): remove global types in model ( #10082 )
...
Closes: [BS-2249](https://linear.app/affine-design/issue/BS-2249/remove-global-types-in-model )
```ts
// before
matchFlavours(model, ['affine:page']);
// after
matchFlavours(model, [PageBlockModel]);
```
2025-02-11 08:18:57 +00:00
L-Sun
9f56a21d8a
feat(editor): add animation for switching to edgeless mode firstly ( #10021 )
...
Close [BS-2327](https://linear.app/affine-design/issue/BS-2327/page-block-%E5%9C%A8-edgeless-%E5%88%87%E6%8D%A2%E7%BC%A9%E6%94%BE%E5%8A%A8%E7%94%BB )
### What Changes:
- Add a zoom animation when switching to edgeless mode firstly
- Move viewport record from `sessionStorage` to `localStorage`
https://github.com/user-attachments/assets/dac11aab-76bd-44b1-8c0e-4a8a10919841
2025-02-10 07:41:10 +00:00
Oleg
d4f0c53a0c
feat(core): frame editor settings ( #9970 )
...
Co-authored-by: L-Sun <zover.v@gmail.com >
Co-authored-by: Mirone <Saul-Mirone@outlook.com >
2025-02-10 15:23:32 +08:00
L-Sun
459972fe6c
fix(editor): add missing zod schema for edgeless frame ( #10024 )
...
Related to https://github.com/toeverything/AFFiNE/pull/9970#discussion_r1944971309
### What changes:
- Add missing zod shcema for edgeless basic props
- Change `applyLastProps` to generic function for better return type inference of
- Fix: add `ZodIntersection` case to `makeDeepOptional`
2025-02-07 12:49:59 +00:00
Yifeng Wang
077a1b38ac
refactor(editor): use model coord system in worker renderer ( #9969 )
2025-02-06 10:36:59 +08:00
renovate
14fbb8b059
chore: bump up oxlint version to v0.15.9 ( #9922 )
...
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [oxlint](https://oxc.rs ) ([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxlint )) | [`0.15.8` -> `0.15.9`](https://renovatebot.com/diffs/npm/oxlint/0.15.8/0.15.9 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
---
### Release Notes
<details>
<summary>oxc-project/oxc (oxlint)</summary>
### [`v0.15.9`](https://redirect.github.com/oxc-project/oxc/releases/tag/oxlint_v0.15.9 ): oxlint v0.15.9
[Compare Source](https://redirect.github.com/oxc-project/oxc/compare/oxlint_v0.15.8...oxlint_v0.15.9 )
#### \[0.15.9] - 2025-02-01
##### Features
- [`1a41181`](https://redirect.github.com/oxc-project/oxc/commit/1a41181 ) linter: Implement `eslint/prefer-object-spread` ([#​8216](https://redirect.github.com/oxc-project/oxc/issues/8216 )) (tbashiyy)
- [`adb8ebd`](https://redirect.github.com/oxc-project/oxc/commit/adb8ebd ) linter: Implement no-useless-call rule ([#​8789](https://redirect.github.com/oxc-project/oxc/issues/8789 )) (keita hino)
- [`3790933`](https://redirect.github.com/oxc-project/oxc/commit/3790933 ) linter: Add vitest/prefer-lowercase-title rule ([#​8152](https://redirect.github.com/oxc-project/oxc/issues/8152 )) (Tyler Earls)
- [`e8e6917`](https://redirect.github.com/oxc-project/oxc/commit/e8e6917 ) linter: Unicorn/switch-cases-braces support options ([#​8704](https://redirect.github.com/oxc-project/oxc/issues/8704 )) (1zumii)
##### Bug Fixes
- [`8ce21d1`](https://redirect.github.com/oxc-project/oxc/commit/8ce21d1 ) linter: Can't disable `no-nested-ternary` rule anymore ([#​8600](https://redirect.github.com/oxc-project/oxc/issues/8600 )) (dalaoshu)
- [`e929f26`](https://redirect.github.com/oxc-project/oxc/commit/e929f26 ) linter: Output `LintCommandInfo` for `CliRunResult::LintNoFilesFound` ([#​8714](https://redirect.github.com/oxc-project/oxc/issues/8714 )) (Sysix)
- [`4f30a17`](https://redirect.github.com/oxc-project/oxc/commit/4f30a17 ) linter: Unicorn/switch-case-braces mangles code when applying fix ([#​8758](https://redirect.github.com/oxc-project/oxc/issues/8758 )) (Tyler Earls)
- [`9cc9d5f`](https://redirect.github.com/oxc-project/oxc/commit/9cc9d5f ) linter: `ignorePatterns` does not work when files are provided as command arguments ([#​8590](https://redirect.github.com/oxc-project/oxc/issues/8590 )) (dalaoshu)
- [`1de6f85`](https://redirect.github.com/oxc-project/oxc/commit/1de6f85 ) linter: No-lone-blocks erroring on block statements containing comments ([#​8720](https://redirect.github.com/oxc-project/oxc/issues/8720 )) (Tyler Earls)
- [`77ef61a`](https://redirect.github.com/oxc-project/oxc/commit/77ef61a ) linter: Fix diagnostic spans for `oxc/no-async-await` ([#​8721](https://redirect.github.com/oxc-project/oxc/issues/8721 )) (camchenry)
- [`f15bdce`](https://redirect.github.com/oxc-project/oxc/commit/f15bdce ) linter: Catch `Promise` in `typescript/array-type` rule ([#​8702](https://redirect.github.com/oxc-project/oxc/issues/8702 )) (Rintaro Itokawa)
- [`5041cb3`](https://redirect.github.com/oxc-project/oxc/commit/5041cb3 ) vscode: Fix commands by reverting commit `259a47b` ([#​8819](https://redirect.github.com/oxc-project/oxc/issues/8819 )) (Alexander S.)
##### Performance
- [`d318238`](https://redirect.github.com/oxc-project/oxc/commit/d318238 ) linter: Remove sorting of rules in cache ([#​8718](https://redirect.github.com/oxc-project/oxc/issues/8718 )) (camchenry)
##### Documentation
- [`57b7ca8`](https://redirect.github.com/oxc-project/oxc/commit/57b7ca8 ) ast: Add documentation for all remaining JS AST methods ([#​8820](https://redirect.github.com/oxc-project/oxc/issues/8820 )) (Cam McHenry)
##### Refactor
- [`c2fdfc4`](https://redirect.github.com/oxc-project/oxc/commit/c2fdfc4 ) linter: Correctly handle loose options for `eslint/eqeqeq` ([#​8798](https://redirect.github.com/oxc-project/oxc/issues/8798 )) (dalaoshu)
- [`0aeaedd`](https://redirect.github.com/oxc-project/oxc/commit/0aeaedd ) linter: Support loose options for `eslint/eqeqeq` ([#​8790](https://redirect.github.com/oxc-project/oxc/issues/8790 )) (dalaoshu)
- [`194a5ff`](https://redirect.github.com/oxc-project/oxc/commit/194a5ff ) linter: Remove `LintResult` ([#​8712](https://redirect.github.com/oxc-project/oxc/issues/8712 )) (Sysix)
- [`4a2f2a9`](https://redirect.github.com/oxc-project/oxc/commit/4a2f2a9 ) linter: Move default `all_rules` output to trait ([#​8710](https://redirect.github.com/oxc-project/oxc/issues/8710 )) (Sysix)
- [`741fb40`](https://redirect.github.com/oxc-project/oxc/commit/741fb40 ) linter: Move stdout outside LintRunner ([#​8694](https://redirect.github.com/oxc-project/oxc/issues/8694 )) (Sysix)
- [`10e5920`](https://redirect.github.com/oxc-project/oxc/commit/10e5920 ) linter: Move finishing default diagnostic message to `GraphicalReporter` ([#​8683](https://redirect.github.com/oxc-project/oxc/issues/8683 )) (Sysix)
- [`9731c56`](https://redirect.github.com/oxc-project/oxc/commit/9731c56 ) oxlint: Move output from `CliRunResult::InvalidOption` to outside and use more Enums for different invalid options ([#​8778](https://redirect.github.com/oxc-project/oxc/issues/8778 )) (Sysix)
- [`fe45bee`](https://redirect.github.com/oxc-project/oxc/commit/fe45bee ) oxlint: Create different `CliRunResult` instead of passing `ExitCode` to it ([#​8777](https://redirect.github.com/oxc-project/oxc/issues/8777 )) (Sysix)
- [`2378fef`](https://redirect.github.com/oxc-project/oxc/commit/2378fef ) oxlint: Move ConfigFileInit output outside CliRunResult, exit code 1 when it fails ([#​8776](https://redirect.github.com/oxc-project/oxc/issues/8776 )) (Sysix)
- [`f4cecb5`](https://redirect.github.com/oxc-project/oxc/commit/f4cecb5 ) oxlint: Remove unused `CliRunResult::PathNotFound` ([#​8775](https://redirect.github.com/oxc-project/oxc/issues/8775 )) (Sysix)
##### Testing
- [`ad35e82`](https://redirect.github.com/oxc-project/oxc/commit/ad35e82 ) linter: Use snapshot testing instead of LintResult ([#​8711](https://redirect.github.com/oxc-project/oxc/issues/8711 )) (Sysix)
- [`bf895eb`](https://redirect.github.com/oxc-project/oxc/commit/bf895eb ) linter: Add diagnostic format test snapshots ([#​8696](https://redirect.github.com/oxc-project/oxc/issues/8696 )) (Alexander S.)
- [`34d3d72`](https://redirect.github.com/oxc-project/oxc/commit/34d3d72 ) linter: Add snapshot tester for cli ([#​8695](https://redirect.github.com/oxc-project/oxc/issues/8695 )) (Sysix)
- [`0bf2bcf`](https://redirect.github.com/oxc-project/oxc/commit/0bf2bcf ) oxlint: Test two real rules with same name but from different plugins ([#​8821](https://redirect.github.com/oxc-project/oxc/issues/8821 )) (dalaoshu)
- [`2b83b71`](https://redirect.github.com/oxc-project/oxc/commit/2b83b71 ) oxlint: Improve disabling "no-nested-ternary" tests ([#​8814](https://redirect.github.com/oxc-project/oxc/issues/8814 )) (Alexander S.)
- [`45648e7`](https://redirect.github.com/oxc-project/oxc/commit/45648e7 ) oxlint: Fix InvalidOptionTsConfig tests for windows ([#​8791](https://redirect.github.com/oxc-project/oxc/issues/8791 )) (Alexander S.)
- [`48bfed9`](https://redirect.github.com/oxc-project/oxc/commit/48bfed9 ) oxlint: Ignore windows path mismatch (Boshen)
- [`6f4a023`](https://redirect.github.com/oxc-project/oxc/commit/6f4a023 ) oxlint: Remove "--print-config" test ([#​8792](https://redirect.github.com/oxc-project/oxc/issues/8792 )) (Sysix)
- [`55c2025`](https://redirect.github.com/oxc-project/oxc/commit/55c2025 ) oxlint: Add `CliRunResult` to snapshot ([#​8780](https://redirect.github.com/oxc-project/oxc/issues/8780 )) (Sysix)
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNDUuMCIsInVwZGF0ZWRJblZlciI6IjM5LjE0NS4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-02-05 10:54:57 +00:00
doouding
02122098c7
fix: drag block issue ( #9902 )
...
### Changed
- Added support for changing the preview offset during dragging.
- Fixed the preview rendering for embed block and surface-ref block
- Resolved an issue where the host element might be reused in certain cases, which could cause unexpected behavior
- Moved viewport-related constants and methods to a more appropriate location
2025-02-05 07:25:53 +00:00
Saul-Mirone
17bf75e843
refactor(editor): remove dependency of command global types ( #9903 )
...
Closes: [BS-2216](https://linear.app/affine-design/issue/BS-2216/remove-global-types-in-command )
2025-01-27 12:28:46 +00:00
fundon
ffd54c6620
refactor(editor): use selected signal in block component ( #9849 )
2025-01-27 02:56:10 +00:00
Saul-Mirone
092f9c84fa
refactor(editor): remove deprecated dangerouslyRenderModel method ( #9803 )
2025-01-20 14:48:09 +00:00
doouding
1560880abd
fix: drag embed block preview ( #9791 )
...
Fixes [BS-1518](https://linear.app/affine-design/issue/BS-1518/拖拽一个-embed-view-的-linked-doc,其-indicator-是错误的 )
2025-01-20 09:25:05 +00:00
doouding
99717196c5
refactor: rewrite blocksuite dnd ( #9595 )
...
### Changed
- Refactored BlockSuite drag-and-drop using @atlaskit/pragmatic-drag-and-drop/element/adapter.
- Updated block dragging to use the new drag-and-drop infrastructure.
### BlockSuite DND API
Access the BlockSuite drag-and-drop API via `std.dnd`. This is a lightweight wrapper around pragmatic-drag-and-drop, offering convenient generic types and more intuitive option names.
#### Drag payload structure
There's some constrain about drag payload. The whole drag payload looks like this:
```typescript
type DragPayload = {
entity: {
type: string
},
from: {
at: 'blocksuite',
docId: string
}
}
```
- The `from` field is auto-generated—no need for manual handling.
- The `entity` field is customizable, but it must include a `type`.
All drag-and-drop methods accept a generic type for entity, ensuring more accurate payloads in event handlers.
```typescript
type BlockEntity = {
type: 'blocks',
blockIds: string[]
}
dnd.draggable<BlockEntity>({
element: someElement,
setDragData: () => {
// the return type must satisfy the generic type
// in this case, it's BlockEntity
return {
type: 'blocks',
blockIds: []
}
}
});
dnd.monitor<BlockEntity>({
// the arguments is same for other event handler
onDrag({ source }) {
// the type of this is BlockEntity
source.data.entity
}
})
```
#### Drop payload
When hover on droppable target. You can set drop payload as well. All drag-and-drop methods accept a second generic type for drop payload.
The drop payload is customizable. Additionally, the DND system will add an `edge` field to the final payload object, indicating the nearest edge of the drop target relative to the current drag position.
```typescript
type DropPayload = {
blockId: string;
}
dnd.dropTarget<BlockEntity, DropPayload>({
getData() {
// the type should be DropPayload
return {
blockId: 'someId'
}
}
});
dnd.monitor<BlockEntity, DropPayload>({
// drag over on drop target
onDrag({ location }) {
const target = location.current.dropTargets[0];
// the type is DropPayload
target.data;
// retrieve the nearest edge of the drop target relative to the current drop position.
target.data.edge;
}
})
```
2025-01-16 12:36:58 +00:00
Mirone
446b31b621
refactor(editor): rename job to transformer ( #9639 )
2025-01-11 12:04:07 +08:00
EYHN
18ff7500c8
fix(core): fix menu not close when click outside ( #9535 )
2025-01-10 08:04:49 +00:00
Saul-Mirone
126ab18967
feat(editor): selection as store extension ( #9605 )
2025-01-09 11:49:23 +00:00
Saul-Mirone
d21ef47ae8
chore(editor): rename std.doc to std.store ( #9596 )
2025-01-09 04:16:28 +00:00
Saul-Mirone
5842d45ab1
feat(editor): merge store and blocks ( #9591 )
2025-01-08 13:01:19 +00:00
Saul-Mirone
fe727412be
feat(editor): add editor store ( #9584 )
2025-01-08 07:47:43 +00:00
L-Sun
440239809c
refactor(editor): refactor page note empty checker ( #9570 )
...
Close [BS-2320](https://linear.app/affine-design/issue/BS-2320/内容为空的状态判断 )
2025-01-07 11:24:40 +00:00
Saul-Mirone
f778d1a28a
refactor(editor): move extension to store ( #9552 )
2025-01-06 15:15:14 +00:00
Saul-Mirone
fc863e484c
refactor(editor): remove selection global types ( #9532 )
...
Closes: [BS-2217](https://linear.app/affine-design/issue/BS-2217/remove-global-types-in-selection )
2025-01-06 03:45:11 +00:00
Saul-Mirone
3d168ba2d2
refactor(editor): reorg code structure of store package ( #9525 )
2025-01-05 12:49:02 +00:00
Saul-Mirone
c773982ced
refactor(editor): rename store api ( #9518 )
2025-01-04 12:51:56 +00:00
Saul-Mirone
4457cb7266
refactor(editor): rename doc to blocks ( #9510 )
2025-01-03 12:49:33 +00:00
Saul-Mirone
51b109ee53
chore(editor): move legacy doc collection to test workspace ( #9507 )
2025-01-03 09:40:33 +00:00
Saul-Mirone
897c7d4284
refactor(editor): should not rely on doc collection type ( #9501 )
2025-01-03 06:30:27 +00:00
doouding
a4e94ab72f
feat: add shortcut of zooming to selection ( #9447 )
...
### Changed
- change edgeless shortcut `cmd + 0`, `cmd + 1` to `alt + 0`, `alt + 1`
- add new shortcut `alt + 2` to zoom to currently selected elements
2025-01-03 03:57:05 +00:00
doodlewind
cbc84ff672
fix(editor): blur in edgeless content zooming ( #9496 )
...
Fix [BS-2294](https://linear.app/affine-design/issue/BS-2294/edgeless-%E7%BC%A9%E6%94%BE%E5%AD%97%E5%8F%B7%E6%A8%A1%E7%B3%8A )
2025-01-03 02:36:57 +00:00
Saul-Mirone
8b6c81f76d
refactor(editor): reduce dependency to doc collection ( #9492 )
2025-01-03 01:59:25 +00:00
Saul-Mirone
edb5e1d87a
refactor(editor): job should not rely on doc collection directly ( #9488 )
2025-01-02 10:50:15 +00:00
Saul-Mirone
be387a6f33
refactor(editor): set readonly ( #9475 )
2025-01-02 04:02:15 +00:00
doodlewind
d4053a345e
perf(editor): reduce per frame viewport dom ops ( #9431 )
...
Currently when panning / zooming on whiteboard, both position and transform of each block component are updated per frame. The positioning part lead to heavy layout costs, which can be reduced.
Before (~35fps):

After (~50fps):

Tested environment: TibetTravel templet, Windows 11, i5-1130G7 1.1GHz
2024-12-30 10:50:33 +00:00
Saul-Mirone
5c4058cd73
fix(editor): dnd lag ( #9378 )
2024-12-27 10:34:00 +00:00
Saul-Mirone
2b27d62b0e
refactor(editor): cleanup ts-expect-error ( #9369 )
2024-12-27 05:14:23 +00:00
Saul-Mirone
7c84545647
refactor(editor): cleanup dead code ( #9300 )
2024-12-25 07:48:00 +00:00
Saul-Mirone
50ff3655e5
refactor(editor): extensionalize html adapter ( #9299 )
2024-12-25 04:04:51 +00:00
Saul-Mirone
b29cb5945a
refactor(editor): move file drop manager to components ( #9264 )
2024-12-24 02:20:03 +00:00
Saul-Mirone
3a82da0e5b
chore: fix eslint in blocksuite ( #9232 )
2024-12-20 16:48:10 +00:00
Mirone
30200ff86d
chore: merge blocksuite source code ( #9213 )
2024-12-20 15:38:06 +08:00