esvg 4.6.3 → 4.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f283459b842a4ae61b966de4db35aa1be8520bddbdcb3f24ce6c9784b5797137
4
- data.tar.gz: '078008b881bdbbc81cfb581bb7a0dc7b692087acd37bd838fad1cf62ccc1d543'
3
+ metadata.gz: fe664ae9953d8b20081e1d3529b1e042d4d04ee27bf6809344dc789a1a39a0ec
4
+ data.tar.gz: be6e44e7c78d0e29b491e97c31168e3b0c997503b35ab67aeb0f690c0596354e
5
5
  SHA512:
6
- metadata.gz: 4e34a8ff5f0f8b33c6a8c900336facc7649bec44e2aa99dda6601da1cf06a2d9372e9eccf089d74f9a74a3926d34ed0094897c3af4a83c97537c7ddcd165de75
7
- data.tar.gz: 28bb6320c1f83fbed93d1b32100bfeb3146f2e1e74668beceaf810d9cbdb2ce94c1a3fc5c64627b262374b2bf3d18ff66a970e3ab52cd6e67d5c3d9369630672
6
+ metadata.gz: 69d6b09086c7e00930740b007c7795f5b13a93c29952309d1896dc9168047c07b4eee2d5143d815e9b86d13da5673ccd8c15ba1c547b6da7e1d21f6f93ebb393
7
+ data.tar.gz: '0807ef7dfb18fedfb541d00e45b4b9e7261cb91fe1f96e2fd179987d0d72d82fe3ae1b4bb128ac254adb1b746529590d02dae129b9c97f2884b911a3077636f7'
@@ -0,0 +1,73 @@
1
+ (function(){
2
+ var names
3
+
4
+ function attr( source, name ){
5
+ if (typeof source == 'object')
6
+ return name+'="'+source.getAttribute(name)+'" '
7
+ else
8
+ return name+'="'+source+'" ' }
9
+
10
+ function dasherize( input ) {
11
+ return input.replace(/[\\W,_]/g, '-').replace(/-{2,}/g, '-')
12
+ }
13
+
14
+ function svgName( name ) {
15
+ return "<%= @config[:prefix] %>-"+dasherize( name )
16
+ }
17
+
18
+ function use( name, options ) {
19
+ options = options || {}
20
+ var id = dasherize( name )
21
+ var symbol = svgs()[id]
22
+
23
+ if ( symbol ) {
24
+ var parent = symbol.parentElement
25
+ var prefix = parent.dataset.prefix
26
+ var base = parent.dataset.symbolClass
27
+
28
+ var svg = document.createRange().createContextualFragment( '<svg><use xlink:href="#' + prefix + '-' + id + '"/></svg>' ).firstChild;
29
+ svg.setAttribute( 'class', base + ' ' + prefix + '-' + id + ' ' + ( options.class || '' ).trim() )
30
+ svg.setAttribute( 'viewBox', symbol.getAttribute( 'viewBox' ) )
31
+
32
+ if ( !( options.width || options.height || options.scale ) ) {
33
+
34
+ svg.setAttribute('width', symbol.getAttribute('width'))
35
+ svg.setAttribute('height', symbol.getAttribute('height'))
36
+
37
+ } else {
38
+
39
+ if ( options.width ) svg.setAttribute( 'width', options.width )
40
+ if ( options.height ) svg.setAttribute( 'height', options.height )
41
+ }
42
+
43
+ return svg
44
+ } else {
45
+ console.error('Cannot find "'+name+'" svg symbol. Ensure that svg scripts are loaded')
46
+ }
47
+ }
48
+
49
+ function svgs(){
50
+ if ( !names ) {
51
+ names = {}
52
+ var symbols = Array.prototype.slice.call( document.querySelectorAll( 'svg[id^=esvg] symbol' ) )
53
+ symbols.forEach( function( symbol ) {
54
+ names[symbol.dataset.name] = symbol
55
+ })
56
+ }
57
+ return names
58
+ }
59
+
60
+ var esvg = {
61
+ svgs: svgs,
62
+ use: use
63
+ }
64
+
65
+ // Handle Turbolinks page change events
66
+ if ( window.Turbolinks ) {
67
+ document.addEventListener( "turbolinks:load", function( event ) { names = null; esvg.svgs() })
68
+ }
69
+
70
+ if( typeof( module ) != 'undefined' ) { module.exports = esvg }
71
+ else window.esvg = esvg
72
+
73
+ })()
@@ -0,0 +1,14 @@
1
+ (function(){
2
+
3
+ function embed() {
4
+ if ( !document.body ) return requestAnimationFrame( embed )
5
+ <%= @embed %>
6
+ }
7
+
8
+ // Handle Turbolinks page change events
9
+ if ( window.Turbolinks ) {
10
+ document.addEventListener("turbolinks:load", function(event) { embed() })
11
+ }
12
+
13
+ embed()
14
+ })()
data/lib/esvg/svgs.rb CHANGED
@@ -176,100 +176,23 @@ module Esvg
176
176
 
