in seriously.js [1510:1552]
function findInputNode(hook, source, options) {
var node, i;
if (typeof hook !== 'string' || !source && source !== 0) {
if (!options || typeof options !== 'object') {
options = source;
}
source = hook;
}
if (typeof hook !== 'string' || !seriousSources[hook]) {
hook = null;
}
if (source instanceof SourceNode ||
source instanceof EffectNode ||
source instanceof TransformNode) {
node = source;
} else if (source instanceof Effect ||
source instanceof Source ||
source instanceof Transform) {
node = nodesById[source.id];
if (!node) {
throw new Error('Cannot connect a foreign node');
}
} else {
if (typeof source === 'string' && isNaN(source)) {
source = getElement(source, ['canvas', 'img', 'video']);
}
for (i = 0; i < sources.length; i++) {
node = sources[i];
if ((!hook || hook === node.hook) && node.compare && node.compare(source, options)) {
return node;
}
}
node = new SourceNode(hook, source, options);
}
return node;
}