function canPaste(tree, target) { var topLevel = tree[0], participants; if (is(target, 'bpmn:Collaboration')) { return every(topLevel, function(e) { return e.type === 'bpmn:Participant'; }); } if (is(target, 'bpmn:Process')) { participants = some(topLevel, function(e) { return e.type === 'bpmn:Participant'; }); return !(participants && target.children.length > 0); } // disallow to create elements on collapsed pools if (is(target, 'bpmn:Participant') && !isExpanded(target)) { return false; } if (is(target, 'bpmn:FlowElementsContainer')) { return isExpanded(target); } return isAny(target, [ 'bpmn:Collaboration', 'bpmn:Lane', 'bpmn:Participant', 'bpmn:Process', 'bpmn:SubProcess' ]); }
function matches(definition, filter) { return every(filter, function(val, key) { // we want a == conversion here, to be able to catch // undefined == false and friends /* jshint -W116 */ return definition[key] == val; }); }