mirror of
https://github.com/jlengrand/webcomponentsjs.git
synced 2026-03-10 08:51:22 +00:00
Also fire WebComponentsReady on document and have it bubble for backwards compatibility Fixes #753 Fixes #756
57 lines
1.8 KiB
JavaScript
57 lines
1.8 KiB
JavaScript
/**
|
|
* @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() {
|
|
|
|
'use strict';
|
|
|
|
var customElements = window['customElements'];
|
|
var HTMLImports = window['HTMLImports'];
|
|
|
|
if (customElements && customElements['polyfillWrapFlushCallback']) {
|
|
// Here we ensure that the public `HTMLImports.whenReady`
|
|
// always comes *after* custom elements have upgraded.
|
|
var flushCallback;
|
|
var runAndClearCallback = function runAndClearCallback() {
|
|
if (flushCallback) {
|
|
var cb = flushCallback;
|
|
flushCallback = null;
|
|
cb();
|
|
return true;
|
|
}
|
|
}
|
|
var origWhenReady = HTMLImports['whenReady'];
|
|
customElements['polyfillWrapFlushCallback'](function(cb) {
|
|
flushCallback = cb;
|
|
origWhenReady(runAndClearCallback);
|
|
});
|
|
|
|
HTMLImports['whenReady'] = function(cb) {
|
|
origWhenReady(function() {
|
|
// custom element code may add dynamic imports
|
|
// to match processing of native custom elements before
|
|
// domContentLoaded, we wait for these imports to resolve first.
|
|
if (runAndClearCallback()) {
|
|
HTMLImports['whenReady'](cb);
|
|
} else {
|
|
cb();
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
HTMLImports['whenReady'](function() {
|
|
requestAnimationFrame(function() {
|
|
document.dispatchEvent(new CustomEvent('WebComponentsReady', {bubbles: true}));
|
|
});
|
|
});
|
|
|
|
})(); |