voltron-svg 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fdc24aff0001bfae74938a084fba04992a668c5c
4
- data.tar.gz: 40587bfea1dcf77d4120424393a5398a4d313125
3
+ metadata.gz: 3448802c6861d90ae98bc4144c5350c6a6812faa
4
+ data.tar.gz: a34f1de164a5b6590da425181155554df638f517
5
5
  SHA512:
6
- metadata.gz: c1e21144ad4464813bebfc5ed18b459c593cd651ac0307ede62e7c9a2b5dde45abd5330db6348d760a8da3850ef9d930e1832c0ce9a00ee3fbddf8cac23f0925
7
- data.tar.gz: f35855b7bbc4b0c6d6125cb1a517f3bdcdd457ebb6846b8969ae1ebbe81b0acf3fafd69782209c989f3d2384dd4f595f5aead57819e4a8fa0b0cfae9985e20d1
6
+ metadata.gz: b9643432fe2240547f93a8b03de927b0dffb146e9186993f6cda7f3c81aee1657325795396ddcfde754e2d0098690352350b222449e6acaa1a741d58719e4aad
7
+ data.tar.gz: 199ebd0d2fbd323a50395cbaf7a14229170cc7134c03e6eacd18297b1abe29d63edc056e855ba65c11caf72f201fc2c7c987a35eea348ae55ce9e95625c15c3b
@@ -5,5 +5,4 @@
5
5
  * Copyright (c) 2014-2015 Waybury <hello@waybury.com>
6
6
  * @license MIT
7
7
  */
