tao_on_rails 0.6.5 → 0.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,856 +1,54 @@
1
- 'use strict';
2
-
3
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
4
-
5
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
6
-
7
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8
-
9
- /**
10
- * @license
11
- * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
12
- * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
13
- * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
14
- * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
15
- * Code distributed by Google as part of the polymer project is also
16
- * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
17
- */
18
-
19
- /**
20
- * 2.3
21
- * http://w3c.github.io/webcomponents/spec/custom/#dfn-element-definition
22
- * @typedef {{
23
- * name: string,
24
- * localName: string,
25
- * constructor: function(new:HTMLElement),
26
- * connectedCallback: (Function|undefined),
27
- * disconnectedCallback: (Function|undefined),
28
- * attributeChangedCallback: (Function|undefined),
29
- * observedAttributes: Array<string>,
30
- * }}
31
- */
32
- var CustomElementDefinition = void 0;
33
-
34
- /**
35
- * @typedef {{
36
- * resolve: !function(undefined),
37
- * promise: !Promise<undefined>,
38
- * }}
39
- */
40
- var Deferred = void 0;
41
-
42
- (function () {
43
- 'use strict';
44
-
45
- /**
46
- * Gets 'customElement' from window so that it could be modified after
47
- * the polyfill loads.
48
- * @function
49
- * @return {CustomElementRegistry}
50
- */
51
-
52
- var _customElements = function _customElements() {
53
- return window['customElements'];
54
- };
55
-
56
- var _observerProp = '__$CE_observer';
57
- var _attachedProp = '__$CE_attached';
58
- var _upgradedProp = '__$CE_upgraded';
59
-
60
- if (_customElements()) {
61
- _customElements().flush = function () {};
62
- if (!_customElements().forcePolyfill) {
63
- return;
64
- }
65
- }
66
-
67
- // name validation
68
- // https://html.spec.whatwg.org/multipage/scripting.html#valid-custom-element-name
69
-
70
- /**
71
- * @const
72
- * @type {Array<string>}
73
- */
74
- var reservedTagList = ['annotation-xml', 'color-profile', 'font-face', 'font-face-src', 'font-face-uri', 'font-face-format', 'font-face-name', 'missing-glyph'];
75
-
76
- /**
77
- * @param {!string} name
78
- * @return {!Error|undefined}
79
- */
80
- function checkValidCustomElementName(name) {
81
- if (!(/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(name) && reservedTagList.indexOf(name) === -1)) {
82
- return new Error('The element name \'' + name + '\' is not valid.');
83
- }
84
- }
85
-
86
- /**
87
- * @param {!Node} root
88
- * @return {TreeWalker}
89
- */
90
- function createTreeWalker(root) {
91
- // IE 11 requires the third and fourth arguments be present. If the third
92
- // arg is null, it applies the default behaviour. However IE also requires
93
- // the fourth argument be present even though the other browsers ignore it.
94
- return document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, null, false);
95
- }
96
-
97
- /**
98
- * @param {!Node} node
99
- * @return {boolean}
100
- */
101
- function isElement(node) {
102
- return node.nodeType === Node.ELEMENT_NODE;
103
- }
104
-
105
- /**
106
- * @param {!Element} element
107
- * @return {boolean}
108
- */
109
- function isHtmlImport(element) {
110
- return element.tagName === 'LINK' && element.rel && element.rel.toLowerCase().split(' ').indexOf('import') !== -1;
111
- }
112
-
113
- /**
114
- * @param {!Element} element
115
- * @return {boolean}
116
- */
117
- function isConnected(element) {
118
- var n = element;
119
- do {
120
- if (n[_attachedProp] || n.nodeType === Node.DOCUMENT_NODE) return true;
121
- n = n.parentNode || n.nodeType === Node.DOCUMENT_FRAGMENT_NODE && n.host;
122
- } while (n);
123
- return false;
124
- }
125
-
126
- /**
127
- * A registry of custom element definitions.
128
- *
129
- * See https://html.spec.whatwg.org/multipage/scripting.html#customelementsregistry
130
- *
131
- * @property {boolean} enableFlush Set to true to enable the flush() method
132
- * to work. This should only be done for tests, as it causes a memory leak.
133
- */
134
-
135
- var CustomElementRegistry = function () {
136
- function CustomElementRegistry() {
137
- _classCallCheck(this, CustomElementRegistry);
138
-
139
- /** @private {!Map<string, !CustomElementDefinition>} **/
140
- this._definitions = new Map();
141
-
142
- /** @private {!Map<Function, string>} **/
143
- this._constructors = new Map();
144
-
145
- /** @private {!Map<string, !Deferred>} **/
146
- this._whenDefinedMap = new Map();
147
-
148
- /** @private {!Set<!MutationObserver>} **/
149
- this._observers = new Set();
150
-
151
- /** @private {!MutationObserver} **/
152
- this._attributeObserver = new MutationObserver(
153
- /** @type {function(Array<MutationRecord>, MutationObserver)} */
154
- this._handleAttributeChange.bind(this));
155
-
156
- /** @private {?HTMLElement} **/
157
- this._newInstance = null;
158
-
159
- /** @private {!Set<string>} **/
160
- this._pendingHtmlImportUrls = new Set();
161
-
162
- /** @type {boolean} **/
163
- this.enableFlush = true;
164
-
165
- /** @private {boolean} **/
166
- this._upgradeScheduled = false;
167
-
168
- /** @type {MutationObserver} **/
169
- this._mainDocumentObserver = null;
170
- }
171
-
172
- // HTML spec part 4.13.4
173
- // https://html.spec.whatwg.org/multipage/scripting.html#dom-customelementsregistry-define
174
- /**
175
- * @param {string} name
176
- * @param {function(new:HTMLElement)} constructor
177
- * @param {{extends: string}} options
178
- * @return {undefined}
179
- */
180
-
181
-
182
- _createClass(CustomElementRegistry, [{
183
- key: 'define',
184
- value: function define(name, constructor, options) {
185
- // 1:
186
- if (typeof constructor !== 'function') {
187
- throw new TypeError('constructor must be a Constructor');
188
- }
189
-
190
- // 2. If constructor is an interface object whose corresponding interface
191
- // either is HTMLElement or has HTMLElement in its set of inherited
192
- // interfaces, throw a TypeError and abort these steps.
193
- //
194
- // It doesn't appear possible to check this condition from script
195
-
196
- // 3:
197
- var nameError = checkValidCustomElementName(name);
198
- if (nameError) throw nameError;
199
-
200
- // 4, 5:
201
- // Note: we don't track being-defined names and constructors because
202
- // define() isn't normally reentrant. The only time user code can run
203
- // during define() is when getting callbacks off the prototype, which
204
- // would be highly-unusual. We can make define() reentrant-safe if needed.
205
- if (this._definitions.has(name)) {
206
- throw new Error('An element with name \'' + name + '\' is already defined');
207
- }
208
-
209
- // 6, 7:
210
- if (this._constructors.has(constructor)) {
211
- throw new Error('Definition failed for \'' + name + '\': ' + 'The constructor is already used.');
212
- }
213
-
214
- // 8:
215
- /** @type {string} */
216
- var localName = name;
217
-
218
- // 9, 10: We do not support extends currently.
219
-
220
- // 11, 12, 13: Our define() isn't rentrant-safe
221
-
222
- // 14.1:
223
- /** @type {Object} */
224
- var prototype = constructor.prototype;
225
-
226
- // 14.2:
227
- if ((typeof prototype === 'undefined' ? 'undefined' : _typeof(prototype)) !== 'object') {
228
- throw new TypeError('Definition failed for \'' + name + '\': ' + 'constructor.prototype must be an object');
229
- }
230
-
231
- /**
232
- * @param {string} callbackName
233
- * @return {Function|undefined}
234
- */
235
- function getCallback(callbackName) {
236
- var callback = prototype[callbackName];
237
- if (callback !== undefined && typeof callback !== 'function') {
238
- throw new Error(localName + ' \'' + callbackName + '\' is not a Function');
239
- }
240
- return callback;
241
- }
242
-
243
- // 3, 4:
244
- var connectedCallback = getCallback('connectedCallback');
245
-
246
- // 5, 6:
247
- var disconnectedCallback = getCallback('disconnectedCallback');
248
-
249
- // Divergence from spec: we always throw if attributeChangedCallback is
250
- // not a function.
251
-
252
- // 7, 9.1:
253
- var attributeChangedCallback = getCallback('attributeChangedCallback');
254
-
255
- // 8, 9.2, 9.3:
256
- var observedAttributes = attributeChangedCallback && constructor['observedAttributes'] || [];
257
-
258
- // 15:
259
- /** @type {CustomElementDefinition} */
260
- var definition = {
261
- name: name,
262
- localName: localName,
263
- constructor: constructor,
264
- connectedCallback: connectedCallback,
265
- disconnectedCallback: disconnectedCallback,
266
- attributeChangedCallback: attributeChangedCallback,
267
- observedAttributes: observedAttributes
268
- };
269
-
270
- // 16:
271
- this._definitions.set(localName, definition);
272
- this._constructors.set(constructor, localName);
273
-
274
- // 17, 18, 19:
275
- this._upgradeDoc();
276
-
277
- // 20:
278
- /** @type {Deferred} **/
279
- var deferred = this._whenDefinedMap.get(localName);
280
- if (deferred) {
281
- deferred.resolve(undefined);
282
- this._whenDefinedMap.delete(localName);
283
- }
284
- }
285
-
286
- /**
287
- * Returns the constructor defined for `name`, or `null`.
288
- *
289
- * @param {string} name
290
- * @return {Function|undefined}
291
- */
292
-
293
- }, {
294
- key: 'get',
295
- value: function get(name) {
296
- // https://html.spec.whatwg.org/multipage/scripting.html#custom-elements-api
297
- var def = this._definitions.get(name);
298
- return def ? def.constructor : undefined;
299
- }
300
-
301
- /**
302
- * Returns a `Promise` that resolves when a custom element for `name` has
303
- * been defined.
304
- *
305
- * @param {string} name
306
- * @return {!Promise}
307
- */
308
-
309
- }, {
310
- key: 'whenDefined',
311
- value: function whenDefined(name) {
312
- // https://html.spec.whatwg.org/multipage/scripting.html#dom-customelementsregistry-whendefined
313
- var nameError = checkValidCustomElementName(name);
314
- if (nameError) return Promise.reject(nameError);
315
- if (this._definitions.has(name)) return Promise.resolve();
316
-
317
- /** @type {Deferred} **/
318
- var deferred = this._whenDefinedMap.get(name);
319
- if (deferred) return deferred.promise;
320
-
321
- var resolve = void 0;
322
- var promise = new Promise(function (_resolve, _) {
323
- resolve = _resolve;
324
- });
325
- deferred = { promise: promise, resolve: resolve };
326
- this._whenDefinedMap.set(name, deferred);
327
- return promise;
328
- }
329
-
330
- /**
331
- * Causes all pending mutation records to be processed, and thus all
332
- * customization, upgrades and custom element reactions to be called.
333
- * `enableFlush` must be true for this to work. Only use during tests!
334
- */
335
-
336
- }, {
337
- key: 'flush',
338
- value: function flush() {
339
- if (this.enableFlush) {
340
- // console.warn("flush!!!");
341
- this._handleMutations(this._mainDocumentObserver.takeRecords());
342
- this._handleAttributeChange(this._attributeObserver.takeRecords());
343
- this._observers.forEach(
344
- /**
345
- * @param {!MutationObserver} observer
346
- * @this {CustomElementRegistry}
347
- */
348
- function (observer) {
349
- this._handleMutations(observer.takeRecords());
350
- }, this);
351
- }
352
- }
353
-
354
- /**
355
- * Upgrade all existing in document elements. This process is expensive so
356
- * is optionally batched based on the state of HTMLImports. (Note,
357
- * this batching might not be necessary if instead of walking the dom,
358
- * a map of upgrade candidates was maintained.)
359
- * @private
360
- */
361
-
362
- }, {
363
- key: '_upgradeDoc',
364
- value: function _upgradeDoc() {
365
- var _this2 = this;
366
-
367
- if (!this._upgradeScheduled) {
368
- this._upgradeScheduled = true;
369
- var onReady = function onReady() {
370
- _this2._upgradeScheduled = false;
371
- if (!_this2._mainDocumentObserver) {
372
- _this2._mainDocumentObserver = _this2._observeRoot(document);
373
- }
374
- _this2._addNodes(document.childNodes);
375
- };
376
- if (window['HTMLImports']) {
377
- window['HTMLImports']['whenReady'](onReady);
378
- } else {
379
- onReady();
380
- }
381
- }
382
- }
383
-
384
- /**
385
- * @param {?HTMLElement} instance
386
- * @private
387
- */
388
-
389
- }, {
390
- key: '_setNewInstance',
391
- value: function _setNewInstance(instance) {
392
- this._newInstance = instance;
393
- }
394
-
395
- /**
396
- * Observes a DOM root for mutations that trigger upgrades and reactions.
397
- * @param {Node} root
398
- * @private
399
- */
400
-
401
- }, {
402
- key: '_observeRoot',
403
- value: function _observeRoot(root) {
404
- //console.log('_observeRoot', root, root.baseURI);
405
- // console.assert(!root[_observerProp]);
406
- if (root[_observerProp] != null) {
407
- //console.warn(`Root ${root} is already observed`);
408
- return root[_observerProp];
409
- }
410
- root[_observerProp] = new MutationObserver(
411
- /** @type {function(Array<MutationRecord>, MutationObserver)} */
412
- this._handleMutations.bind(this));
413
- root[_observerProp].observe(root, { childList: true, subtree: true });
414
- if (this.enableFlush) {
415
- // this is memory leak, only use in tests
416
- this._observers.add(root[_observerProp]);
417
- }
418
- return root[_observerProp];
419
- }
420
-
421
- /**
422
- * @param {Node} root
423
- * @private
424
- */
425
-
426
- }, {
427
- key: '_unobserveRoot',
428
- value: function _unobserveRoot(root) {
429
- if (root[_observerProp] != null) {
430
- root[_observerProp].disconnect();
431
- if (this.enableFlush) {
432
- this._observers.delete(root[_observerProp]);
433
- }
434
- root[_observerProp] = null;
435
- }
436
- }
437
-
438
- /**
439
- * @param {!Array<!MutationRecord>} mutations
440
- * @private
441
- */
442
-
443
- }, {
444
- key: '_handleMutations',
445
- value: function _handleMutations(mutations) {
446
- for (var i = 0; i < mutations.length; i++) {
447
- /** @type {!MutationRecord} */
448
- var mutation = mutations[i];
449
- if (mutation.type === 'childList') {
450
- // Note: we can't get an ordering between additions and removals, and
451
- // so might diverge from spec reaction ordering
452
- var addedNodes = /** @type {!NodeList<!Node>} */mutation.addedNodes;
453
- var removedNodes = /** @type {!NodeList<!Node>} */mutation.removedNodes;
454
- this._removeNodes(removedNodes, mutation.target);
455
- this._addNodes(addedNodes);
456
- }
457
- }
458
- }
459
-
460
- /**
461
- * @param {!(NodeList<!Node>|Array<!Node>)} nodeList
462
- * @param {?Set<Node>=} visitedNodes
463
- * @private
464
- */
465
-
466
- }, {
467
- key: '_addNodes',
468
- value: function _addNodes(nodeList, visitedNodes) {
469
- visitedNodes = visitedNodes || new Set();
470
-
471
- for (var i = 0; i < nodeList.length; i++) {
472
- var root = nodeList[i];
473
-
474
- if (!isElement(root)) {
475
- continue;
476
- }
477
-
478
- // Since we're adding this node to an observed tree, we can unobserve
479
- this._unobserveRoot(root);
480
-
481
- var walker = createTreeWalker(root);
482
- do {
483
- var node = /** @type {!HTMLElement} */walker.currentNode;
484
- this._addElement(node, visitedNodes);
485
- } while (walker.nextNode());
486
- }
487
- }
488
-
489
- /**
490
- * @param {!HTMLElement} element
491
- * @param {!Set<Node>=} visitedNodes
492
- */
493
-
494
- }, {
495
- key: '_addElement',
496
- value: function _addElement(element, visitedNodes) {
497
- if (visitedNodes.has(element)) return;
498
- visitedNodes.add(element);
499
-
500
- /** @type {?CustomElementDefinition} */
501
- var definition = this._definitions.get(element.localName);
502
- if (definition) {
503
- if (!element[_upgradedProp]) {
504
- this._upgradeElement(element, definition, true);
505
- }
506
- if (element[_upgradedProp] && !element[_attachedProp] && isConnected(element)) {
507
- element[_attachedProp] = true;
508
- if (definition.connectedCallback) {
509
- definition.connectedCallback.call(element);
510
- }
511
- }
512
- }
513
- if (element.shadowRoot) {
514
- // TODO(justinfagnani): do we need to check that the shadowRoot
515
- // is observed?
516
- this._addNodes(element.shadowRoot.childNodes, visitedNodes);
517
- }
518
- if (isHtmlImport(element)) {
519
- this._addImport( /** @type {!HTMLLinkElement} */element, visitedNodes);
520
- }
521
- }
522
-
523
- /**
524
- * @param {!HTMLLinkElement} link
525
- * @param {!Set<Node>=} visitedNodes
526
- */
527
-
528
- }, {
529
- key: '_addImport',
530
- value: function _addImport(link, visitedNodes) {
531
- var _this3 = this;
532
-
533
- // During a tree walk to add or upgrade nodes, we may encounter multiple
534
- // HTML imports that reference the same document, and may encounter
535
- // imports in various states of loading.
536
-
537
- // First, we only want to process the first import for a document in a
538
- // walk, so we check visitedNodes for the document, not the link.
539
- //
540
- // Second, for documents that haven't loaded yet, we only want to add one
541
- // listener, regardless of the number of links or walks, so we track
542
- // pending loads in _pendingHtmlImportUrls.
543
-
544
- // Check to see if the import is loaded
545
- /** @type {?Document} */
546
- var _import = link.import;
547
- if (_import) {
548
- // The import is loaded, but only process the first link element
549
- if (visitedNodes.has(_import)) return;
550
- visitedNodes.add(_import);
551
-
552
- // The import is loaded observe it
553
- if (!_import[_observerProp]) this._observeRoot(_import);
554
-
555
- // walk the document
556
- this._addNodes(_import.childNodes, visitedNodes);
557
- } else {
558
- var _ret = function () {
559
- // The import is not loaded, so wait for it
560
- /** @type {string} */
561
- var importUrl = link.href;
562
- if (_this3._pendingHtmlImportUrls.has(importUrl)) return {
563
- v: void 0
564
- };
565
- _this3._pendingHtmlImportUrls.add(importUrl);
566
-
567
- /**
568
- * @const
569
- * @type {CustomElementRegistry}
570
- */
571
- var _this = _this3;
572
- var onLoad = function onLoad() {
573
- link.removeEventListener('load', /** @type {function(Event)} */onLoad);
574
- if (!link.import[_observerProp]) _this._observeRoot(link.import);
575
- // We don't pass visitedNodes because this is async and not part of
576
- // the current tree walk.
577
- _this._addNodes(link.import.childNodes);
578
- };
579
- link.addEventListener('load', onLoad);
580
- }();
581
-
582
- if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
583
- }
584
- }
585
-
586
- /**
587
- * @param {NodeList} nodeList
588
- * @private
589
- */
590
-
591
- }, {
592
- key: '_removeNodes',
593
- value: function _removeNodes(nodeList, parentNode) {
594
- for (var i = 0; i < nodeList.length; i++) {
595
- var root = nodeList[i];
596
-
597
- if (!isElement(root)) {
598
- continue;
599
- }
600
-
601
- // Since we're detatching this element from an observed root, we need to
602
- // reobserve it.
603
- // TODO(justinfagnani): can we do this in a microtask so we don't thrash
604
- // on creating and destroying MutationObservers on batch DOM mutations?
605
- this._observeRoot(root);
606
-
607
- var walker = createTreeWalker(root);
608
- do {
609
- var node = walker.currentNode;
610
- if (node[_upgradedProp] && node[_attachedProp] && isConnected(parentNode)) {
611
- node[_attachedProp] = false;
612
- var definition = this._definitions.get(node.localName);
613
- if (definition && definition.disconnectedCallback) {
614
- definition.disconnectedCallback.call(node);
615
- }
616
- }
617
- } while (walker.nextNode());
618
- }
619
- }
620
-
621
- /**
622
- * Upgrades or customizes a custom element.
623
- *
624
- * @param {HTMLElement} element
625
- * @param {CustomElementDefinition} definition
626
- * @param {boolean} callConstructor
627
- * @private
628
- */
629
-
630
- }, {
631
- key: '_upgradeElement',
632
- value: function _upgradeElement(element, definition, callConstructor) {
633
- var prototype = definition.constructor.prototype;
634
- element.__proto__ = prototype;
635
- if (callConstructor) {
636
- this._setNewInstance(element);
637
- new definition.constructor();
638
- element[_upgradedProp] = true;
639
- console.assert(this._newInstance == null);
640
- }
641
-
642
- var observedAttributes = definition.observedAttributes;
643
- var attributeChangedCallback = definition.attributeChangedCallback;
644
- if (attributeChangedCallback && observedAttributes.length > 0) {
645
- this._attributeObserver.observe(element, {
646
- attributes: true,
647
- attributeOldValue: true,
648
- attributeFilter: observedAttributes
649
- });
650
-
651
- // Trigger attributeChangedCallback for existing attributes.
652
- // https://html.spec.whatwg.org/multipage/scripting.html#upgrades
653
- for (var i = 0; i < observedAttributes.length; i++) {
654
- var name = observedAttributes[i];
655
- if (element.hasAttribute(name)) {
656
- var value = element.getAttribute(name);
657
- attributeChangedCallback.call(element, name, null, value, null);
658
- }
659
- }
660
- }
661
- }
662
-
663
- /**
664
- * @param {!Array<!MutationRecord>} mutations
665
- * @private
666
- */
667
-
668
- }, {
669
- key: '_handleAttributeChange',
670
- value: function _handleAttributeChange(mutations) {
671
- for (var i = 0; i < mutations.length; i++) {
672
- var mutation = mutations[i];
673
- if (mutation.type === 'attributes') {
674
- var target = /** @type {HTMLElement} */mutation.target;
675
- // We should be gaurenteed to have a definition because this mutation
676
- // observer is only observing custom elements observedAttributes
677
- var definition = this._definitions.get(target.localName);
678
- var name = /** @type {!string} */mutation.attributeName;
679
- var oldValue = mutation.oldValue;
680
- var newValue = target.getAttribute(name);
681
- // Skip changes that were handled synchronously by setAttribute
682
- if (newValue !== oldValue) {
683
- var namespace = mutation.attributeNamespace;
684
- definition.attributeChangedCallback.call(target, name, oldValue, newValue, namespace);
685
- }
686
- }
687
- }
688
- }
689
- }]);
690
-
691
- return CustomElementRegistry;
692
- }();
693
-
694
- // Closure Compiler Exports
695
-
696
-
697
- window['CustomElementRegistry'] = CustomElementRegistry;
698
- CustomElementRegistry.prototype['define'] = CustomElementRegistry.prototype.define;
699
- CustomElementRegistry.prototype['get'] = CustomElementRegistry.prototype.get;
700
- CustomElementRegistry.prototype['whenDefined'] = CustomElementRegistry.prototype.whenDefined;
701
- CustomElementRegistry.prototype['flush'] = CustomElementRegistry.prototype.flush;
702
- CustomElementRegistry.prototype['polyfilled'] = true;
703
- // TODO(justinfagnani): remove these in production code
704
- CustomElementRegistry.prototype['_observeRoot'] = CustomElementRegistry.prototype._observeRoot;
705
- CustomElementRegistry.prototype['_addImport'] = CustomElementRegistry.prototype._addImport;
706
-
707
- // patch window.HTMLElement
708
-
709
- /** @const */
710
- var origHTMLElement = window.HTMLElement;
711
- CustomElementRegistry.prototype['nativeHTMLElement'] = origHTMLElement;
712
- /**
713
- * @type {function(new: HTMLElement)}
714
- */
715
- var newHTMLElement = function HTMLElement() {
716
- var customElements = _customElements();
717
-
718
- // If there's an being upgraded, return that
719
- if (customElements._newInstance) {
720
- var i = customElements._newInstance;
721
- customElements._newInstance = null;
722
- return i;
723
- }
724
- if (this.constructor) {
725
- // Find the tagname of the constructor and create a new element with it
726
- var tagName = customElements._constructors.get(this.constructor);
727
- return _createElement(document, tagName, undefined, false);
728
- }
729
- throw new Error('Unknown constructor. Did you call customElements.define()?');
730
- };
731
- window.HTMLElement = newHTMLElement;
732
- // By setting the patched HTMLElement's prototype property to the native
733
- // HTMLElement's prototype we make sure that:
734
- // document.createElement('a') instanceof HTMLElement
735
- // works because instanceof uses HTMLElement.prototype, which is on the
736
- // ptototype chain of built-in elements.
737
- window.HTMLElement.prototype = origHTMLElement.prototype;
738
-
739
- // patch doc.createElement
740
- // TODO(justinfagnani): why is the cast neccessary?
741
- // Can we fix the Closure DOM externs?
742
- var _nativeCreateElement =
743
- /** @type {function(this:Document, string, (Object|undefined)=): !HTMLElement}}*/
744
- document.createElement;
745
-
746
- /**
747
- * Creates a new element and upgrades it if it's a custom element.
748
- * @param {!Document} doc
749
- * @param {!string} tagName
750
- * @param {Object|undefined} options
751
- * @param {boolean} callConstructor whether or not to call the elements
752
- * constructor after upgrading. If an element is created by calling its
753
- * constructor, then `callConstructor` should be false to prevent double
754
- * initialization.
755
- */
756
- function _createElement(doc, tagName, options, callConstructor) {
757
- var customElements = _customElements();
758
- var element = options ? _nativeCreateElement.call(doc, tagName, options) : _nativeCreateElement.call(doc, tagName);
759
- var definition = customElements._definitions.get(tagName.toLowerCase());
760
- if (definition) {
761
- customElements._upgradeElement(element, definition, callConstructor);
762
- }
763
- customElements._observeRoot(element);
764
- return element;
765
- };
766
- document.createElement = function (tagName, options) {
767
- return _createElement(document, tagName, options, true);
768
- };
769
-
770
- // patch document.createElementNS
771
-
772
- var HTMLNS = 'http://www.w3.org/1999/xhtml';
773
-
774
- /** @type {function(this:Document,string,string):Element} */
775
- var _nativeCreateElementNS = document.createElementNS;
776
- document.createElementNS =
777
- /** @type {function(this:Document,(string|null),string):!Element} */
778
- function (namespaceURI, qualifiedName) {
779
- if (namespaceURI === HTMLNS) {
780
- return document.createElement(qualifiedName);
781
- } else {
782
- return _nativeCreateElementNS.call(document, namespaceURI, qualifiedName);
783
- }
784
- };
785
-
786
- // patch Element.attachShadow
787
-
788
- /** @type {function({closed: boolean})} */
789
- var _nativeAttachShadow = Element.prototype['attachShadow'];
790
- if (_nativeAttachShadow) {
791
- Object.defineProperty(Element.prototype, 'attachShadow', {
792
- value: function value(options) {
793
- /** @type {!Node} */
794
- var root = _nativeAttachShadow.call(this, options);
795
- /** @type {CustomElementRegistry} */
796
- var customElements = _customElements();
797
- customElements._observeRoot(root);
798
- return root;
799
- }
800
- });
801
- }
802
-
803
- // patch document.importNode
804
-
805
- var _nativeImportNode = document.importNode;
806
- document.importNode = function (node, deep) {
807
- var clone = /** @type{!Node} */_nativeImportNode.call(document, node, deep);
808
- var customElements = _customElements();
809
- var nodes = isElement(clone) ? [clone] : clone.childNodes;
810
- /** @type {CustomElementRegistry} */_customElements()._addNodes(nodes);
811
- return clone;
812
- };
813
-
814
- // patch Element.setAttribute & removeAttribute
815
-
816
- var _nativeSetAttribute = Element.prototype.setAttribute;
817
- Element.prototype['setAttribute'] = function (name, value) {
818
- changeAttribute(this, name, value, _nativeSetAttribute);
819
- };
820
- var _nativeRemoveAttribute = Element.prototype.removeAttribute;
821
- Element.prototype['removeAttribute'] = function (name) {
822
- changeAttribute(this, name, null, _nativeRemoveAttribute);
823
- };
824
-
825
- function changeAttribute(element, name, value, operation) {
826
- name = name.toLowerCase();
827
- var oldValue = element.getAttribute(name);
828
- operation.call(element, name, value);
829
-
830
- // Bail if this wasn't a fully upgraded custom element
831
- if (element[_upgradedProp] == true) {
832
- var definition = _customElements()._definitions.get(element.localName);
833
- var observedAttributes = definition.observedAttributes;
834
- var attributeChangedCallback = definition.attributeChangedCallback;
835
- if (attributeChangedCallback && observedAttributes.indexOf(name) >= 0) {
836
- var newValue = element.getAttribute(name);
837
- if (newValue !== oldValue) {
838
- attributeChangedCallback.call(element, name, oldValue, newValue, null);
839
- }
840
- }
841
- }
842
- }
843
-
844
- Object.defineProperty(window, 'customElements', {
845
- value: new CustomElementRegistry(),
846
- configurable: true,
847
- enumerable: true
848
- });
849
-
850
- // TODO(justinfagnani): Remove. Temporary for backward-compatibility
851
- window['CustomElements'] = {
852
- takeRecords: function takeRecords() {
853
- if (_customElements().flush) _customElements().flush();
854
- }
855
- };
856
- })();
1
+ (function(){
2
+ 'use strict';var h="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,e){if(e.get||e.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=e.value)},k="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this;function m(){m=function(){};k.Symbol||(k.Symbol=aa)}var ba=0;function aa(a){return"jscomp_symbol_"+(a||"")+ba++}
3
+ function n(){m();var a=k.Symbol.iterator;a||(a=k.Symbol.iterator=k.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&h(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return q(this)}});n=function(){}}function q(a){var b=0;return r(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function r(a){n();a={next:a};a[k.Symbol.iterator]=function(){return this};return a}function t(a){n();var b=a[Symbol.iterator];return b?b.call(a):q(a)}
4
+ function u(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function v(a,b){if(b){var e=k;a=a.split(".");for(var d=0;d<a.length-1;d++){var c=a[d];c in e||(e[c]={});e=e[c]}a=a[a.length-1];d=e[a];b=b(d);b!=d&&null!=b&&h(e,a,{configurable:!0,writable:!0,value:b})}}
5
+ v("WeakMap",function(a){function b(a){this.a=(f+=Math.random()+1).toString();if(a){m();n();a=t(a);for(var b;!(b=a.next()).done;)b=b.value,this.set(b[0],b[1])}}function e(a){u(a,c)||h(a,c,{value:{}})}function d(a){var b=Object[a];b&&(Object[a]=function(a){e(a);return b(a)})}if(function(){if(!a||!Object.seal)return!1;try{var b=Object.seal({}),c=Object.seal({}),f=new a([[b,2],[c,3]]);if(2!=f.get(b)||3!=f.get(c))return!1;f.delete(b);f.set(c,4);return!f.has(b)&&4==f.get(c)}catch(H){return!1}}())return a;
6
+ var c="$jscomp_hidden_"+Math.random().toString().substring(2);d("freeze");d("preventExtensions");d("seal");var f=0;b.prototype.set=function(a,b){e(a);if(!u(a,c))throw Error("WeakMap key fail: "+a);a[c][this.a]=b;return this};b.prototype.get=function(a){return u(a,c)?a[c][this.a]:void 0};b.prototype.has=function(a){return u(a,c)&&u(a[c],this.a)};b.prototype.delete=function(a){return u(a,c)&&u(a[c],this.a)?delete a[c][this.a]:!1};return b});
7
+ v("Map",function(a){function b(){var a={};return a.j=a.next=a.head=a}function e(a,b){var c=a.a;return r(function(){if(c){for(;c.head!=a.a;)c=c.j;for(;c.next!=c.head;)return c=c.next,{done:!1,value:b(c)};c=null}return{done:!0,value:void 0}})}function d(a,b){var c;c=b&&typeof b;"object"==c||"function"==c?f.has(b)?c=f.get(b):(c=""+ ++g,f.set(b,c)):c="p_"+b;var e=a.b[c];if(e&&u(a.b,c))for(a=0;a<e.length;a++){var d=e[a];if(b!==b&&d.key!==d.key||b===d.key)return{id:c,list:e,index:a,f:d}}return{id:c,list:e,
8
+ index:-1,f:void 0}}function c(a){this.b={};this.a=b();this.size=0;if(a){a=t(a);for(var c;!(c=a.next()).done;)c=c.value,this.set(c[0],c[1])}}if(function(){if(!a||!a.prototype.entries||"function"!=typeof Object.seal)return!1;try{var b=Object.seal({x:4}),c=new a(t([[b,"s"]]));if("s"!=c.get(b)||1!=c.size||c.get({x:4})||c.set({x:4},"t")!=c||2!=c.size)return!1;var f=c.entries(),e=f.next();if(e.done||e.value[0]!=b||"s"!=e.value[1])return!1;e=f.next();return e.done||4!=e.value[0].x||"t"!=e.value[1]||!f.next().done?
9
+ !1:!0}catch(Ha){return!1}}())return a;m();n();var f=new WeakMap;c.prototype.set=function(a,b){var c=d(this,a);c.list||(c.list=this.b[c.id]=[]);c.f?c.f.value=b:(c.f={next:this.a,j:this.a.j,head:this.a,key:a,value:b},c.list.push(c.f),this.a.j.next=c.f,this.a.j=c.f,this.size++);return this};c.prototype.delete=function(a){a=d(this,a);return a.f&&a.list?(a.list.splice(a.index,1),a.list.length||delete this.b[a.id],a.f.j.next=a.f.next,a.f.next.j=a.f.j,a.f.head=null,this.size--,!0):!1};c.prototype.clear=
10
+ function(){this.b={};this.a=this.a.j=b();this.size=0};c.prototype.has=function(a){return!!d(this,a).f};c.prototype.get=function(a){return(a=d(this,a).f)&&a.value};c.prototype.entries=function(){return e(this,function(a){return[a.key,a.value]})};c.prototype.keys=function(){return e(this,function(a){return a.key})};c.prototype.values=function(){return e(this,function(a){return a.value})};c.prototype.forEach=function(a,b){for(var c=this.entries(),e;!(e=c.next()).done;)e=e.value,a.call(b,e[1],e[0],this)};
11
+ c.prototype[Symbol.iterator]=c.prototype.entries;var g=0;return c});
12
+ v("Set",function(a){function b(a){this.a=new Map;if(a){a=t(a);for(var b;!(b=a.next()).done;)this.add(b.value)}this.size=this.a.size}if(function(){if(!a||!a.prototype.entries||"function"!=typeof Object.seal)return!1;try{var b=Object.seal({x:4}),d=new a(t([b]));if(!d.has(b)||1!=d.size||d.add(b)!=d||1!=d.size||d.add({x:4})!=d||2!=d.size)return!1;var c=d.entries(),f=c.next();if(f.done||f.value[0]!=b||f.value[1]!=b)return!1;f=c.next();return f.done||f.value[0]==b||4!=f.value[0].x||f.value[1]!=f.value[0]?
13
+ !1:c.next().done}catch(g){return!1}}())return a;m();n();b.prototype.add=function(a){this.a.set(a,a);this.size=this.a.size;return this};b.prototype.delete=function(a){a=this.a.delete(a);this.size=this.a.size;return a};b.prototype.clear=function(){this.a.clear();this.size=0};b.prototype.has=function(a){return this.a.has(a)};b.prototype.entries=function(){return this.a.entries()};b.prototype.values=function(){return this.a.values()};b.prototype.keys=b.prototype.values;b.prototype[Symbol.iterator]=b.prototype.values;
14
+ b.prototype.forEach=function(a,b){var c=this;this.a.forEach(function(f){return a.call(b,f,f,c)})};return b});
15
+ v("Promise",function(a){function b(a){this.b=0;this.i=void 0;this.a=[];var b=this.g();try{a(b.resolve,b.reject)}catch(l){b.reject(l)}}function e(){this.a=null}if(a)return a;e.prototype.b=function(a){this.a||(this.a=[],this.g());this.a.push(a)};e.prototype.g=function(){var a=this;this.c(function(){a.i()})};var d=k.setTimeout;e.prototype.c=function(a){d(a,0)};e.prototype.i=function(){for(;this.a&&this.a.length;){var a=this.a;this.a=[];for(var b=0;b<a.length;++b){var c=a[b];delete a[b];try{c()}catch(p){this.h(p)}}}this.a=
16
+ null};e.prototype.h=function(a){this.c(function(){throw a;})};b.prototype.g=function(){function a(a){return function(e){c||(c=!0,a.call(b,e))}}var b=this,c=!1;return{resolve:a(this.v),reject:a(this.h)}};b.prototype.v=function(a){if(a===this)this.h(new TypeError("A Promise cannot resolve to itself"));else if(a instanceof b)this.w(a);else{var c;a:switch(typeof a){case "object":c=null!=a;break a;case "function":c=!0;break a;default:c=!1}c?this.s(a):this.l(a)}};b.prototype.s=function(a){var b=void 0;
17
+ try{b=a.then}catch(l){this.h(l);return}"function"==typeof b?this.A(b,a):this.l(a)};b.prototype.h=function(a){this.m(2,a)};b.prototype.l=function(a){this.m(1,a)};b.prototype.m=function(a,b){if(0!=this.b)throw Error("Cannot settle("+a+", "+b|"): Promise already settled in state"+this.b);this.b=a;this.i=b;this.o()};b.prototype.o=function(){if(this.a){for(var a=this.a,b=0;b<a.length;++b)a[b].call(),a[b]=null;this.a=null}};var c=new e;b.prototype.w=function(a){var b=this.g();a.c(b.resolve,b.reject)};b.prototype.A=
18
+ function(a,b){var c=this.g();try{a.call(b,c.resolve,c.reject)}catch(p){c.reject(p)}};b.prototype.then=function(a,c){function e(a,b){return"function"==typeof a?function(b){try{d(a(b))}catch(ma){f(ma)}}:b}var d,f,g=new b(function(a,b){d=a;f=b});this.c(e(a,d),e(c,f));return g};b.prototype.catch=function(a){return this.then(void 0,a)};b.prototype.c=function(a,b){function e(){switch(d.b){case 1:a(d.i);break;case 2:b(d.i);break;default:throw Error("Unexpected state: "+d.b);}}var d=this;this.a?this.a.push(function(){c.b(e)}):
19
+ c.b(e)};b.resolve=function(a){return a instanceof b?a:new b(function(b){b(a)})};b.reject=function(a){return new b(function(b,c){c(a)})};b.b=function(a){return new b(function(c,e){for(var d=t(a),f=d.next();!f.done;f=d.next())b.resolve(f.value).c(c,e)})};b.a=function(a){var c=t(a),e=c.next();return e.done?b.resolve([]):new b(function(a,d){function f(b){return function(c){g[b]=c;l--;l||a(g)}}var g=[],l=0;do g.push(void 0),l++,b.resolve(e.value).c(f(g.length-1),d),e=c.next();while(!e.done)})};b.$jscomp$new$AsyncExecutor=
20
+ function(){return new e};return b});v("Object.setPrototypeOf",function(a){return a?a:"object"!=typeof"".__proto__?null:function(a,e){a.__proto__=e;if(a.__proto__!==e)throw new TypeError(a+" is not extensible");return a}});var w=new function(){};var ca=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function x(a){var b=ca.has(a);a=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(a);return!b&&a}function y(a){var b=a.isConnected;if(void 0!==b)return b;for(;a&&!(a.__CE_isImportDocument||a instanceof Document);)a=a.parentNode||(window.ShadowRoot&&a instanceof ShadowRoot?a.host:void 0);return!(!a||!(a.__CE_isImportDocument||a instanceof Document))}
21
+ function z(a,b){for(;b&&b!==a&&!b.nextSibling;)b=b.parentNode;return b&&b!==a?b.nextSibling:null}
22
+ function A(a,b,e){e=e?e:new Set;for(var d=a;d;){if(d.nodeType===Node.ELEMENT_NODE){var c=d;b(c);var f=c.localName;if("link"===f&&"import"===c.getAttribute("rel")){d=c.import;if(d instanceof Node&&!e.has(d))for(e.add(d),d=d.firstChild;d;d=d.nextSibling)A(d,b,e);d=z(a,c);continue}else if("template"===f){d=z(a,c);continue}if(c=c.__CE_shadowRoot)for(c=c.firstChild;c;c=c.nextSibling)A(c,b,e)}d=d.firstChild?d.firstChild:z(a,d)}}function B(a,b,e){a[b]=e};function C(){this.a=new Map;this.g=new Map;this.c=[];this.b=!1}function da(a,b,e){a.a.set(b,e);a.g.set(e.constructor,e)}function D(a,b){a.b=!0;a.c.push(b)}function E(a,b){a.b&&A(b,function(b){return F(a,b)})}function F(a,b){if(a.b&&!b.__CE_patched){b.__CE_patched=!0;for(var e=0;e<a.c.length;e++)a.c[e](b)}}function G(a,b){var e=[];A(b,function(a){return e.push(a)});for(b=0;b<e.length;b++){var d=e[b];1===d.__CE_state?a.connectedCallback(d):I(a,d)}}
23
+ function J(a,b){var e=[];A(b,function(a){return e.push(a)});for(b=0;b<e.length;b++){var d=e[b];1===d.__CE_state&&a.disconnectedCallback(d)}}
24
+ function K(a,b,e){e=e?e:new Set;var d=[];A(b,function(b){if("link"===b.localName&&"import"===b.getAttribute("rel")){var c=b.import;c instanceof Node&&"complete"===c.readyState?(c.__CE_isImportDocument=!0,c.__CE_hasRegistry=!0):b.addEventListener("load",function(){var c=b.import;c.__CE_documentLoadHandled||(c.__CE_documentLoadHandled=!0,c.__CE_isImportDocument=!0,c.__CE_hasRegistry=!0,new Set(e),e.delete(c),K(a,c,e))})}else d.push(b)},e);if(a.b)for(b=0;b<d.length;b++)F(a,d[b]);for(b=0;b<d.length;b++)I(a,
25
+ d[b])}
26
+ function I(a,b){if(void 0===b.__CE_state){var e=a.a.get(b.localName);if(e){e.constructionStack.push(b);var d=e.constructor;try{try{if(new d!==b)throw Error("The custom element constructor did not produce the element being upgraded.");}finally{e.constructionStack.pop()}}catch(g){throw b.__CE_state=2,g;}b.__CE_state=1;b.__CE_definition=e;if(e.attributeChangedCallback)for(e=e.observedAttributes,d=0;d<e.length;d++){var c=e[d],f=b.getAttribute(c);null!==f&&a.attributeChangedCallback(b,c,null,f,null)}y(b)&&a.connectedCallback(b)}}}
27
+ C.prototype.connectedCallback=function(a){var b=a.__CE_definition;b.connectedCallback&&b.connectedCallback.call(a)};C.prototype.disconnectedCallback=function(a){var b=a.__CE_definition;b.disconnectedCallback&&b.disconnectedCallback.call(a)};C.prototype.attributeChangedCallback=function(a,b,e,d,c){var f=a.__CE_definition;f.attributeChangedCallback&&-1<f.observedAttributes.indexOf(b)&&f.attributeChangedCallback.call(a,b,e,d,c)};function L(a,b){this.c=a;this.a=b;this.b=void 0;K(this.c,this.a);"loading"===this.a.readyState&&(this.b=new MutationObserver(this.g.bind(this)),this.b.observe(this.a,{childList:!0,subtree:!0}))}function M(a){a.b&&a.b.disconnect()}L.prototype.g=function(a){var b=this.a.readyState;"interactive"!==b&&"complete"!==b||M(this);for(b=0;b<a.length;b++)for(var e=a[b].addedNodes,d=0;d<e.length;d++)K(this.c,e[d])};function N(){var a=this;this.b=this.a=void 0;this.c=new Promise(function(b){a.b=b;a.a&&b(a.a)})}N.prototype.resolve=function(a){if(this.a)throw Error("Already resolved.");this.a=a;this.b&&this.b(a)};function O(a){this.g=!1;this.a=a;this.i=new Map;this.h=function(a){return a()};this.b=!1;this.c=[];this.l=new L(a,document)}
28
+ O.prototype.m=function(a,b){var e=this;if(!(b instanceof Function))throw new TypeError("Custom element constructors must be functions.");if(!x(a))throw new SyntaxError("The element name '"+a+"' is not valid.");if(this.a.a.get(a))throw Error("A custom element with name '"+a+"' has already been defined.");if(this.g)throw Error("A custom element is already being defined.");this.g=!0;var d,c,f,g,l;try{var p=function(a){var b=H[a];if(void 0!==b&&!(b instanceof Function))throw Error("The '"+a+"' callback must be a function.");
29
+ return b},H=b.prototype;if(!(H instanceof Object))throw new TypeError("The custom element constructor's prototype is not an object.");d=p("connectedCallback");c=p("disconnectedCallback");f=p("adoptedCallback");g=p("attributeChangedCallback");l=b.observedAttributes||[]}catch(Ga){return}finally{this.g=!1}da(this.a,a,{localName:a,constructor:b,connectedCallback:d,disconnectedCallback:c,adoptedCallback:f,attributeChangedCallback:g,observedAttributes:l,constructionStack:[]});this.c.push(a);this.b||(this.b=
30
+ !0,this.h(function(){if(!1!==e.b)for(e.b=!1,K(e.a,document);0<e.c.length;){var a=e.c.shift();(a=e.i.get(a))&&a.resolve(void 0)}}))};O.prototype.get=function(a){if(a=this.a.a.get(a))return a.constructor};O.prototype.s=function(a){if(!x(a))return Promise.reject(new SyntaxError("'"+a+"' is not a valid custom element name."));var b=this.i.get(a);if(b)return b.c;b=new N;this.i.set(a,b);this.a.a.get(a)&&-1===this.c.indexOf(a)&&b.resolve(void 0);return b.c};
31
+ O.prototype.o=function(a){M(this.l);var b=this.h;this.h=function(e){return a(function(){return b(e)})}};window.CustomElementRegistry=O;O.prototype.define=O.prototype.m;O.prototype.get=O.prototype.get;O.prototype.whenDefined=O.prototype.s;O.prototype.polyfillWrapFlushCallback=O.prototype.o;var P=window.Document.prototype.createElement,ea=window.Document.prototype.createElementNS,fa=window.Document.prototype.importNode,ga=window.Document.prototype.prepend,ha=window.Document.prototype.append,Q=window.Node.prototype.cloneNode,R=window.Node.prototype.appendChild,ia=window.Node.prototype.insertBefore,S=window.Node.prototype.removeChild,ja=window.Node.prototype.replaceChild,T=Object.getOwnPropertyDescriptor(window.Node.prototype,"textContent"),ka=window.Element.prototype.attachShadow,U=Object.getOwnPropertyDescriptor(window.Element.prototype,
32
+ "innerHTML"),V=window.Element.prototype.getAttribute,la=window.Element.prototype.setAttribute,na=window.Element.prototype.removeAttribute,W=window.Element.prototype.getAttributeNS,oa=window.Element.prototype.setAttributeNS,pa=window.Element.prototype.removeAttributeNS,qa=window.Element.prototype.insertAdjacentElement,ra=window.Element.prototype.prepend,sa=window.Element.prototype.append,ta=window.Element.prototype.before,ua=window.Element.prototype.after,va=window.Element.prototype.replaceWith,wa=
33
+ window.Element.prototype.remove,xa=window.HTMLElement,X=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,"innerHTML"),ya=window.HTMLElement.prototype.insertAdjacentElement;function za(){var a=Y;window.HTMLElement=function(){function b(){var b=this.constructor,d=a.g.get(b);if(!d)throw Error("The custom element being constructed was not registered with `customElements`.");var c=d.constructionStack;if(!c.length)return c=P.call(document,d.localName),Object.setPrototypeOf(c,b.prototype),c.__CE_state=1,c.__CE_definition=d,F(a,c),c;var d=c.length-1,f=c[d];if(f===w)throw Error("The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.");
34
+ c[d]=w;Object.setPrototypeOf(f,b.prototype);F(a,f);return f}b.prototype=xa.prototype;return b}()};function Aa(a,b,e){b.prepend=function(b){for(var c=[],d=0;d<arguments.length;++d)c[d-0]=arguments[d];d=c.filter(function(a){return a instanceof Node&&y(a)});e.u.apply(this,c);for(var g=0;g<d.length;g++)J(a,d[g]);if(y(this))for(d=0;d<c.length;d++)g=c[d],g instanceof Element&&G(a,g)};b.append=function(b){for(var c=[],d=0;d<arguments.length;++d)c[d-0]=arguments[d];d=c.filter(function(a){return a instanceof Node&&y(a)});e.append.apply(this,c);for(var g=0;g<d.length;g++)J(a,d[g]);if(y(this))for(d=0;d<
35
+ c.length;d++)g=c[d],g instanceof Element&&G(a,g)}};function Ba(){var a=Y;B(Document.prototype,"createElement",function(b){if(this.__CE_hasRegistry){var e=a.a.get(b);if(e)return new e.constructor}b=P.call(this,b);F(a,b);return b});B(Document.prototype,"importNode",function(b,e){b=fa.call(this,b,e);this.__CE_hasRegistry?K(a,b):E(a,b);return b});B(Document.prototype,"createElementNS",function(b,e){if(this.__CE_hasRegistry&&(null===b||"http://www.w3.org/1999/xhtml"===b)){var d=a.a.get(e);if(d)return new d.constructor}b=ea.call(this,b,e);F(a,b);return b});
36
+ Aa(a,Document.prototype,{u:ga,append:ha})};function Ca(){var a=Y;function b(b,d){Object.defineProperty(b,"textContent",{enumerable:d.enumerable,configurable:!0,get:d.get,set:function(b){if(this.nodeType===Node.TEXT_NODE)d.set.call(this,b);else{var c=void 0;if(this.firstChild){var e=this.childNodes,l=e.length;if(0<l&&y(this))for(var c=Array(l),p=0;p<l;p++)c[p]=e[p]}d.set.call(this,b);if(c)for(b=0;b<c.length;b++)J(a,c[b])}}})}B(Node.prototype,"insertBefore",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);
37
+ b=ia.call(this,b,d);if(y(this))for(d=0;d<c.length;d++)G(a,c[d]);return b}c=y(b);d=ia.call(this,b,d);c&&J(a,b);y(this)&&G(a,b);return d});B(Node.prototype,"appendChild",function(b){if(b instanceof DocumentFragment){var d=Array.prototype.slice.apply(b.childNodes);b=R.call(this,b);if(y(this))for(var c=0;c<d.length;c++)G(a,d[c]);return b}d=y(b);c=R.call(this,b);d&&J(a,b);y(this)&&G(a,b);return c});B(Node.prototype,"cloneNode",function(b){b=Q.call(this,b);this.ownerDocument.__CE_hasRegistry?K(a,b):E(a,
38
+ b);return b});B(Node.prototype,"removeChild",function(b){var d=y(b),c=S.call(this,b);d&&J(a,b);return c});B(Node.prototype,"replaceChild",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=ja.call(this,b,d);if(y(this))for(J(a,d),d=0;d<c.length;d++)G(a,c[d]);return b}var c=y(b),e=ja.call(this,b,d),g=y(this);g&&J(a,d);c&&J(a,b);g&&G(a,b);return e});T&&T.get?b(Node.prototype,T):D(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){for(var a=
39
+ [],b=0;b<this.childNodes.length;b++)a.push(this.childNodes[b].textContent);return a.join("")},set:function(a){for(;this.firstChild;)S.call(this,this.firstChild);R.call(this,document.createTextNode(a))}})})};function Da(a){var b=Element.prototype;b.before=function(b){for(var d=[],c=0;c<arguments.length;++c)d[c-0]=arguments[c];c=d.filter(function(a){return a instanceof Node&&y(a)});ta.apply(this,d);for(var e=0;e<c.length;e++)J(a,c[e]);if(y(this))for(c=0;c<d.length;c++)e=d[c],e instanceof Element&&G(a,e)};b.after=function(b){for(var d=[],c=0;c<arguments.length;++c)d[c-0]=arguments[c];c=d.filter(function(a){return a instanceof Node&&y(a)});ua.apply(this,d);for(var e=0;e<c.length;e++)J(a,c[e]);if(y(this))for(c=
40
+ 0;c<d.length;c++)e=d[c],e instanceof Element&&G(a,e)};b.replaceWith=function(b){for(var d=[],c=0;c<arguments.length;++c)d[c-0]=arguments[c];var c=d.filter(function(a){return a instanceof Node&&y(a)}),e=y(this);va.apply(this,d);for(var g=0;g<c.length;g++)J(a,c[g]);if(e)for(J(a,this),c=0;c<d.length;c++)e=d[c],e instanceof Element&&G(a,e)};b.remove=function(){var b=y(this);wa.call(this);b&&J(a,this)}};function Ea(){var a=Y;function b(b,d){Object.defineProperty(b,"innerHTML",{enumerable:d.enumerable,configurable:!0,get:d.get,set:function(b){var c=this,e=void 0;y(this)&&(e=[],A(this,function(a){a!==c&&e.push(a)}));d.set.call(this,b);if(e)for(var f=0;f<e.length;f++){var g=e[f];1===g.__CE_state&&a.disconnectedCallback(g)}this.ownerDocument.__CE_hasRegistry?K(a,this):E(a,this);return b}})}function e(b,d){B(b,"insertAdjacentElement",function(b,c){var e=y(c);b=d.call(this,b,c);e&&J(a,c);y(b)&&G(a,c);
41
+ return b})}ka?B(Element.prototype,"attachShadow",function(a){return this.__CE_shadowRoot=a=ka.call(this,a)}):console.warn("Custom Elements: `Element#attachShadow` was not patched.");if(U&&U.get)b(Element.prototype,U);else if(X&&X.get)b(HTMLElement.prototype,X);else{var d=P.call(document,"div");D(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){return Q.call(this,!0).innerHTML},set:function(a){var b="template"===this.localName?this.content:this;for(d.innerHTML=a;0<b.childNodes.length;)S.call(b,
42
+ b.childNodes[0]);for(;0<d.childNodes.length;)R.call(b,d.childNodes[0])}})})}B(Element.prototype,"setAttribute",function(b,d){if(1!==this.__CE_state)return la.call(this,b,d);var c=V.call(this,b);la.call(this,b,d);d=V.call(this,b);c!==d&&a.attributeChangedCallback(this,b,c,d,null)});B(Element.prototype,"setAttributeNS",function(b,d,e){if(1!==this.__CE_state)return oa.call(this,b,d,e);var c=W.call(this,b,d);oa.call(this,b,d,e);e=W.call(this,b,d);c!==e&&a.attributeChangedCallback(this,d,c,e,b)});B(Element.prototype,
43
+ "removeAttribute",function(b){if(1!==this.__CE_state)return na.call(this,b);var c=V.call(this,b);na.call(this,b);null!==c&&a.attributeChangedCallback(this,b,c,null,null)});B(Element.prototype,"removeAttributeNS",function(b,d){if(1!==this.__CE_state)return pa.call(this,b,d);var c=W.call(this,b,d);pa.call(this,b,d);var e=W.call(this,b,d);c!==e&&a.attributeChangedCallback(this,d,c,e,b)});ya?e(HTMLElement.prototype,ya):qa?e(Element.prototype,qa):console.warn("Custom Elements: `Element#insertAdjacentElement` was not patched.");
44
+ Aa(a,Element.prototype,{u:ra,append:sa});Da(a)};/*
45
+
46
+ Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
47
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
48
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
49
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
50
+ Code distributed by Google as part of the polymer project is also
51
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
52
+ */
53
+ var Z=window.customElements;if(!Z||Z.forcePolyfill||"function"!=typeof Z.define||"function"!=typeof Z.get){var Y=new C;za();Ba();Ca();Ea();document.__CE_hasRegistry=!0;var Fa=new O(Y);Object.defineProperty(window,"customElements",{configurable:!0,enumerable:!0,value:Fa})};
54
+ }).call(self);