whole_func_string: function(selector, filter) {
  
          var $selected = this.findBySelector(selector);
  
          // Generate a hash code from the stringified filter definition. This gives us
          // a unique filter ID for different definitions.
          var filterId = filter.name + this.paper.svg.id + joint.util.hashCode(JSON.stringify(filter));
  
          // If the filter already exists in the document,
          // we're done and we can just use it (reference it using `url()`).
          // If not, create one.
          if (!this.paper.svg.getElementById(filterId)) {
  
              var filterSVGString = joint.util.filter[filter.name] && joint.util.filter[filter.name](filter.args || {});
              if (!filterSVGString) {
                  throw new Error('Non-existing filter ' + filter.name);
              }
              var filterElement = V(filterSVGString);
              filterElement.attr('filterUnits', 'userSpaceOnUse');
              filterElement.node.id = filterId;
              V(this.paper.svg).defs().append(filterElement);
          }
  
          $selected.each(function() {
              
              V(this).attr('filter', 'url(#' + filterId + ')');
          });
      }
func_code_string: function(selector, filter) {
  
          var $selected = this.findBySelector(selector);
  
          // Generate a hash code from the stringified filter definition. This gives us
          // a unique filter ID for different definitions.
          var filterId = filter.name + this.paper.svg.id + joint.util.hashCode(JSON.stringify(filter));
  
          // If the filter already exists in the document,
          // we're done and we can just use it (reference it using `url()`).
          // If not, create one.
          if (!this.paper.svg.getElementById(filterId)) {
  
              var filterSVGString = joint.util.filter[filter.name] && joint.util.filter[filter.name](filter.args || {});
              if (!filterSVGString) {
                  throw new Error('Non-existing filter ' + filter.name);
              }
              var filterElement = V(filterSVGString);
              filterElement.attr('filterUnits', 'userSpaceOnUse');
              filterElement.node.id = filterId;
              V(this.paper.svg).defs().append(filterElement);
          }
  
          $selected.each(function() {
              
              V(this).attr('filter', 'url(#' + filterId + ')');
          });
      }
func_documentation_string: `selector` is a CSS selector or `'.'`. `filter` must be in the special JointJS filter format: `{ name: <name of the filter>, args: { <arguments>, ... }`. An example is: `{ filter: { name: 'blur', args: { radius: 5 } } }`.