This repository has been archived by the owner on Oct 26, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 94
/
custom-elements.js
53 lines (43 loc) · 1.97 KB
/
custom-elements.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
/**
* @license
* Copyright (c) 2016 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
*/
import CustomElementInternals from './CustomElementInternals.js';
import CustomElementRegistry from './CustomElementRegistry.js';
import PatchHTMLElement from './Patch/HTMLElement.js';
import PatchDocument from './Patch/Document.js';
import PatchDocumentFragment from './Patch/DocumentFragment.js';
import PatchNode from './Patch/Node.js';
import PatchElement from './Patch/Element.js';
const priorCustomElements = window['customElements'];
if (!priorCustomElements ||
priorCustomElements['forcePolyfill'] ||
(typeof priorCustomElements['define'] != 'function') ||
(typeof priorCustomElements['get'] != 'function')) {
const noDocumentConstructionObserver = priorCustomElements && priorCustomElements['noDocumentConstructionObserver'];
const shadyDomFastWalk = priorCustomElements && priorCustomElements['shadyDomFastWalk'];
/** @type {!CustomElementInternals} */
const internals = new CustomElementInternals({
noDocumentConstructionObserver,
shadyDomFastWalk
});
PatchHTMLElement(internals);
PatchDocument(internals);
PatchDocumentFragment(internals);
PatchNode(internals);
PatchElement(internals);
// The main document is always associated with the registry.
document.__CE_hasRegistry = true;
/** @type {!CustomElementRegistry} */
const customElements = new CustomElementRegistry(internals);
Object.defineProperty(window, 'customElements', {
configurable: true,
enumerable: true,
value: customElements,
});
}