mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 12:28:42 +00:00
<div class='graphite__hidden'>
<div>🎥 Video uploaded on Graphite:</div>
<a href="https://app.graphite.dev/media/video/g3jz87HxbjOJpXV3FPT7/529d6c3f-4b23-43ac-84cc-171713d3dc72.mp4">
<img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/g3jz87HxbjOJpXV3FPT7/529d6c3f-4b23-43ac-84cc-171713d3dc72.mp4">
</a>
</div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/g3jz87HxbjOJpXV3FPT7/529d6c3f-4b23-43ac-84cc-171713d3dc72.mp4">CleanShot 2024-07-25 at 20.04.01.mp4</video>
When a modal is closed, sometimes its components are completely unmounted from the component tree, making it difficult to animate. This pr defining a custom element as the container of ReactDOM.portal, rewriting the `removeChild` function, and use `startViewTransition` when ReactDOM calls it to implement the animation.
# Save Input
Some inputs use blur event to save data, but when they are unmounted, blur event will not be triggered at all. This pr changes blur event to native addEventListener, which will be called after the DOM element is unmounted, so as to save data in time.
115 lines
3.7 KiB
JSON
115 lines
3.7 KiB
JSON
{
|
|
"name": "@affine/component",
|
|
"private": true,
|
|
"main": "./src/index.ts",
|
|
"exports": {
|
|
".": "./src/index.ts",
|
|
"./theme/*": "./src/theme/*",
|
|
"./ui/*": "./src/ui/*/index.ts",
|
|
"./*": "./src/components/*/index.tsx"
|
|
},
|
|
"scripts": {
|
|
"dev": "storybook dev -p 6006",
|
|
"build:storybook": "storybook build"
|
|
},
|
|
"peerDependencies": {
|
|
"@blocksuite/blocks": "*",
|
|
"@blocksuite/global": "*",
|
|
"@blocksuite/icons": "2.1.34",
|
|
"@blocksuite/presets": "*",
|
|
"@blocksuite/store": "*"
|
|
},
|
|
"dependencies": {
|
|
"@affine/cli": "workspace:*",
|
|
"@affine/debug": "workspace:*",
|
|
"@affine/electron-api": "workspace:*",
|
|
"@affine/graphql": "workspace:*",
|
|
"@affine/i18n": "workspace:*",
|
|
"@atlaskit/pragmatic-drag-and-drop": "^1.2.1",
|
|
"@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.0.3",
|
|
"@dnd-kit/core": "^6.1.0",
|
|
"@dnd-kit/modifiers": "^7.0.0",
|
|
"@dnd-kit/sortable": "^8.0.0",
|
|
"@emotion/cache": "^11.11.0",
|
|
"@emotion/react": "^11.11.4",
|
|
"@emotion/server": "^11.11.0",
|
|
"@emotion/styled": "^11.11.5",
|
|
"@lit/react": "^1.0.4",
|
|
"@popperjs/core": "^2.11.8",
|
|
"@radix-ui/react-avatar": "^1.0.4",
|
|
"@radix-ui/react-collapsible": "^1.0.3",
|
|
"@radix-ui/react-dialog": "^1.1.1",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.1",
|
|
"@radix-ui/react-popover": "^1.0.7",
|
|
"@radix-ui/react-radio-group": "^1.1.3",
|
|
"@radix-ui/react-scroll-area": "^1.0.5",
|
|
"@radix-ui/react-toast": "^1.1.5",
|
|
"@radix-ui/react-toolbar": "^1.0.4",
|
|
"@radix-ui/react-tooltip": "^1.0.7",
|
|
"@radix-ui/react-visually-hidden": "^1.1.0",
|
|
"@toeverything/theme": "^1.0.0",
|
|
"@vanilla-extract/dynamic": "^2.1.0",
|
|
"bytes": "^3.1.2",
|
|
"check-password-strength": "^2.0.10",
|
|
"clsx": "^2.1.0",
|
|
"dayjs": "^1.11.10",
|
|
"foxact": "^0.2.33",
|
|
"jotai": "^2.8.0",
|
|
"jotai-effect": "^1.0.0",
|
|
"jotai-scope": "^0.7.0",
|
|
"lit": "^3.1.2",
|
|
"lodash-es": "^4.17.21",
|
|
"lottie-react": "^2.4.0",
|
|
"lottie-web": "^5.12.2",
|
|
"nanoid": "^5.0.7",
|
|
"next-themes": "^0.3.0",
|
|
"react": "18.3.1",
|
|
"react-dom": "18.3.1",
|
|
"react-error-boundary": "^4.0.13",
|
|
"react-is": "^18.2.0",
|
|
"react-paginate": "^8.2.0",
|
|
"react-router-dom": "^6.22.3",
|
|
"react-transition-state": "^2.1.1",
|
|
"react-virtuoso": "^4.7.8",
|
|
"rxjs": "^7.8.1",
|
|
"sonner": "^1.4.41",
|
|
"swr": "^2.2.5",
|
|
"uuid": "^10.0.0",
|
|
"zod": "^3.22.4"
|
|
},
|
|
"devDependencies": {
|
|
"@blocksuite/block-std": "0.16.0-canary-202407250137-267cd23",
|
|
"@blocksuite/blocks": "0.16.0-canary-202407250137-267cd23",
|
|
"@blocksuite/global": "0.16.0-canary-202407250137-267cd23",
|
|
"@blocksuite/icons": "2.1.59",
|
|
"@blocksuite/presets": "0.16.0-canary-202407250137-267cd23",
|
|
"@blocksuite/store": "0.16.0-canary-202407250137-267cd23",
|
|
"@storybook/addon-actions": "^7.6.17",
|
|
"@storybook/addon-essentials": "^7.6.17",
|
|
"@storybook/addon-interactions": "^7.6.17",
|
|
"@storybook/addon-links": "^7.6.17",
|
|
"@storybook/addon-mdx-gfm": "^7.6.17",
|
|
"@storybook/addon-storysource": "^7.6.17",
|
|
"@storybook/blocks": "^7.6.17",
|
|
"@storybook/builder-vite": "^7.6.17",
|
|
"@storybook/jest": "^0.2.3",
|
|
"@storybook/react": "^7.6.17",
|
|
"@storybook/react-vite": "^7.6.17",
|
|
"@storybook/test-runner": "^0.19.0",
|
|
"@storybook/testing-library": "^0.2.2",
|
|
"@testing-library/react": "^16.0.0",
|
|
"@types/bytes": "^3.1.4",
|
|
"@types/react": "^18.2.75",
|
|
"@types/react-dnd": "^3.0.2",
|
|
"@types/react-dom": "^18.2.24",
|
|
"@vanilla-extract/css": "^1.14.2",
|
|
"fake-indexeddb": "^6.0.0",
|
|
"storybook": "^7.6.17",
|
|
"storybook-dark-mode": "4.0.1",
|
|
"typescript": "^5.4.5",
|
|
"vite": "^5.2.8",
|
|
"vitest": "1.6.0"
|
|
},
|
|
"version": "0.15.0"
|
|
}
|