feat(svelte): add SvelteFlowProvider and useSvelteFlow hook

This commit is contained in:
moklick
2023-03-08 20:17:33 +01:00
parent 71cdc0ff02
commit 7bd8032ea4
19 changed files with 202 additions and 46 deletions
@@ -24,7 +24,7 @@
export let selected: $$Props['selected'] = false;
export let label: $$Props['label'] = undefined;
const { edgeTypes, edges } = useStore();
const { edges, edgeTypes } = useStore();
const dispatch = createEventDispatcher();
const edgeComponent: typeof SvelteComponentTyped<EdgeProps> = $edgeTypes[type!] || BezierEdge;
@@ -5,13 +5,13 @@
import type { KeyHandlerProps } from './types';
import type { KeyDefinition, KeyDefinitionObject } from '$lib/types';
const { selectionKeyPressed, deleteKeyPressed } = useStore();
type $$Props = KeyHandlerProps;
export let selectionKey: $$Props['selectionKey'] = 'Shift';
export let deleteKey: $$Props['deleteKey'] = 'Backspace';
const { selectionKeyPressed, deleteKeyPressed } = useStore();
function isKeyObject(key?: KeyDefinition): key is KeyDefinitionObject {
return typeof key === 'object';
}
@@ -0,0 +1,13 @@
<script lang="ts">
import { setContext } from 'svelte';
import { createStore, key } from '$lib/store';
const store = createStore();
setContext(key, {
getStore: () => store
});
</script>
<slot />
@@ -0,0 +1,2 @@
export { default as SvelteFlowProvider } from './SvelteFlowProvider.svelte';
export type { SvelteFlowProviderProps } from './types';
@@ -0,0 +1,6 @@
import type { SvelteFlowProps } from '$lib/container/SvelteFlow/types';
export type SvelteFlowProviderProps = Pick<
SvelteFlowProps,
'nodes' | 'edges' | 'fitView' | 'nodeTypes'
>;