polymer-core-rails 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -3
  3. data/app/assets/components/context-free-parser/context-free-parser.js +27 -4
  4. data/app/assets/components/core-a11y-keys/core-a11y-keys.html +4 -4
  5. data/app/assets/components/core-ajax/core-ajax.html +38 -10
  6. data/app/assets/components/core-ajax/core-xhr.html +1 -1
  7. data/app/assets/components/core-animated-pages/core-animated-pages.html +25 -2
  8. data/app/assets/components/core-animation/web-animations.html +1 -1
  9. data/app/assets/components/core-collapse/core-collapse.html +1 -1
  10. data/app/assets/components/core-doc-viewer/elements/core-doc-page.css +26 -1
  11. data/app/assets/components/core-doc-viewer/elements/core-doc-page.html +39 -4
  12. data/app/assets/components/core-doc-viewer/elements/core-doc-toc.css +3 -3
  13. data/app/assets/components/core-drawer-panel/core-drawer-panel.css +14 -6
  14. data/app/assets/components/core-drawer-panel/core-drawer-panel.html +32 -8
  15. data/app/assets/components/core-dropdown/core-dropdown.html +8 -2
  16. data/app/assets/components/core-elements/core-elements.html +1 -0
  17. data/app/assets/components/core-icon/core-icon.html +0 -2
  18. data/app/assets/components/core-icons/av-icons.html +2 -9
  19. data/app/assets/components/core-icons/communication-icons.html +39 -42
  20. data/app/assets/components/core-icons/core-icons.html +231 -235
  21. data/app/assets/components/core-icons/device-icons.html +75 -90
  22. data/app/assets/components/core-icons/editor-icons.html +52 -52
  23. data/app/assets/components/core-icons/hardware-icons.html +40 -41
  24. data/app/assets/components/core-icons/image-icons.html +133 -137
  25. data/app/assets/components/core-icons/maps-icons.html +55 -57
  26. data/app/assets/components/core-icons/notification-icons.html +34 -34
  27. data/app/assets/components/core-icons/social-icons.html +23 -37
  28. data/app/assets/components/core-image/core-image.html +3 -3
  29. data/app/assets/components/core-list/core-list.html +50 -27
  30. data/app/assets/components/core-localstorage/core-localstorage.html +4 -5
  31. data/app/assets/components/core-menu/core-menu.html +8 -3
  32. data/app/assets/components/core-menu/core-submenu.html +2 -2
  33. data/app/assets/components/core-overlay/core-key-helper.html +3 -0
  34. data/app/assets/components/core-overlay/core-overlay-layer.html +3 -0
  35. data/app/assets/components/core-overlay/core-overlay.html +20 -4
  36. data/app/assets/components/core-resizable/core-resizable.html +248 -0
  37. data/app/assets/components/core-scroll-header-panel/core-scroll-header-panel.html +14 -3
  38. data/app/assets/components/core-scroll-threshold/core-scroll-threshold.html +222 -0
  39. data/app/assets/components/core-scroll-threshold/metadata.html +24 -0
  40. data/app/assets/components/core-selection/core-selection.html +1 -1
  41. data/app/assets/components/core-selector/core-selector.html +26 -26
  42. data/app/assets/components/core-splitter/core-splitter.html +17 -2
  43. data/app/assets/components/core-style/core-style.html +1 -1
  44. data/app/assets/components/core-toolbar/core-toolbar.html +1 -1
  45. data/app/assets/components/core-tooltip/core-tooltip.css +2 -2
  46. data/app/assets/components/core-tooltip/core-tooltip.html +16 -5
  47. data/app/assets/components/core-tooltip/metadata.html +1 -1
  48. data/app/assets/components/google-code-prettify/styles/doxy.css +1 -1
  49. data/app/assets/components/marked/lib/marked.js +11 -5
  50. data/app/assets/components/marked/marked.min.js +6 -0
  51. data/app/assets/components/paper-button/paper-button-base.html +56 -12
  52. data/app/assets/components/paper-button/paper-button.html +22 -5
  53. data/app/assets/components/paper-fab/paper-fab.html +2 -2
  54. data/app/assets/components/paper-ripple/paper-ripple.html +2 -1
  55. data/app/assets/components/paper-shadow/paper-shadow.css +10 -10
  56. data/app/assets/components/paper-shadow/paper-shadow.html +8 -1
  57. data/app/assets/components/sampler-scaffold/sampler-scaffold.css +1 -1
  58. data/app/assets/components/{web-animations-next → web-animations-js}/src/animation-constructor.js +10 -5
  59. data/app/assets/components/{web-animations-next → web-animations-js}/src/animation-node.js +1 -1
  60. data/app/assets/components/{web-animations-next → web-animations-js}/src/animation.js +2 -2
  61. data/app/assets/components/{web-animations-next → web-animations-js}/src/apply-preserving-inline-style.js +2 -3
  62. data/app/assets/components/{web-animations-next → web-animations-js}/src/apply.js +1 -1
  63. data/app/assets/components/{web-animations-next → web-animations-js}/src/box-handler.js +1 -1
  64. data/app/assets/components/{web-animations-next → web-animations-js}/src/color-handler.js +2 -2
  65. data/app/assets/components/{web-animations-next → web-animations-js}/src/deprecation.js +0 -0
  66. data/app/assets/components/{web-animations-next → web-animations-js}/src/dev.js +0 -0
  67. data/app/assets/components/{web-animations-next → web-animations-js}/src/dimension-handler.js +1 -1
  68. data/app/assets/components/{web-animations-next → web-animations-js}/src/effect-callback.js +2 -2
  69. data/app/assets/components/{web-animations-next → web-animations-js}/src/effect.js +1 -1
  70. data/app/assets/components/{web-animations-next → web-animations-js}/src/element-animatable.js +1 -1
  71. data/app/assets/components/{web-animations-next → web-animations-js}/src/font-weight-handler.js +1 -1
  72. data/app/assets/components/{web-animations-next → web-animations-js}/src/group-constructors.js +2 -1
  73. data/app/assets/components/{web-animations-next → web-animations-js}/src/handler-utils.js +1 -1
  74. data/app/assets/components/{web-animations-next → web-animations-js}/src/interpolation.js +1 -1
  75. data/app/assets/components/{web-animations-next → web-animations-js}/src/matrix-decomposition.js +1 -1
  76. data/app/assets/components/{web-animations-next → web-animations-js}/src/matrix-interpolation.js +1 -1
  77. data/app/assets/components/{web-animations-next → web-animations-js}/src/normalize-keyframes.js +1 -1
  78. data/app/assets/components/{web-animations-next → web-animations-js}/src/number-handler.js +1 -1
  79. data/app/assets/components/{web-animations-next → web-animations-js}/src/player.js +1 -1
  80. data/app/assets/components/{web-animations-next → web-animations-js}/src/position-handler.js +1 -1
  81. data/app/assets/components/{web-animations-next → web-animations-js}/src/property-interpolation.js +1 -1
  82. data/app/assets/components/{web-animations-next → web-animations-js}/src/property-names.js +1 -1
  83. data/app/assets/components/{web-animations-next → web-animations-js}/src/scope.js +2 -2
  84. data/app/assets/components/{web-animations-next → web-animations-js}/src/shadow-handler.js +1 -1
  85. data/app/assets/components/{web-animations-next → web-animations-js}/src/shape-handler.js +1 -1
  86. data/app/assets/components/{web-animations-next → web-animations-js}/src/tick.js +1 -1
  87. data/app/assets/components/{web-animations-next → web-animations-js}/src/timeline.js +7 -7
  88. data/app/assets/components/{web-animations-next → web-animations-js}/src/timing-utilities.js +0 -0
  89. data/app/assets/components/{web-animations-next → web-animations-js}/src/transform-handler.js +1 -1
  90. data/app/assets/components/{web-animations-next → web-animations-js}/src/visibility-handler.js +1 -1
  91. data/app/assets/components/{web-animations-next/src/maxifill-player.js → web-animations-js/src/web-animations-next-player.js} +1 -1
  92. data/app/assets/components/{web-animations-next → web-animations-js}/web-animations-next-lite.dev.html +1 -1
  93. data/app/assets/components/{web-animations-next → web-animations-js}/web-animations-next-lite.dev.js +0 -0
  94. data/app/assets/components/web-animations-js/web-animations-next-lite.min.js +17 -0
  95. data/app/assets/components/{web-animations-next → web-animations-js}/web-animations-next.dev.html +1 -1
  96. data/app/assets/components/{web-animations-next → web-animations-js}/web-animations-next.dev.js +0 -0
  97. data/app/assets/components/web-animations-js/web-animations-next.min.js +17 -0
  98. data/app/assets/components/{web-animations-next → web-animations-js}/web-animations.dev.html +0 -0
  99. data/app/assets/components/{web-animations-next → web-animations-js}/web-animations.dev.js +0 -0
  100. data/app/assets/components/{web-animations-next → web-animations-js}/web-animations.html +1 -3
  101. data/app/assets/components/web-animations-js/web-animations.min.js +17 -0
  102. data/app/assets/components/webcomponentsjs/CustomElements.js +634 -0
  103. data/app/assets/components/webcomponentsjs/CustomElements.min.js +11 -0
  104. data/app/assets/components/webcomponentsjs/HTMLImports.js +764 -0
  105. data/app/assets/components/webcomponentsjs/HTMLImports.min.js +11 -0
  106. data/app/assets/components/webcomponentsjs/ShadowDOM.js +4277 -0
  107. data/app/assets/components/webcomponentsjs/ShadowDOM.min.js +13 -0
  108. data/app/assets/components/webcomponentsjs/webcomponents-lite.js +1728 -0
  109. data/app/assets/components/webcomponentsjs/webcomponents-lite.min.js +11 -0
  110. data/app/assets/components/webcomponentsjs/webcomponents.js +6114 -0
  111. data/app/assets/components/webcomponentsjs/webcomponents.min.js +14 -0
  112. data/lib/polymer-core-rails/version.rb +1 -1
  113. metadata +60 -76
  114. data/app/assets/components/context-free-parser/package.json +0 -16
  115. data/app/assets/components/core-ajax/demo-progress.html +0 -65
  116. data/app/assets/components/core-dropdown/metadata.html +0 -62
  117. data/app/assets/components/core-icons/png-icons.html +0 -19
  118. data/app/assets/components/core-overlay/tests/html/core-overlay-basic.html +0 -127
  119. data/app/assets/components/core-overlay/tests/html/core-overlay-positioning-margin.html +0 -153
  120. data/app/assets/components/core-overlay/tests/html/core-overlay-positioning.html +0 -167
  121. data/app/assets/components/core-overlay/tests/html/core-overlay-scroll.html +0 -130
  122. data/app/assets/components/core-overlay/tests/js/htmltests.js +0 -6
  123. data/app/assets/components/core-overlay/tests/runner.html +0 -14
  124. data/app/assets/components/core-overlay/tests/tests.json +0 -6
  125. data/app/assets/components/core-popup-menu/core-popup-menu.css +0 -28
  126. data/app/assets/components/core-popup-menu/core-popup-menu.html +0 -198
  127. data/app/assets/components/core-popup-menu/core-popup-overlay.html +0 -111
  128. data/app/assets/components/core-popup-menu/metadata.html +0 -62
  129. data/app/assets/components/core-shared-lib/tests/html/core-shared-lib.html +0 -47
  130. data/app/assets/components/core-shared-lib/tests/js/htmltests.js +0 -3
  131. data/app/assets/components/core-shared-lib/tests/runner.html +0 -14
  132. data/app/assets/components/core-shared-lib/tests/tests.json +0 -6
  133. data/app/assets/components/marked/LICENSE +0 -19
  134. data/app/assets/components/marked/Makefile +0 -12
  135. data/app/assets/components/marked/package.json +0 -22
  136. data/app/assets/components/platform/platform.js +0 -16
  137. data/app/assets/components/web-animations-js/web-animations.js +0 -5529
  138. data/app/assets/components/web-animations-next/Gruntfile.js +0 -279
  139. data/app/assets/components/web-animations-next/History.md +0 -76
  140. data/app/assets/components/web-animations-next/package.json +0 -33
  141. data/app/assets/components/web-animations-next/target-config.js +0 -124
  142. data/app/assets/components/web-animations-next/target-loader.js +0 -13
  143. data/app/assets/components/web-animations-next/templates/boilerplate +0 -13
  144. data/app/assets/components/web-animations-next/templates/runner.html +0 -26
  145. data/app/assets/components/web-animations-next/templates/web-animations.html +0 -18
  146. data/app/assets/components/web-animations-next/templates/web-animations.js +0 -21
