feat: add useStore and useHooks composables that provide default store/hooks

This commit is contained in:
Braks
2021-10-20 22:39:54 +02:00
parent 61dc9dea33
commit b2b1fe822f
27 changed files with 174 additions and 128 deletions
@@ -2,7 +2,7 @@
import { CSSProperties } from 'vue'
import { ConnectionLineType, HandleElement, Node, Position } from '~/types'
import { getBezierPath, getSmoothStepPath } from '~/components/Edges/utils'
import { Store } from '~/context'
import { useStore } from '~/composables'
interface ConnectionLineProps {
sourceNode: Node
@@ -15,7 +15,7 @@ const props = withDefaults(defineProps<ConnectionLineProps>(), {
connectionLineStyle: () => ({}),
})
const store = inject(Store)!
const store = useStore()
const sourceHandle =
store.connectionHandleId && store.connectionHandleType
+4 -5
View File
@@ -2,9 +2,8 @@
import EdgeAnchor from './EdgeAnchor.vue'
import { getEdgePositions, getHandle, getSourceTargetNodes, isEdgeVisible } from '~/container/EdgeRenderer/utils'
import { isEdge } from '~/utils/graph'
import { ConnectionMode, Edge, EdgeType, HandleElement, Position, EdgePositions } from '~/types'
import { Hooks, Store } from '~/context'
import { useHandle } from '~/composables'
import { ConnectionMode, Edge, EdgeType, Position } from '~/types'
import { useHandle, useHooks, useStore } from '~/composables'
interface EdgeProps {
type: EdgeType
@@ -15,8 +14,8 @@ interface EdgeProps {
const props = withDefaults(defineProps<EdgeProps>(), {})
const store = inject(Store)!
const hooks = inject(Hooks)!
const store = useStore()
const hooks = useHooks()
hooks.connect.on((connection) => {
hooks.edgeUpdate.trigger({ edge: props.edge, connection })
+6 -6
View File
@@ -1,7 +1,7 @@
<script lang="ts" setup>
import { ElementId, Position, ValidConnectionFunc } from '~/types'
import { Hooks, Store } from '~/context'
import { useHandle } from '~/composables'
import { Position, ValidConnectionFunc } from '~/types'
import { NodeIdContextKey } from '~/context'
import { useHandle, useHooks, useStore } from '~/composables'
interface HandleProps {
id?: string
@@ -18,9 +18,9 @@ const props = withDefaults(defineProps<HandleProps>(), {
connectable: true,
})
const store = inject(Store)!
const hooks = inject(Hooks)!
const nodeId = inject<ElementId>('NodeIdContext')!
const store = useStore()
const hooks = useHooks()
const nodeId = inject(NodeIdContextKey)!
const handler = useHandle()
const onMouseDownHandler = (event: MouseEvent) =>
+5 -4
View File
@@ -1,7 +1,8 @@
<script lang="ts" setup>
import { DraggableEventListener } from '@braks/revue-draggable'
import { Node, NodeDimensionUpdate, NodeType, SnapGrid } from '~/types'
import { Hooks, Store } from '~/context'
import { NodeIdContextKey } from '~/context'
import { useHooks, useStore } from '~/composables'
interface NodeProps {
node: Node
@@ -24,9 +25,9 @@ const props = withDefaults(defineProps<NodeProps>(), {
scale: 1,
})
const store = inject(Store)!
const hooks = inject(Hooks)!
provide('NodeIdContext', props.node.id)
const store = useStore()
const hooks = useHooks()
provide(NodeIdContextKey, props.node.id)
const nodeElement = templateRef<HTMLDivElement>('node-element', null)
@@ -2,7 +2,7 @@
import { DraggableEventListener } from '@braks/revue-draggable'
import { Node } from '~/types'
import { isNode } from '~/utils/graph'
import { Hooks, Store } from '~/context'
import { useHooks, useStore } from '~/composables'
interface NodesSelectionProps {
onSelectionDragStart?: (event: MouseEvent, nodes: Node[]) => void
@@ -13,8 +13,8 @@ interface NodesSelectionProps {
const props = defineProps<NodesSelectionProps>()
const store = inject(Store)!
const hooks = inject(Hooks)!
const store = useStore()
const hooks = useHooks()
const selectedNodes = computed(() =>
store.selectedElements
@@ -1,9 +1,9 @@
<script lang="ts" setup>
import SelectionRect from './SelectionRect.vue'
import { getMousePosition } from '~/components/UserSelection/utils'
import { Store } from '~/context'
import { useStore } from '~/composables'
const store = inject(Store)!
const store = useStore()
const el = templateRef('user-selection', null)
const onMouseDown = (event: MouseEvent) => {