]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Add polyfills for older browsers.
authorXhmikosR <xhmikosr@gmail.com>
Tue, 25 Sep 2018 11:24:42 +0000 (14:24 +0300)
committerXhmikosR <xhmikosr@gmail.com>
Thu, 13 Dec 2018 23:45:51 +0000 (01:45 +0200)
requestAnimationFrame and btoa.

docs/assets/js/vendor/base64.js [new file with mode: 0644]
docs/assets/js/vendor/requestAnimationFrame-polyfill.js [new file with mode: 0644]
grunt/configBridge.json

diff --git a/docs/assets/js/vendor/base64.js b/docs/assets/js/vendor/base64.js
new file mode 100644 (file)
index 0000000..bd68efe
--- /dev/null
@@ -0,0 +1,65 @@
+;(function () {
+
+  var object =
+    typeof exports != 'undefined' ? exports :
+    typeof self != 'undefined' ? self : // #8: web workers
+    $.global; // #31: ExtendScript
+
+  var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+
+  function InvalidCharacterError(message) {
+    this.message = message;
+  }
+  InvalidCharacterError.prototype = new Error;
+  InvalidCharacterError.prototype.name = 'InvalidCharacterError';
+
+  // encoder
+  // [https://gist.github.com/999166] by [https://github.com/nignag]
+  object.btoa || (
+  object.btoa = function (input) {
+    var str = String(input);
+    for (
+      // initialize result and counter
+      var block, charCode, idx = 0, map = chars, output = '';
+      // if the next str index does not exist:
+      //   change the mapping table to "="
+      //   check if d has no fractional digits
+      str.charAt(idx | 0) || (map = '=', idx % 1);
+      // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8
+      output += map.charAt(63 & block >> 8 - idx % 1 * 8)
+    ) {
+      charCode = str.charCodeAt(idx += 3/4);
+      if (charCode > 0xFF) {
+        throw new InvalidCharacterError("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");
+      }
+      block = block << 8 | charCode;
+    }
+    return output;
+  });
+
+  // decoder
+  // [https://gist.github.com/1020396] by [https://github.com/atk]
+  object.atob || (
+  object.atob = function (input) {
+    var str = String(input).replace(/[=]+$/, ''); // #31: ExtendScript bad parse of /=
+    if (str.length % 4 == 1) {
+      throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded.");
+    }
+    for (
+      // initialize result and counters
+      var bc = 0, bs, buffer, idx = 0, output = '';
+      // get next character
+      buffer = str.charAt(idx++);
+      // character found in table? initialize bit storage and add its ascii value;
+      ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
+        // and if not first of each 4 characters,
+        // convert the first 8 bits to one ascii character
+        bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
+    ) {
+      // try to find character in table (0-63, not found => -1)
+      buffer = chars.indexOf(buffer);
+    }
+    return output;
+  });
+
+}());
diff --git a/docs/assets/js/vendor/requestAnimationFrame-polyfill.js b/docs/assets/js/vendor/requestAnimationFrame-polyfill.js
new file mode 100644 (file)
index 0000000..8c27315
--- /dev/null
@@ -0,0 +1,32 @@
+// https://gist.github.com/paulirish/1579671
+// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
+// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
+
+// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
+
+// MIT license
+
+(function() {
+    var lastTime = 0;
+    var vendors = ['ms', 'moz', 'webkit', 'o'];
+    for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+        window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
+        window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
+                                   || window[vendors[x]+'CancelRequestAnimationFrame'];
+    }
+
+    if (!window.requestAnimationFrame)
+        window.requestAnimationFrame = function(callback, element) {
+            var currTime = new Date().getTime();
+            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+            var id = window.setTimeout(function() { callback(currTime + timeToCall); },
+              timeToCall);
+            lastTime = currTime + timeToCall;
+            return id;
+        };
+
+    if (!window.cancelAnimationFrame)
+        window.cancelAnimationFrame = function(id) {
+            clearTimeout(id);
+        };
+}());
index 8e035b5a518f61156d199b1ea6a8ea1d3cb6ae36..943ed237ef5259838de28a3763e3230f23d6deb6 100644 (file)
@@ -11,6 +11,8 @@
       "../assets/js/src/customizer.js"
     ],
     "docsJs": [
+      "../assets/js/vendor/requestAnimationFrame-polyfill.js",
+      "../assets/js/vendor/base64.js",
       "../assets/js/vendor/holder.min.js",
       "../assets/js/vendor/clipboard.min.js",
       "../assets/js/vendor/anchor.min.js",