how to drag and drop scriptable objects into a node of a nodegraph?

I have a dialogue tree editor which is run in unity’s node graph. and I have a Scriptableobject that contains a bunch of quest data. i would like to be able to drag the scriptable object into the node. how do I do this?
190552-animation2.gif

as far as I am aware. I need to add a UI element to the node’s extensionContainer using node.extensionContainer.Add(). but I am unsure if there is a GUI element that exists that can take an object, Kind of like a TextField, but i can drag and drop the Quest ScriptableObject in like shown in the gif above.

I want to be able to drag the quest scriptable object into a dialogue node, the same way you can drag a scriptable object into a behaviour script in the inspector, like this:
190543-animation.gif

I would like to avoid using blackboards as I want the UI to be intuitive and drag-and-drop.
is it possible to create a UI element like a textfield that accepts a Quest object instead of a string and then allow users to drag a scriptable object in like the gif you see above?

okay. So it seems i must answer my own question.

in order to drag a scriptableobject into a node on a nodegraph, you must use EditorGUILayout.ObjectField

it is a field that can accept any object. but you must tell it which type to accept.

// create the object field
ObjectField objectfield = new ObjectField("Quest"); 

// tell the objectfield what type to accept (or it doesn't work)
objectfield.objectType = typeof(Quest); 

// use a lambda function to run code when the value is changed
objectfield.RegisterValueChangedCallback((quest) =>
{
    // run this when the value is changed
    Debug.Log("Value changed");
});

// add the objectfield to the node's container
newNode.extensionContainer.Add(objectfield);

there are probably better ways of doing it, but this was all I could find.

i should note, that you do not need to use a lambda function, I just prefer it that way


IMPORTANT!!:: if you do not set objectfield.objectType then the object field will not work