openrat-cms

# OpenRat Content Management System
git clone http://git.code.weiherhei.de/openrat-cms.git
Log | Files | Refs

jquery-plugin-svg.js (2236B)


      1 /*! jQuery SVG to Inline v0.1.4
      2 *   https://github.com/tiagoporto/jquery-svg-to-inline
      3 *   Copyright (c) 2016 Tiago Porto (tiagoporto.com)
      4 *   Released under the MIT license
      5 */
      6 
      7 'use strict';
      8 
      9 $.fn.svgToInline = function (options) {
     10     'use strict';
     11 
     12     var trigger = {
     13         class: this.selector.replace('.', ''),
     14         useClass: options && options.useTriggerClass || false
     15     };
     16 
     17     this.each(function () {
     18         var svg = {
     19             currency: $(this),
     20             oldClass: '',
     21             newClass: '',
     22             path: $(this).attr('data') || $(this).attr('src')
     23         },
     24             request = {
     25             element: '',
     26             svgTag: '',
     27             svgTagWithoutClass: ''
     28         },
     29             inputClass = $(this).attr('class').split(' '),
     30             inputClassLenght = inputClass.length;
     31 
     32         if (inputClassLenght > 0) {
     33             for (var i = 0; i < inputClassLenght; ++i) {
     34                 var space = '';
     35 
     36                 if (inputClass[i] === trigger.class && !trigger.useClass) {
     37                     continue;
     38                 }
     39 
     40                 i !== inputClass.length - 1 && (space = ' ');
     41                 inputClass[i] && (svg.newClass += inputClass[i] + space);
     42             }
     43         }
     44 
     45         $.ajax({
     46             url: svg.path,
     47             dataType: 'text',
     48             success: function success(response) {
     49                 request.element = response.replace(/<[?!][\s\w\"-\/:=?]+>/g, ''), request.svgTag = request.element.match(/<svg[\w\s\t\n:="\\'\/.#-]+>/g);
     50                 request.svgTagWithoutClass = request.svgTag[0].replace(/class=\"[\w\s-_]+\"/, '');
     51                 svg.oldClass = request.svgTag[0].match(/class=\"(.*?)\"/);
     52 
     53                 // If exist class in svg add to svg.newClass
     54                 svg.oldClass && svg.oldClass[1] && svg.newClass && (svg.newClass = svg.oldClass[1] + ' ' + svg.newClass);
     55 
     56                 svg.newClass !== '' && (svg.newClass = 'class="' + svg.newClass + '"');
     57 
     58                 request.svgTagWithoutClass = request.svgTagWithoutClass.replace('>', ' ' + svg.newClass + '>');
     59 
     60                 svg.currency.replaceWith(request.element.replace(/<svg[\w\s\t\n:="\\'\/.#-]+>/g, request.svgTagWithoutClass));
     61             }
     62         });
     63     });
     64 };