This repository has been archived by the owner on Sep 20, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 489
/
dom.js
98 lines (84 loc) · 3.11 KB
/
dom.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/**
* @license
* Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
(function(scope) {
'use strict';
// polyfill performance.now
if (!window.performance) {
var start = Date.now();
// only at millisecond precision
window.performance = {now: function(){ return Date.now() - start }};
}
// polyfill for requestAnimationFrame
if (!window.requestAnimationFrame) {
window.requestAnimationFrame = (function() {
var nativeRaf = window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame;
return nativeRaf ?
function(callback) {
return nativeRaf(function() {
callback(performance.now());
});
} :
function( callback ){
return window.setTimeout(callback, 1000 / 60);
};
})();
}
if (!window.cancelAnimationFrame) {
window.cancelAnimationFrame = (function() {
return window.webkitCancelAnimationFrame ||
window.mozCancelAnimationFrame ||
function(id) {
clearTimeout(id);
};
})();
}
// Make a stub for Polymer() for polyfill purposes; under the HTMLImports
// polyfill, scripts in the main document run before imports. That means
// if (1) polymer is imported and (2) Polymer() is called in the main document
// in a script after the import, 2 occurs before 1. We correct this here
// by specfiically patching Polymer(); this is not necessary under native
// HTMLImports.
var elementDeclarations = [];
var polymerStub = function(name, dictionary) {
if ((typeof name !== 'string') && (arguments.length === 1)) {
Array.prototype.push.call(arguments, document._currentScript);
}
elementDeclarations.push(arguments);
};
window.Polymer = polymerStub;
// deliver queued delcarations
scope.consumeDeclarations = function(callback) {
scope.consumeDeclarations = function() {
throw 'Possible attempt to load Polymer twice';
};
if (callback) {
callback(elementDeclarations);
}
elementDeclarations = null;
};
function installPolymerWarning() {
if (window.Polymer === polymerStub) {
window.Polymer = function() {
throw new Error('You tried to use polymer without loading it first. To ' +
'load polymer, <link rel="import" href="' +
'components/polymer/polymer.html">');
};
}
}
// Once DOMContent has loaded, any main document scripts that depend on
// Polymer() should have run. Calling Polymer() now is an error until
// polymer is imported.
if (HTMLImports.useNative) {
installPolymerWarning();
} else {
addEventListener('DOMContentLoaded', installPolymerWarning);
}
})(window.WebComponents);