diff --git a/docs/components/Repl.vue b/docs/components/Repl.vue
index c7d32ea7..78fb1d9b 100644
--- a/docs/components/Repl.vue
+++ b/docs/components/Repl.vue
@@ -47,8 +47,9 @@ watchEffect(
const files: any = {}
const imports = exampleImports[props.example]
+const additionalImports = 'additionalImports' in imports ? imports.additionalImports : {}
-for (const example of Object.keys(imports)) {
+for (const example of Object.keys(imports).filter((i) => i !== 'additionalImports')) {
if (example.includes('css')) {
css += `${imports[example as keyof typeof imports]}`
} else {
@@ -71,6 +72,7 @@ onMounted(async () => {
store.setImportMap({
imports: {
'@braks/vue-flow': `${location.origin}/vue-flow.es.js`,
+ ...additionalImports,
},
})
})
diff --git a/docs/components/examples/index.ts b/docs/components/examples/index.ts
index 6d92740d..672744e2 100644
--- a/docs/components/examples/index.ts
+++ b/docs/components/examples/index.ts
@@ -15,6 +15,7 @@ import { InteractionApp, InteractionCSS, InteractionControls } from './interacti
import { MultiApp, MultiCSS, MultiFlow } from './multi'
import { HorizontalApp, HorizontalElements } from './horizontal'
import { TeleportApp, TeleportCSS, TeleportSidebar, TeleportableNode, TeleportableUseTransition } from './teleport'
+import { TransitionApp, TransitionCSS, TransitionEdge } from './transition'
export const exampleImports = {
basic: {
@@ -97,4 +98,14 @@ export const exampleImports = {
'useTransition.js': TeleportableUseTransition,
'style.css': TeleportCSS,
},
+ transition: {
+ 'App.vue': TransitionApp,
+ 'TransitionEdge.vue': TransitionEdge,
+ 'style.css': TransitionCSS,
+ 'additionalImports': {
+ '@vueuse/core': 'https://cdn.jsdelivr.net/npm/@vueuse/core@9.3.0/index.mjs',
+ '@vueuse/shared': 'https://cdn.jsdelivr.net/npm/@vueuse/shared@9.3.0/index.mjs',
+ 'vue-demi': 'https://cdn.jsdelivr.net/npm/vue-demi@0.13.11/lib/index.mjs',
+ },
+ },
}
diff --git a/docs/components/examples/teleport/TeleportableNode.vue b/docs/components/examples/teleport/TeleportableNode.vue
index e1c4a8e9..3be6a9c1 100644
--- a/docs/components/examples/teleport/TeleportableNode.vue
+++ b/docs/components/examples/teleport/TeleportableNode.vue
@@ -1,6 +1,6 @@
+
+
+
+
+
+
+
+
diff --git a/docs/components/examples/transition/TransitionEdge.vue b/docs/components/examples/transition/TransitionEdge.vue
new file mode 100644
index 00000000..ae59c3c3
--- /dev/null
+++ b/docs/components/examples/transition/TransitionEdge.vue
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/components/examples/transition/index.ts b/docs/components/examples/transition/index.ts
new file mode 100644
index 00000000..23d5e78e
--- /dev/null
+++ b/docs/components/examples/transition/index.ts
@@ -0,0 +1,3 @@
+export { default as TransitionApp } from './App.vue?raw'
+export { default as TransitionEdge } from './TransitionEdge.vue?raw'
+export { default as TransitionCSS } from './style.css'
diff --git a/docs/components/examples/transition/style.css b/docs/components/examples/transition/style.css
new file mode 100644
index 00000000..8e546e97
--- /dev/null
+++ b/docs/components/examples/transition/style.css
@@ -0,0 +1,9 @@
+.fade-enter-active,
+.fade-leave-active {
+ transition: opacity 300ms ease;
+}
+
+.fade-enter-from,
+.fade-leave-to {
+ opacity: 0;
+}
diff --git a/docs/src/.vitepress/config.ts b/docs/src/.vitepress/config.ts
index b03fc706..81aaa3a2 100644
--- a/docs/src/.vitepress/config.ts
+++ b/docs/src/.vitepress/config.ts
@@ -62,9 +62,9 @@ export default defineConfigWithTheme({
Components({
dirs: [resolve(__dirname, './../../components')],
deep: true,
- // allow auto load markdown components under `./src/components/`
+ // allow to autoload markdown components under `./src/components/`
extensions: ['vue', 'md'],
- // allow auto import and register components used in markdown
+ // allow auto-import and register components used in markdown
include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
dts: resolve(__dirname, '../components.d.ts'),
resolvers: [IconsResolver()],
@@ -173,6 +173,7 @@ export default defineConfigWithTheme({
{ text: 'Horizontal Flow', link: '/examples/horizontal' },
{ text: 'Interactions', link: '/examples/interaction' },
{ text: 'Teleport', link: '/examples/teleport' },
+ { text: 'Transition', link: '/examples/transition' },
{ text: 'Multiple Flows', link: '/examples/multi' },
{ text: 'Pinia', link: '/examples/pinia' },
{ text: 'Stress', link: '/examples/stress' },
diff --git a/docs/src/examples/transition.md b/docs/src/examples/transition.md
new file mode 100644
index 00000000..a33813ae
--- /dev/null
+++ b/docs/src/examples/transition.md
@@ -0,0 +1,17 @@
+---
+layout: page
+
+---
+
+# Transition
+
+Vue Flow allows you to use transitions while zooming and panning around the Viewport.
+This example shows you how to use these transitions to animate actions on your graph.
+
+
+
+
+
+
+
+