Skip to content

Commit ed7f6cc

Browse files
committed
Added demo folder.
1 parent b66d252 commit ed7f6cc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+389
-333
lines changed

README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ Experimental
2020
## Setup
2121

2222
### Development setup
23+
24+
- Start demo
2325
```bash
2426
yarn
2527

26-
yarn dev
28+
yarn server
2729
```
2830

2931
### Build for production

index.html demo/index.html

File renamed without changes.

src/App.vue demo/src/App.vue

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
<script setup lang="ts">
2-
import NodesCanvas from './components/demo/shader-generator/ShaderGeneratorDemo.vue'
3-
</script>
4-
51
<template>
6-
<NodesCanvas />
2+
<router-view />
73
</template>
84

95
<style lang="scss">

demo/src/components/AppLayout.vue

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<script lang="ts" setup>
2+
import AppSidebar from './AppSidebar.vue'
3+
</script>
4+
5+
<template>
6+
<div class="app-layout">
7+
<AppSidebar>
8+
<slot name="sidebar"/>
9+
</AppSidebar>
10+
11+
<div class="app-page">
12+
<slot />
13+
</div>
14+
</div>
15+
</template>
16+
17+
<style lang="scss">
18+
.app-layout {
19+
height: 100vh;
20+
width: 100vw;
21+
display: flex;
22+
}
23+
24+
.app-page {
25+
flex: 1;
26+
width: 100%;
27+
}
28+
</style>

src/components/demo/DemoHeader.vue demo/src/components/AppSidebar.vue

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<template>
22
<div class="nodes-demo-header">
33
<div class="nodes-demo-header__top">
4+
<h1>Vue nodes demo</h1>
5+
46
<slot />
57
</div>
68
<div class="nodes-demo-header__bottom">