8
- !function(t,e){"use strict";function r(t){t=t.split(" ");for(var e={},r=t.length,n=[];r--;)e.hasOwnProperty(t[r])||(e[t[r]]=1,n.unshift(t[r]));return n.join(" ")}var n="file:"===t.location.protocol,i=e.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"),o=Array.prototype.forEach||function(t,e){if(void 0===this||null===this||"function"!=typeof t)throw new TypeError;var r,n=this.length>>>0;for(r=0;n>r;++r)r in this&&t.call(e,this[r],r,this)},a={},l=0,s=[],u=[],c={},f=function(t){return t.cloneNode(!0)},p=function(t,e){u[t]=u[t]||[],u[t].push(e)},d=function(t){for(var e=0,r=u[t].length;r>e;e++)!function(e){setTimeout(function(){u[t][e](f(a[t]))},0)}(e)},v=function(e,r){if(void 0!==a[e])a[e]instanceof SVGSVGElement?r(f(a[e])):p(e,r);else{if(!t.XMLHttpRequest)return r("Browser does not support XMLHttpRequest"),!1;a[e]={},p(e,r);var i=new XMLHttpRequest;i.onreadystatechange=function(){if(4===i.readyState){if(404===i.status||null===i.responseXML)return r("Unable to load SVG file: "+e),n&&r("Note: SVG injection ajax calls do not work locally without adjusting security setting in your browser. Or consider using a local webserver."),r(),!1;if(!(200===i.status||n&&0===i.status))return r("There was a problem injecting the SVG: "+i.status+" "+i.statusText),!1;if(i.responseXML instanceof Document)a[e]=i.responseXML.documentElement;else if(DOMParser&&DOMParser instanceof Function){var t;try{var o=new DOMParser;t=o.parseFromString(i.responseText,"text/xml")}catch(l){t=void 0}if(!t||t.getElementsByTagName("parsererror").length)return r("Unable to parse SVG file: "+e),!1;a[e]=t.documentElement}d(e)}},i.open("GET",e),i.overrideMimeType&&i.overrideMimeType("text/xml"),i.send()}},h=function(e,n,a,u){var f=e.getAttribute("data-src")||e.getAttribute("src");if(!/\.svg/i.test(f))return void u("Attempted to inject a file with a non-svg extension: "+f);if(!i){var p=e.getAttribute("data-fallback")||e.getAttribute("data-png");return void(p?(e.setAttribute("src",p),u(null)):a?(e.setAttribute("src",a+"/"+f.split("/").pop().replace(".svg",".png")),u(null)):u("This browser does not support SVG and no PNG fallback was defined."))}-1===s.indexOf(e)&&(s.push(e),e.setAttribute("src",""),v(f,function(i){if("undefined"==typeof i||"string"==typeof i)return u(i),!1;var a=e.getAttribute("id");a&&i.setAttribute("id",a);var p=e.getAttribute("title");p&&i.setAttribute("title",p);var d=[].concat(i.getAttribute("class")||[],"injected-svg",e.getAttribute("class")||[]).join(" ");i.setAttribute("class",r(d));var v=e.getAttribute("style");v&&i.setAttribute("style",v);var h=[].filter.call(e.attributes,function(t){return/^data-\w[\w\-]*$/.test(t.name)});o.call(h,function(t){t.name&&t.value&&i.setAttribute(t.name,t.value)});var g,m,b,y,A,w={clipPath:["clip-path"],"color-profile":["color-profile"],cursor:["cursor"],filter:["filter"],linearGradient:["fill","stroke"],marker:["marker","marker-start","marker-mid","marker-end"],mask:["mask"],pattern:["fill","stroke"],radialGradient:["fill","stroke"]};Object.keys(w).forEach(function(t){g=t,b=w[t],m=i.querySelectorAll("defs "+g+"[id]");for(var e=0,r=m.length;r>e;e++){y=m[e].id,A=y+"-"+l;var n;o.call(b,function(t){n=i.querySelectorAll("["+t+'*="'+y+'"]');for(var e=0,r=n.length;r>e;e++)n[e].setAttribute(t,"url(#"+A+")")}),m[e].id=A}}),i.removeAttribute("xmlns:a");for(var x,S,k=i.querySelectorAll("script"),j=[],G=0,T=k.length;T>G;G++)S=k[G].getAttribute("type"),S&&"application/ecmascript"!==S&&"application/javascript"!==S||(x=k[G].innerText||k[G].textContent,j.push(x),i.removeChild(k[G]));if(j.length>0&&("always"===n||"once"===n&&!c[f])){for(var M=0,V=j.length;V>M;M++)new Function(j[M])(t);c[f]=!0}var E=i.querySelectorAll("style");o.call(E,function(t){t.textContent+=""}),e.parentNode.replaceChild(i,e),delete s[s.indexOf(e)],e=null,l++,u(i)}))},g=function(t,e,r){e=e||{};var n=e.evalScripts||"always",i=e.pngFallback||!1,a=e.each;if(void 0!==t.length){var l=0;o.call(t,function(e){h(e,n,i,function(e){a&&"function"==typeof a&&a(e),r&&t.length===++l&&r(l)})})}else t?h(t,n,i,function(e){a&&"function"==typeof a&&a(e),r&&r(1),t=null}):r&&r(0)};"object"==typeof module&&"object"==typeof module.exports?module.exports=exports=g:"function"==typeof define&&define.amd?define(function(){return g}):"object"==typeof t&&(t.SVGInjector=g)}(window,document);
9
- //# sourceMappingURL=svg-injector.map.js
8
+ !function(t,e){"use strict";function r(t){t=t.split(" ");for(var e={},r=t.length,n=[];r--;)e.hasOwnProperty(t[r])||(e[t[r]]=1,n.unshift(t[r]));return n.join(" ")}var n="file:"===t.location.protocol,i=e.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"),o=Array.prototype.forEach||function(t,e){if(void 0===this||null===this||"function"!=typeof t)throw new TypeError;var r,n=this.length>>>0;for(r=0;n>r;++r)r in this&&t.call(e,this[r],r,this)},a={},l=0,s=[],u=[],c={},f=function(t){return t.cloneNode(!0)},p=function(t,e){u[t]=u[t]||[],u[t].push(e)},d=function(t){for(var e=0,r=u[t].length;r>e;e++)!function(e){setTimeout(function(){u[t][e](f(a[t]))},0)}(e)},v=function(e,r){if(void 0!==a[e])a[e]instanceof SVGSVGElement?r(f(a[e])):p(e,r);else{if(!t.XMLHttpRequest)return r("Browser does not support XMLHttpRequest"),!1;a[e]={},p(e,r);var i=new XMLHttpRequest;i.onreadystatechange=function(){if(4===i.readyState){if(404===i.status||null===i.responseXML)return r("Unable to load SVG file: "+e),n&&r("Note: SVG injection ajax calls do not work locally without adjusting security setting in your browser. Or consider using a local webserver."),r(),!1;if(!(200===i.status||n&&0===i.status))return r("There was a problem injecting the SVG: "+i.status+" "+i.statusText),!1;if(i.responseXML instanceof Document)a[e]=i.responseXML.documentElement;else if(DOMParser&&DOMParser instanceof Function){var t;try{var o=new DOMParser;t=o.parseFromString(i.responseText,"text/xml")}catch(l){t=void 0}if(!t||t.getElementsByTagName("parsererror").length)return r("Unable to parse SVG file: "+e),!1;a[e]=t.documentElement}d(e)}},i.open("GET",e),i.overrideMimeType&&i.overrideMimeType("text/xml"),i.send()}},h=function(e,n,a,u){var f=e.getAttribute("data-src")||e.getAttribute("src");if(!/\.svg/i.test(f))return void u("Attempted to inject a file with a non-svg extension: "+f);if(!i){var p=e.getAttribute("data-fallback")||e.getAttribute("data-png");return void(p?(e.setAttribute("src",p),u(null)):a?(e.setAttribute("src",a+"/"+f.split("/").pop().replace(".svg",".png")),u(null)):u("This browser does not support SVG and no PNG fallback was defined."))}-1===s.indexOf(e)&&(s.push(e),e.setAttribute("src",""),v(f,function(i){if("undefined"==typeof i||"string"==typeof i)return u(i),!1;var a=e.getAttribute("id");a&&i.setAttribute("id",a);var p=e.getAttribute("title");p&&i.setAttribute("title",p);var d=[].concat(i.getAttribute("class")||[],"injected-svg",e.getAttribute("class")||[]).join(" ");i.setAttribute("class",r(d));var v=e.getAttribute("style");v&&i.setAttribute("style",v);var h=[].filter.call(e.attributes,function(t){return/^data-\w[\w\-]*$/.test(t.name)});o.call(h,function(t){t.name&&t.value&&i.setAttribute(t.name,t.value)});var g,m,b,y,A,w={clipPath:["clip-path"],"color-profile":["color-profile"],cursor:["cursor"],filter:["filter"],linearGradient:["fill","stroke"],marker:["marker","marker-start","marker-mid","marker-end"],mask:["mask"],pattern:["fill","stroke"],radialGradient:["fill","stroke"]};Object.keys(w).forEach(function(t){g=t,b=w[t],m=i.querySelectorAll("defs "+g+"[id]");for(var e=0,r=m.length;r>e;e++){y=m[e].id,A=y+"-"+l;var n;o.call(b,function(t){n=i.querySelectorAll("["+t+'*="'+y+'"]');for(var e=0,r=n.length;r>e;e++)n[e].setAttribute(t,"url(#"+A+")")}),m[e].id=A}}),i.removeAttribute("xmlns:a");for(var x,S,k=i.querySelectorAll("script"),j=[],G=0,T=k.length;T>G;G++)S=k[G].getAttribute("type"),S&&"application/ecmascript"!==S&&"application/javascript"!==S||(x=k[G].innerText||k[G].textContent,j.push(x),i.removeChild(k[G]));if(j.length>0&&("always"===n||"once"===n&&!c[f])){for(var M=0,V=j.length;V>M;M++)new Function(j[M])(t);c[f]=!0}var E=i.querySelectorAll("style");o.call(E,function(t){t.textContent+=""}),e.parentNode.replaceChild(i,e),delete s[s.indexOf(e)],e=null,l++,u(i)}))},g=function(t,e,r){e=e||{};var n=e.evalScripts||"always",i=e.pngFallback||!1,a=e.each;if(void 0!==t.length){var l=0;o.call(t,function(e){h(e,n,i,function(e){a&&"function"==typeof a&&a(e),r&&t.length===++l&&r(l)})})}else t?h(t,n,i,function(e){a&&"function"==typeof a&&a(e),r&&r(1),t=null}):r&&r(0)};"object"==typeof module&&"object"==typeof module.exports?module.exports=exports=g:"function"==typeof define&&define.amd?define(function(){return g}):"object"==typeof t&&(t.SVGInjector=g)}(window,document);
@@ -1,130 +1,39 @@
1
- //= require voltron/svg-injector
1
+ //= require svg-injector
2
2
 
3
- if(Voltron){
4
- Voltron.addModule('SVG', function(){
5
- return {
6
- initialize: function(){
7
- var svgs = document.querySelectorAll('img[data-svg="true"]:not(.injected-svg)');
8
- var options = {
9
- each: function(svg){
10
- if(svg.getAttribute && svg.getAttribute('data-size')){
11
- var dims = svg.getAttribute('data-size').split('x');
12
- svg.setAttribute('width', parseFloat(dims[0]));
13
- svg.setAttribute('height', parseFloat(dims[1]));
14
- }
3
+ Voltron.addModule('SVG', function(){
4
+ return {
5
+ initialize: function(){
6
+ var svgs = document.querySelectorAll('img[data-svg="true"]:not(.injected-svg)');
7
+ var options = {
8
+ each: function(svg){
9
+ if(svg.getAttribute && svg.getAttribute('data-size')){
10
+ var dims = svg.getAttribute('data-size').split('x');
11
+ svg.setAttribute('width', parseFloat(dims[0]));
12
+ svg.setAttribute('height', parseFloat(dims[1]));
15
13
  }
16
- };
17
- SVGInjector(svgs, options);
18
- },
14
+ }
15
+ };
16
+ SVGInjector(svgs, options);
17
+ },
19
18
 
20
- getTag: function(svg, image, options){
21
- options = $.extend({ src: svg, size: '16x16', svg: true, fallback: image }, options);
22
- if(/^[0-9]+$/.test(options['size'].toString())) options['size'] = (options['size'] + 'x' + options['size']);
23
- var size = options['size'].split('x');
24
- if(!options['width']) options['width'] = size[0];
25
- if(!options['height']) options['height'] = size[1];
26
- return $('<img />', this.getDataAttribute(options, ['size', 'svg', 'fallback']));
27
- },
19
+ getTag: function(svg, image, options){
20
+ options = $.extend({ src: svg, size: '16x16', svg: true, fallback: image }, options);
21
+ if(/^[0-9]+$/.test(options['size'].toString())) options['size'] = (options['size'] + 'x' + options['size']);
22
+ var size = options['size'].split('x');
23
+ if(!options['width']) options['width'] = size[0];
24
+ if(!options['height']) options['height'] = size[1];
25
+ return $('<img />', this.getDataAttribute(options, ['size', 'svg', 'fallback']));
26
+ },
28
27
 
29
- getDataAttribute: function(options, attributes){
30
- for(var i=0; i<attributes.length; i++){
31
- var attr = attributes[i];
32
- if(options[attr]){
33
- options['data-' + attr] = options[attr];
34
- delete options[attr];
35
- }
36
- }
37
- return options;
38
- }
39
- };
40
- }, true);
41
- }else{
42
- (function(funcName, baseObj) {
43
- "use strict";
44
- // The public function name defaults to window.docReady
45
- // but you can modify the last line of this function to pass in a different object or method name
46
- // if you want to put them in a different namespace and those will be used instead of
47
- // window.docReady(...)
48
- funcName = funcName || "docReady";
49
- baseObj = baseObj || window;
50
- var readyList = [];
51
- var readyFired = false;
52
- var readyEventHandlersInstalled = false;
53
-
54
- // call this when the document is ready
55
- // this function protects itself against being called more than once
56
- function ready() {
57
- if (!readyFired) {
58
- // this must be set to true before we start calling callbacks
59
- readyFired = true;
60
- for (var i = 0; i < readyList.length; i++) {
61
- // if a callback here happens to add new ready handlers,
62
- // the docReady() function will see that it already fired
63
- // and will schedule the callback to run right after
64
- // this event loop finishes so all handlers will still execute
65
- // in order and no new ones will be added to the readyList
66
- // while we are processing the list
67
- readyList[i].fn.call(window, readyList[i].ctx);
68
- }
69
- // allow any closures held by these functions to free
70
- readyList = [];
71
- }
72
- }
73
-
74
- function readyStateChange() {
75
- if ( document.readyState === "complete" ) {
76
- ready();
77
- }
78
- }
79
-
80
- // This is the one public interface
81
- // docReady(fn, context);
82
- // the context argument is optional - if present, it will be passed
83
- // as an argument to the callback
84
- baseObj[funcName] = function(callback, context) {
85
- // if ready has already fired, then just schedule the callback
86
- // to fire asynchronously, but right away
87
- if (readyFired) {
88
- setTimeout(function() {callback(context);}, 1);
89
- return;
90
- } else {
91
- // add the function and context to the list
92
- readyList.push({fn: callback, ctx: context});
93
- }
94
- // if document already ready to go, schedule the ready function to run
95
- // IE only safe when readyState is "complete", others safe when readyState is "interactive"
96
- if (document.readyState === "complete" || (!document.attachEvent && document.readyState === "interactive")) {
97
- setTimeout(ready, 1);
98
- } else if (!readyEventHandlersInstalled) {
99
- // otherwise if we don't have event handlers installed, install them
100
- if (document.addEventListener) {
101
- // first choice is DOMContentLoaded event
102
- document.addEventListener("DOMContentLoaded", ready, false);
103
- // backup is window load event
104
- window.addEventListener("load", ready, false);
105
- } else {
106
- // must be IE
107
- document.attachEvent("onreadystatechange", readyStateChange);
108
- window.attachEvent("onload", ready);
28
+ getDataAttribute: function(options, attributes){
29
+ for(var i=0; i<attributes.length; i++){
30
+ var attr = attributes[i];
31
+ if(options[attr]){
32
+ options['data-' + attr] = options[attr];
33
+ delete options[attr];
109
34
  }
110
- readyEventHandlersInstalled = true;
111
35
  }
36
+ return options;
112
37
  }
113
- })("docReady", window);
114
-
115
- window.injectSVG = function(){
116
- var svgs = document.querySelectorAll('img[data-svg="true"]');
117
- var options = {
118
- each: function(svg){
119
- if(svg.getAttribute('data-size')){
120
- var dims = svg.getAttribute('data-size').split('x');
121
- svg.setAttribute('width', parseFloat(dims[0]));
122
- svg.setAttribute('height', parseFloat(dims[1]));
123
- }
124
- }
125
- };
126
- SVGInjector(svgs, options);
127
38
  };
128
-
129
- docReady(injectSVG);
130
- }
39
+ }, true);
@@ -1,5 +1,5 @@
1
1
  module Voltron
2
2
  module Svg
3
- VERSION = "0.1.7".freeze
3
+ VERSION = '0.1.8'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voltron-svg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Hainer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-13 00:00:00.000000000 Z
11
+ date: 2017-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: voltron
@@ -151,8 +151,8 @@ files:
151
151
  - LICENSE.txt
152
152
  - README.md
153
153
  - Rakefile
154
+ - app/assets/javascripts/svg-injector.js
154
155
  - app/assets/javascripts/voltron-svg.js
155
- - app/assets/javascripts/voltron/svg-injector.js
156
156
  - bin/console
157
157
  - bin/setup
158
158
  - lib/generators/voltron/svg/install_generator.rb
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
182
  version: '0'
183
183
  requirements: []
184
184
  rubyforge_project:
185
- rubygems_version: 2.4.8
185
+ rubygems_version: 2.5.2
186
186
  signing_key:
187
187
  specification_version: 4
188
188
  summary: Adds SVG helpers and on-the-fly generation of fallback images to rails