177
177
  private
178
178
 
179
- def js(embed)
180
- %Q{(function(){
179
+ def read_js(path)
180
+ contents = ''
181
+ path = File.expand_path("js/#{path}.js.erb", File.dirname(__FILE__))
181
182
 
182
- function embed() {
183
- #{embed}
184
- }
185
-
186
- // If DOM is already ready, embed SVGs
187
- if (document.readyState == 'interactive') { embed() }
188
-
189
- // Handle Turbolinks page change events
190
- if ( window.Turbolinks ) {
191
- document.addEventListener("turbolinks:load", function(event) { embed() })
192
- }
183
+ File.open path do |f|
184
+ contents = ERB.new(f.read).result(binding)
185
+ end
186
+ contents
187
+ end
193
188
 
194
- // Handle standard DOM ready events
195
- document.addEventListener("DOMContentLoaded", function(event) { embed() })
196
- })()}
189
+ def js( embed )
190
+ @embed = embed
191
+ read_js( 'embed' )
197
192
  end
198
193
 
199
194
  def js_core
200
- %Q{(function(){
201
- var names
202
-
203
- function attr( source, name ){
204
- if (typeof source == 'object')
205
- return name+'="'+source.getAttribute(name)+'" '
206
- else
207
- return name+'="'+source+'" ' }
208
-
209
- function dasherize( input ) {
210
- return input.replace(/[\\W,_]/g, '-').replace(/-{2,}/g, '-')
211
- }
212
-
213
- function svgName( name ) {
214
- return "#{@config[:prefix]}-"+dasherize( name )
215
- }
216
-
217
- function use( name, options ) {
218
- options = options || {}
219
- var id = dasherize( name )
220
- var symbol = svgs()[id]
221
-
222
- if ( symbol ) {
223
- var parent = symbol.parentElement
224
- var prefix = parent.dataset.prefix
225
- var base = parent.dataset.symbolClass
226
-
227
- var svg = document.createRange().createContextualFragment( '<svg><use xlink:href="#' + prefix + '-' + id + '"/></svg>' ).firstChild;
228
- svg.setAttribute( 'class', base + ' ' + prefix + '-' + id + ' ' + ( options.class || '' ).trim() )
229
- svg.setAttribute( 'viewBox', symbol.getAttribute( 'viewBox' ) )
230
-
231
- if ( !( options.width || options.height || options.scale ) ) {
232
-
233
- svg.setAttribute('width', symbol.getAttribute('width'))
234
- svg.setAttribute('height', symbol.getAttribute('height'))
235
-
236
- } else {
237
-
238
- if ( options.width ) svg.setAttribute( 'width', options.width )
239
- if ( options.height ) svg.setAttribute( 'height', options.height )
240
- }
241
-
242
- return svg
243
- } else {
244
- console.error('Cannot find "'+name+'" svg symbol. Ensure that svg scripts are loaded')
245
- }
246
- }
247
-
248
- function svgs(){
249
- if ( !names ) {
250
- names = {}
251
- var symbols = Array.prototype.slice.call( document.querySelectorAll( 'svg[id^=esvg] symbol' ) )
252
- symbols.forEach( function( symbol ) {
253
- names[symbol.dataset.name] = symbol
254
- })
255
- }
256
- return names
257
- }
258
-
259
- var esvg = {
260
- svgs: svgs,
261
- use: use
262
- }
263
-
264
- // Handle Turbolinks page change events
265
- if ( window.Turbolinks ) {
266
- document.addEventListener( "turbolinks:load", function( event ) { names = null; esvg.svgs() })
267
- }
268
-
269
- if( typeof( module ) != 'undefined' ) { module.exports = esvg }
270
- else window.esvg = esvg
271
-
272
- })()}
195
+ read_js( 'core' )
273
196
  end
274
197
 
275
198
  def get_alias(name)
data/lib/esvg/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Esvg
2
- VERSION = "4.6.3"
2
+ VERSION = "4.6.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: esvg
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.6.3
4
+ version: 4.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Mathis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-19 00:00:00.000000000 Z
11
+ date: 2019-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -89,6 +89,8 @@ files:
89
89
  - lib/esvg.rb
90
90
  - lib/esvg/helpers.rb
91
91
  - lib/esvg/jekyll_hooks.rb
92
+ - lib/esvg/js/core.js.erb
93
+ - lib/esvg/js/embed.js.erb
92
94
  - lib/esvg/railties.rb
93
95
  - lib/esvg/svg.rb
94
96
  - lib/esvg/svgs.rb