@@ -0,0 +1,764 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
4
+ * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5
+ * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6
+ * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7
+ * Code distributed by Google as part of the polymer project is also
8
+ * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9
+ */
10
+ // @version 0.5.5
11
+ if (typeof WeakMap === "undefined") {
12
+ (function() {
13
+ var defineProperty = Object.defineProperty;
14
+ var counter = Date.now() % 1e9;
15
+ var WeakMap = function() {
16
+ this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__");
17
+ };
18
+ WeakMap.prototype = {
19
+ set: function(key, value) {
20
+ var entry = key[this.name];
21
+ if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, {
22
+ value: [ key, value ],
23
+ writable: true
24
+ });
25
+ return this;
26
+ },
27
+ get: function(key) {
28
+ var entry;
29
+ return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined;
30
+ },
31
+ "delete": function(key) {
32
+ var entry = key[this.name];
33
+ if (!entry || entry[0] !== key) return false;
34
+ entry[0] = entry[1] = undefined;
35
+ return true;
36
+ },
37
+ has: function(key) {
38
+ var entry = key[this.name];
39
+ if (!entry) return false;
40
+ return entry[0] === key;
41
+ }
42
+ };
43
+ window.WeakMap = WeakMap;
44
+ })();
45
+ }
46
+
47
+ window.HTMLImports = window.HTMLImports || {
48
+ flags: {}
49
+ };
50
+
51
+ (function(scope) {
52
+ var IMPORT_LINK_TYPE = "import";
53
+ var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link"));
54
+ var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill);
55
+ var wrap = function(node) {
56
+ return hasShadowDOMPolyfill ? ShadowDOMPolyfill.wrapIfNeeded(node) : node;
57
+ };
58
+ var rootDocument = wrap(document);
59
+ var currentScriptDescriptor = {
60
+ get: function() {
61
+ var script = HTMLImports.currentScript || document.currentScript || (document.readyState !== "complete" ? document.scripts[document.scripts.length - 1] : null);
62
+ return wrap(script);
63
+ },
64
+ configurable: true
65
+ };
66
+ Object.defineProperty(document, "_currentScript", currentScriptDescriptor);
67
+ Object.defineProperty(rootDocument, "_currentScript", currentScriptDescriptor);
68
+ var isIE = /Trident|Edge/.test(navigator.userAgent);
69
+ function whenReady(callback, doc) {
70
+ doc = doc || rootDocument;
71
+ whenDocumentReady(function() {
72
+ watchImportsLoad(callback, doc);
73
+ }, doc);
74
+ }
75
+ var requiredReadyState = isIE ? "complete" : "interactive";
76
+ var READY_EVENT = "readystatechange";
77
+ function isDocumentReady(doc) {
78
+ return doc.readyState === "complete" || doc.readyState === requiredReadyState;
79
+ }
80
+ function whenDocumentReady(callback, doc) {
81
+ if (!isDocumentReady(doc)) {
82
+ var checkReady = function() {
83
+ if (doc.readyState === "complete" || doc.readyState === requiredReadyState) {
84
+ doc.removeEventListener(READY_EVENT, checkReady);
85
+ whenDocumentReady(callback, doc);
86
+ }
87
+ };
88
+ doc.addEventListener(READY_EVENT, checkReady);
89
+ } else if (callback) {
90
+ callback();
91
+ }
92
+ }
93
+ function markTargetLoaded(event) {
94
+ event.target.__loaded = true;
95
+ }
96
+ function watchImportsLoad(callback, doc) {
97
+ var imports = doc.querySelectorAll("link[rel=import]");
98
+ var loaded = 0, l = imports.length;
99
+ function checkDone(d) {
100
+ if (loaded == l && callback) {
101
+ callback();
102
+ }
103
+ }
104
+ function loadedImport(e) {
105
+ markTargetLoaded(e);
106
+ loaded++;
107
+ checkDone();
108
+ }
109
+ if (l) {
110
+ for (var i = 0, imp; i < l && (imp = imports[i]); i++) {
111
+ if (isImportLoaded(imp)) {
112
+ loadedImport.call(imp, {
113
+ target: imp
114
+ });
115
+ } else {
116
+ imp.addEventListener("load", loadedImport);
117
+ imp.addEventListener("error", loadedImport);
118
+ }
119
+ }
120
+ } else {
121
+ checkDone();
122
+ }
123
+ }
124
+ function isImportLoaded(link) {
125
+ return useNative ? link.__loaded || link.import && link.import.readyState !== "loading" : link.__importParsed;
126
+ }
127
+ if (useNative) {
128
+ new MutationObserver(function(mxns) {
129
+ for (var i = 0, l = mxns.length, m; i < l && (m = mxns[i]); i++) {
130
+ if (m.addedNodes) {
131
+ handleImports(m.addedNodes);
132
+ }
133
+ }
134
+ }).observe(document.head, {
135
+ childList: true
136
+ });
137
+ function handleImports(nodes) {
138
+ for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) {
139
+ if (isImport(n)) {
140
+ handleImport(n);
141
+ }
142
+ }
143
+ }
144
+ function isImport(element) {
145
+ return element.localName === "link" && element.rel === "import";
146
+ }
147
+ function handleImport(element) {
148
+ var loaded = element.import;
149
+ if (loaded) {
150
+ markTargetLoaded({
151
+ target: element
152
+ });
153
+ } else {
154
+ element.addEventListener("load", markTargetLoaded);
155
+ element.addEventListener("error", markTargetLoaded);
156
+ }
157
+ }
158
+ (function() {
159
+ if (document.readyState === "loading") {
160
+ var imports = document.querySelectorAll("link[rel=import]");
161
+ for (var i = 0, l = imports.length, imp; i < l && (imp = imports[i]); i++) {
162
+ handleImport(imp);
163
+ }
164
+ }
165
+ })();
166
+ }
167
+ whenReady(function() {
168
+ HTMLImports.ready = true;
169
+ HTMLImports.readyTime = new Date().getTime();
170
+ var evt = rootDocument.createEvent("CustomEvent");
171
+ evt.initCustomEvent("HTMLImportsLoaded", true, true, {});
172
+ rootDocument.dispatchEvent(evt);
173
+ });
174
+ scope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;
175
+ scope.useNative = useNative;
176
+ scope.rootDocument = rootDocument;
177
+ scope.whenReady = whenReady;
178
+ scope.isIE = isIE;
179
+ })(HTMLImports);
180
+
181
+ (function(scope) {
182
+ var modules = [];
183
+ var addModule = function(module) {
184
+ modules.push(module);
185
+ };
186
+ var initializeModules = function() {
187
+ modules.forEach(function(module) {
188
+ module(scope);
189
+ });
190
+ };
191
+ scope.addModule = addModule;
192
+ scope.initializeModules = initializeModules;
193
+ })(HTMLImports);
194
+
195
+ HTMLImports.addModule(function(scope) {
196
+ var CSS_URL_REGEXP = /(url\()([^)]*)(\))/g;
197
+ var CSS_IMPORT_REGEXP = /(@import[\s]+(?!url\())([^;]*)(;)/g;
198
+ var path = {
199
+ resolveUrlsInStyle: function(style) {
200
+ var doc = style.ownerDocument;
201
+ var resolver = doc.createElement("a");
202
+ style.textContent = this.resolveUrlsInCssText(style.textContent, resolver);
203
+ return style;
204
+ },
205
+ resolveUrlsInCssText: function(cssText, urlObj) {
206
+ var r = this.replaceUrls(cssText, urlObj, CSS_URL_REGEXP);
207
+ r = this.replaceUrls(r, urlObj, CSS_IMPORT_REGEXP);
208
+ return r;
209
+ },
210
+ replaceUrls: function(text, urlObj, regexp) {
211
+ return text.replace(regexp, function(m, pre, url, post) {
212
+ var urlPath = url.replace(/["']/g, "");
213
+ urlObj.href = urlPath;
214
+ urlPath = urlObj.href;
215
+ return pre + "'" + urlPath + "'" + post;
216
+ });
217
+ }
218
+ };
219
+ scope.path = path;
220
+ });
221
+
222
+ HTMLImports.addModule(function(scope) {
223
+ var xhr = {
224
+ async: true,
225
+ ok: function(request) {
226
+ return request.status >= 200 && request.status < 300 || request.status === 304 || request.status === 0;
227
+ },
228
+ load: function(url, next, nextContext) {
229
+ var request = new XMLHttpRequest();
230
+ if (scope.flags.debug || scope.flags.bust) {
231
+ url += "?" + Math.random();
232
+ }
233
+ request.open("GET", url, xhr.async);
234
+ request.addEventListener("readystatechange", function(e) {
235
+ if (request.readyState === 4) {
236
+ var locationHeader = request.getResponseHeader("Location");
237
+ var redirectedUrl = null;
238
+ if (locationHeader) {
239
+ var redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.origin + locationHeader : locationHeader;
240
+ }
241
+ next.call(nextContext, !xhr.ok(request) && request, request.response || request.responseText, redirectedUrl);
242
+ }
243
+ });
244
+ request.send();
245
+ return request;
246
+ },
247
+ loadDocument: function(url, next, nextContext) {
248
+ this.load(url, next, nextContext).responseType = "document";
249
+ }
250
+ };
251
+ scope.xhr = xhr;
252
+ });
253
+
254
+ HTMLImports.addModule(function(scope) {
255
+ var xhr = scope.xhr;
256
+ var flags = scope.flags;
257
+ var Loader = function(onLoad, onComplete) {
258
+ this.cache = {};
259
+ this.onload = onLoad;
260
+ this.oncomplete = onComplete;
261
+ this.inflight = 0;
262
+ this.pending = {};
263
+ };
264
+ Loader.prototype = {
265
+ addNodes: function(nodes) {
266
+ this.inflight += nodes.length;
267
+ for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) {
268
+ this.require(n);
269
+ }
270
+ this.checkDone();
271
+ },
272
+ addNode: function(node) {
273
+ this.inflight++;
274
+ this.require(node);
275
+ this.checkDone();
276
+ },
277
+ require: function(elt) {
278
+ var url = elt.src || elt.href;
279
+ elt.__nodeUrl = url;
280
+ if (!this.dedupe(url, elt)) {
281
+ this.fetch(url, elt);
282
+ }
283
+ },
284
+ dedupe: function(url, elt) {
285
+ if (this.pending[url]) {
286
+ this.pending[url].push(elt);
287
+ return true;
288
+ }
289
+ var resource;
290
+ if (this.cache[url]) {
291
+ this.onload(url, elt, this.cache[url]);
292
+ this.tail();
293
+ return true;
294
+ }
295
+ this.pending[url] = [ elt ];
296
+ return false;
297
+ },
298
+ fetch: function(url, elt) {
299
+ flags.load && console.log("fetch", url, elt);
300
+ if (!url) {
301
+ setTimeout(function() {
302
+ this.receive(url, elt, {
303
+ error: "href must be specified"
304
+ }, null);
305
+ }.bind(this), 0);
306
+ } else if (url.match(/^data:/)) {
307
+ var pieces = url.split(",");
308
+ var header = pieces[0];
309
+ var body = pieces[1];
310
+ if (header.indexOf(";base64") > -1) {
311
+ body = atob(body);
312
+ } else {
313
+ body = decodeURIComponent(body);
314
+ }
315
+ setTimeout(function() {
316
+ this.receive(url, elt, null, body);
317
+ }.bind(this), 0);
318
+ } else {
319
+ var receiveXhr = function(err, resource, redirectedUrl) {
320
+ this.receive(url, elt, err, resource, redirectedUrl);
321
+ }.bind(this);
322
+ xhr.load(url, receiveXhr);
323
+ }
324
+ },
325
+ receive: function(url, elt, err, resource, redirectedUrl) {
326
+ this.cache[url] = resource;
327
+ var $p = this.pending[url];
328
+ for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) {
329
+ this.onload(url, p, resource, err, redirectedUrl);
330
+ this.tail();
331
+ }
332
+ this.pending[url] = null;
333
+ },
334
+ tail: function() {
335
+ --this.inflight;
336
+ this.checkDone();
337
+ },
338
+ checkDone: function() {
339
+ if (!this.inflight) {
340
+ this.oncomplete();
341
+ }
342
+ }
343
+ };
344
+ scope.Loader = Loader;
345
+ });
346
+
347
+ HTMLImports.addModule(function(scope) {
348
+ var Observer = function(addCallback) {
349
+ this.addCallback = addCallback;
350
+ this.mo = new MutationObserver(this.handler.bind(this));
351
+ };
352
+ Observer.prototype = {
353
+ handler: function(mutations) {
354
+ for (var i = 0, l = mutations.length, m; i < l && (m = mutations[i]); i++) {
355
+ if (m.type === "childList" && m.addedNodes.length) {
356
+ this.addedNodes(m.addedNodes);
357
+ }
358
+ }
359
+ },
360
+ addedNodes: function(nodes) {
361
+ if (this.addCallback) {
362
+ this.addCallback(nodes);
363
+ }
364
+ for (var i = 0, l = nodes.length, n, loading; i < l && (n = nodes[i]); i++) {
365
+ if (n.children && n.children.length) {
366
+ this.addedNodes(n.children);
367
+ }
368
+ }
369
+ },
370
+ observe: function(root) {
371
+ this.mo.observe(root, {
372
+ childList: true,
373
+ subtree: true
374
+ });
375
+ }
376
+ };
377
+ scope.Observer = Observer;
378
+ });
379
+
380
+ HTMLImports.addModule(function(scope) {
381
+ var path = scope.path;
382
+ var rootDocument = scope.rootDocument;
383
+ var flags = scope.flags;
384
+ var isIE = scope.isIE;
385
+ var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;
386
+ var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]";
387
+ var importParser = {
388
+ documentSelectors: IMPORT_SELECTOR,
389
+ importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]", "style", "script:not([type])", 'script[type="text/javascript"]' ].join(","),
390
+ map: {
391
+ link: "parseLink",
392
+ script: "parseScript",
393
+ style: "parseStyle"
394
+ },
395
+ dynamicElements: [],
396
+ parseNext: function() {
397
+ var next = this.nextToParse();
398
+ if (next) {
399
+ this.parse(next);
400
+ }
401
+ },
402
+ parse: function(elt) {
403
+ if (this.isParsed(elt)) {
404
+ flags.parse && console.log("[%s] is already parsed", elt.localName);
405
+ return;
406
+ }
407
+ var fn = this[this.map[elt.localName]];
408
+ if (fn) {
409
+ this.markParsing(elt);
410
+ fn.call(this, elt);
411
+ }
412
+ },
413
+ parseDynamic: function(elt, quiet) {
414
+ this.dynamicElements.push(elt);
415
+ if (!quiet) {
416
+ this.parseNext();
417
+ }
418
+ },
419
+ markParsing: function(elt) {
420
+ flags.parse && console.log("parsing", elt);
421
+ this.parsingElement = elt;
422
+ },
423
+ markParsingComplete: function(elt) {
424
+ elt.__importParsed = true;
425
+ this.markDynamicParsingComplete(elt);
426
+ if (elt.__importElement) {
427
+ elt.__importElement.__importParsed = true;
428
+ this.markDynamicParsingComplete(elt.__importElement);
429
+ }
430
+ this.parsingElement = null;
431
+ flags.parse && console.log("completed", elt);
432
+ },
433
+ markDynamicParsingComplete: function(elt) {
434
+ var i = this.dynamicElements.indexOf(elt);
435
+ if (i >= 0) {
436
+ this.dynamicElements.splice(i, 1);
437
+ }
438
+ },
439
+ parseImport: function(elt) {
440
+ if (HTMLImports.__importsParsingHook) {
441
+ HTMLImports.__importsParsingHook(elt);
442
+ }
443
+ if (elt.import) {
444
+ elt.import.__importParsed = true;
445
+ }
446
+ this.markParsingComplete(elt);
447
+ if (elt.__resource && !elt.__error) {
448
+ elt.dispatchEvent(new CustomEvent("load", {
449
+ bubbles: false
450
+ }));
451
+ } else {
452
+ elt.dispatchEvent(new CustomEvent("error", {
453
+ bubbles: false
454
+ }));
455
+ }
456
+ if (elt.__pending) {
457
+ var fn;
458
+ while (elt.__pending.length) {
459
+ fn = elt.__pending.shift();
460
+ if (fn) {
461
+ fn({
462
+ target: elt
463
+ });
464
+ }
465
+ }
466
+ }
467
+ this.parseNext();
468
+ },
469
+ parseLink: function(linkElt) {
470
+ if (nodeIsImport(linkElt)) {
471
+ this.parseImport(linkElt);
472
+ } else {
473
+ linkElt.href = linkElt.href;
474
+ this.parseGeneric(linkElt);
475
+ }
476
+ },
477
+ parseStyle: function(elt) {
478
+ var src = elt;
479
+ elt = cloneStyle(elt);
480
+ elt.__importElement = src;
481
+ this.parseGeneric(elt);
482
+ },
483
+ parseGeneric: function(elt) {
484
+ this.trackElement(elt);
485
+ this.addElementToDocument(elt);
486
+ },
487
+ rootImportForElement: function(elt) {
488
+ var n = elt;
489
+ while (n.ownerDocument.__importLink) {
490
+ n = n.ownerDocument.__importLink;
491
+ }
492
+ return n;
493
+ },
494
+ addElementToDocument: function(elt) {
495
+ var port = this.rootImportForElement(elt.__importElement || elt);
496
+ port.parentNode.insertBefore(elt, port);
497
+ },
498
+ trackElement: function(elt, callback) {
499
+ var self = this;
500
+ var done = function(e) {
501
+ if (callback) {
502
+ callback(e);
503
+ }
504
+ self.markParsingComplete(elt);
505
+ self.parseNext();
506
+ };
507
+ elt.addEventListener("load", done);
508
+ elt.addEventListener("error", done);
509
+ if (isIE && elt.localName === "style") {
510
+ var fakeLoad = false;
511
+ if (elt.textContent.indexOf("@import") == -1) {
512
+ fakeLoad = true;
513
+ } else if (elt.sheet) {
514
+ fakeLoad = true;
515
+ var csr = elt.sheet.cssRules;
516
+ var len = csr ? csr.length : 0;
517
+ for (var i = 0, r; i < len && (r = csr[i]); i++) {
518
+ if (r.type === CSSRule.IMPORT_RULE) {
519
+ fakeLoad = fakeLoad && Boolean(r.styleSheet);
520
+ }
521
+ }
522
+ }
523
+ if (fakeLoad) {
524
+ elt.dispatchEvent(new CustomEvent("load", {
525
+ bubbles: false
526
+ }));
527
+ }
528
+ }
529
+ },
530
+ parseScript: function(scriptElt) {
531
+ var script = document.createElement("script");
532
+ script.__importElement = scriptElt;
533
+ script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptElt);
534
+ scope.currentScript = scriptElt;
535
+ this.trackElement(script, function(e) {
536
+ script.parentNode.removeChild(script);
537
+ scope.currentScript = null;
538
+ });
539
+ this.addElementToDocument(script);
540
+ },
541
+ nextToParse: function() {
542
+ this._mayParse = [];
543
+ return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || this.nextToParseDynamic());
544
+ },
545
+ nextToParseInDoc: function(doc, link) {
546
+ if (doc && this._mayParse.indexOf(doc) < 0) {
547
+ this._mayParse.push(doc);
548
+ var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc));
549
+ for (var i = 0, l = nodes.length, p = 0, n; i < l && (n = nodes[i]); i++) {
550
+ if (!this.isParsed(n)) {
551
+ if (this.hasResource(n)) {
552
+ return nodeIsImport(n) ? this.nextToParseInDoc(n.import, n) : n;
553
+ } else {
554
+ return;
555
+ }
556
+ }
557
+ }
558
+ }
559
+ return link;
560
+ },
561
+ nextToParseDynamic: function() {
562
+ return this.dynamicElements[0];
563
+ },
564
+ parseSelectorsForNode: function(node) {
565
+ var doc = node.ownerDocument || node;
566
+ return doc === rootDocument ? this.documentSelectors : this.importsSelectors;
567
+ },
568
+ isParsed: function(node) {
569
+ return node.__importParsed;
570
+ },
571
+ needsDynamicParsing: function(elt) {
572
+ return this.dynamicElements.indexOf(elt) >= 0;
573
+ },
574
+ hasResource: function(node) {
575
+ if (nodeIsImport(node) && node.import === undefined) {
576
+ return false;
577
+ }
578
+ return true;
579
+ }
580
+ };
581
+ function nodeIsImport(elt) {
582
+ return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE;
583
+ }
584
+ function generateScriptDataUrl(script) {
585
+ var scriptContent = generateScriptContent(script);
586
+ return "data:text/javascript;charset=utf-8," + encodeURIComponent(scriptContent);
587
+ }
588
+ function generateScriptContent(script) {
589
+ return script.textContent + generateSourceMapHint(script);
590
+ }
591
+ function generateSourceMapHint(script) {
592
+ var owner = script.ownerDocument;
593
+ owner.__importedScripts = owner.__importedScripts || 0;
594
+ var moniker = script.ownerDocument.baseURI;
595
+ var num = owner.__importedScripts ? "-" + owner.__importedScripts : "";
596
+ owner.__importedScripts++;
597
+ return "\n//# sourceURL=" + moniker + num + ".js\n";
598
+ }
599
+ function cloneStyle(style) {
600
+ var clone = style.ownerDocument.createElement("style");
601
+ clone.textContent = style.textContent;
602
+ path.resolveUrlsInStyle(clone);
603
+ return clone;
604
+ }
605
+ scope.parser = importParser;
606
+ scope.IMPORT_SELECTOR = IMPORT_SELECTOR;
607
+ });
608
+
609
+ HTMLImports.addModule(function(scope) {
610
+ var flags = scope.flags;
611
+ var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;
612
+ var IMPORT_SELECTOR = scope.IMPORT_SELECTOR;
613
+ var rootDocument = scope.rootDocument;
614
+ var Loader = scope.Loader;
615
+ var Observer = scope.Observer;
616
+ var parser = scope.parser;
617
+ var importer = {
618
+ documents: {},
619
+ documentPreloadSelectors: IMPORT_SELECTOR,
620
+ importsPreloadSelectors: [ IMPORT_SELECTOR ].join(","),
621
+ loadNode: function(node) {
622
+ importLoader.addNode(node);
623
+ },
624
+ loadSubtree: function(parent) {
625
+ var nodes = this.marshalNodes(parent);
626
+ importLoader.addNodes(nodes);
627
+ },
628
+ marshalNodes: function(parent) {
629
+ return parent.querySelectorAll(this.loadSelectorsForNode(parent));
630
+ },
631
+ loadSelectorsForNode: function(node) {
632
+ var doc = node.ownerDocument || node;
633
+ return doc === rootDocument ? this.documentPreloadSelectors : this.importsPreloadSelectors;
634
+ },
635
+ loaded: function(url, elt, resource, err, redirectedUrl) {
636
+ flags.load && console.log("loaded", url, elt);
637
+ elt.__resource = resource;
638
+ elt.__error = err;
639
+ if (isImportLink(elt)) {
640
+ var doc = this.documents[url];
641
+ if (doc === undefined) {
642
+ doc = err ? null : makeDocument(resource, redirectedUrl || url);
643
+ if (doc) {
644
+ doc.__importLink = elt;
645
+ this.bootDocument(doc);
646
+ }
647
+ this.documents[url] = doc;
648
+ }
649
+ elt.import = doc;
650
+ }
651
+ parser.parseNext();
652
+ },
653
+ bootDocument: function(doc) {
654
+ this.loadSubtree(doc);
655
+ this.observer.observe(doc);
656
+ parser.parseNext();
657
+ },
658
+ loadedAll: function() {
659
+ parser.parseNext();
660
+ }
661
+ };
662
+ var importLoader = new Loader(importer.loaded.bind(importer), importer.loadedAll.bind(importer));
663
+ importer.observer = new Observer();
664
+ function isImportLink(elt) {
665
+ return isLinkRel(elt, IMPORT_LINK_TYPE);
666
+ }
667
+ function isLinkRel(elt, rel) {
668
+ return elt.localName === "link" && elt.getAttribute("rel") === rel;
669
+ }
670
+ function hasBaseURIAccessor(doc) {
671
+ return !!Object.getOwnPropertyDescriptor(doc, "baseURI");
672
+ }
673
+ function makeDocument(resource, url) {
674
+ var doc = document.implementation.createHTMLDocument(IMPORT_LINK_TYPE);
675
+ doc._URL = url;
676
+ var base = doc.createElement("base");
677
+ base.setAttribute("href", url);
678
+ if (!doc.baseURI && !hasBaseURIAccessor(doc)) {
679
+ Object.defineProperty(doc, "baseURI", {
680
+ value: url
681
+ });
682
+ }
683
+ var meta = doc.createElement("meta");
684
+ meta.setAttribute("charset", "utf-8");
685
+ doc.head.appendChild(meta);
686
+ doc.head.appendChild(base);
687
+ doc.body.innerHTML = resource;
688
+ if (window.HTMLTemplateElement && HTMLTemplateElement.bootstrap) {
689
+ HTMLTemplateElement.bootstrap(doc);
690
+ }
691
+ return doc;
692
+ }
693
+ if (!document.baseURI) {
694
+ var baseURIDescriptor = {
695
+ get: function() {
696
+ var base = document.querySelector("base");
697
+ return base ? base.href : window.location.href;
698
+ },
699
+ configurable: true
700
+ };
701
+ Object.defineProperty(document, "baseURI", baseURIDescriptor);
702
+ Object.defineProperty(rootDocument, "baseURI", baseURIDescriptor);
703
+ }
704
+ scope.importer = importer;
705
+ scope.importLoader = importLoader;
706
+ });
707
+
708
+ HTMLImports.addModule(function(scope) {
709
+ var parser = scope.parser;
710
+ var importer = scope.importer;
711
+ var dynamic = {
712
+ added: function(nodes) {
713
+ var owner, parsed, loading;
714
+ for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) {
715
+ if (!owner) {
716
+ owner = n.ownerDocument;
717
+ parsed = parser.isParsed(owner);
718
+ }
719
+ loading = this.shouldLoadNode(n);
720
+ if (loading) {
721
+ importer.loadNode(n);
722
+ }
723
+ if (this.shouldParseNode(n) && parsed) {
724
+ parser.parseDynamic(n, loading);
725
+ }
726
+ }
727
+ },
728
+ shouldLoadNode: function(node) {
729
+ return node.nodeType === 1 && matches.call(node, importer.loadSelectorsForNode(node));
730
+ },
731
+ shouldParseNode: function(node) {
732
+ return node.nodeType === 1 && matches.call(node, parser.parseSelectorsForNode(node));
733
+ }
734
+ };
735
+ importer.observer.addCallback = dynamic.added.bind(dynamic);
736
+ var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSelector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.mozMatchesSelector || HTMLElement.prototype.msMatchesSelector;
737
+ });
738
+
739
+ (function(scope) {
740
+ var initializeModules = scope.initializeModules;
741
+ var isIE = scope.isIE;
742
+ if (scope.useNative) {
743
+ return;
744
+ }
745
+ if (isIE && typeof window.CustomEvent !== "function") {
746
+ window.CustomEvent = function(inType, params) {
747
+ params = params || {};
748
+ var e = document.createEvent("CustomEvent");
749
+ e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);
750
+ return e;
751
+ };
752
+ window.CustomEvent.prototype = window.Event.prototype;
753
+ }
754
+ initializeModules();
755
+ var rootDocument = scope.rootDocument;
756
+ function bootstrap() {
757
+ HTMLImports.importer.bootDocument(rootDocument);
758
+ }
759
+ if (document.readyState === "complete" || document.readyState === "interactive" && !window.attachEvent) {
760
+ bootstrap();
761
+ } else {
762
+ document.addEventListener("DOMContentLoaded", bootstrap);
763
+ }
764
+ })(HTMLImports);