feat: Enable passing components as node/edge-types

* Instead of using slots (re)-enable passing components for node/edge-types
This commit is contained in:
Braks
2022-03-23 15:49:00 +01:00
parent f3b3062970
commit 6a2c1b00d7
8 changed files with 44 additions and 29 deletions
+2 -2
View File
@@ -209,7 +209,7 @@ export default (state: State, getters: ComputedGetters): Actions => {
}
const setElements: Actions['setElements'] = (elements, extent) => {
if (!state.initialized && !elements.length) return
if ((!state.initialized && !elements.length) || !elements) return
setNodes(elements.filter(isNode), extent)
setEdges(elements.filter(isEdge))
}
@@ -255,7 +255,7 @@ export default (state: State, getters: ComputedGetters): Actions => {
if (typeof opts.panOnScroll !== 'undefined') state.panOnScroll = opts.panOnScroll
if (typeof opts.panOnScrollMode !== 'undefined') state.panOnScrollMode = opts.panOnScrollMode
if (typeof opts.panOnScrollSpeed !== 'undefined') state.panOnScrollSpeed = opts.panOnScrollSpeed
if (typeof opts.paneMovable !== 'undefined') state.paneMoveable = opts.paneMovable
if (typeof opts.paneMovable !== 'undefined') state.paneMovable = opts.paneMovable
if (typeof opts.zoomOnScroll !== 'undefined') state.zoomOnScroll = opts.zoomOnScroll
if (typeof opts.preventScrolling !== 'undefined') state.preventScrolling = opts.preventScrolling
if (typeof opts.zoomOnDoubleClick !== 'undefined') state.zoomOnDoubleClick = opts.zoomOnDoubleClick
+2
View File
@@ -6,6 +6,7 @@ export default (state: State): ComputedGetters => {
const getEdgeTypes = computed(() => {
const edgeTypes: Record<string, any> = {
...defaultEdgeTypes,
...state.edgeTypes,
}
const keys = Object.keys(edgeTypes)
state.edges?.forEach((e) => e.type && !keys.includes(e.type) && (edgeTypes[e.type] = e.type))
@@ -15,6 +16,7 @@ export default (state: State): ComputedGetters => {
const getNodeTypes = computed(() => {
const nodeTypes: Record<string, any> = {
...defaultNodeTypes,
...state.nodeTypes,
}
const keys = Object.keys(nodeTypes)
state.nodes?.forEach((n) => n.type && !keys.includes(n.type) && (nodeTypes[n.type] = n.type))
+4 -2
View File
@@ -59,7 +59,7 @@ export default (opts?: FlowOptions): State => {
panOnScroll: false,
panOnScrollSpeed: 0.5,
panOnScrollMode: PanOnScrollMode.Free,
paneMoveable: true,
paneMovable: true,
edgeUpdaterRadius: 10,
onlyRenderVisibleElements: false,
defaultZoom: 1,
@@ -100,10 +100,12 @@ export default (opts?: FlowOptions): State => {
} as State
if (opts) {
if (typeof opts.nodeTypes !== 'undefined') state.nodeTypes = opts.nodeTypes
if (typeof opts.edgeTypes !== 'undefined') state.edgeTypes = opts.edgeTypes
if (typeof opts.panOnScroll !== 'undefined') state.panOnScroll = opts.panOnScroll
if (typeof opts.panOnScrollMode !== 'undefined') state.panOnScrollMode = opts.panOnScrollMode
if (typeof opts.panOnScrollSpeed !== 'undefined') state.panOnScrollSpeed = opts.panOnScrollSpeed
if (typeof opts.paneMovable !== 'undefined') state.paneMoveable = opts.paneMovable
if (typeof opts.paneMovable !== 'undefined') state.paneMovable = opts.paneMovable
if (typeof opts.zoomOnScroll !== 'undefined') state.zoomOnScroll = opts.zoomOnScroll
if (typeof opts.preventScrolling !== 'undefined') state.preventScrolling = opts.preventScrolling
if (typeof opts.zoomOnDoubleClick !== 'undefined') state.zoomOnDoubleClick = opts.zoomOnDoubleClick