demo/src/components/index.ts

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Plugin } from 'vue'
2+
import DemoButtonVue from './node/DemoButton.vue'
3+
import DemoInputVue from './node/DemoInput.vue'
4+
import DemoNodeVue from './node/DemoNode.vue'
5+
6+
export const demoComponents: Plugin = {
7+
install(app) {
8+
app.component('DemoButton', DemoButtonVue)
9+
app.component('DemoInput', DemoInputVue)
10+
app.component('DemoNode', DemoNodeVue)
11+
}
12+
}
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/components/demo/shader-generator/nodes/fragment-shader/FragmentShader.vue demo/src/demo/shader/nodes/fragment-shader/FragmentShader.vue

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
<script setup lang="ts">
22
import { PropType } from "vue";
3-
import DemoNode from "../../../DemoNode.vue";
4-
import DemoButton from "../../../DemoButton.vue";
5-
import DemoInput from "../../../DemoInput.vue";
6-
import { ShaderGeneratorNode } from "../../types";
3+
import { ShaderGeneratorNode } from "../types";
74
85
const props = defineProps({
96
node: { type: Object as PropType<ShaderGeneratorNode>, required: true },
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export * from './nodes'
22
export * from './types'
3-
export * from './defineNode'
3+
export * from './defineNode'

src/components/demo/shader-generator/nodes/math/Math.vue demo/src/demo/shader/nodes/math/Math.vue

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
<script setup lang="ts">
22
import { PropType } from "vue";
3-
import DemoNode from "../../../DemoNode.vue";
4-
import DemoButton from "../../../DemoButton.vue";
5-
import DemoInput from "../../../DemoInput.vue";
6-
import { ShaderGeneratorNode } from "../../types";
3+
import { ShaderGeneratorNode } from "../types";
74
85
const props = defineProps({
96
node: { type: Object as PropType<ShaderGeneratorNode>, required: true },

src/components/demo/shader-generator/nodes/out/Out.vue demo/src/demo/shader/nodes/out/Out.vue

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
<script setup lang="ts">
22
import { computed, PropType, toRef } from 'vue';
3-
import DemoNode from "../../../DemoNode.vue";
4-
import DemoButton from "../../../DemoButton.vue";
5-
import DemoInput from "../../../DemoInput.vue";
63
import { ShaderGeneratorNode, Node, Connection, GenerateFnResult } from '../types';
74
import { Shader2D, VueGLSLReadyEvent } from '@m0ksem/vue-glsl'
8-
import { useConnections } from '../../../../../hooks/useConnections';
5+
import { useConnections } from 'vue-nodes';
96
107
const props = defineProps({
118
node: { type: Object as PropType<ShaderGeneratorNode>, required: true },

src/components/demo/shader-generator/nodes/source/Source.vue demo/src/demo/shader/nodes/source/Source.vue

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
<script setup lang="ts">
22
import { computed, PropType, toRef } from "vue";
3-
import DemoNode from "../../../DemoNode.vue";
4-
import DemoButton from "../../../DemoButton.vue";
5-
import DemoInput from "../../../DemoInput.vue";
6-
import { Connection, ShaderGeneratorNode } from "../../types";
3+
import { Connection, ShaderGeneratorNode } from "../types";
74
import { GenerateFnResult, ShaderNode } from "../types";
8-
import { useConnections } from "../../../../../hooks/useConnections";
5+
import { useConnections } from '../../../../../../src';
96
107
const props = defineProps({
118
node: { type: Object as PropType<ShaderNode>, required: true },

src/components/demo/shader-generator/nodes/time/Time.vue demo/src/demo/shader/nodes/time/Time.vue

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
<script setup lang="ts">
22
import { PropType } from 'vue';
3-
import DemoNode from '../../../DemoNode.vue'
4-
import DemoButton from '../../../DemoButton.vue';
5-
import DemoInput from '../../../DemoInput.vue'
6-
import { ShaderGeneratorNode, Node } from '../../types';
3+
import { ShaderGeneratorNode } from '../types';
74
85
const props = defineProps({
96
node: { type: Object as PropType<ShaderGeneratorNode>, required: true },

src/components/demo/shader-generator/nodes/types.ts demo/src/demo/shader/nodes/types.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Node } from '../types'
1+
import { Node } from 'vue-nodes'
22

33
export type GenerateFnResultUniform = {
44
type: string,
@@ -24,4 +24,4 @@ export type ShaderNode<V = {}> = Node & {
2424
value: V
2525
}
2626

27-
export * from '../types'
27+
export * from 'vue-nodes'

src/components/demo/shader-generator/nodes/vec4/Vec4.vue demo/src/demo/shader/nodes/vec4/Vec4.vue

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
<script setup lang="ts">
22
import { PropType } from 'vue';
3-
import DemoNode from '../../../DemoNode.vue'
4-
import DemoButton from '../../../DemoButton.vue';
5-
import DemoInput from '../../../DemoInput.vue'
6-
import { ShaderGeneratorNode, Node } from '../../types';
3+
import { ShaderGeneratorNode, Node } from '../types';
74
85
const props = defineProps({
96
node: { type: Object as PropType<ShaderGeneratorNode>, required: true },

demo/src/demo/shader/preset.ts

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { createSourceNode, createTimeNode, createFragmentShaderNode, createVec4Node, createOutputNode, createMathNode } from './nodes'
2+
import type { ShaderNode } from './nodes'
3+
import type { Connection } from 'vue-nodes'
4+
5+
export const itemsPreset: ShaderNode[] = [
6+
createTimeNode({ x: -300, y: 0 }),
7+
(() => {
8+
const math = createMathNode({ x: 0, y: 0 })
9+
math.fn = 'sin'
10+
return math
11+
})(),
12+
(() => {
13+
const math = createMathNode({ x: 0, y: 100 })
14+
math.fn = 'cos'
15+
return math
16+
})(),
17+
(() => {
18+
const vec4 = createVec4Node({ x: 300, y: 0 })
19+
vec4.z = 1;
20+
vec4.w = 1;
21+
return vec4
22+
})(),
23+
createFragmentShaderNode({ x: -300, y: -200 }),
24+
createSourceNode({ x: 100, y: -300 }),
25+
createOutputNode({ x: 500, y: 300 })
26+
]
27+
28+
export const connectionsPreset: Connection<ShaderNode>[] = [
29+
{ start: { node: itemsPreset[0], point: 'out' }, end: { node: itemsPreset[1], point: 'in' }},
30+
{ start: { node: itemsPreset[0], point: 'out' }, end: { node: itemsPreset[2], point: 'in' }},
31+
// Vec4
32+
{ start: { node: itemsPreset[1], point: 'out' }, end: { node: itemsPreset[3], point: 'x' }},
33+
{ start: { node: itemsPreset[2], point: 'out' }, end: { node: itemsPreset[3], point: 'y' }},
34+
35+
{ start: { node: itemsPreset[3], point: 'out' }, end: { node: itemsPreset[4], point: 'in' }},
36+
{ start: { node: itemsPreset[4], point: 'out' }, end: { node: itemsPreset[5], point: 'in' }},
37+
38+
{ start: { node: itemsPreset[5], point: 'out' }, end: { node: itemsPreset[6], point: 'in' }},
39+
]

src/env.d.ts demo/src/env.d.ts

File renamed without changes.

demo/src/main.ts

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { createApp } from 'vue'
2+
import { router } from './router'
3+
import { demoComponents } from './components'
4+
import App from './App.vue'
5+
6+
createApp(App)
7+
.use(router)
8+
.use(demoComponents)
9+
.mount('#app')

demo/src/router/index.ts

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { createRouter, createWebHistory } from 'vue-router'
2+
import Calculator from './routes/Calculator.vue'
3+
import Index from './routes/Index.vue'
4+
import Shader from './routes/Shader.vue'
5+
6+
7+
export const router = createRouter({
8+
history: createWebHistory('/vue-nodes'),
9+
routes: [
10+
{
11+
path: '/',
12+
name: 'index',
13+
component: Index
14+
},
15+
{
16+
path: '/shader-demo',
17+
name: 'ShaderDemo',
18+
component: Shader
19+
},
20+
{
21+
path: '/calculator',
22+
name: 'CalculatorDemo',
23+
component: Calculator
24+
},
25+
]
26+
})

0 commit comments

Comments
 (0)