soundmanager2-rails 2.97.20131201 → 2.97.20140901
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 +4 -4
- data/README.md +10 -6
- data/VERSION +1 -1
- data/soundmanager2-rails.gemspec +4 -4
- data/vendor/assets/javascripts/soundmanager2-jsmin.js +97 -95
- data/vendor/assets/javascripts/soundmanager2-nodebug-jsmin.js +70 -68
- data/vendor/assets/javascripts/soundmanager2-nodebug.js +48 -15
- data/vendor/assets/javascripts/soundmanager2.js +109 -26
- data/vendor/assets/javascripts/soundmanager2.swf +0 -0
- data/vendor/assets/javascripts/soundmanager2_debug.swf +0 -0
- data/vendor/assets/javascripts/soundmanager2_flash9.swf +0 -0
- data/vendor/assets/javascripts/soundmanager2_flash9_debug.swf +0 -0
- metadata +10 -10
@@ -8,10 +8,10 @@
|
|
8
8
|
* Code provided under the BSD License:
|
9
9
|
* http://schillmania.com/projects/soundmanager2/license.txt
|
10
10
|
*
|
11
|
-
* V2.97a.
|
11
|
+
* V2.97a.20140901
|
12
12
|
*/
|
13
13
|
|
14
|
-
/*global window, SM2_DEFER, sm2Debugger, console, document, navigator, setTimeout, setInterval, clearInterval, Audio, opera */
|
14
|
+
/*global window, SM2_DEFER, sm2Debugger, console, document, navigator, setTimeout, setInterval, clearInterval, Audio, opera, module, define */
|
15
15
|
/*jslint regexp: true, sloppy: true, white: true, nomen: true, plusplus: true, todo: true */
|
16
16
|
|
17
17
|
/**
|
@@ -34,6 +34,15 @@
|
|
34
34
|
|
35
35
|
"use strict";
|
36
36
|
|
37
|
+
if (!window || !window.document) {
|
38
|
+
|
39
|
+
// Don't cross the [environment] streams. SM2 expects to be running in a browser, not under node.js etc.
|
40
|
+
// Additionally, if a browser somehow manages to fail this test, as Egon said: "It would be bad."
|
41
|
+
|
42
|
+
throw new Error('SoundManager requires a browser with window and document objects.');
|
43
|
+
|
44
|
+
}
|
45
|
+
|
37
46
|
var soundManager = null;
|
38
47
|
|
39
48
|
/**
|
@@ -189,7 +198,7 @@ function SoundManager(smURL, smID) {
|
|
189
198
|
|
190
199
|
// dynamic attributes
|
191
200
|
|
192
|
-
this.versionNumber = 'V2.97a.
|
201
|
+
this.versionNumber = 'V2.97a.20140901';
|
193
202
|
this.version = null;
|
194
203
|
this.movieURL = null;
|
195
204
|
this.altURL = null;
|
@@ -1635,6 +1644,11 @@ function SoundManager(smURL, smID) {
|
|
1635
1644
|
try {
|
1636
1645
|
s.isHTML5 = false;
|
1637
1646
|
s._iO = policyFix(loopFix(instanceOptions));
|
1647
|
+
// if we have "position", disable auto-play as we'll be seeking to that position at onload().
|
1648
|
+
if (s._iO.autoPlay && (s._iO.position || s._iO.from)) {
|
1649
|
+
sm2._wD(s.id + ': Disabling autoPlay because of non-zero offset case');
|
1650
|
+
s._iO.autoPlay = false;
|
1651
|
+
}
|
1638
1652
|
// re-assign local shortcut
|
1639
1653
|
instanceOptions = s._iO;
|
1640
1654
|
if (fV === 8) {
|
@@ -1909,12 +1923,15 @@ function SoundManager(smURL, smID) {
|
|
1909
1923
|
|
1910
1924
|
s._iO = mixin(oOptions, s._iO);
|
1911
1925
|
|
1912
|
-
|
1913
|
-
|
1926
|
+
/**
|
1927
|
+
* Preload in the event of play() with position under Flash,
|
1928
|
+
* or from/to parameters and non-RTMP case
|
1929
|
+
*/
|
1930
|
+
if (((!s.isHTML5 && s._iO.position !== null && s._iO.position > 0) || (s._iO.from !== null && s._iO.from > 0) || s._iO.to !== null) && s.instanceCount === 0 && s.playState === 0 && !s._iO.serverURL) {
|
1914
1931
|
|
1915
1932
|
onready = function() {
|
1916
1933
|
// sound "canplay" or onload()
|
1917
|
-
// re-apply from/to to instance options, and start playback
|
1934
|
+
// re-apply position/from/to to instance options, and start playback
|
1918
1935
|
s._iO = mixin(oOptions, s._iO);
|
1919
1936
|
s.play(s._iO);
|
1920
1937
|
};
|
@@ -1923,7 +1940,7 @@ function SoundManager(smURL, smID) {
|
|
1923
1940
|
if (s.isHTML5 && !s._html5_canplay) {
|
1924
1941
|
|
1925
1942
|
// this hasn't been loaded yet. load it first, and then do this again.
|
1926
|
-
sm2._wD(fN + 'Beginning load for
|
1943
|
+
sm2._wD(fN + 'Beginning load for non-zero offset case');
|
1927
1944
|
|
1928
1945
|
s.load({
|
1929
1946
|
// note: custom HTML5-only event added for from/to implementation.
|
@@ -1936,7 +1953,7 @@ function SoundManager(smURL, smID) {
|
|
1936
1953
|
|
1937
1954
|
// to be safe, preload the whole thing in Flash.
|
1938
1955
|
|
1939
|
-
sm2._wD(fN + 'Preloading for
|
1956
|
+
sm2._wD(fN + 'Preloading for non-zero offset case');
|
1940
1957
|
|
1941
1958
|
s.load({
|
1942
1959
|
onload: onready
|
@@ -3097,7 +3114,7 @@ function SoundManager(smURL, smID) {
|
|
3097
3114
|
s.isBuffering = (nIsBuffering === 1);
|
3098
3115
|
if (s._iO.onbufferchange) {
|
3099
3116
|
sm2._wD(s.id + ': Buffer state change: ' + nIsBuffering);
|
3100
|
-
s._iO.onbufferchange.apply(s);
|
3117
|
+
s._iO.onbufferchange.apply(s, [nIsBuffering]);
|
3101
3118
|
}
|
3102
3119
|
|
3103
3120
|
return true;
|
@@ -3128,16 +3145,29 @@ function SoundManager(smURL, smID) {
|
|
3128
3145
|
this._onfailure = function(msg, level, code) {
|
3129
3146
|
|
3130
3147
|
s.failures++;
|
3131
|
-
sm2._wD(s.id + ':
|
3148
|
+
sm2._wD(s.id + ': Failure (' + s.failures + '): ' + msg);
|
3132
3149
|
|
3133
3150
|
if (s._iO.onfailure && s.failures === 1) {
|
3134
|
-
s._iO.onfailure(
|
3151
|
+
s._iO.onfailure(msg, level, code);
|
3135
3152
|
} else {
|
3136
3153
|
sm2._wD(s.id + ': Ignoring failure');
|
3137
3154
|
}
|
3138
3155
|
|
3139
3156
|
};
|
3140
3157
|
|
3158
|
+
/**
|
3159
|
+
* flash 9/movieStar + RTMP-only method for unhandled warnings/exceptions from Flash
|
3160
|
+
* e.g., RTMP "method missing" warning (non-fatal) for getStreamLength on server
|
3161
|
+
*/
|
3162
|
+
|
3163
|
+
this._onwarning = function(msg, level, code) {
|
3164
|
+
|
3165
|
+
if (s._iO.onwarning) {
|
3166
|
+
s._iO.onwarning(msg, level, code);
|
3167
|
+
}
|
3168
|
+
|
3169
|
+
};
|
3170
|
+
|
3141
3171
|
this._onfinish = function() {
|
3142
3172
|
|
3143
3173
|
// store local copy before it gets trashed...
|
@@ -3323,8 +3353,10 @@ function SoundManager(smURL, smID) {
|
|
3323
3353
|
}
|
3324
3354
|
s.metadata = oData;
|
3325
3355
|
|
3356
|
+
console.log('updated metadata', s.metadata);
|
3357
|
+
|
3326
3358
|
if (s._iO.onmetadata) {
|
3327
|
-
s._iO.onmetadata.
|
3359
|
+
s._iO.onmetadata.call(s, s.metadata);
|
3328
3360
|
}
|
3329
3361
|
|
3330
3362
|
};
|
@@ -3752,10 +3784,10 @@ function SoundManager(smURL, smID) {
|
|
3752
3784
|
s._onbufferchange(0);
|
3753
3785
|
|
3754
3786
|
// position according to instance options
|
3755
|
-
position1K = (s._iO.position !== _undefined && !isNaN(s._iO.position)?s._iO.position/msecScale:null);
|
3787
|
+
position1K = (s._iO.position !== _undefined && !isNaN(s._iO.position) ? s._iO.position/msecScale : null);
|
3756
3788
|
|
3757
|
-
// set the position if position was
|
3758
|
-
if (
|
3789
|
+
// set the position if position was provided before the sound loaded
|
3790
|
+
if (this.currentTime !== position1K) {
|
3759
3791
|
sm2._wD(s.id + ': canplay: Setting position to ' + position1K);
|
3760
3792
|
try {
|
3761
3793
|
this.currentTime = position1K;
|
@@ -3783,6 +3815,25 @@ function SoundManager(smURL, smID) {
|
|
3783
3815
|
|
3784
3816
|
}),
|
3785
3817
|
|
3818
|
+
durationchange: html5_event(function() {
|
3819
|
+
|
3820
|
+
// durationchange may fire at various times, probably the safest way to capture accurate/final duration.
|
3821
|
+
|
3822
|
+
var s = this._s,
|
3823
|
+
duration;
|
3824
|
+
|
3825
|
+
duration = s._get_html5_duration();
|
3826
|
+
|
3827
|
+
if (!isNaN(duration) && duration !== s.duration) {
|
3828
|
+
|
3829
|
+
sm2._wD(this._s.id + ': durationchange (' + duration + ')' + (s.duration ? ', previously ' + s.duration : ''));
|
3830
|
+
|
3831
|
+
s.durationEstimate = s.duration = duration;
|
3832
|
+
|
3833
|
+
}
|
3834
|
+
|
3835
|
+
}),
|
3836
|
+
|
3786
3837
|
// TODO: Reserved for potential use
|
3787
3838
|
/*
|
3788
3839
|
emptied: html5_event(function() {
|
@@ -3855,7 +3906,7 @@ function SoundManager(smURL, smID) {
|
|
3855
3906
|
|
3856
3907
|
playing: html5_event(function() {
|
3857
3908
|
|
3858
|
-
sm2._wD(this._s.id + ': playing');
|
3909
|
+
sm2._wD(this._s.id + ': playing ' + String.fromCharCode(9835));
|
3859
3910
|
// once play starts, no buffering
|
3860
3911
|
this._s._onbufferchange(0);
|
3861
3912
|
|
@@ -3915,8 +3966,6 @@ function SoundManager(smURL, smID) {
|
|
3915
3966
|
|
3916
3967
|
if (!isNaN(loaded)) {
|
3917
3968
|
|
3918
|
-
// if progress, likely not buffering
|
3919
|
-
s._onbufferchange(0);
|
3920
3969
|
// TODO: prevent calls with duplicate values.
|
3921
3970
|
s._whileloading(loaded, total, s._get_html5_duration());
|
3922
3971
|
if (loaded && total && loaded === total) {
|
@@ -4259,7 +4308,7 @@ function SoundManager(smURL, smID) {
|
|
4259
4308
|
setupUndef: sm + '.setup(): Could not find option "%s"',
|
4260
4309
|
setupLate: sm + '.setup(): url, flashVersion and html5Test property changes will not take effect until reboot().',
|
4261
4310
|
noURL: smc + 'Flash URL required. Call soundManager.setup({url:...}) to get started.',
|
4262
|
-
sm2Loaded: 'SoundManager 2: Ready.',
|
4311
|
+
sm2Loaded: 'SoundManager 2: Ready. ' + String.fromCharCode(10003),
|
4263
4312
|
reset: sm + '.reset(): Removing event callbacks',
|
4264
4313
|
mobileUA: 'Mobile UA detected, preferring HTML5 by default.',
|
4265
4314
|
globalHTML5: 'Using singleton HTML5 Audio() pattern for this device.'
|
@@ -4771,13 +4820,13 @@ function SoundManager(smURL, smID) {
|
|
4771
4820
|
|
4772
4821
|
};
|
4773
4822
|
|
4774
|
-
|
4823
|
+
featureCheck = function() {
|
4775
4824
|
|
4776
4825
|
var flashNeeded,
|
4777
4826
|
item,
|
4778
4827
|
formats = sm2.audioFormats,
|
4779
4828
|
// iPhone <= 3.1 has broken HTML5 audio(), but firmware 3.2 (original iPad) + iOS4 works.
|
4780
|
-
isSpecial = (is_iDevice && !!(ua.match(/os (1|2|3_0|3_1)/i)));
|
4829
|
+
isSpecial = (is_iDevice && !!(ua.match(/os (1|2|3_0|3_1)\s/i)));
|
4781
4830
|
|
4782
4831
|
if (isSpecial) {
|
4783
4832
|
|
@@ -5215,7 +5264,7 @@ function SoundManager(smURL, smID) {
|
|
5215
5264
|
* does not apply when using high performance (position:fixed means on-screen), OR infinite flash load timeout
|
5216
5265
|
* wmode breaks IE 8 on Vista + Win7 too in some cases, as of January 2011 (?)
|
5217
5266
|
*/
|
5218
|
-
|
5267
|
+
messages.push(strings.spcWmode);
|
5219
5268
|
sm2.wmode = null;
|
5220
5269
|
}
|
5221
5270
|
|
@@ -5655,7 +5704,7 @@ function SoundManager(smURL, smID) {
|
|
5655
5704
|
|
5656
5705
|
if (sm2.html5Only) {
|
5657
5706
|
// all good.
|
5658
|
-
_wDS('sm2Loaded');
|
5707
|
+
_wDS('sm2Loaded', 1);
|
5659
5708
|
didInit = true;
|
5660
5709
|
initUserOnload();
|
5661
5710
|
debugTS('onload', true);
|
@@ -5672,7 +5721,7 @@ function SoundManager(smURL, smID) {
|
|
5672
5721
|
|
5673
5722
|
error = {type: (!hasFlash && needsFlash ? 'NO_FLASH' : 'INIT_TIMEOUT')};
|
5674
5723
|
|
5675
|
-
sm2._wD('SoundManager 2 ' + (disabled ? 'failed to load' : 'loaded') + ' (' + (disabled ? 'Flash security/load error' : 'OK') + ')', disabled ? 2: 1);
|
5724
|
+
sm2._wD('SoundManager 2 ' + (disabled ? 'failed to load' : 'loaded') + ' (' + (disabled ? 'Flash security/load error' : 'OK') + ') ' + String.fromCharCode(disabled ? 10006 : 10003), disabled ? 2: 1);
|
5676
5725
|
|
5677
5726
|
if (disabled || bNoDisable) {
|
5678
5727
|
if (sm2.useFlashBlock && sm2.oMC) {
|
@@ -5904,6 +5953,10 @@ function SoundManager(smURL, smID) {
|
|
5904
5953
|
|
5905
5954
|
// catch edge case of initComplete() firing after window.load()
|
5906
5955
|
windowLoaded = true;
|
5956
|
+
|
5957
|
+
// catch case where DOMContentLoaded has been sent, but we're still in doc.readyState = 'interactive'
|
5958
|
+
domContentLoaded();
|
5959
|
+
|
5907
5960
|
event.remove(window, 'load', winOnLoad);
|
5908
5961
|
|
5909
5962
|
};
|
@@ -5983,7 +6036,37 @@ if (window.SM2_DEFER === undefined || !SM2_DEFER) {
|
|
5983
6036
|
* ------------------------------
|
5984
6037
|
*/
|
5985
6038
|
|
5986
|
-
|
5987
|
-
|
6039
|
+
if (typeof module === 'object' && module && typeof module.exports === 'object') {
|
6040
|
+
|
6041
|
+
/**
|
6042
|
+
* commonJS module
|
6043
|
+
* note: SM2 requires a window global due to Flash, which makes calls to window.soundManager.
|
6044
|
+
* flash may not always be needed, but this is not known until async init and SM2 may even "reboot" into Flash mode.
|
6045
|
+
*/
|
6046
|
+
|
6047
|
+
window.soundManager = soundManager;
|
6048
|
+
|
6049
|
+
module.exports.SoundManager = SoundManager;
|
6050
|
+
module.exports.soundManager = soundManager;
|
6051
|
+
|
6052
|
+
} else if (typeof define === 'function' && define.amd) {
|
6053
|
+
|
6054
|
+
// AMD - requireJS
|
6055
|
+
|
6056
|
+
define('SoundManager', [], function() {
|
6057
|
+
return {
|
6058
|
+
SoundManager: SoundManager,
|
6059
|
+
soundManager: soundManager
|
6060
|
+
};
|
6061
|
+
});
|
6062
|
+
|
6063
|
+
} else {
|
6064
|
+
|
6065
|
+
// standard browser case
|
6066
|
+
|
6067
|
+
window.SoundManager = SoundManager; // constructor
|
6068
|
+
window.soundManager = soundManager; // public API, flash callbacks etc.
|
6069
|
+
|
6070
|
+
}
|
5988
6071
|
|
5989
6072
|
}(window));
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: soundmanager2-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.97.
|
4
|
+
version: 2.97.20140901
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sudara
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: jeweler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
description: 'Exposes soundmanager2 as a vendored js lib in rails 3 '
|
@@ -45,7 +45,7 @@ extensions: []
|
|
45
45
|
extra_rdoc_files:
|
46
46
|
- README.md
|
47
47
|
files:
|
48
|
-
- .document
|
48
|
+
- ".document"
|
49
49
|
- Gemfile
|
50
50
|
- Gemfile.lock
|
51
51
|
- README.md
|
@@ -71,17 +71,17 @@ require_paths:
|
|
71
71
|
- lib
|
72
72
|
required_ruby_version: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- -
|
79
|
+
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
81
|
version: '0'
|
82
82
|
requirements: []
|
83
83
|
rubyforge_project:
|
84
|
-
rubygems_version: 2.2.
|
84
|
+
rubygems_version: 2.2.2
|
85
85
|
signing_key:
|
86
86
|
specification_version: 4
|
87
87
|
summary: Exposes soundmanager2 as a vendored js lib in rails 3
|