AFFiNE/packages/frontend/apps/electron
akumatus c95e6ec518
feat(core): support copy as image in electron app (#8939)
Close issue [AF-1785](https://linear.app/affine-design/issue/AF-1785).

### What changed?
- Support copy as image in electron app:
  -  Select the whole mindmap if any of the mindmap nodes is selected.
  -  Hide unselected overlap elements before taking a snapshot.
  -  Fit the selected elements to the screen.
  -  Add CSS style to hide irrelevant dom nodes, like widgets, whiteboard background and so on.
     - Due to the usage of Shadow Dom in our code, not all node styles can be controlled. Thus this PR use `-2px` padding for `affine:frame` snapshots.
  - Using electron `capturePage` API to take a snapshot of selected elements.

<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/sJGviKxfE3Ap685cl5bj/c1b7b772-ddf8-4a85-b670-e96af7bd5cc0.mov">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/sJGviKxfE3Ap685cl5bj/c1b7b772-ddf8-4a85-b670-e96af7bd5cc0.mov">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/c1b7b772-ddf8-4a85-b670-e96af7bd5cc0.mov">录屏2024-11-27 16.11.03.mov</video>
2024-11-28 03:58:04 +00:00
..
renderer feat(electron): spellcheck setting (#8730) 2024-11-11 13:03:33 +00:00
resources refactor: new project struct (#8199) 2024-09-12 07:42:57 +00:00
scripts fix(electron): make sure updater receive correct installer files (#8798) 2024-11-13 07:48:37 +00:00
src feat(core): support copy as image in electron app (#8939) 2024-11-28 03:58:04 +00:00
test fix(electron): make sure updater receive correct installer files (#8798) 2024-11-13 07:48:37 +00:00
.gitignore refactor: new project struct (#8199) 2024-09-12 07:42:57 +00:00
dev-app-update.yml refactor: new project struct (#8199) 2024-09-12 07:42:57 +00:00
forge.config.mjs build(electron): flatpak support for linux (#8439) 2024-10-10 09:51:33 +00:00
package.json chore: bump up @blocksuite/affine version to v0.18.1 (#8948) 2024-11-27 13:07:19 +00:00
project.json refactor: new project struct (#8199) 2024-09-12 07:42:57 +00:00
README.md refactor: new project struct (#8199) 2024-09-12 07:42:57 +00:00
tsconfig.json refactor: new project struct (#8199) 2024-09-12 07:42:57 +00:00
tsconfig.node.json refactor: new project struct (#8199) 2024-09-12 07:42:57 +00:00
tsconfig.test.json refactor: new project struct (#8199) 2024-09-12 07:42:57 +00:00
vitest.config.ts refactor: new project struct (#8199) 2024-09-12 07:42:57 +00:00

AFFiNE Electron App

Development

To run AFFiNE Desktop Client Application locally, run the following commands:

# in repo root
yarn install
yarn workspace @affine/native build
yarn dev

# in packages/frontend/apps/electron
yarn generate-assets
yarn dev # or yarn prod for production build

Troubleshooting

If you have trouble building electron during yarn install, try setting mirror environment variable:

export ELECTRON_MIRROR="https://registry.npmmirror.com/-/binary/electron/"

Credits

Most of the boilerplate code is generously borrowed from the following