concerto_frontend 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/html/concerto_frontend/concerto-frontend.html +1582 -654
- data/lib/concerto_frontend/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc35178df54df773cf262727dc50e9832b8e2b5a
|
4
|
+
data.tar.gz: 6475b902bdd78c60992532315451a2fbdc079478
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44400dc0e487dfda38d01e9f62591db1e9b6253ecc0ea527db6b43a4ef4aad0ad128fdd4b57199dfbc418390609fc7dd65301e7e703c8e42d86a5c7f997cb2c0
|
7
|
+
data.tar.gz: 397d02c1ff8bd45139e1190eed09113f83557c042658c041e6de739e1661a9923119e3d4fefded7fd4c45062b80e404b243041c418ba0aede367a5d254fe0b71
|
@@ -15,10 +15,11 @@ addEventListener('DOMContentLoaded', resolve);
|
|
15
15
|
window.Polymer = {
|
16
16
|
Settings: function () {
|
17
17
|
var user = window.Polymer || {};
|
18
|
-
location.search.slice(1).split('&')
|
18
|
+
var parts = location.search.slice(1).split('&');
|
19
|
+
for (var i = 0, o; i < parts.length && (o = parts[i]); i++) {
|
19
20
|
o = o.split('=');
|
20
21
|
o[0] && (user[o[0]] = o[1] || true);
|
21
|
-
}
|
22
|
+
}
|
22
23
|
var wantShadow = user.dom === 'shadow';
|
23
24
|
var hasShadow = Boolean(Element.prototype.createShadowRoot);
|
24
25
|
var nativeShadow = hasShadow && !window.ShadowDOMPolyfill;
|
@@ -105,15 +106,53 @@ this._callbacks.push(cb);
|
|
105
106
|
},
|
106
107
|
_makeReady: function () {
|
107
108
|
this._ready = true;
|
108
|
-
this._callbacks.
|
109
|
-
|
110
|
-
}
|
109
|
+
for (var i = 0; i < this._callbacks.length; i++) {
|
110
|
+
this._callbacks[i]();
|
111
|
+
}
|
111
112
|
this._callbacks = [];
|
112
113
|
},
|
113
114
|
_catchFirstRender: function () {
|
114
115
|
requestAnimationFrame(function () {
|
115
116
|
Polymer.RenderStatus._makeReady();
|
116
117
|
});
|
118
|
+
},
|
119
|
+
_afterNextRenderQueue: [],
|
120
|
+
_waitingNextRender: false,
|
121
|
+
afterNextRender: function (element, fn, args) {
|
122
|
+
this._watchNextRender();
|
123
|
+
this._afterNextRenderQueue.push([
|
124
|
+
element,
|
125
|
+
fn,
|
126
|
+
args
|
127
|
+
]);
|
128
|
+
},
|
129
|
+
_watchNextRender: function () {
|
130
|
+
if (!this._waitingNextRender) {
|
131
|
+
this._waitingNextRender = true;
|
132
|
+
var fn = function () {
|
133
|
+
Polymer.RenderStatus._flushNextRender();
|
134
|
+
};
|
135
|
+
if (!this._ready) {
|
136
|
+
this.whenReady(fn);
|
137
|
+
} else {
|
138
|
+
requestAnimationFrame(fn);
|
139
|
+
}
|
140
|
+
}
|
141
|
+
},
|
142
|
+
_flushNextRender: function () {
|
143
|
+
var self = this;
|
144
|
+
setTimeout(function () {
|
145
|
+
self._flushRenderCallbacks(self._afterNextRenderQueue);
|
146
|
+
self._afterNextRenderQueue = [];
|
147
|
+
self._waitingNextRender = false;
|
148
|
+
});
|
149
|
+
},
|
150
|
+
_flushRenderCallbacks: function (callbacks) {
|
151
|
+
for (var i = 0, h; i < callbacks.length; i++) {
|
152
|
+
h = callbacks[i];
|
153
|
+
h[1].apply(h[0], h[2] || Polymer.nar);
|
154
|
+
}
|
155
|
+
;
|
117
156
|
}
|
118
157
|
};
|
119
158
|
if (window.HTMLImports) {
|
@@ -143,27 +182,33 @@ this._doBehavior('created');
|
|
143
182
|
this._initFeatures();
|
144
183
|
},
|
145
184
|
attachedCallback: function () {
|
185
|
+
var self = this;
|
146
186
|
Polymer.RenderStatus.whenReady(function () {
|
147
|
-
|
148
|
-
|
149
|
-
}
|
187
|
+
self.isAttached = true;
|
188
|
+
self._doBehavior('attached');
|
189
|
+
});
|
150
190
|
},
|
151
191
|
detachedCallback: function () {
|
152
192
|
this.isAttached = false;
|
153
193
|
this._doBehavior('detached');
|
154
194
|
},
|
155
|
-
attributeChangedCallback: function (name) {
|
195
|
+
attributeChangedCallback: function (name, oldValue, newValue) {
|
156
196
|
this._attributeChangedImpl(name);
|
157
|
-
this._doBehavior('attributeChanged',
|
197
|
+
this._doBehavior('attributeChanged', [
|
198
|
+
name,
|
199
|
+
oldValue,
|
200
|
+
newValue
|
201
|
+
]);
|
158
202
|
},
|
159
203
|
_attributeChangedImpl: function (name) {
|
160
204
|
this._setAttributeToProperty(this, name);
|
161
205
|
},
|
162
206
|
extend: function (prototype, api) {
|
163
207
|
if (prototype && api) {
|
164
|
-
Object.getOwnPropertyNames(api)
|
208
|
+
var n$ = Object.getOwnPropertyNames(api);
|
209
|
+
for (var i = 0, n; i < n$.length && (n = n$[i]); i++) {
|
165
210
|
this.copyOwnProperty(n, api, prototype);
|
166
|
-
}
|
211
|
+
}
|
167
212
|
}
|
168
213
|
return prototype || api;
|
169
214
|
},
|
@@ -241,7 +286,7 @@ import: function (id, selector) {
|
|
241
286
|
if (id) {
|
242
287
|
var m = findModule(id);
|
243
288
|
if (!m) {
|
244
|
-
|
289
|
+
forceDomModulesUpgrade();
|
245
290
|
m = findModule(id);
|
246
291
|
}
|
247
292
|
if (m && selector) {
|
@@ -253,12 +298,17 @@ return m;
|
|
253
298
|
});
|
254
299
|
var cePolyfill = window.CustomElements && !CustomElements.useNative;
|
255
300
|
document.registerElement('dom-module', DomModule);
|
256
|
-
function
|
301
|
+
function forceDomModulesUpgrade() {
|
257
302
|
if (cePolyfill) {
|
258
303
|
var script = document._currentScript || document.currentScript;
|
259
|
-
var doc = script && script.ownerDocument;
|
260
|
-
|
261
|
-
|
304
|
+
var doc = script && script.ownerDocument || document;
|
305
|
+
var modules = doc.querySelectorAll('dom-module');
|
306
|
+
for (var i = modules.length - 1, m; i >= 0 && (m = modules[i]); i--) {
|
307
|
+
if (m.__upgraded__) {
|
308
|
+
return;
|
309
|
+
} else {
|
310
|
+
CustomElements.upgrade(m);
|
311
|
+
}
|
262
312
|
}
|
263
313
|
}
|
264
314
|
}
|
@@ -293,7 +343,8 @@ return behaviors;
|
|
293
343
|
},
|
294
344
|
_flattenBehaviorsList: function (behaviors) {
|
295
345
|
var flat = [];
|
296
|
-
behaviors.
|
346
|
+
for (var i = 0; i < behaviors.length; i++) {
|
347
|
+
var b = behaviors[i];
|
297
348
|
if (b instanceof Array) {
|
298
349
|
flat = flat.concat(this._flattenBehaviorsList(b));
|
299
350
|
} else if (b) {
|
@@ -301,31 +352,16 @@ flat.push(b);
|
|
301
352
|
} else {
|
302
353
|
this._warn(this._logf('_flattenBehaviorsList', 'behavior is null, check for missing or 404 import'));
|
303
354
|
}
|
304
|
-
}
|
355
|
+
}
|
305
356
|
return flat;
|
306
357
|
},
|
307
358
|
_mixinBehavior: function (b) {
|
308
|
-
Object.getOwnPropertyNames(b)
|
309
|
-
|
310
|
-
|
311
|
-
case 'registered':
|
312
|
-
case 'properties':
|
313
|
-
case 'observers':
|
314
|
-
case 'listeners':
|
315
|
-
case 'created':
|
316
|
-
case 'attached':
|
317
|
-
case 'detached':
|
318
|
-
case 'attributeChanged':
|
319
|
-
case 'configure':
|
320
|
-
case 'ready':
|
321
|
-
break;
|
322
|
-
default:
|
323
|
-
if (!this.hasOwnProperty(n)) {
|
359
|
+
var n$ = Object.getOwnPropertyNames(b);
|
360
|
+
for (var i = 0, n; i < n$.length && (n = n$[i]); i++) {
|
361
|
+
if (!Polymer.Base._behaviorProperties[n] && !this.hasOwnProperty(n)) {
|
324
362
|
this.copyOwnProperty(n, b, this);
|
325
363
|
}
|
326
|
-
break;
|
327
364
|
}
|
328
|
-
}, this);
|
329
365
|
},
|
330
366
|
_prepBehaviors: function () {
|
331
367
|
this._prepFlattenedBehaviors(this.behaviors);
|
@@ -337,9 +373,9 @@ this._prepBehavior(behaviors[i]);
|
|
337
373
|
this._prepBehavior(this);
|
338
374
|
},
|
339
375
|
_doBehavior: function (name, args) {
|
340
|
-
this.behaviors.
|
341
|
-
this._invokeBehavior(
|
342
|
-
}
|
376
|
+
for (var i = 0; i < this.behaviors.length; i++) {
|
377
|
+
this._invokeBehavior(this.behaviors[i], name, args);
|
378
|
+
}
|
343
379
|
this._invokeBehavior(this, name, args);
|
344
380
|
},
|
345
381
|
_invokeBehavior: function (b, name, args) {
|
@@ -349,12 +385,24 @@ fn.apply(this, args || Polymer.nar);
|
|
349
385
|
}
|
350
386
|
},
|
351
387
|
_marshalBehaviors: function () {
|
352
|
-
this.behaviors.
|
353
|
-
this._marshalBehavior(
|
354
|
-
}
|
388
|
+
for (var i = 0; i < this.behaviors.length; i++) {
|
389
|
+
this._marshalBehavior(this.behaviors[i]);
|
390
|
+
}
|
355
391
|
this._marshalBehavior(this);
|
356
392
|
}
|
357
393
|
});
|
394
|
+
Polymer.Base._behaviorProperties = {
|
395
|
+
hostAttributes: true,
|
396
|
+
registered: true,
|
397
|
+
properties: true,
|
398
|
+
observers: true,
|
399
|
+
listeners: true,
|
400
|
+
created: true,
|
401
|
+
attached: true,
|
402
|
+
detached: true,
|
403
|
+
attributeChanged: true,
|
404
|
+
ready: true
|
405
|
+
};
|
358
406
|
Polymer.Base._addFeature({
|
359
407
|
_getExtendedPrototype: function (tag) {
|
360
408
|
return this._getExtendedNativePrototype(tag);
|
@@ -406,9 +454,13 @@ properties: {},
|
|
406
454
|
getPropertyInfo: function (property) {
|
407
455
|
var info = this._getPropertyInfo(property, this.properties);
|
408
456
|
if (!info) {
|
409
|
-
this.behaviors.
|
410
|
-
|
411
|
-
|
457
|
+
for (var i = 0; i < this.behaviors.length; i++) {
|
458
|
+
info = this._getPropertyInfo(property, this.behaviors[i].properties);
|
459
|
+
if (info) {
|
460
|
+
return info;
|
461
|
+
}
|
462
|
+
}
|
463
|
+
;
|
412
464
|
}
|
413
465
|
return info || Polymer.nob;
|
414
466
|
},
|
@@ -421,6 +473,40 @@ if (p) {
|
|
421
473
|
p.defined = true;
|
422
474
|
}
|
423
475
|
return p;
|
476
|
+
},
|
477
|
+
_prepPropertyInfo: function () {
|
478
|
+
this._propertyInfo = {};
|
479
|
+
for (var i = 0, p; i < this.behaviors.length; i++) {
|
480
|
+
this._addPropertyInfo(this._propertyInfo, this.behaviors[i].properties);
|
481
|
+
}
|
482
|
+
this._addPropertyInfo(this._propertyInfo, this.properties);
|
483
|
+
this._addPropertyInfo(this._propertyInfo, this._propertyEffects);
|
484
|
+
},
|
485
|
+
_addPropertyInfo: function (target, source) {
|
486
|
+
if (source) {
|
487
|
+
var t, s;
|
488
|
+
for (var i in source) {
|
489
|
+
t = target[i];
|
490
|
+
s = source[i];
|
491
|
+
if (i[0] === '_' && !s.readOnly) {
|
492
|
+
continue;
|
493
|
+
}
|
494
|
+
if (!target[i]) {
|
495
|
+
target[i] = {
|
496
|
+
type: typeof s === 'function' ? s : s.type,
|
497
|
+
readOnly: s.readOnly,
|
498
|
+
attribute: Polymer.CaseMap.camelToDashCase(i)
|
499
|
+
};
|
500
|
+
} else {
|
501
|
+
if (!t.type) {
|
502
|
+
t.type = s.type;
|
503
|
+
}
|
504
|
+
if (!t.readOnly) {
|
505
|
+
t.readOnly = s.readOnly;
|
506
|
+
}
|
507
|
+
}
|
508
|
+
}
|
509
|
+
}
|
424
510
|
}
|
425
511
|
});
|
426
512
|
Polymer.CaseMap = {
|
@@ -448,21 +534,24 @@ return g[0] + '-' + g[1].toLowerCase();
|
|
448
534
|
}
|
449
535
|
};
|
450
536
|
Polymer.Base._addFeature({
|
451
|
-
_prepAttributes: function () {
|
452
|
-
this._aggregatedAttributes = {};
|
453
|
-
},
|
454
537
|
_addHostAttributes: function (attributes) {
|
538
|
+
if (!this._aggregatedAttributes) {
|
539
|
+
this._aggregatedAttributes = {};
|
540
|
+
}
|
455
541
|
if (attributes) {
|
456
542
|
this.mixin(this._aggregatedAttributes, attributes);
|
457
543
|
}
|
458
544
|
},
|
459
545
|
_marshalHostAttributes: function () {
|
546
|
+
if (this._aggregatedAttributes) {
|
460
547
|
this._applyAttributes(this, this._aggregatedAttributes);
|
548
|
+
}
|
461
549
|
},
|
462
550
|
_applyAttributes: function (node, attr$) {
|
463
551
|
for (var n in attr$) {
|
464
552
|
if (!this.hasAttribute(n) && n !== 'class') {
|
465
|
-
|
553
|
+
var v = attr$[n];
|
554
|
+
this.serializeValueToAttribute(v, n, this);
|
466
555
|
}
|
467
556
|
}
|
468
557
|
},
|
@@ -470,29 +559,40 @@ _marshalAttributes: function () {
|
|
470
559
|
this._takeAttributesToModel(this);
|
471
560
|
},
|
472
561
|
_takeAttributesToModel: function (model) {
|
473
|
-
|
474
|
-
|
562
|
+
if (this.hasAttributes()) {
|
563
|
+
for (var i in this._propertyInfo) {
|
564
|
+
var info = this._propertyInfo[i];
|
565
|
+
if (this.hasAttribute(info.attribute)) {
|
566
|
+
this._setAttributeToProperty(model, info.attribute, i, info);
|
567
|
+
}
|
568
|
+
}
|
475
569
|
}
|
476
570
|
},
|
477
|
-
_setAttributeToProperty: function (model,
|
571
|
+
_setAttributeToProperty: function (model, attribute, property, info) {
|
478
572
|
if (!this._serializing) {
|
479
|
-
var
|
480
|
-
|
481
|
-
if (info
|
482
|
-
var
|
483
|
-
model[
|
573
|
+
var property = property || Polymer.CaseMap.dashToCamelCase(attribute);
|
574
|
+
info = info || this._propertyInfo && this._propertyInfo[property];
|
575
|
+
if (info && !info.readOnly) {
|
576
|
+
var v = this.getAttribute(attribute);
|
577
|
+
model[property] = this.deserialize(v, info.type);
|
484
578
|
}
|
485
579
|
}
|
486
580
|
},
|
487
581
|
_serializing: false,
|
488
|
-
reflectPropertyToAttribute: function (
|
582
|
+
reflectPropertyToAttribute: function (property, attribute, value) {
|
489
583
|
this._serializing = true;
|
490
|
-
this
|
584
|
+
value = value === undefined ? this[property] : value;
|
585
|
+
this.serializeValueToAttribute(value, attribute || Polymer.CaseMap.camelToDashCase(property));
|
491
586
|
this._serializing = false;
|
492
587
|
},
|
493
588
|
serializeValueToAttribute: function (value, attribute, node) {
|
494
589
|
var str = this.serialize(value);
|
495
|
-
|
590
|
+
node = node || this;
|
591
|
+
if (str === undefined) {
|
592
|
+
node.removeAttribute(attribute);
|
593
|
+
} else {
|
594
|
+
node.setAttribute(attribute, str);
|
595
|
+
}
|
496
596
|
},
|
497
597
|
deserialize: function (value, type) {
|
498
598
|
switch (type) {
|
@@ -568,13 +668,13 @@ debouncer.stop();
|
|
568
668
|
}
|
569
669
|
}
|
570
670
|
});
|
571
|
-
Polymer.version = '1.
|
671
|
+
Polymer.version = '1.2.3';
|
572
672
|
Polymer.Base._addFeature({
|
573
673
|
_registerFeatures: function () {
|
574
674
|
this._prepIs();
|
575
|
-
this._prepAttributes();
|
576
675
|
this._prepBehaviors();
|
577
676
|
this._prepConstructor();
|
677
|
+
this._prepPropertyInfo();
|
578
678
|
},
|
579
679
|
_prepBehavior: function (b) {
|
580
680
|
this._addHostAttributes(b.hostAttributes);
|
@@ -590,13 +690,14 @@ this._marshalBehaviors();
|
|
590
690
|
|
591
691
|
<script>Polymer.Base._addFeature({
|
592
692
|
_prepTemplate: function () {
|
593
|
-
|
693
|
+
if (this._template === undefined) {
|
694
|
+
this._template = Polymer.DomModule.import(this.is, 'template');
|
695
|
+
}
|
594
696
|
if (this._template && this._template.hasAttribute('is')) {
|
595
697
|
this._warn(this._logf('_prepTemplate', 'top-level Polymer template ' + 'must not be a type-extension, found', this._template, 'Move inside simple <template>.'));
|
596
698
|
}
|
597
|
-
if (this._template && !this._template.content && HTMLTemplateElement.
|
699
|
+
if (this._template && !this._template.content && window.HTMLTemplateElement && HTMLTemplateElement.decorate) {
|
598
700
|
HTMLTemplateElement.decorate(this._template);
|
599
|
-
HTMLTemplateElement.bootstrap(this._template.content);
|
600
701
|
}
|
601
702
|
},
|
602
703
|
_stampTemplate: function () {
|
@@ -615,20 +716,19 @@ Polymer.Base._addFeature({
|
|
615
716
|
_hostStack: [],
|
616
717
|
ready: function () {
|
617
718
|
},
|
618
|
-
|
719
|
+
_registerHost: function (host) {
|
619
720
|
this.dataHost = host = host || Polymer.Base._hostStack[Polymer.Base._hostStack.length - 1];
|
620
721
|
if (host && host._clients) {
|
621
722
|
host._clients.push(this);
|
622
723
|
}
|
623
|
-
this._beginHost();
|
624
724
|
},
|
625
|
-
|
725
|
+
_beginHosting: function () {
|
626
726
|
Polymer.Base._hostStack.push(this);
|
627
727
|
if (!this._clients) {
|
628
728
|
this._clients = [];
|
629
729
|
}
|
630
730
|
},
|
631
|
-
|
731
|
+
_endHosting: function () {
|
632
732
|
Polymer.Base._hostStack.pop();
|
633
733
|
},
|
634
734
|
_tryReady: function () {
|
@@ -641,20 +741,24 @@ return !this.dataHost || this.dataHost._clientsReadied;
|
|
641
741
|
},
|
642
742
|
_ready: function () {
|
643
743
|
this._beforeClientsReady();
|
744
|
+
if (this._template) {
|
644
745
|
this._setupRoot();
|
645
746
|
this._readyClients();
|
747
|
+
}
|
748
|
+
this._clientsReadied = true;
|
749
|
+
this._clients = null;
|
646
750
|
this._afterClientsReady();
|
647
751
|
this._readySelf();
|
648
752
|
},
|
649
753
|
_readyClients: function () {
|
650
754
|
this._beginDistribute();
|
651
755
|
var c$ = this._clients;
|
756
|
+
if (c$) {
|
652
757
|
for (var i = 0, l = c$.length, c; i < l && (c = c$[i]); i++) {
|
653
758
|
c._ready();
|
654
759
|
}
|
760
|
+
}
|
655
761
|
this._finishDistribute();
|
656
|
-
this._clientsReadied = true;
|
657
|
-
this._clients = null;
|
658
762
|
},
|
659
763
|
_readySelf: function () {
|
660
764
|
this._doBehavior('ready');
|
@@ -850,61 +954,6 @@ return currentValue === previousValue;
|
|
850
954
|
};
|
851
955
|
return new ArraySplice();
|
852
956
|
}();
|
853
|
-
Polymer.EventApi = function () {
|
854
|
-
var Settings = Polymer.Settings;
|
855
|
-
var EventApi = function (event) {
|
856
|
-
this.event = event;
|
857
|
-
};
|
858
|
-
if (Settings.useShadow) {
|
859
|
-
EventApi.prototype = {
|
860
|
-
get rootTarget() {
|
861
|
-
return this.event.path[0];
|
862
|
-
},
|
863
|
-
get localTarget() {
|
864
|
-
return this.event.target;
|
865
|
-
},
|
866
|
-
get path() {
|
867
|
-
return this.event.path;
|
868
|
-
}
|
869
|
-
};
|
870
|
-
} else {
|
871
|
-
EventApi.prototype = {
|
872
|
-
get rootTarget() {
|
873
|
-
return this.event.target;
|
874
|
-
},
|
875
|
-
get localTarget() {
|
876
|
-
var current = this.event.currentTarget;
|
877
|
-
var currentRoot = current && Polymer.dom(current).getOwnerRoot();
|
878
|
-
var p$ = this.path;
|
879
|
-
for (var i = 0; i < p$.length; i++) {
|
880
|
-
if (Polymer.dom(p$[i]).getOwnerRoot() === currentRoot) {
|
881
|
-
return p$[i];
|
882
|
-
}
|
883
|
-
}
|
884
|
-
},
|
885
|
-
get path() {
|
886
|
-
if (!this.event._path) {
|
887
|
-
var path = [];
|
888
|
-
var o = this.rootTarget;
|
889
|
-
while (o) {
|
890
|
-
path.push(o);
|
891
|
-
o = Polymer.dom(o).parentNode || o.host;
|
892
|
-
}
|
893
|
-
path.push(window);
|
894
|
-
this.event._path = path;
|
895
|
-
}
|
896
|
-
return this.event._path;
|
897
|
-
}
|
898
|
-
};
|
899
|
-
}
|
900
|
-
var factory = function (event) {
|
901
|
-
if (!event.__eventApi) {
|
902
|
-
event.__eventApi = new EventApi(event);
|
903
|
-
}
|
904
|
-
return event.__eventApi;
|
905
|
-
};
|
906
|
-
return { factory: factory };
|
907
|
-
}();
|
908
957
|
Polymer.domInnerHTML = function () {
|
909
958
|
var escapeAttrRegExp = /[&\u00A0"]/g;
|
910
959
|
var escapeDataRegExp = /[&\u00A0<>]/g;
|
@@ -1012,24 +1061,31 @@ var nativeRemoveChild = Element.prototype.removeChild;
|
|
1012
1061
|
var nativeAppendChild = Element.prototype.appendChild;
|
1013
1062
|
var nativeCloneNode = Element.prototype.cloneNode;
|
1014
1063
|
var nativeImportNode = Document.prototype.importNode;
|
1015
|
-
var
|
1016
|
-
|
1017
|
-
|
1018
|
-
this.patch();
|
1019
|
-
}
|
1064
|
+
var needsToWrap = Settings.hasShadow && !Settings.nativeShadow;
|
1065
|
+
var wrap = window.wrap ? window.wrap : function (node) {
|
1066
|
+
return node;
|
1020
1067
|
};
|
1021
|
-
|
1022
|
-
|
1023
|
-
this.node = wrap(node);
|
1068
|
+
var DomApi = function (node) {
|
1069
|
+
this.node = needsToWrap ? wrap(node) : node;
|
1024
1070
|
if (this.patch) {
|
1025
1071
|
this.patch();
|
1026
1072
|
}
|
1027
1073
|
};
|
1028
|
-
}
|
1029
1074
|
DomApi.prototype = {
|
1030
1075
|
flush: function () {
|
1031
1076
|
Polymer.dom.flush();
|
1032
1077
|
},
|
1078
|
+
deepContains: function (node) {
|
1079
|
+
if (this.node.contains(node)) {
|
1080
|
+
return true;
|
1081
|
+
}
|
1082
|
+
var n = node;
|
1083
|
+
var wrappedDocument = wrap(document);
|
1084
|
+
while (n && n !== wrappedDocument && n !== this.node) {
|
1085
|
+
n = Polymer.dom(n).parentNode || n.host;
|
1086
|
+
}
|
1087
|
+
return n === this.node;
|
1088
|
+
},
|
1033
1089
|
_lazyDistribute: function (host) {
|
1034
1090
|
if (host.shadyRoot && host.shadyRoot._distributionClean) {
|
1035
1091
|
host.shadyRoot._distributionClean = false;
|
@@ -1043,7 +1099,7 @@ insertBefore: function (node, ref_node) {
|
|
1043
1099
|
return this._addNode(node, ref_node);
|
1044
1100
|
},
|
1045
1101
|
_addNode: function (node, ref_node) {
|
1046
|
-
this.
|
1102
|
+
this._removeNodeFromParent(node);
|
1047
1103
|
var addedInsertionPoint;
|
1048
1104
|
var root = this.getOwnerRoot();
|
1049
1105
|
if (root) {
|
@@ -1075,6 +1131,7 @@ nativeAppendChild.call(container, node);
|
|
1075
1131
|
if (addedInsertionPoint) {
|
1076
1132
|
this._updateInsertionPoints(root.host);
|
1077
1133
|
}
|
1134
|
+
this.notifyObserver();
|
1078
1135
|
return node;
|
1079
1136
|
},
|
1080
1137
|
removeChild: function (node) {
|
@@ -1089,6 +1146,7 @@ removeFromComposedParent(container, node);
|
|
1089
1146
|
nativeRemoveChild.call(container, node);
|
1090
1147
|
}
|
1091
1148
|
}
|
1149
|
+
this.notifyObserver();
|
1092
1150
|
return node;
|
1093
1151
|
},
|
1094
1152
|
replaceChild: function (node, ref_node) {
|
@@ -1181,6 +1239,13 @@ return Boolean(node._lightChildren !== undefined);
|
|
1181
1239
|
_parentNeedsDistribution: function (parent) {
|
1182
1240
|
return parent && parent.shadyRoot && hasInsertionPoint(parent.shadyRoot);
|
1183
1241
|
},
|
1242
|
+
_removeNodeFromParent: function (node) {
|
1243
|
+
var parent = node._lightParent || node.parentNode;
|
1244
|
+
if (parent && hasDomApi(parent)) {
|
1245
|
+
factory(parent).notifyObserver();
|
1246
|
+
}
|
1247
|
+
this._removeNodeFromHost(node, true);
|
1248
|
+
},
|
1184
1249
|
_removeNodeFromHost: function (node, ensureComposedRemoval) {
|
1185
1250
|
var hostNeedsDist;
|
1186
1251
|
var root;
|
@@ -1192,7 +1257,7 @@ if (root) {
|
|
1192
1257
|
root.host._elementRemove(node);
|
1193
1258
|
hostNeedsDist = this._removeDistributedChildren(root, node);
|
1194
1259
|
}
|
1195
|
-
this._removeLogicalInfo(node,
|
1260
|
+
this._removeLogicalInfo(node, parent);
|
1196
1261
|
}
|
1197
1262
|
this._removeOwnerShadyRoot(node);
|
1198
1263
|
if (root && hostNeedsDist) {
|
@@ -1240,7 +1305,7 @@ _addLogicalInfo: function (node, container, index) {
|
|
1240
1305
|
var children = factory(container).childNodes;
|
1241
1306
|
index = index === undefined ? children.length : index;
|
1242
1307
|
if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
|
1243
|
-
var c$ =
|
1308
|
+
var c$ = arrayCopyChildNodes(node);
|
1244
1309
|
for (var i = 0, n; i < c$.length && (n = c$[i]); i++) {
|
1245
1310
|
children.splice(index++, 0, n);
|
1246
1311
|
n._lightParent = container;
|
@@ -1311,24 +1376,29 @@ getDistributedNodes: function () {
|
|
1311
1376
|
return this.node._distributedNodes || [];
|
1312
1377
|
},
|
1313
1378
|
queryDistributedElements: function (selector) {
|
1314
|
-
var c$ = this.
|
1379
|
+
var c$ = this.getEffectiveChildNodes();
|
1315
1380
|
var list = [];
|
1316
|
-
this._distributedFilter(selector, c$, list);
|
1317
1381
|
for (var i = 0, l = c$.length, c; i < l && (c = c$[i]); i++) {
|
1318
|
-
if (c.
|
1319
|
-
|
1382
|
+
if (c.nodeType === Node.ELEMENT_NODE && matchesSelector.call(c, selector)) {
|
1383
|
+
list.push(c);
|
1320
1384
|
}
|
1321
1385
|
}
|
1322
1386
|
return list;
|
1323
1387
|
},
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1328
|
-
|
1388
|
+
getEffectiveChildNodes: function () {
|
1389
|
+
var list = [];
|
1390
|
+
var c$ = this.childNodes;
|
1391
|
+
for (var i = 0, l = c$.length, c; i < l && (c = c$[i]); i++) {
|
1392
|
+
if (c.localName === CONTENT) {
|
1393
|
+
var d$ = factory(c).getDistributedNodes();
|
1394
|
+
for (var j = 0; j < d$.length; j++) {
|
1395
|
+
list.push(d$[j]);
|
1396
|
+
}
|
1397
|
+
} else {
|
1398
|
+
list.push(c);
|
1329
1399
|
}
|
1330
1400
|
}
|
1331
|
-
return
|
1401
|
+
return list;
|
1332
1402
|
},
|
1333
1403
|
_clear: function () {
|
1334
1404
|
while (this.childNodes.length) {
|
@@ -1372,36 +1442,24 @@ d.appendChild(nc);
|
|
1372
1442
|
}
|
1373
1443
|
}
|
1374
1444
|
return n;
|
1445
|
+
},
|
1446
|
+
observeNodes: function (callback) {
|
1447
|
+
if (callback) {
|
1448
|
+
if (!this.observer) {
|
1449
|
+
this.observer = this.node.localName === CONTENT ? new DomApi.DistributedNodesObserver(this) : new DomApi.EffectiveNodesObserver(this);
|
1375
1450
|
}
|
1376
|
-
|
1377
|
-
Object.defineProperty(DomApi.prototype, 'classList', {
|
1378
|
-
get: function () {
|
1379
|
-
if (!this._classList) {
|
1380
|
-
this._classList = new DomApi.ClassList(this);
|
1451
|
+
return this.observer.addListener(callback);
|
1381
1452
|
}
|
1382
|
-
return this._classList;
|
1383
|
-
},
|
1384
|
-
configurable: true
|
1385
|
-
});
|
1386
|
-
DomApi.ClassList = function (host) {
|
1387
|
-
this.domApi = host;
|
1388
|
-
this.node = host.node;
|
1389
|
-
};
|
1390
|
-
DomApi.ClassList.prototype = {
|
1391
|
-
add: function () {
|
1392
|
-
this.node.classList.add.apply(this.node.classList, arguments);
|
1393
|
-
this.domApi._distributeParent();
|
1394
|
-
},
|
1395
|
-
remove: function () {
|
1396
|
-
this.node.classList.remove.apply(this.node.classList, arguments);
|
1397
|
-
this.domApi._distributeParent();
|
1398
1453
|
},
|
1399
|
-
|
1400
|
-
|
1401
|
-
this.
|
1454
|
+
unobserveNodes: function (handle) {
|
1455
|
+
if (this.observer) {
|
1456
|
+
this.observer.removeListener(handle);
|
1457
|
+
}
|
1402
1458
|
},
|
1403
|
-
|
1404
|
-
|
1459
|
+
notifyObserver: function () {
|
1460
|
+
if (this.observer) {
|
1461
|
+
this.observer.notify();
|
1462
|
+
}
|
1405
1463
|
}
|
1406
1464
|
};
|
1407
1465
|
if (!Settings.useShadow) {
|
@@ -1409,7 +1467,7 @@ Object.defineProperties(DomApi.prototype, {
|
|
1409
1467
|
childNodes: {
|
1410
1468
|
get: function () {
|
1411
1469
|
var c$ = getLightChildren(this.node);
|
1412
|
-
return Array.isArray(c$) ? c$ :
|
1470
|
+
return Array.isArray(c$) ? c$ : arrayCopyChildNodes(this.node);
|
1413
1471
|
},
|
1414
1472
|
configurable: true
|
1415
1473
|
},
|
@@ -1532,7 +1590,7 @@ if (nt !== Node.TEXT_NODE || nt !== Node.COMMENT_NODE) {
|
|
1532
1590
|
this._clear();
|
1533
1591
|
var d = document.createElement('div');
|
1534
1592
|
d.innerHTML = text;
|
1535
|
-
var c$ =
|
1593
|
+
var c$ = arrayCopyChildNodes(d);
|
1536
1594
|
for (var i = 0; i < c$.length; i++) {
|
1537
1595
|
this.appendChild(c$[i]);
|
1538
1596
|
}
|
@@ -1545,20 +1603,25 @@ DomApi.prototype._getComposedInnerHTML = function () {
|
|
1545
1603
|
return getInnerHTML(this.node, true);
|
1546
1604
|
};
|
1547
1605
|
} else {
|
1548
|
-
var forwardMethods =
|
1606
|
+
var forwardMethods = function (m$) {
|
1607
|
+
for (var i = 0; i < m$.length; i++) {
|
1608
|
+
forwardMethod(m$[i]);
|
1609
|
+
}
|
1610
|
+
};
|
1611
|
+
var forwardMethod = function (method) {
|
1612
|
+
DomApi.prototype[method] = function () {
|
1613
|
+
return this.node[method].apply(this.node, arguments);
|
1614
|
+
};
|
1615
|
+
};
|
1616
|
+
forwardMethods([
|
1549
1617
|
'cloneNode',
|
1550
1618
|
'appendChild',
|
1551
1619
|
'insertBefore',
|
1552
1620
|
'removeChild',
|
1553
1621
|
'replaceChild'
|
1554
|
-
];
|
1555
|
-
forwardMethods.forEach(function (name) {
|
1556
|
-
DomApi.prototype[name] = function () {
|
1557
|
-
return this.node[name].apply(this.node, arguments);
|
1558
|
-
};
|
1559
|
-
});
|
1622
|
+
]);
|
1560
1623
|
DomApi.prototype.querySelectorAll = function (selector) {
|
1561
|
-
return
|
1624
|
+
return arrayCopy(this.node.querySelectorAll(selector));
|
1562
1625
|
};
|
1563
1626
|
DomApi.prototype.getOwnerRoot = function () {
|
1564
1627
|
var n = this.node;
|
@@ -1575,24 +1638,24 @@ return doc.importNode(externalNode, deep);
|
|
1575
1638
|
};
|
1576
1639
|
DomApi.prototype.getDestinationInsertionPoints = function () {
|
1577
1640
|
var n$ = this.node.getDestinationInsertionPoints && this.node.getDestinationInsertionPoints();
|
1578
|
-
return n$ ?
|
1641
|
+
return n$ ? arrayCopy(n$) : [];
|
1579
1642
|
};
|
1580
1643
|
DomApi.prototype.getDistributedNodes = function () {
|
1581
1644
|
var n$ = this.node.getDistributedNodes && this.node.getDistributedNodes();
|
1582
|
-
return n$ ?
|
1645
|
+
return n$ ? arrayCopy(n$) : [];
|
1583
1646
|
};
|
1584
1647
|
DomApi.prototype._distributeParent = function () {
|
1585
1648
|
};
|
1586
1649
|
Object.defineProperties(DomApi.prototype, {
|
1587
1650
|
childNodes: {
|
1588
1651
|
get: function () {
|
1589
|
-
return
|
1652
|
+
return arrayCopyChildNodes(this.node);
|
1590
1653
|
},
|
1591
1654
|
configurable: true
|
1592
1655
|
},
|
1593
1656
|
children: {
|
1594
1657
|
get: function () {
|
1595
|
-
return
|
1658
|
+
return arrayCopyChildren(this.node);
|
1596
1659
|
},
|
1597
1660
|
configurable: true
|
1598
1661
|
},
|
@@ -1615,7 +1678,20 @@ return this.node.innerHTML = value;
|
|
1615
1678
|
configurable: true
|
1616
1679
|
}
|
1617
1680
|
});
|
1618
|
-
var forwardProperties =
|
1681
|
+
var forwardProperties = function (f$) {
|
1682
|
+
for (var i = 0; i < f$.length; i++) {
|
1683
|
+
forwardProperty(f$[i]);
|
1684
|
+
}
|
1685
|
+
};
|
1686
|
+
var forwardProperty = function (name) {
|
1687
|
+
Object.defineProperty(DomApi.prototype, name, {
|
1688
|
+
get: function () {
|
1689
|
+
return this.node[name];
|
1690
|
+
},
|
1691
|
+
configurable: true
|
1692
|
+
});
|
1693
|
+
};
|
1694
|
+
forwardProperties([
|
1619
1695
|
'parentNode',
|
1620
1696
|
'firstChild',
|
1621
1697
|
'lastChild',
|
@@ -1625,24 +1701,21 @@ var forwardProperties = [
|
|
1625
1701
|
'lastElementChild',
|
1626
1702
|
'nextElementSibling',
|
1627
1703
|
'previousElementSibling'
|
1628
|
-
];
|
1629
|
-
forwardProperties.forEach(function (name) {
|
1630
|
-
Object.defineProperty(DomApi.prototype, name, {
|
1631
|
-
get: function () {
|
1632
|
-
return this.node[name];
|
1633
|
-
},
|
1634
|
-
configurable: true
|
1635
|
-
});
|
1636
|
-
});
|
1704
|
+
]);
|
1637
1705
|
}
|
1638
1706
|
var CONTENT = 'content';
|
1639
|
-
|
1707
|
+
function factory(node, patch) {
|
1640
1708
|
node = node || document;
|
1641
1709
|
if (!node.__domApi) {
|
1642
1710
|
node.__domApi = new DomApi(node, patch);
|
1643
1711
|
}
|
1644
1712
|
return node.__domApi;
|
1645
|
-
}
|
1713
|
+
}
|
1714
|
+
;
|
1715
|
+
function hasDomApi(node) {
|
1716
|
+
return Boolean(node.__domApi);
|
1717
|
+
}
|
1718
|
+
;
|
1646
1719
|
Polymer.dom = function (obj, patch) {
|
1647
1720
|
if (obj instanceof Event) {
|
1648
1721
|
return Polymer.EventApi.factory(obj);
|
@@ -1650,50 +1723,13 @@ return Polymer.EventApi.factory(obj);
|
|
1650
1723
|
return factory(obj, patch);
|
1651
1724
|
}
|
1652
1725
|
};
|
1653
|
-
Polymer.Base.extend(Polymer.dom, {
|
1654
|
-
_flushGuard: 0,
|
1655
|
-
_FLUSH_MAX: 100,
|
1656
|
-
_needsTakeRecords: !Polymer.Settings.useNativeCustomElements,
|
1657
|
-
_debouncers: [],
|
1658
|
-
_finishDebouncer: null,
|
1659
|
-
flush: function () {
|
1660
|
-
for (var i = 0; i < this._debouncers.length; i++) {
|
1661
|
-
this._debouncers[i].complete();
|
1662
|
-
}
|
1663
|
-
if (this._finishDebouncer) {
|
1664
|
-
this._finishDebouncer.complete();
|
1665
|
-
}
|
1666
|
-
this._flushPolyfills();
|
1667
|
-
if (this._debouncers.length && this._flushGuard < this._FLUSH_MAX) {
|
1668
|
-
this._flushGuard++;
|
1669
|
-
this.flush();
|
1670
|
-
} else {
|
1671
|
-
if (this._flushGuard >= this._FLUSH_MAX) {
|
1672
|
-
console.warn('Polymer.dom.flush aborted. Flush may not be complete.');
|
1673
|
-
}
|
1674
|
-
this._flushGuard = 0;
|
1675
|
-
}
|
1676
|
-
},
|
1677
|
-
_flushPolyfills: function () {
|
1678
|
-
if (this._needsTakeRecords) {
|
1679
|
-
CustomElements.takeRecords();
|
1680
|
-
}
|
1681
|
-
},
|
1682
|
-
addDebouncer: function (debouncer) {
|
1683
|
-
this._debouncers.push(debouncer);
|
1684
|
-
this._finishDebouncer = Polymer.Debounce(this._finishDebouncer, this._finishFlush);
|
1685
|
-
},
|
1686
|
-
_finishFlush: function () {
|
1687
|
-
Polymer.dom._debouncers = [];
|
1688
|
-
}
|
1689
|
-
});
|
1690
1726
|
function getLightChildren(node) {
|
1691
1727
|
var children = node._lightChildren;
|
1692
1728
|
return children ? children : node.childNodes;
|
1693
1729
|
}
|
1694
1730
|
function getComposedChildren(node) {
|
1695
1731
|
if (!node._composedChildren) {
|
1696
|
-
node._composedChildren =
|
1732
|
+
node._composedChildren = arrayCopyChildNodes(node);
|
1697
1733
|
}
|
1698
1734
|
return node._composedChildren;
|
1699
1735
|
}
|
@@ -1729,13 +1765,35 @@ children.splice(i, 1);
|
|
1729
1765
|
}
|
1730
1766
|
function saveLightChildrenIfNeeded(node) {
|
1731
1767
|
if (!node._lightChildren) {
|
1732
|
-
var c$ =
|
1768
|
+
var c$ = arrayCopyChildNodes(node);
|
1733
1769
|
for (var i = 0, l = c$.length, child; i < l && (child = c$[i]); i++) {
|
1734
1770
|
child._lightParent = child._lightParent || node;
|
1735
1771
|
}
|
1736
1772
|
node._lightChildren = c$;
|
1737
1773
|
}
|
1738
1774
|
}
|
1775
|
+
function arrayCopyChildNodes(parent) {
|
1776
|
+
var copy = [], i = 0;
|
1777
|
+
for (var n = parent.firstChild; n; n = n.nextSibling) {
|
1778
|
+
copy[i++] = n;
|
1779
|
+
}
|
1780
|
+
return copy;
|
1781
|
+
}
|
1782
|
+
function arrayCopyChildren(parent) {
|
1783
|
+
var copy = [], i = 0;
|
1784
|
+
for (var n = parent.firstElementChild; n; n = n.nextElementSibling) {
|
1785
|
+
copy[i++] = n;
|
1786
|
+
}
|
1787
|
+
return copy;
|
1788
|
+
}
|
1789
|
+
function arrayCopy(a$) {
|
1790
|
+
var l = a$.length;
|
1791
|
+
var copy = new Array(l);
|
1792
|
+
for (var i = 0; i < l; i++) {
|
1793
|
+
copy[i] = a$[i];
|
1794
|
+
}
|
1795
|
+
return copy;
|
1796
|
+
}
|
1739
1797
|
function hasInsertionPoint(root) {
|
1740
1798
|
return Boolean(root && root._insertionPoints.length);
|
1741
1799
|
}
|
@@ -1750,17 +1808,418 @@ saveLightChildrenIfNeeded: saveLightChildrenIfNeeded,
|
|
1750
1808
|
matchesSelector: matchesSelector,
|
1751
1809
|
hasInsertionPoint: hasInsertionPoint,
|
1752
1810
|
ctor: DomApi,
|
1753
|
-
factory: factory
|
1811
|
+
factory: factory,
|
1812
|
+
hasDomApi: hasDomApi,
|
1813
|
+
arrayCopy: arrayCopy,
|
1814
|
+
arrayCopyChildNodes: arrayCopyChildNodes,
|
1815
|
+
arrayCopyChildren: arrayCopyChildren,
|
1816
|
+
wrap: wrap
|
1754
1817
|
};
|
1755
1818
|
}();
|
1756
|
-
(
|
1757
|
-
|
1758
|
-
|
1759
|
-
|
1760
|
-
|
1761
|
-
|
1762
|
-
|
1763
|
-
|
1819
|
+
Polymer.Base.extend(Polymer.dom, {
|
1820
|
+
_flushGuard: 0,
|
1821
|
+
_FLUSH_MAX: 100,
|
1822
|
+
_needsTakeRecords: !Polymer.Settings.useNativeCustomElements,
|
1823
|
+
_debouncers: [],
|
1824
|
+
_staticFlushList: [],
|
1825
|
+
_finishDebouncer: null,
|
1826
|
+
flush: function () {
|
1827
|
+
this._flushGuard = 0;
|
1828
|
+
this._prepareFlush();
|
1829
|
+
while (this._debouncers.length && this._flushGuard < this._FLUSH_MAX) {
|
1830
|
+
for (var i = 0; i < this._debouncers.length; i++) {
|
1831
|
+
this._debouncers[i].complete();
|
1832
|
+
}
|
1833
|
+
if (this._finishDebouncer) {
|
1834
|
+
this._finishDebouncer.complete();
|
1835
|
+
}
|
1836
|
+
this._prepareFlush();
|
1837
|
+
this._flushGuard++;
|
1838
|
+
}
|
1839
|
+
if (this._flushGuard >= this._FLUSH_MAX) {
|
1840
|
+
console.warn('Polymer.dom.flush aborted. Flush may not be complete.');
|
1841
|
+
}
|
1842
|
+
},
|
1843
|
+
_prepareFlush: function () {
|
1844
|
+
if (this._needsTakeRecords) {
|
1845
|
+
CustomElements.takeRecords();
|
1846
|
+
}
|
1847
|
+
for (var i = 0; i < this._staticFlushList.length; i++) {
|
1848
|
+
this._staticFlushList[i]();
|
1849
|
+
}
|
1850
|
+
},
|
1851
|
+
addStaticFlush: function (fn) {
|
1852
|
+
this._staticFlushList.push(fn);
|
1853
|
+
},
|
1854
|
+
removeStaticFlush: function (fn) {
|
1855
|
+
var i = this._staticFlushList.indexOf(fn);
|
1856
|
+
if (i >= 0) {
|
1857
|
+
this._staticFlushList.splice(i, 1);
|
1858
|
+
}
|
1859
|
+
},
|
1860
|
+
addDebouncer: function (debouncer) {
|
1861
|
+
this._debouncers.push(debouncer);
|
1862
|
+
this._finishDebouncer = Polymer.Debounce(this._finishDebouncer, this._finishFlush);
|
1863
|
+
},
|
1864
|
+
_finishFlush: function () {
|
1865
|
+
Polymer.dom._debouncers = [];
|
1866
|
+
}
|
1867
|
+
});
|
1868
|
+
Polymer.EventApi = function () {
|
1869
|
+
'use strict';
|
1870
|
+
var DomApi = Polymer.DomApi.ctor;
|
1871
|
+
var Settings = Polymer.Settings;
|
1872
|
+
DomApi.Event = function (event) {
|
1873
|
+
this.event = event;
|
1874
|
+
};
|
1875
|
+
if (Settings.useShadow) {
|
1876
|
+
DomApi.Event.prototype = {
|
1877
|
+
get rootTarget() {
|
1878
|
+
return this.event.path[0];
|
1879
|
+
},
|
1880
|
+
get localTarget() {
|
1881
|
+
return this.event.target;
|
1882
|
+
},
|
1883
|
+
get path() {
|
1884
|
+
return this.event.path;
|
1885
|
+
}
|
1886
|
+
};
|
1887
|
+
} else {
|
1888
|
+
DomApi.Event.prototype = {
|
1889
|
+
get rootTarget() {
|
1890
|
+
return this.event.target;
|
1891
|
+
},
|
1892
|
+
get localTarget() {
|
1893
|
+
var current = this.event.currentTarget;
|
1894
|
+
var currentRoot = current && Polymer.dom(current).getOwnerRoot();
|
1895
|
+
var p$ = this.path;
|
1896
|
+
for (var i = 0; i < p$.length; i++) {
|
1897
|
+
if (Polymer.dom(p$[i]).getOwnerRoot() === currentRoot) {
|
1898
|
+
return p$[i];
|
1899
|
+
}
|
1900
|
+
}
|
1901
|
+
},
|
1902
|
+
get path() {
|
1903
|
+
if (!this.event._path) {
|
1904
|
+
var path = [];
|
1905
|
+
var o = this.rootTarget;
|
1906
|
+
while (o) {
|
1907
|
+
path.push(o);
|
1908
|
+
o = Polymer.dom(o).parentNode || o.host;
|
1909
|
+
}
|
1910
|
+
path.push(window);
|
1911
|
+
this.event._path = path;
|
1912
|
+
}
|
1913
|
+
return this.event._path;
|
1914
|
+
}
|
1915
|
+
};
|
1916
|
+
}
|
1917
|
+
var factory = function (event) {
|
1918
|
+
if (!event.__eventApi) {
|
1919
|
+
event.__eventApi = new DomApi.Event(event);
|
1920
|
+
}
|
1921
|
+
return event.__eventApi;
|
1922
|
+
};
|
1923
|
+
return { factory: factory };
|
1924
|
+
}();
|
1925
|
+
(function () {
|
1926
|
+
'use strict';
|
1927
|
+
var DomApi = Polymer.DomApi.ctor;
|
1928
|
+
Object.defineProperty(DomApi.prototype, 'classList', {
|
1929
|
+
get: function () {
|
1930
|
+
if (!this._classList) {
|
1931
|
+
this._classList = new DomApi.ClassList(this);
|
1932
|
+
}
|
1933
|
+
return this._classList;
|
1934
|
+
},
|
1935
|
+
configurable: true
|
1936
|
+
});
|
1937
|
+
DomApi.ClassList = function (host) {
|
1938
|
+
this.domApi = host;
|
1939
|
+
this.node = host.node;
|
1940
|
+
};
|
1941
|
+
DomApi.ClassList.prototype = {
|
1942
|
+
add: function () {
|
1943
|
+
this.node.classList.add.apply(this.node.classList, arguments);
|
1944
|
+
this.domApi._distributeParent();
|
1945
|
+
},
|
1946
|
+
remove: function () {
|
1947
|
+
this.node.classList.remove.apply(this.node.classList, arguments);
|
1948
|
+
this.domApi._distributeParent();
|
1949
|
+
},
|
1950
|
+
toggle: function () {
|
1951
|
+
this.node.classList.toggle.apply(this.node.classList, arguments);
|
1952
|
+
this.domApi._distributeParent();
|
1953
|
+
},
|
1954
|
+
contains: function () {
|
1955
|
+
return this.node.classList.contains.apply(this.node.classList, arguments);
|
1956
|
+
}
|
1957
|
+
};
|
1958
|
+
}());
|
1959
|
+
(function () {
|
1960
|
+
'use strict';
|
1961
|
+
var DomApi = Polymer.DomApi.ctor;
|
1962
|
+
var Settings = Polymer.Settings;
|
1963
|
+
var hasDomApi = Polymer.DomApi.hasDomApi;
|
1964
|
+
DomApi.EffectiveNodesObserver = function (domApi) {
|
1965
|
+
this.domApi = domApi;
|
1966
|
+
this.node = this.domApi.node;
|
1967
|
+
this._listeners = [];
|
1968
|
+
};
|
1969
|
+
DomApi.EffectiveNodesObserver.prototype = {
|
1970
|
+
addListener: function (callback) {
|
1971
|
+
if (!this._isSetup) {
|
1972
|
+
this._setup();
|
1973
|
+
this._isSetup = true;
|
1974
|
+
}
|
1975
|
+
var listener = {
|
1976
|
+
fn: callback,
|
1977
|
+
_nodes: []
|
1978
|
+
};
|
1979
|
+
this._listeners.push(listener);
|
1980
|
+
this._scheduleNotify();
|
1981
|
+
return listener;
|
1982
|
+
},
|
1983
|
+
removeListener: function (handle) {
|
1984
|
+
var i = this._listeners.indexOf(handle);
|
1985
|
+
if (i >= 0) {
|
1986
|
+
this._listeners.splice(i, 1);
|
1987
|
+
handle._nodes = [];
|
1988
|
+
}
|
1989
|
+
if (!this._hasListeners()) {
|
1990
|
+
this._cleanup();
|
1991
|
+
this._isSetup = false;
|
1992
|
+
}
|
1993
|
+
},
|
1994
|
+
_setup: function () {
|
1995
|
+
this._observeContentElements(this.domApi.childNodes);
|
1996
|
+
},
|
1997
|
+
_cleanup: function () {
|
1998
|
+
this._unobserveContentElements(this.domApi.childNodes);
|
1999
|
+
},
|
2000
|
+
_hasListeners: function () {
|
2001
|
+
return Boolean(this._listeners.length);
|
2002
|
+
},
|
2003
|
+
_scheduleNotify: function () {
|
2004
|
+
if (this._debouncer) {
|
2005
|
+
this._debouncer.stop();
|
2006
|
+
}
|
2007
|
+
this._debouncer = Polymer.Debounce(this._debouncer, this._notify);
|
2008
|
+
this._debouncer.context = this;
|
2009
|
+
Polymer.dom.addDebouncer(this._debouncer);
|
2010
|
+
},
|
2011
|
+
notify: function () {
|
2012
|
+
if (this._hasListeners()) {
|
2013
|
+
this._scheduleNotify();
|
2014
|
+
}
|
2015
|
+
},
|
2016
|
+
_notify: function (mxns) {
|
2017
|
+
this._beforeCallListeners();
|
2018
|
+
this._callListeners();
|
2019
|
+
},
|
2020
|
+
_beforeCallListeners: function () {
|
2021
|
+
this._updateContentElements();
|
2022
|
+
},
|
2023
|
+
_updateContentElements: function () {
|
2024
|
+
this._observeContentElements(this.domApi.childNodes);
|
2025
|
+
},
|
2026
|
+
_observeContentElements: function (elements) {
|
2027
|
+
for (var i = 0, n; i < elements.length && (n = elements[i]); i++) {
|
2028
|
+
if (this._isContent(n)) {
|
2029
|
+
n.__observeNodesMap = n.__observeNodesMap || new WeakMap();
|
2030
|
+
if (!n.__observeNodesMap.has(this)) {
|
2031
|
+
n.__observeNodesMap.set(this, this._observeContent(n));
|
2032
|
+
}
|
2033
|
+
}
|
2034
|
+
}
|
2035
|
+
},
|
2036
|
+
_observeContent: function (content) {
|
2037
|
+
var self = this;
|
2038
|
+
var h = Polymer.dom(content).observeNodes(function () {
|
2039
|
+
self._scheduleNotify();
|
2040
|
+
});
|
2041
|
+
h._avoidChangeCalculation = true;
|
2042
|
+
return h;
|
2043
|
+
},
|
2044
|
+
_unobserveContentElements: function (elements) {
|
2045
|
+
for (var i = 0, n, h; i < elements.length && (n = elements[i]); i++) {
|
2046
|
+
if (this._isContent(n)) {
|
2047
|
+
h = n.__observeNodesMap.get(this);
|
2048
|
+
if (h) {
|
2049
|
+
Polymer.dom(n).unobserveNodes(h);
|
2050
|
+
n.__observeNodesMap.delete(this);
|
2051
|
+
}
|
2052
|
+
}
|
2053
|
+
}
|
2054
|
+
},
|
2055
|
+
_isContent: function (node) {
|
2056
|
+
return node.localName === 'content';
|
2057
|
+
},
|
2058
|
+
_callListeners: function () {
|
2059
|
+
var o$ = this._listeners;
|
2060
|
+
var nodes = this._getEffectiveNodes();
|
2061
|
+
for (var i = 0, o; i < o$.length && (o = o$[i]); i++) {
|
2062
|
+
var info = this._generateListenerInfo(o, nodes);
|
2063
|
+
if (info || o._alwaysNotify) {
|
2064
|
+
this._callListener(o, info);
|
2065
|
+
}
|
2066
|
+
}
|
2067
|
+
},
|
2068
|
+
_getEffectiveNodes: function () {
|
2069
|
+
return this.domApi.getEffectiveChildNodes();
|
2070
|
+
},
|
2071
|
+
_generateListenerInfo: function (listener, newNodes) {
|
2072
|
+
if (listener._avoidChangeCalculation) {
|
2073
|
+
return true;
|
2074
|
+
}
|
2075
|
+
var oldNodes = listener._nodes;
|
2076
|
+
var info = {
|
2077
|
+
target: this.node,
|
2078
|
+
addedNodes: [],
|
2079
|
+
removedNodes: []
|
2080
|
+
};
|
2081
|
+
var splices = Polymer.ArraySplice.calculateSplices(newNodes, oldNodes);
|
2082
|
+
for (var i = 0, s; i < splices.length && (s = splices[i]); i++) {
|
2083
|
+
for (var j = 0, n; j < s.removed.length && (n = s.removed[j]); j++) {
|
2084
|
+
info.removedNodes.push(n);
|
2085
|
+
}
|
2086
|
+
}
|
2087
|
+
for (var i = 0, s; i < splices.length && (s = splices[i]); i++) {
|
2088
|
+
for (var j = s.index; j < s.index + s.addedCount; j++) {
|
2089
|
+
info.addedNodes.push(newNodes[j]);
|
2090
|
+
}
|
2091
|
+
}
|
2092
|
+
listener._nodes = newNodes;
|
2093
|
+
if (info.addedNodes.length || info.removedNodes.length) {
|
2094
|
+
return info;
|
2095
|
+
}
|
2096
|
+
},
|
2097
|
+
_callListener: function (listener, info) {
|
2098
|
+
return listener.fn.call(this.node, info);
|
2099
|
+
},
|
2100
|
+
enableShadowAttributeTracking: function () {
|
2101
|
+
}
|
2102
|
+
};
|
2103
|
+
if (Settings.useShadow) {
|
2104
|
+
var baseSetup = DomApi.EffectiveNodesObserver.prototype._setup;
|
2105
|
+
var baseCleanup = DomApi.EffectiveNodesObserver.prototype._cleanup;
|
2106
|
+
var beforeCallListeners = DomApi.EffectiveNodesObserver.prototype._beforeCallListeners;
|
2107
|
+
Polymer.Base.extend(DomApi.EffectiveNodesObserver.prototype, {
|
2108
|
+
_setup: function () {
|
2109
|
+
if (!this._observer) {
|
2110
|
+
var self = this;
|
2111
|
+
this._mutationHandler = function (mxns) {
|
2112
|
+
if (mxns && mxns.length) {
|
2113
|
+
self._scheduleNotify();
|
2114
|
+
}
|
2115
|
+
};
|
2116
|
+
this._observer = new MutationObserver(this._mutationHandler);
|
2117
|
+
this._boundFlush = function () {
|
2118
|
+
self._flush();
|
2119
|
+
};
|
2120
|
+
Polymer.dom.addStaticFlush(this._boundFlush);
|
2121
|
+
this._observer.observe(this.node, { childList: true });
|
2122
|
+
}
|
2123
|
+
baseSetup.call(this);
|
2124
|
+
},
|
2125
|
+
_cleanup: function () {
|
2126
|
+
this._observer.disconnect();
|
2127
|
+
this._observer = null;
|
2128
|
+
this._mutationHandler = null;
|
2129
|
+
Polymer.dom.removeStaticFlush(this._boundFlush);
|
2130
|
+
baseCleanup.call(this);
|
2131
|
+
},
|
2132
|
+
_flush: function () {
|
2133
|
+
if (this._observer) {
|
2134
|
+
this._mutationHandler(this._observer.takeRecords());
|
2135
|
+
}
|
2136
|
+
},
|
2137
|
+
enableShadowAttributeTracking: function () {
|
2138
|
+
if (this._observer) {
|
2139
|
+
this._makeContentListenersAlwaysNotify();
|
2140
|
+
this._observer.disconnect();
|
2141
|
+
this._observer.observe(this.node, {
|
2142
|
+
childList: true,
|
2143
|
+
attributes: true,
|
2144
|
+
subtree: true
|
2145
|
+
});
|
2146
|
+
var root = this.domApi.getOwnerRoot();
|
2147
|
+
var host = root && root.host;
|
2148
|
+
if (host && Polymer.dom(host).observer) {
|
2149
|
+
Polymer.dom(host).observer.enableShadowAttributeTracking();
|
2150
|
+
}
|
2151
|
+
}
|
2152
|
+
},
|
2153
|
+
_makeContentListenersAlwaysNotify: function () {
|
2154
|
+
for (var i = 0, h; i < this._listeners.length; i++) {
|
2155
|
+
h = this._listeners[i];
|
2156
|
+
h._alwaysNotify = h._isContentListener;
|
2157
|
+
}
|
2158
|
+
}
|
2159
|
+
});
|
2160
|
+
}
|
2161
|
+
}());
|
2162
|
+
(function () {
|
2163
|
+
'use strict';
|
2164
|
+
var DomApi = Polymer.DomApi.ctor;
|
2165
|
+
var Settings = Polymer.Settings;
|
2166
|
+
DomApi.DistributedNodesObserver = function (domApi) {
|
2167
|
+
DomApi.EffectiveNodesObserver.call(this, domApi);
|
2168
|
+
};
|
2169
|
+
DomApi.DistributedNodesObserver.prototype = Object.create(DomApi.EffectiveNodesObserver.prototype);
|
2170
|
+
Polymer.Base.extend(DomApi.DistributedNodesObserver.prototype, {
|
2171
|
+
_setup: function () {
|
2172
|
+
},
|
2173
|
+
_cleanup: function () {
|
2174
|
+
},
|
2175
|
+
_beforeCallListeners: function () {
|
2176
|
+
},
|
2177
|
+
_getEffectiveNodes: function () {
|
2178
|
+
return this.domApi.getDistributedNodes();
|
2179
|
+
}
|
2180
|
+
});
|
2181
|
+
if (Settings.useShadow) {
|
2182
|
+
Polymer.Base.extend(DomApi.DistributedNodesObserver.prototype, {
|
2183
|
+
_setup: function () {
|
2184
|
+
if (!this._observer) {
|
2185
|
+
var root = this.domApi.getOwnerRoot();
|
2186
|
+
var host = root && root.host;
|
2187
|
+
if (host) {
|
2188
|
+
var self = this;
|
2189
|
+
this._observer = Polymer.dom(host).observeNodes(function () {
|
2190
|
+
self._scheduleNotify();
|
2191
|
+
});
|
2192
|
+
this._observer._isContentListener = true;
|
2193
|
+
if (this._hasAttrSelect()) {
|
2194
|
+
Polymer.dom(host).observer.enableShadowAttributeTracking();
|
2195
|
+
}
|
2196
|
+
}
|
2197
|
+
}
|
2198
|
+
},
|
2199
|
+
_hasAttrSelect: function () {
|
2200
|
+
var select = this.node.getAttribute('select');
|
2201
|
+
return select && select.match(/[[.]+/);
|
2202
|
+
},
|
2203
|
+
_cleanup: function () {
|
2204
|
+
var root = this.domApi.getOwnerRoot();
|
2205
|
+
var host = root && root.host;
|
2206
|
+
if (host) {
|
2207
|
+
Polymer.dom(host).unobserveNodes(this._observer);
|
2208
|
+
}
|
2209
|
+
this._observer = null;
|
2210
|
+
}
|
2211
|
+
});
|
2212
|
+
}
|
2213
|
+
}());
|
2214
|
+
(function () {
|
2215
|
+
var hasDomApi = Polymer.DomApi.hasDomApi;
|
2216
|
+
Polymer.Base._addFeature({
|
2217
|
+
_prepShady: function () {
|
2218
|
+
this._useContent = this._useContent || Boolean(this._template);
|
2219
|
+
},
|
2220
|
+
_poolContent: function () {
|
2221
|
+
if (this._useContent) {
|
2222
|
+
saveLightChildrenIfNeeded(this);
|
1764
2223
|
}
|
1765
2224
|
},
|
1766
2225
|
_setupRoot: function () {
|
@@ -1774,6 +2233,7 @@ upgradeLightChildren(this._lightChildren);
|
|
1774
2233
|
_createLocalRoot: function () {
|
1775
2234
|
this.shadyRoot = this.root;
|
1776
2235
|
this.shadyRoot._distributionClean = false;
|
2236
|
+
this.shadyRoot._hasDistributed = false;
|
1777
2237
|
this.shadyRoot._isShadyRoot = true;
|
1778
2238
|
this.shadyRoot._dirtyRoots = [];
|
1779
2239
|
var i$ = this.shadyRoot._insertionPoints = !this._notes || this._notes._hasContent ? this.shadyRoot.querySelectorAll('content') : [];
|
@@ -1824,6 +2284,7 @@ if (this._useContent) {
|
|
1824
2284
|
this.shadyRoot._distributionClean = true;
|
1825
2285
|
if (hasInsertionPoint(this.shadyRoot)) {
|
1826
2286
|
this._composeTree();
|
2287
|
+
notifyContentObservers(this.shadyRoot);
|
1827
2288
|
} else {
|
1828
2289
|
if (!this.shadyRoot._hasDistributed) {
|
1829
2290
|
this.textContent = '';
|
@@ -1834,6 +2295,9 @@ var children = this._composeNode(this);
|
|
1834
2295
|
this._updateChildNodes(this, children);
|
1835
2296
|
}
|
1836
2297
|
}
|
2298
|
+
if (!this.shadyRoot._hasDistributed) {
|
2299
|
+
notifyInitialDistribution(this);
|
2300
|
+
}
|
1837
2301
|
this.shadyRoot._hasDistributed = true;
|
1838
2302
|
}
|
1839
2303
|
},
|
@@ -2051,6 +2515,19 @@ return host.domHost;
|
|
2051
2515
|
}
|
2052
2516
|
}
|
2053
2517
|
}
|
2518
|
+
function notifyContentObservers(root) {
|
2519
|
+
for (var i = 0, c; i < root._insertionPoints.length; i++) {
|
2520
|
+
c = root._insertionPoints[i];
|
2521
|
+
if (hasDomApi(c)) {
|
2522
|
+
Polymer.dom(c).notifyObserver();
|
2523
|
+
}
|
2524
|
+
}
|
2525
|
+
}
|
2526
|
+
function notifyInitialDistribution(host) {
|
2527
|
+
if (hasDomApi(host)) {
|
2528
|
+
Polymer.dom(host).notifyObserver();
|
2529
|
+
}
|
2530
|
+
}
|
2054
2531
|
var needsUpgrade = window.CustomElements && !CustomElements.useNative;
|
2055
2532
|
function upgradeLightChildren(children) {
|
2056
2533
|
if (needsUpgrade && children) {
|
@@ -2083,20 +2560,23 @@ Polymer.DomModule = document.createElement('dom-module');
|
|
2083
2560
|
Polymer.Base._addFeature({
|
2084
2561
|
_registerFeatures: function () {
|
2085
2562
|
this._prepIs();
|
2086
|
-
this._prepAttributes();
|
2087
2563
|
this._prepBehaviors();
|
2088
2564
|
this._prepConstructor();
|
2089
2565
|
this._prepTemplate();
|
2090
2566
|
this._prepShady();
|
2567
|
+
this._prepPropertyInfo();
|
2091
2568
|
},
|
2092
2569
|
_prepBehavior: function (b) {
|
2093
2570
|
this._addHostAttributes(b.hostAttributes);
|
2094
2571
|
},
|
2095
2572
|
_initFeatures: function () {
|
2573
|
+
this._registerHost();
|
2574
|
+
if (this._template) {
|
2096
2575
|
this._poolContent();
|
2097
|
-
this.
|
2576
|
+
this._beginHosting();
|
2098
2577
|
this._stampTemplate();
|
2099
|
-
this.
|
2578
|
+
this._endHosting();
|
2579
|
+
}
|
2100
2580
|
this._marshalHostAttributes();
|
2101
2581
|
this._setupDebouncers();
|
2102
2582
|
this._marshalBehaviors();
|
@@ -2111,35 +2591,79 @@ Polymer.Annotations = {
|
|
2111
2591
|
parseAnnotations: function (template) {
|
2112
2592
|
var list = [];
|
2113
2593
|
var content = template._content || template.content;
|
2114
|
-
this._parseNodeAnnotations(content, list);
|
2594
|
+
this._parseNodeAnnotations(content, list, template.hasAttribute('strip-whitespace'));
|
2115
2595
|
return list;
|
2116
2596
|
},
|
2117
|
-
_parseNodeAnnotations: function (node, list) {
|
2118
|
-
return node.nodeType === Node.TEXT_NODE ? this._parseTextNodeAnnotation(node, list) : this._parseElementAnnotations(node, list);
|
2597
|
+
_parseNodeAnnotations: function (node, list, stripWhiteSpace) {
|
2598
|
+
return node.nodeType === Node.TEXT_NODE ? this._parseTextNodeAnnotation(node, list) : this._parseElementAnnotations(node, list, stripWhiteSpace);
|
2599
|
+
},
|
2600
|
+
_bindingRegex: /([^{[]*)(\{\{|\[\[)(?!\}\}|\]\])(.+?)(?:\]\]|\}\})/g,
|
2601
|
+
_parseBindings: function (text) {
|
2602
|
+
var re = this._bindingRegex;
|
2603
|
+
var parts = [];
|
2604
|
+
var m, lastIndex;
|
2605
|
+
while ((m = re.exec(text)) !== null) {
|
2606
|
+
if (m[1]) {
|
2607
|
+
parts.push({ literal: m[1] });
|
2608
|
+
}
|
2609
|
+
var mode = m[2][0];
|
2610
|
+
var value = m[3].trim();
|
2611
|
+
var negate = false;
|
2612
|
+
if (value[0] == '!') {
|
2613
|
+
negate = true;
|
2614
|
+
value = value.substring(1).trim();
|
2615
|
+
}
|
2616
|
+
var customEvent, notifyEvent, colon;
|
2617
|
+
if (mode == '{' && (colon = value.indexOf('::')) > 0) {
|
2618
|
+
notifyEvent = value.substring(colon + 2);
|
2619
|
+
value = value.substring(0, colon);
|
2620
|
+
customEvent = true;
|
2621
|
+
}
|
2622
|
+
parts.push({
|
2623
|
+
compoundIndex: parts.length,
|
2624
|
+
value: value,
|
2625
|
+
mode: mode,
|
2626
|
+
negate: negate,
|
2627
|
+
event: notifyEvent,
|
2628
|
+
customEvent: customEvent
|
2629
|
+
});
|
2630
|
+
lastIndex = re.lastIndex;
|
2631
|
+
}
|
2632
|
+
if (lastIndex && lastIndex < text.length) {
|
2633
|
+
var literal = text.substring(lastIndex);
|
2634
|
+
if (literal) {
|
2635
|
+
parts.push({ literal: literal });
|
2636
|
+
}
|
2637
|
+
}
|
2638
|
+
if (parts.length) {
|
2639
|
+
return parts;
|
2640
|
+
}
|
2119
2641
|
},
|
2120
|
-
|
2121
|
-
var
|
2122
|
-
|
2123
|
-
|
2642
|
+
_literalFromParts: function (parts) {
|
2643
|
+
var s = '';
|
2644
|
+
for (var i = 0; i < parts.length; i++) {
|
2645
|
+
var literal = parts[i].literal;
|
2646
|
+
s += literal || '';
|
2124
2647
|
}
|
2648
|
+
return s;
|
2125
2649
|
},
|
2126
2650
|
_parseTextNodeAnnotation: function (node, list) {
|
2127
|
-
var
|
2128
|
-
|
2129
|
-
|
2130
|
-
node.textContent = ' ';
|
2651
|
+
var parts = this._parseBindings(node.textContent);
|
2652
|
+
if (parts) {
|
2653
|
+
node.textContent = this._literalFromParts(parts) || ' ';
|
2131
2654
|
var annote = {
|
2132
2655
|
bindings: [{
|
2133
2656
|
kind: 'text',
|
2134
|
-
|
2135
|
-
|
2657
|
+
name: 'textContent',
|
2658
|
+
parts: parts,
|
2659
|
+
isCompound: parts.length !== 1
|
2136
2660
|
}]
|
2137
2661
|
};
|
2138
2662
|
list.push(annote);
|
2139
2663
|
return annote;
|
2140
2664
|
}
|
2141
2665
|
},
|
2142
|
-
_parseElementAnnotations: function (element, list) {
|
2666
|
+
_parseElementAnnotations: function (element, list, stripWhiteSpace) {
|
2143
2667
|
var annote = {
|
2144
2668
|
bindings: [],
|
2145
2669
|
events: []
|
@@ -2147,7 +2671,7 @@ events: []
|
|
2147
2671
|
if (element.localName === 'content') {
|
2148
2672
|
list._hasContent = true;
|
2149
2673
|
}
|
2150
|
-
this._parseChildNodesAnnotations(element, annote, list);
|
2674
|
+
this._parseChildNodesAnnotations(element, annote, list, stripWhiteSpace);
|
2151
2675
|
if (element.attributes) {
|
2152
2676
|
this._parseNodeAttributeAnnotations(element, annote, list);
|
2153
2677
|
if (this.prepElement) {
|
@@ -2159,26 +2683,38 @@ list.push(annote);
|
|
2159
2683
|
}
|
2160
2684
|
return annote;
|
2161
2685
|
},
|
2162
|
-
_parseChildNodesAnnotations: function (root, annote, list,
|
2686
|
+
_parseChildNodesAnnotations: function (root, annote, list, stripWhiteSpace) {
|
2163
2687
|
if (root.firstChild) {
|
2164
|
-
|
2688
|
+
var node = root.firstChild;
|
2689
|
+
var i = 0;
|
2690
|
+
while (node) {
|
2691
|
+
var next = node.nextSibling;
|
2165
2692
|
if (node.localName === 'template' && !node.hasAttribute('preserve-content')) {
|
2166
2693
|
this._parseTemplate(node, i, list, annote);
|
2167
2694
|
}
|
2168
2695
|
if (node.nodeType === Node.TEXT_NODE) {
|
2169
|
-
var n =
|
2696
|
+
var n = next;
|
2170
2697
|
while (n && n.nodeType === Node.TEXT_NODE) {
|
2171
2698
|
node.textContent += n.textContent;
|
2699
|
+
next = n.nextSibling;
|
2172
2700
|
root.removeChild(n);
|
2173
|
-
n =
|
2701
|
+
n = next;
|
2702
|
+
}
|
2703
|
+
if (stripWhiteSpace && !node.textContent.trim()) {
|
2704
|
+
root.removeChild(node);
|
2705
|
+
i--;
|
2174
2706
|
}
|
2175
2707
|
}
|
2176
|
-
|
2708
|
+
if (node.parentNode) {
|
2709
|
+
var childAnnotation = this._parseNodeAnnotations(node, list, stripWhiteSpace);
|
2177
2710
|
if (childAnnotation) {
|
2178
2711
|
childAnnotation.parent = annote;
|
2179
2712
|
childAnnotation.index = i;
|
2180
2713
|
}
|
2181
2714
|
}
|
2715
|
+
node = next;
|
2716
|
+
i++;
|
2717
|
+
}
|
2182
2718
|
}
|
2183
2719
|
},
|
2184
2720
|
_parseTemplate: function (node, index, list, parent) {
|
@@ -2194,62 +2730,50 @@ index: index
|
|
2194
2730
|
});
|
2195
2731
|
},
|
2196
2732
|
_parseNodeAttributeAnnotations: function (node, annotation) {
|
2197
|
-
|
2198
|
-
var
|
2199
|
-
|
2200
|
-
|
2201
|
-
|
2733
|
+
var attrs = Array.prototype.slice.call(node.attributes);
|
2734
|
+
for (var i = attrs.length - 1, a; a = attrs[i]; i--) {
|
2735
|
+
var n = a.name;
|
2736
|
+
var v = a.value;
|
2737
|
+
var b;
|
2738
|
+
if (n.slice(0, 3) === 'on-') {
|
2202
2739
|
node.removeAttribute(n);
|
2203
2740
|
annotation.events.push({
|
2204
2741
|
name: n.slice(3),
|
2205
2742
|
value: v
|
2206
2743
|
});
|
2207
|
-
} else {
|
2208
|
-
var b = this._parseNodeAttributeAnnotation(node, n, v);
|
2209
|
-
if (b) {
|
2744
|
+
} else if (b = this._parseNodeAttributeAnnotation(node, n, v)) {
|
2210
2745
|
annotation.bindings.push(b);
|
2211
|
-
}
|
2746
|
+
} else if (n === 'id') {
|
2747
|
+
annotation.id = v;
|
2212
2748
|
}
|
2213
2749
|
}
|
2214
2750
|
},
|
2215
|
-
_parseNodeAttributeAnnotation: function (node,
|
2216
|
-
var
|
2217
|
-
if (
|
2218
|
-
var
|
2219
|
-
var name = n;
|
2220
|
-
var mode = escape[0];
|
2221
|
-
v = v.slice(2, -2).trim();
|
2222
|
-
var not = false;
|
2223
|
-
if (v[0] == '!') {
|
2224
|
-
v = v.substring(1);
|
2225
|
-
not = true;
|
2226
|
-
}
|
2751
|
+
_parseNodeAttributeAnnotation: function (node, name, value) {
|
2752
|
+
var parts = this._parseBindings(value);
|
2753
|
+
if (parts) {
|
2754
|
+
var origName = name;
|
2227
2755
|
var kind = 'property';
|
2228
|
-
if (
|
2229
|
-
name =
|
2756
|
+
if (name[name.length - 1] == '$') {
|
2757
|
+
name = name.slice(0, -1);
|
2230
2758
|
kind = 'attribute';
|
2231
2759
|
}
|
2232
|
-
var
|
2233
|
-
if (
|
2234
|
-
|
2235
|
-
v = v.substring(0, colon);
|
2236
|
-
customEvent = true;
|
2760
|
+
var literal = this._literalFromParts(parts);
|
2761
|
+
if (literal && kind == 'attribute') {
|
2762
|
+
node.setAttribute(name, literal);
|
2237
2763
|
}
|
2238
|
-
if (node.localName == 'input' &&
|
2239
|
-
node.setAttribute(
|
2764
|
+
if (node.localName == 'input' && name == 'value') {
|
2765
|
+
node.setAttribute(origName, '');
|
2240
2766
|
}
|
2241
|
-
node.removeAttribute(
|
2767
|
+
node.removeAttribute(origName);
|
2242
2768
|
if (kind === 'property') {
|
2243
2769
|
name = Polymer.CaseMap.dashToCamelCase(name);
|
2244
2770
|
}
|
2245
2771
|
return {
|
2246
2772
|
kind: kind,
|
2247
|
-
mode: mode,
|
2248
2773
|
name: name,
|
2249
|
-
|
2250
|
-
|
2251
|
-
|
2252
|
-
customEvent: customEvent
|
2774
|
+
parts: parts,
|
2775
|
+
literal: literal,
|
2776
|
+
isCompound: parts.length !== 1
|
2253
2777
|
};
|
2254
2778
|
}
|
2255
2779
|
},
|
@@ -2325,7 +2849,10 @@ _prepAnnotations: function () {
|
|
2325
2849
|
if (!this._template) {
|
2326
2850
|
this._notes = [];
|
2327
2851
|
} else {
|
2328
|
-
|
2852
|
+
var self = this;
|
2853
|
+
Polymer.Annotations.prepElement = function (element) {
|
2854
|
+
self._prepElement(element);
|
2855
|
+
};
|
2329
2856
|
if (this._template._content && this._template._content._notes) {
|
2330
2857
|
this._notes = this._template._content._notes;
|
2331
2858
|
} else {
|
@@ -2340,9 +2867,14 @@ for (var i = 0; i < notes.length; i++) {
|
|
2340
2867
|
var note = notes[i];
|
2341
2868
|
for (var j = 0; j < note.bindings.length; j++) {
|
2342
2869
|
var b = note.bindings[j];
|
2343
|
-
|
2344
|
-
|
2345
|
-
|
2870
|
+
for (var k = 0; k < b.parts.length; k++) {
|
2871
|
+
var p = b.parts[k];
|
2872
|
+
if (!p.literal) {
|
2873
|
+
p.signature = this._parseMethod(p.value);
|
2874
|
+
if (!p.signature) {
|
2875
|
+
p.model = this._modelForPath(p.value);
|
2876
|
+
}
|
2877
|
+
}
|
2346
2878
|
}
|
2347
2879
|
}
|
2348
2880
|
if (note.templateContent) {
|
@@ -2353,10 +2885,12 @@ for (var prop in pp) {
|
|
2353
2885
|
bindings.push({
|
2354
2886
|
index: note.index,
|
2355
2887
|
kind: 'property',
|
2356
|
-
mode: '{',
|
2357
2888
|
name: '_parent_' + prop,
|
2889
|
+
parts: [{
|
2890
|
+
mode: '{',
|
2358
2891
|
model: prop,
|
2359
2892
|
value: prop
|
2893
|
+
}]
|
2360
2894
|
});
|
2361
2895
|
}
|
2362
2896
|
note.bindings = note.bindings.concat(bindings);
|
@@ -2365,22 +2899,24 @@ note.bindings = note.bindings.concat(bindings);
|
|
2365
2899
|
},
|
2366
2900
|
_discoverTemplateParentProps: function (notes) {
|
2367
2901
|
var pp = {};
|
2368
|
-
notes.
|
2369
|
-
n.bindings
|
2370
|
-
|
2371
|
-
|
2372
|
-
|
2373
|
-
|
2902
|
+
for (var i = 0, n; i < notes.length && (n = notes[i]); i++) {
|
2903
|
+
for (var j = 0, b$ = n.bindings, b; j < b$.length && (b = b$[j]); j++) {
|
2904
|
+
for (var k = 0, p$ = b.parts, p; k < p$.length && (p = p$[k]); k++) {
|
2905
|
+
if (p.signature) {
|
2906
|
+
var args = p.signature.args;
|
2907
|
+
for (var kk = 0; kk < args.length; kk++) {
|
2908
|
+
pp[args[kk].model] = true;
|
2374
2909
|
}
|
2375
2910
|
} else {
|
2376
|
-
pp[
|
2911
|
+
pp[p.model] = true;
|
2912
|
+
}
|
2913
|
+
}
|
2377
2914
|
}
|
2378
|
-
});
|
2379
2915
|
if (n.templateContent) {
|
2380
2916
|
var tpp = n.templateContent._parentProps;
|
2381
2917
|
Polymer.Base.mixin(pp, tpp);
|
2382
2918
|
}
|
2383
|
-
}
|
2919
|
+
}
|
2384
2920
|
return pp;
|
2385
2921
|
},
|
2386
2922
|
_prepElement: function (element) {
|
@@ -2394,60 +2930,98 @@ this._marshalAnnotatedNodes();
|
|
2394
2930
|
this._marshalAnnotatedListeners();
|
2395
2931
|
}
|
2396
2932
|
},
|
2397
|
-
_configureAnnotationReferences: function () {
|
2398
|
-
this.
|
2933
|
+
_configureAnnotationReferences: function (config) {
|
2934
|
+
var notes = this._notes;
|
2935
|
+
var nodes = this._nodes;
|
2936
|
+
for (var i = 0; i < notes.length; i++) {
|
2937
|
+
var note = notes[i];
|
2938
|
+
var node = nodes[i];
|
2939
|
+
this._configureTemplateContent(note, node);
|
2940
|
+
this._configureCompoundBindings(note, node);
|
2941
|
+
}
|
2399
2942
|
},
|
2400
|
-
_configureTemplateContent: function () {
|
2401
|
-
this._notes.forEach(function (note, i) {
|
2943
|
+
_configureTemplateContent: function (note, node) {
|
2402
2944
|
if (note.templateContent) {
|
2403
|
-
|
2945
|
+
node._content = note.templateContent;
|
2946
|
+
}
|
2947
|
+
},
|
2948
|
+
_configureCompoundBindings: function (note, node) {
|
2949
|
+
var bindings = note.bindings;
|
2950
|
+
for (var i = 0; i < bindings.length; i++) {
|
2951
|
+
var binding = bindings[i];
|
2952
|
+
if (binding.isCompound) {
|
2953
|
+
var storage = node.__compoundStorage__ || (node.__compoundStorage__ = {});
|
2954
|
+
var parts = binding.parts;
|
2955
|
+
var literals = new Array(parts.length);
|
2956
|
+
for (var j = 0; j < parts.length; j++) {
|
2957
|
+
literals[j] = parts[j].literal;
|
2958
|
+
}
|
2959
|
+
var name = binding.name;
|
2960
|
+
storage[name] = literals;
|
2961
|
+
if (binding.literal && binding.kind == 'property') {
|
2962
|
+
if (node._configValue) {
|
2963
|
+
node._configValue(name, binding.literal);
|
2964
|
+
} else {
|
2965
|
+
node[name] = binding.literal;
|
2966
|
+
}
|
2967
|
+
}
|
2968
|
+
}
|
2404
2969
|
}
|
2405
|
-
}, this);
|
2406
2970
|
},
|
2407
2971
|
_marshalIdNodes: function () {
|
2408
2972
|
this.$ = {};
|
2409
|
-
this._notes.
|
2973
|
+
for (var i = 0, l = this._notes.length, a; i < l && (a = this._notes[i]); i++) {
|
2410
2974
|
if (a.id) {
|
2411
2975
|
this.$[a.id] = this._findAnnotatedNode(this.root, a);
|
2412
2976
|
}
|
2413
|
-
}
|
2977
|
+
}
|
2414
2978
|
},
|
2415
2979
|
_marshalAnnotatedNodes: function () {
|
2416
|
-
if (this.
|
2417
|
-
|
2418
|
-
|
2419
|
-
|
2980
|
+
if (this._notes && this._notes.length) {
|
2981
|
+
var r = new Array(this._notes.length);
|
2982
|
+
for (var i = 0; i < this._notes.length; i++) {
|
2983
|
+
r[i] = this._findAnnotatedNode(this.root, this._notes[i]);
|
2984
|
+
}
|
2985
|
+
this._nodes = r;
|
2420
2986
|
}
|
2421
2987
|
},
|
2422
2988
|
_marshalAnnotatedListeners: function () {
|
2423
|
-
this._notes.
|
2989
|
+
for (var i = 0, l = this._notes.length, a; i < l && (a = this._notes[i]); i++) {
|
2424
2990
|
if (a.events && a.events.length) {
|
2425
2991
|
var node = this._findAnnotatedNode(this.root, a);
|
2426
|
-
a.events
|
2992
|
+
for (var j = 0, e$ = a.events, e; j < e$.length && (e = e$[j]); j++) {
|
2427
2993
|
this.listen(node, e.name, e.value);
|
2428
|
-
}, this);
|
2429
2994
|
}
|
2430
|
-
}
|
2995
|
+
}
|
2996
|
+
}
|
2431
2997
|
}
|
2432
2998
|
});
|
2433
2999
|
Polymer.Base._addFeature({
|
2434
3000
|
listeners: {},
|
2435
3001
|
_listenListeners: function (listeners) {
|
2436
|
-
var node, name,
|
2437
|
-
for (
|
2438
|
-
if (
|
3002
|
+
var node, name, eventName;
|
3003
|
+
for (eventName in listeners) {
|
3004
|
+
if (eventName.indexOf('.') < 0) {
|
2439
3005
|
node = this;
|
2440
|
-
name =
|
3006
|
+
name = eventName;
|
2441
3007
|
} else {
|
2442
|
-
name =
|
3008
|
+
name = eventName.split('.');
|
2443
3009
|
node = this.$[name[0]];
|
2444
3010
|
name = name[1];
|
2445
3011
|
}
|
2446
|
-
this.listen(node, name, listeners[
|
3012
|
+
this.listen(node, name, listeners[eventName]);
|
2447
3013
|
}
|
2448
3014
|
},
|
2449
3015
|
listen: function (node, eventName, methodName) {
|
2450
|
-
this.
|
3016
|
+
var handler = this._recallEventHandler(this, eventName, node, methodName);
|
3017
|
+
if (!handler) {
|
3018
|
+
handler = this._createEventHandler(node, eventName, methodName);
|
3019
|
+
}
|
3020
|
+
if (handler._listening) {
|
3021
|
+
return;
|
3022
|
+
}
|
3023
|
+
this._listen(node, eventName, handler);
|
3024
|
+
handler._listening = true;
|
2451
3025
|
},
|
2452
3026
|
_boundListenerKey: function (eventName, methodName) {
|
2453
3027
|
return eventName + ':' + methodName;
|
@@ -2486,6 +3060,7 @@ host[methodName](e, e.detail);
|
|
2486
3060
|
host._warn(host._logf('_createEventHandler', 'listener method `' + methodName + '` not defined'));
|
2487
3061
|
}
|
2488
3062
|
};
|
3063
|
+
handler._listening = false;
|
2489
3064
|
this._recordEventHandler(host, eventName, node, methodName, handler);
|
2490
3065
|
return handler;
|
2491
3066
|
},
|
@@ -2493,6 +3068,7 @@ unlisten: function (node, eventName, methodName) {
|
|
2493
3068
|
var handler = this._recallEventHandler(this, eventName, node, methodName);
|
2494
3069
|
if (handler) {
|
2495
3070
|
this._unlisten(node, eventName, handler);
|
3071
|
+
handler._listening = false;
|
2496
3072
|
}
|
2497
3073
|
},
|
2498
3074
|
_listen: function (node, eventName, handler) {
|
@@ -2504,6 +3080,7 @@ node.removeEventListener(eventName, handler);
|
|
2504
3080
|
});
|
2505
3081
|
(function () {
|
2506
3082
|
'use strict';
|
3083
|
+
var wrap = Polymer.DomApi.wrap;
|
2507
3084
|
var HAS_NATIVE_TA = typeof document.head.style.touchAction === 'string';
|
2508
3085
|
var GESTURE_KEY = '__polymerGestures';
|
2509
3086
|
var HANDLED_OBJ = '__polymerGesturesHandled';
|
@@ -2654,8 +3231,11 @@ return ev.target;
|
|
2654
3231
|
handleNative: function (ev) {
|
2655
3232
|
var handled;
|
2656
3233
|
var type = ev.type;
|
2657
|
-
var node = ev.currentTarget;
|
3234
|
+
var node = wrap(ev.currentTarget);
|
2658
3235
|
var gobj = node[GESTURE_KEY];
|
3236
|
+
if (!gobj) {
|
3237
|
+
return;
|
3238
|
+
}
|
2659
3239
|
var gs = gobj[type];
|
2660
3240
|
if (!gs) {
|
2661
3241
|
return;
|
@@ -2738,6 +3318,7 @@ Gestures.prevent('track');
|
|
2738
3318
|
}
|
2739
3319
|
},
|
2740
3320
|
add: function (node, evType, handler) {
|
3321
|
+
node = wrap(node);
|
2741
3322
|
var recognizer = this.gestures[evType];
|
2742
3323
|
var deps = recognizer.deps;
|
2743
3324
|
var name = recognizer.name;
|
@@ -2766,6 +3347,7 @@ this.setTouchAction(node, recognizer.touchAction);
|
|
2766
3347
|
}
|
2767
3348
|
},
|
2768
3349
|
remove: function (node, evType, handler) {
|
3350
|
+
node = wrap(node);
|
2769
3351
|
var recognizer = this.gestures[evType];
|
2770
3352
|
var deps = recognizer.deps;
|
2771
3353
|
var name = recognizer.name;
|
@@ -2892,7 +3474,9 @@ Gestures.fire(target, type, {
|
|
2892
3474
|
x: event.clientX,
|
2893
3475
|
y: event.clientY,
|
2894
3476
|
sourceEvent: event,
|
2895
|
-
prevent:
|
3477
|
+
prevent: function (e) {
|
3478
|
+
return Gestures.prevent(e);
|
3479
|
+
}
|
2896
3480
|
});
|
2897
3481
|
}
|
2898
3482
|
});
|
@@ -3184,12 +3768,17 @@ this._callbacks.splice(0, len);
|
|
3184
3768
|
this._lastVal += len;
|
3185
3769
|
}
|
3186
3770
|
};
|
3187
|
-
new
|
3771
|
+
new window.MutationObserver(function () {
|
3772
|
+
Polymer.Async._atEndOfMicrotask();
|
3773
|
+
}).observe(Polymer.Async._twiddle, { characterData: true });
|
3188
3774
|
Polymer.Debounce = function () {
|
3189
3775
|
var Async = Polymer.Async;
|
3190
3776
|
var Debouncer = function (context) {
|
3191
3777
|
this.context = context;
|
3192
|
-
|
3778
|
+
var self = this;
|
3779
|
+
this.boundComplete = function () {
|
3780
|
+
self.complete();
|
3781
|
+
};
|
3193
3782
|
};
|
3194
3783
|
Debouncer.prototype = {
|
3195
3784
|
go: function (callback, wait) {
|
@@ -3266,6 +3855,32 @@ if (toElement) {
|
|
3266
3855
|
Polymer.dom(toElement).setAttribute(name, '');
|
3267
3856
|
}
|
3268
3857
|
},
|
3858
|
+
getEffectiveChildNodes: function () {
|
3859
|
+
return Polymer.dom(this).getEffectiveChildNodes();
|
3860
|
+
},
|
3861
|
+
getEffectiveChildren: function () {
|
3862
|
+
var list = Polymer.dom(this).getEffectiveChildNodes();
|
3863
|
+
return list.filter(function (n) {
|
3864
|
+
return n.nodeType === Node.ELEMENT_NODE;
|
3865
|
+
});
|
3866
|
+
},
|
3867
|
+
getEffectiveTextContent: function () {
|
3868
|
+
var cn = this.getEffectiveChildNodes();
|
3869
|
+
var tc = [];
|
3870
|
+
for (var i = 0, c; c = cn[i]; i++) {
|
3871
|
+
if (c.nodeType !== Node.COMMENT_NODE) {
|
3872
|
+
tc.push(Polymer.dom(c).textContent);
|
3873
|
+
}
|
3874
|
+
}
|
3875
|
+
return tc.join('');
|
3876
|
+
},
|
3877
|
+
queryEffectiveChildren: function (slctr) {
|
3878
|
+
var e$ = Polymer.dom(this).queryDistributedElements(slctr);
|
3879
|
+
return e$ && e$[0];
|
3880
|
+
},
|
3881
|
+
queryAllEffectiveChildren: function (slctr) {
|
3882
|
+
return Polymer.dom(this).queryDistributedElements(slctr);
|
3883
|
+
},
|
3269
3884
|
getContentChildNodes: function (slctr) {
|
3270
3885
|
var content = Polymer.dom(this.root).querySelector(slctr || 'content');
|
3271
3886
|
return content ? Polymer.dom(content).getDistributedNodes() : [];
|
@@ -3278,19 +3893,37 @@ return n.nodeType === Node.ELEMENT_NODE;
|
|
3278
3893
|
fire: function (type, detail, options) {
|
3279
3894
|
options = options || Polymer.nob;
|
3280
3895
|
var node = options.node || this;
|
3281
|
-
var detail = detail === null || detail === undefined ?
|
3896
|
+
var detail = detail === null || detail === undefined ? {} : detail;
|
3282
3897
|
var bubbles = options.bubbles === undefined ? true : options.bubbles;
|
3283
3898
|
var cancelable = Boolean(options.cancelable);
|
3284
|
-
var
|
3899
|
+
var useCache = options._useCache;
|
3900
|
+
var event = this._getEvent(type, bubbles, cancelable, useCache);
|
3901
|
+
event.detail = detail;
|
3902
|
+
if (useCache) {
|
3903
|
+
this.__eventCache[type] = null;
|
3904
|
+
}
|
3905
|
+
node.dispatchEvent(event);
|
3906
|
+
if (useCache) {
|
3907
|
+
this.__eventCache[type] = event;
|
3908
|
+
}
|
3909
|
+
return event;
|
3910
|
+
},
|
3911
|
+
__eventCache: {},
|
3912
|
+
_getEvent: function (type, bubbles, cancelable, useCache) {
|
3913
|
+
var event = useCache && this.__eventCache[type];
|
3914
|
+
if (!event || (event.bubbles != bubbles || event.cancelable != cancelable)) {
|
3915
|
+
event = new Event(type, {
|
3285
3916
|
bubbles: Boolean(bubbles),
|
3286
|
-
cancelable: cancelable
|
3287
|
-
detail: detail
|
3917
|
+
cancelable: cancelable
|
3288
3918
|
});
|
3289
|
-
|
3919
|
+
}
|
3290
3920
|
return event;
|
3291
3921
|
},
|
3292
3922
|
async: function (callback, waitTime) {
|
3293
|
-
|
3923
|
+
var self = this;
|
3924
|
+
return Polymer.Async.run(function () {
|
3925
|
+
callback.call(self);
|
3926
|
+
}, waitTime);
|
3294
3927
|
},
|
3295
3928
|
cancelAsync: function (handle) {
|
3296
3929
|
Polymer.Async.cancel(handle);
|
@@ -3303,7 +3936,7 @@ if (index >= 0) {
|
|
3303
3936
|
return path.splice(index, 1);
|
3304
3937
|
}
|
3305
3938
|
} else {
|
3306
|
-
var arr = this.
|
3939
|
+
var arr = this._get(path);
|
3307
3940
|
index = arr.indexOf(item);
|
3308
3941
|
if (index >= 0) {
|
3309
3942
|
return this.splice(path, index, 1);
|
@@ -3323,11 +3956,16 @@ importHref: function (href, onload, onerror) {
|
|
3323
3956
|
var l = document.createElement('link');
|
3324
3957
|
l.rel = 'import';
|
3325
3958
|
l.href = href;
|
3959
|
+
var self = this;
|
3326
3960
|
if (onload) {
|
3327
|
-
l.onload =
|
3961
|
+
l.onload = function (e) {
|
3962
|
+
return onload.call(self, e);
|
3963
|
+
};
|
3328
3964
|
}
|
3329
3965
|
if (onerror) {
|
3330
|
-
l.onerror =
|
3966
|
+
l.onerror = function (e) {
|
3967
|
+
return onerror.call(self, e);
|
3968
|
+
};
|
3331
3969
|
}
|
3332
3970
|
document.head.appendChild(l);
|
3333
3971
|
return l;
|
@@ -3340,20 +3978,27 @@ elt[n] = props[n];
|
|
3340
3978
|
}
|
3341
3979
|
}
|
3342
3980
|
return elt;
|
3981
|
+
},
|
3982
|
+
isLightDescendant: function (node) {
|
3983
|
+
return this !== node && this.contains(node) && Polymer.dom(this).getOwnerRoot() === Polymer.dom(node).getOwnerRoot();
|
3984
|
+
},
|
3985
|
+
isLocalDescendant: function (node) {
|
3986
|
+
return this.root === Polymer.dom(node).getOwnerRoot();
|
3343
3987
|
}
|
3344
3988
|
});
|
3345
3989
|
Polymer.Bind = {
|
3990
|
+
_dataEventCache: {},
|
3346
3991
|
prepareModel: function (model) {
|
3347
|
-
model._propertyEffects = {};
|
3348
|
-
model._bindListeners = [];
|
3349
3992
|
Polymer.Base.mixin(model, this._modelApi);
|
3350
3993
|
},
|
3351
3994
|
_modelApi: {
|
3352
|
-
_notifyChange: function (
|
3353
|
-
|
3354
|
-
Polymer.
|
3995
|
+
_notifyChange: function (source, event, value) {
|
3996
|
+
value = value === undefined ? this[source] : value;
|
3997
|
+
event = event || Polymer.CaseMap.camelToDashCase(source) + '-changed';
|
3998
|
+
this.fire(event, { value: value }, {
|
3355
3999
|
bubbles: false,
|
3356
|
-
|
4000
|
+
cancelable: false,
|
4001
|
+
_useCache: true
|
3357
4002
|
});
|
3358
4003
|
},
|
3359
4004
|
_propertySetter: function (property, value, effects, fromAbove) {
|
@@ -3382,12 +4027,9 @@ node[property] = value;
|
|
3382
4027
|
}
|
3383
4028
|
},
|
3384
4029
|
_effectEffects: function (property, value, effects, old, fromAbove) {
|
3385
|
-
effects.
|
3386
|
-
|
3387
|
-
if (fn) {
|
3388
|
-
fn.call(this, property, value, fx.effect, old, fromAbove);
|
4030
|
+
for (var i = 0, l = effects.length, fx; i < l && (fx = effects[i]); i++) {
|
4031
|
+
fx.fn.call(this, property, value, fx.effect, old, fromAbove);
|
3389
4032
|
}
|
3390
|
-
}, this);
|
3391
4033
|
},
|
3392
4034
|
_clearPath: function (path) {
|
3393
4035
|
for (var prop in this.__data__) {
|
@@ -3398,6 +4040,9 @@ this.__data__[prop] = undefined;
|
|
3398
4040
|
}
|
3399
4041
|
},
|
3400
4042
|
ensurePropertyEffects: function (model, property) {
|
4043
|
+
if (!model._propertyEffects) {
|
4044
|
+
model._propertyEffects = {};
|
4045
|
+
}
|
3401
4046
|
var fx = model._propertyEffects[property];
|
3402
4047
|
if (!fx) {
|
3403
4048
|
fx = model._propertyEffects[property] = [];
|
@@ -3406,10 +4051,13 @@ return fx;
|
|
3406
4051
|
},
|
3407
4052
|
addPropertyEffect: function (model, property, kind, effect) {
|
3408
4053
|
var fx = this.ensurePropertyEffects(model, property);
|
3409
|
-
|
4054
|
+
var propEffect = {
|
3410
4055
|
kind: kind,
|
3411
|
-
effect: effect
|
3412
|
-
|
4056
|
+
effect: effect,
|
4057
|
+
fn: Polymer.Bind['_' + kind + 'Effect']
|
4058
|
+
};
|
4059
|
+
fx.push(propEffect);
|
4060
|
+
return propEffect;
|
3413
4061
|
},
|
3414
4062
|
createBindings: function (model) {
|
3415
4063
|
var fx$ = model._propertyEffects;
|
@@ -3459,7 +4107,10 @@ upper: function (name) {
|
|
3459
4107
|
return name[0].toUpperCase() + name.substring(1);
|
3460
4108
|
},
|
3461
4109
|
_addAnnotatedListener: function (model, index, property, path, event) {
|
3462
|
-
|
4110
|
+
if (!model._bindListeners) {
|
4111
|
+
model._bindListeners = [];
|
4112
|
+
}
|
4113
|
+
var fn = this._notedListenerFactory(property, path, this._isStructured(path));
|
3463
4114
|
var eventName = event || Polymer.CaseMap.camelToDashCase(property) + '-changed';
|
3464
4115
|
model._bindListeners.push({
|
3465
4116
|
index: index,
|
@@ -3475,54 +4126,59 @@ return path.indexOf('.') > 0;
|
|
3475
4126
|
_isEventBogus: function (e, target) {
|
3476
4127
|
return e.path && e.path[0] !== target;
|
3477
4128
|
},
|
3478
|
-
_notedListenerFactory: function (property, path, isStructured
|
3479
|
-
return function (
|
3480
|
-
if (
|
3481
|
-
|
3482
|
-
this.notifyPath(this._fixPath(path, property, e.detail.path), e.detail.value);
|
4129
|
+
_notedListenerFactory: function (property, path, isStructured) {
|
4130
|
+
return function (target, value, targetPath) {
|
4131
|
+
if (targetPath) {
|
4132
|
+
this._notifyPath(this._fixPath(path, property, targetPath), value);
|
3483
4133
|
} else {
|
3484
|
-
|
4134
|
+
value = target[property];
|
3485
4135
|
if (!isStructured) {
|
3486
|
-
this[path] =
|
4136
|
+
this[path] = value;
|
3487
4137
|
} else {
|
3488
4138
|
if (this.__data__[path] != value) {
|
3489
4139
|
this.set(path, value);
|
3490
4140
|
}
|
3491
4141
|
}
|
3492
4142
|
}
|
3493
|
-
}
|
3494
4143
|
};
|
3495
4144
|
},
|
3496
4145
|
prepareInstance: function (inst) {
|
3497
4146
|
inst.__data__ = Object.create(null);
|
3498
4147
|
},
|
3499
4148
|
setupBindListeners: function (inst) {
|
3500
|
-
inst._bindListeners
|
4149
|
+
var b$ = inst._bindListeners;
|
4150
|
+
for (var i = 0, l = b$.length, info; i < l && (info = b$[i]); i++) {
|
3501
4151
|
var node = inst._nodes[info.index];
|
3502
|
-
|
4152
|
+
this._addNotifyListener(node, inst, info.event, info.changedFn);
|
4153
|
+
}
|
4154
|
+
;
|
4155
|
+
},
|
4156
|
+
_addNotifyListener: function (element, context, event, changedFn) {
|
4157
|
+
element.addEventListener(event, function (e) {
|
4158
|
+
return context._notifyListener(changedFn, e);
|
3503
4159
|
});
|
3504
4160
|
}
|
3505
4161
|
};
|
3506
4162
|
Polymer.Base.extend(Polymer.Bind, {
|
3507
4163
|
_shouldAddListener: function (effect) {
|
3508
|
-
return effect.name && effect.
|
4164
|
+
return effect.name && effect.kind != 'attribute' && effect.kind != 'text' && !effect.isCompound && effect.parts[0].mode === '{' && !effect.parts[0].negate;
|
3509
4165
|
},
|
3510
4166
|
_annotationEffect: function (source, value, effect) {
|
3511
4167
|
if (source != effect.value) {
|
3512
|
-
value = this.
|
4168
|
+
value = this._get(effect.value);
|
3513
4169
|
this.__data__[effect.value] = value;
|
3514
4170
|
}
|
3515
4171
|
var calc = effect.negate ? !value : value;
|
3516
4172
|
if (!effect.customEvent || this._nodes[effect.index][effect.name] !== calc) {
|
3517
|
-
return this._applyEffectValue(
|
4173
|
+
return this._applyEffectValue(effect, calc);
|
3518
4174
|
}
|
3519
4175
|
},
|
3520
|
-
_reflectEffect: function (source) {
|
3521
|
-
this.reflectPropertyToAttribute(source);
|
4176
|
+
_reflectEffect: function (source, value, effect) {
|
4177
|
+
this.reflectPropertyToAttribute(source, effect.attribute, value);
|
3522
4178
|
},
|
3523
4179
|
_notifyEffect: function (source, value, effect, old, fromAbove) {
|
3524
4180
|
if (!fromAbove) {
|
3525
|
-
this._notifyChange(source);
|
4181
|
+
this._notifyChange(source, effect.event, value);
|
3526
4182
|
}
|
3527
4183
|
},
|
3528
4184
|
_functionEffect: function (source, value, fn, old, fromAbove) {
|
@@ -3552,7 +4208,7 @@ var args = Polymer.Bind._marshalArgs(this.__data__, effect, source, value);
|
|
3552
4208
|
if (args) {
|
3553
4209
|
var fn = this[effect.method];
|
3554
4210
|
if (fn) {
|
3555
|
-
this.__setProperty(effect.
|
4211
|
+
this.__setProperty(effect.name, fn.apply(this, args));
|
3556
4212
|
} else {
|
3557
4213
|
this._warn(this._logf('_computeEffect', 'compute method `' + effect.method + '` not defined'));
|
3558
4214
|
}
|
@@ -3568,7 +4224,7 @@ var computedvalue = fn.apply(computedHost, args);
|
|
3568
4224
|
if (effect.negate) {
|
3569
4225
|
computedvalue = !computedvalue;
|
3570
4226
|
}
|
3571
|
-
this._applyEffectValue(
|
4227
|
+
this._applyEffectValue(effect, computedvalue);
|
3572
4228
|
}
|
3573
4229
|
} else {
|
3574
4230
|
computedHost._warn(computedHost._logf('_annotatedComputationEffect', 'compute method `' + effect.method + '` not defined'));
|
@@ -3584,7 +4240,7 @@ var v;
|
|
3584
4240
|
if (arg.literal) {
|
3585
4241
|
v = arg.value;
|
3586
4242
|
} else if (arg.structured) {
|
3587
|
-
v = Polymer.Base.
|
4243
|
+
v = Polymer.Base._get(name, model);
|
3588
4244
|
} else {
|
3589
4245
|
v = model[name];
|
3590
4246
|
}
|
@@ -3608,7 +4264,8 @@ return values;
|
|
3608
4264
|
});
|
3609
4265
|
Polymer.Base._addFeature({
|
3610
4266
|
_addPropertyEffect: function (property, kind, effect) {
|
3611
|
-
Polymer.Bind.addPropertyEffect(this, property, kind, effect);
|
4267
|
+
var prop = Polymer.Bind.addPropertyEffect(this, property, kind, effect);
|
4268
|
+
prop.pathFn = this['_' + prop.kind + 'PathEffect'];
|
3612
4269
|
},
|
3613
4270
|
_prepEffects: function () {
|
3614
4271
|
Polymer.Bind.prepareModel(this);
|
@@ -3629,10 +4286,10 @@ prop.readOnly = true;
|
|
3629
4286
|
this._addComputedEffect(p, prop.computed);
|
3630
4287
|
}
|
3631
4288
|
if (prop.notify) {
|
3632
|
-
this._addPropertyEffect(p, 'notify');
|
4289
|
+
this._addPropertyEffect(p, 'notify', { event: Polymer.CaseMap.camelToDashCase(p) + '-changed' });
|
3633
4290
|
}
|
3634
4291
|
if (prop.reflectToAttribute) {
|
3635
|
-
this._addPropertyEffect(p, 'reflect');
|
4292
|
+
this._addPropertyEffect(p, 'reflect', { attribute: Polymer.CaseMap.camelToDashCase(p) });
|
3636
4293
|
}
|
3637
4294
|
if (prop.readOnly) {
|
3638
4295
|
Polymer.Bind.ensurePropertyEffects(this, p);
|
@@ -3642,14 +4299,14 @@ Polymer.Bind.ensurePropertyEffects(this, p);
|
|
3642
4299
|
},
|
3643
4300
|
_addComputedEffect: function (name, expression) {
|
3644
4301
|
var sig = this._parseMethod(expression);
|
3645
|
-
sig.args.
|
4302
|
+
for (var i = 0, arg; i < sig.args.length && (arg = sig.args[i]); i++) {
|
3646
4303
|
this._addPropertyEffect(arg.model, 'compute', {
|
3647
4304
|
method: sig.method,
|
3648
4305
|
args: sig.args,
|
3649
4306
|
trigger: arg,
|
3650
|
-
|
4307
|
+
name: name
|
3651
4308
|
});
|
3652
|
-
}
|
4309
|
+
}
|
3653
4310
|
},
|
3654
4311
|
_addObserverEffect: function (property, observer) {
|
3655
4312
|
this._addPropertyEffect(property, 'observer', {
|
@@ -3659,61 +4316,74 @@ property: property
|
|
3659
4316
|
},
|
3660
4317
|
_addComplexObserverEffects: function (observers) {
|
3661
4318
|
if (observers) {
|
3662
|
-
observers.
|
3663
|
-
this._addComplexObserverEffect(
|
3664
|
-
}
|
4319
|
+
for (var i = 0, o; i < observers.length && (o = observers[i]); i++) {
|
4320
|
+
this._addComplexObserverEffect(o);
|
4321
|
+
}
|
3665
4322
|
}
|
3666
4323
|
},
|
3667
4324
|
_addComplexObserverEffect: function (observer) {
|
3668
4325
|
var sig = this._parseMethod(observer);
|
3669
|
-
sig.args.
|
4326
|
+
for (var i = 0, arg; i < sig.args.length && (arg = sig.args[i]); i++) {
|
3670
4327
|
this._addPropertyEffect(arg.model, 'complexObserver', {
|
3671
4328
|
method: sig.method,
|
3672
4329
|
args: sig.args,
|
3673
4330
|
trigger: arg
|
3674
4331
|
});
|
3675
|
-
}
|
4332
|
+
}
|
3676
4333
|
},
|
3677
4334
|
_addAnnotationEffects: function (notes) {
|
3678
|
-
|
3679
|
-
|
3680
|
-
var
|
3681
|
-
|
3682
|
-
|
3683
|
-
}
|
3684
|
-
}, this);
|
4335
|
+
for (var i = 0, note; i < notes.length && (note = notes[i]); i++) {
|
4336
|
+
var b$ = note.bindings;
|
4337
|
+
for (var j = 0, binding; j < b$.length && (binding = b$[j]); j++) {
|
4338
|
+
this._addAnnotationEffect(binding, i);
|
4339
|
+
}
|
4340
|
+
}
|
3685
4341
|
},
|
3686
4342
|
_addAnnotationEffect: function (note, index) {
|
3687
4343
|
if (Polymer.Bind._shouldAddListener(note)) {
|
3688
|
-
Polymer.Bind._addAnnotatedListener(this, index, note.name, note.value, note.event);
|
4344
|
+
Polymer.Bind._addAnnotatedListener(this, index, note.name, note.parts[0].value, note.parts[0].event);
|
4345
|
+
}
|
4346
|
+
for (var i = 0; i < note.parts.length; i++) {
|
4347
|
+
var part = note.parts[i];
|
4348
|
+
if (part.signature) {
|
4349
|
+
this._addAnnotatedComputationEffect(note, part, index);
|
4350
|
+
} else if (!part.literal) {
|
4351
|
+
this._addPropertyEffect(part.model, 'annotation', {
|
4352
|
+
kind: note.kind,
|
4353
|
+
index: index,
|
4354
|
+
name: note.name,
|
4355
|
+
value: part.value,
|
4356
|
+
isCompound: note.isCompound,
|
4357
|
+
compoundIndex: part.compoundIndex,
|
4358
|
+
event: part.event,
|
4359
|
+
customEvent: part.customEvent,
|
4360
|
+
negate: part.negate
|
4361
|
+
});
|
3689
4362
|
}
|
3690
|
-
if (note.signature) {
|
3691
|
-
this._addAnnotatedComputationEffect(note, index);
|
3692
|
-
} else {
|
3693
|
-
note.index = index;
|
3694
|
-
this._addPropertyEffect(note.model, 'annotation', note);
|
3695
4363
|
}
|
3696
4364
|
},
|
3697
|
-
_addAnnotatedComputationEffect: function (note, index) {
|
3698
|
-
var sig =
|
4365
|
+
_addAnnotatedComputationEffect: function (note, part, index) {
|
4366
|
+
var sig = part.signature;
|
3699
4367
|
if (sig.static) {
|
3700
|
-
this.__addAnnotatedComputationEffect('__static__', index, note,
|
4368
|
+
this.__addAnnotatedComputationEffect('__static__', index, note, part, null);
|
3701
4369
|
} else {
|
3702
|
-
sig.args.
|
4370
|
+
for (var i = 0, arg; i < sig.args.length && (arg = sig.args[i]); i++) {
|
3703
4371
|
if (!arg.literal) {
|
3704
|
-
this.__addAnnotatedComputationEffect(arg.model, index, note,
|
4372
|
+
this.__addAnnotatedComputationEffect(arg.model, index, note, part, arg);
|
4373
|
+
}
|
3705
4374
|
}
|
3706
|
-
}, this);
|
3707
4375
|
}
|
3708
4376
|
},
|
3709
|
-
__addAnnotatedComputationEffect: function (property, index, note,
|
4377
|
+
__addAnnotatedComputationEffect: function (property, index, note, part, trigger) {
|
3710
4378
|
this._addPropertyEffect(property, 'annotatedComputation', {
|
3711
4379
|
index: index,
|
4380
|
+
isCompound: note.isCompound,
|
4381
|
+
compoundIndex: part.compoundIndex,
|
3712
4382
|
kind: note.kind,
|
3713
|
-
|
3714
|
-
negate:
|
3715
|
-
method:
|
3716
|
-
args:
|
4383
|
+
name: note.name,
|
4384
|
+
negate: part.negate,
|
4385
|
+
method: part.signature.method,
|
4386
|
+
args: part.signature.args,
|
3717
4387
|
trigger: trigger
|
3718
4388
|
});
|
3719
4389
|
},
|
@@ -3780,11 +4450,18 @@ return a;
|
|
3780
4450
|
},
|
3781
4451
|
_marshalInstanceEffects: function () {
|
3782
4452
|
Polymer.Bind.prepareInstance(this);
|
4453
|
+
if (this._bindListeners) {
|
3783
4454
|
Polymer.Bind.setupBindListeners(this);
|
4455
|
+
}
|
3784
4456
|
},
|
3785
|
-
_applyEffectValue: function (
|
4457
|
+
_applyEffectValue: function (info, value) {
|
3786
4458
|
var node = this._nodes[info.index];
|
3787
|
-
var property = info.
|
4459
|
+
var property = info.name;
|
4460
|
+
if (info.isCompound) {
|
4461
|
+
var storage = node.__compoundStorage__[property];
|
4462
|
+
storage[info.compoundIndex] = value;
|
4463
|
+
value = storage.join('');
|
4464
|
+
}
|
3788
4465
|
if (info.kind == 'attribute') {
|
3789
4466
|
this.serializeValueToAttribute(value, property, node);
|
3790
4467
|
} else {
|
@@ -3794,11 +4471,14 @@ value = this._scopeElementClass(node, value);
|
|
3794
4471
|
if (property === 'textContent' || node.localName == 'input' && property == 'value') {
|
3795
4472
|
value = value == undefined ? '' : value;
|
3796
4473
|
}
|
3797
|
-
|
4474
|
+
var pinfo;
|
4475
|
+
if (!node._propertyInfo || !(pinfo = node._propertyInfo[property]) || !pinfo.readOnly) {
|
4476
|
+
this.__setProperty(property, value, true, node);
|
4477
|
+
}
|
3798
4478
|
}
|
3799
4479
|
},
|
3800
4480
|
_executeStaticEffects: function () {
|
3801
|
-
if (this._propertyEffects.__static__) {
|
4481
|
+
if (this._propertyEffects && this._propertyEffects.__static__) {
|
3802
4482
|
this._effectEffects('__static__', null, this._propertyEffects.__static__);
|
3803
4483
|
}
|
3804
4484
|
}
|
@@ -3806,12 +4486,14 @@ this._effectEffects('__static__', null, this._propertyEffects.__static__);
|
|
3806
4486
|
Polymer.Base._addFeature({
|
3807
4487
|
_setupConfigure: function (initialConfig) {
|
3808
4488
|
this._config = {};
|
4489
|
+
this._handlers = [];
|
4490
|
+
if (initialConfig) {
|
3809
4491
|
for (var i in initialConfig) {
|
3810
4492
|
if (initialConfig[i] !== undefined) {
|
3811
4493
|
this._config[i] = initialConfig[i];
|
3812
4494
|
}
|
3813
4495
|
}
|
3814
|
-
|
4496
|
+
}
|
3815
4497
|
},
|
3816
4498
|
_marshalAttributes: function () {
|
3817
4499
|
this._takeAttributesToModel(this._config);
|
@@ -3821,7 +4503,10 @@ var model = this._clientsReadied ? this : this._config;
|
|
3821
4503
|
this._setAttributeToProperty(model, name);
|
3822
4504
|
},
|
3823
4505
|
_configValue: function (name, value) {
|
4506
|
+
var info = this._propertyInfo[name];
|
4507
|
+
if (!info || !info.readOnly) {
|
3824
4508
|
this._config[name] = value;
|
4509
|
+
}
|
3825
4510
|
},
|
3826
4511
|
_beforeClientsReady: function () {
|
3827
4512
|
this._configure();
|
@@ -3830,13 +4515,15 @@ _configure: function () {
|
|
3830
4515
|
this._configureAnnotationReferences();
|
3831
4516
|
this._aboveConfig = this.mixin({}, this._config);
|
3832
4517
|
var config = {};
|
3833
|
-
this.behaviors.
|
3834
|
-
this._configureProperties(
|
3835
|
-
}
|
4518
|
+
for (var i = 0; i < this.behaviors.length; i++) {
|
4519
|
+
this._configureProperties(this.behaviors[i].properties, config);
|
4520
|
+
}
|
3836
4521
|
this._configureProperties(this.properties, config);
|
3837
|
-
this.
|
4522
|
+
this.mixin(config, this._aboveConfig);
|
3838
4523
|
this._config = config;
|
4524
|
+
if (this._clients && this._clients.length) {
|
3839
4525
|
this._distributeConfig(this._config);
|
4526
|
+
}
|
3840
4527
|
},
|
3841
4528
|
_configureProperties: function (properties, config) {
|
3842
4529
|
for (var i in properties) {
|
@@ -3850,13 +4537,6 @@ config[i] = value;
|
|
3850
4537
|
}
|
3851
4538
|
}
|
3852
4539
|
},
|
3853
|
-
_mixinConfigure: function (a, b) {
|
3854
|
-
for (var prop in b) {
|
3855
|
-
if (!this.getPropertyInfo(prop).readOnly) {
|
3856
|
-
a[prop] = b[prop];
|
3857
|
-
}
|
3858
|
-
}
|
3859
|
-
},
|
3860
4540
|
_distributeConfig: function (config) {
|
3861
4541
|
var fx$ = this._propertyEffects;
|
3862
4542
|
if (fx$) {
|
@@ -3864,10 +4544,10 @@ for (var p in config) {
|
|
3864
4544
|
var fx = fx$[p];
|
3865
4545
|
if (fx) {
|
3866
4546
|
for (var i = 0, l = fx.length, x; i < l && (x = fx[i]); i++) {
|
3867
|
-
if (x.kind === 'annotation') {
|
4547
|
+
if (x.kind === 'annotation' && !x.isCompound) {
|
3868
4548
|
var node = this._nodes[x.effect.index];
|
3869
4549
|
if (node._configValue) {
|
3870
|
-
var value = p === x.effect.value ? config[p] : this.
|
4550
|
+
var value = p === x.effect.value ? config[p] : this._get(x.effect.value, config);
|
3871
4551
|
node._configValue(x.effect.name, value);
|
3872
4552
|
}
|
3873
4553
|
}
|
@@ -3889,14 +4569,22 @@ this.__setProperty(n, config[n], n in aboveConfig);
|
|
3889
4569
|
}
|
3890
4570
|
},
|
3891
4571
|
_notifyListener: function (fn, e) {
|
4572
|
+
if (!Polymer.Bind._isEventBogus(e, e.target)) {
|
4573
|
+
var value, path;
|
4574
|
+
if (e.detail) {
|
4575
|
+
value = e.detail.value;
|
4576
|
+
path = e.detail.path;
|
4577
|
+
}
|
3892
4578
|
if (!this._clientsReadied) {
|
3893
4579
|
this._queueHandler([
|
3894
4580
|
fn,
|
3895
|
-
e,
|
3896
|
-
|
4581
|
+
e.target,
|
4582
|
+
value,
|
4583
|
+
path
|
3897
4584
|
]);
|
3898
4585
|
} else {
|
3899
|
-
return fn.call(this, e,
|
4586
|
+
return fn.call(this, e.target, value, path);
|
4587
|
+
}
|
3900
4588
|
}
|
3901
4589
|
},
|
3902
4590
|
_queueHandler: function (args) {
|
@@ -3905,7 +4593,7 @@ this._handlers.push(args);
|
|
3905
4593
|
_flushHandlers: function () {
|
3906
4594
|
var h$ = this._handlers;
|
3907
4595
|
for (var i = 0, l = h$.length, h; i < l && (h = h$[i]); i++) {
|
3908
|
-
h[0].call(this, h[1], h[2]);
|
4596
|
+
h[0].call(this, h[1], h[2], h[3]);
|
3909
4597
|
}
|
3910
4598
|
this._handlers = [];
|
3911
4599
|
}
|
@@ -3914,11 +4602,16 @@ this._handlers = [];
|
|
3914
4602
|
'use strict';
|
3915
4603
|
Polymer.Base._addFeature({
|
3916
4604
|
notifyPath: function (path, value, fromAbove) {
|
4605
|
+
var info = {};
|
4606
|
+
this._get(path, this, info);
|
4607
|
+
this._notifyPath(info.path, value, fromAbove);
|
4608
|
+
},
|
4609
|
+
_notifyPath: function (path, value, fromAbove) {
|
3917
4610
|
var old = this._propertySetter(path, value);
|
3918
4611
|
if (old !== value && (old === old || value === value)) {
|
3919
4612
|
this._pathEffector(path, value);
|
3920
4613
|
if (!fromAbove) {
|
3921
|
-
this.
|
4614
|
+
this._notifyPathUp(path, value);
|
3922
4615
|
}
|
3923
4616
|
return true;
|
3924
4617
|
}
|
@@ -3945,52 +4638,78 @@ var last = parts[parts.length - 1];
|
|
3945
4638
|
if (parts.length > 1) {
|
3946
4639
|
for (var i = 0; i < parts.length - 1; i++) {
|
3947
4640
|
var part = parts[i];
|
4641
|
+
if (array && part[0] == '#') {
|
4642
|
+
prop = Polymer.Collection.get(array).getItem(part);
|
4643
|
+
} else {
|
3948
4644
|
prop = prop[part];
|
3949
|
-
if (array && parseInt(part) == part) {
|
4645
|
+
if (array && parseInt(part, 10) == part) {
|
3950
4646
|
parts[i] = Polymer.Collection.get(array).getKey(prop);
|
3951
4647
|
}
|
4648
|
+
}
|
3952
4649
|
if (!prop) {
|
3953
4650
|
return;
|
3954
4651
|
}
|
3955
4652
|
array = Array.isArray(prop) ? prop : null;
|
3956
4653
|
}
|
3957
|
-
if (array
|
4654
|
+
if (array) {
|
3958
4655
|
var coll = Polymer.Collection.get(array);
|
4656
|
+
if (last[0] == '#') {
|
4657
|
+
var key = last;
|
4658
|
+
var old = coll.getItem(key);
|
4659
|
+
last = array.indexOf(old);
|
4660
|
+
coll.setItem(key, value);
|
4661
|
+
} else if (parseInt(last, 10) == last) {
|
3959
4662
|
var old = prop[last];
|
3960
4663
|
var key = coll.getKey(old);
|
3961
4664
|
parts[i] = key;
|
3962
4665
|
coll.setItem(key, value);
|
3963
4666
|
}
|
4667
|
+
}
|
3964
4668
|
prop[last] = value;
|
3965
4669
|
if (!root) {
|
3966
|
-
this.
|
4670
|
+
this._notifyPath(parts.join('.'), value);
|
3967
4671
|
}
|
3968
4672
|
} else {
|
3969
4673
|
prop[path] = value;
|
3970
4674
|
}
|
3971
4675
|
},
|
3972
4676
|
get: function (path, root) {
|
4677
|
+
return this._get(path, root);
|
4678
|
+
},
|
4679
|
+
_get: function (path, root, info) {
|
3973
4680
|
var prop = root || this;
|
3974
4681
|
var parts = this._getPathParts(path);
|
3975
|
-
var
|
3976
|
-
|
3977
|
-
prop = prop[parts.shift()];
|
4682
|
+
var array;
|
4683
|
+
for (var i = 0; i < parts.length; i++) {
|
3978
4684
|
if (!prop) {
|
3979
4685
|
return;
|
3980
4686
|
}
|
4687
|
+
var part = parts[i];
|
4688
|
+
if (array && part[0] == '#') {
|
4689
|
+
prop = Polymer.Collection.get(array).getItem(part);
|
4690
|
+
} else {
|
4691
|
+
prop = prop[part];
|
4692
|
+
if (info && array && parseInt(part, 10) == part) {
|
4693
|
+
parts[i] = Polymer.Collection.get(array).getKey(prop);
|
4694
|
+
}
|
4695
|
+
}
|
4696
|
+
array = Array.isArray(prop) ? prop : null;
|
4697
|
+
}
|
4698
|
+
if (info) {
|
4699
|
+
info.path = parts.join('.');
|
3981
4700
|
}
|
3982
|
-
return prop
|
4701
|
+
return prop;
|
3983
4702
|
},
|
3984
4703
|
_pathEffector: function (path, value) {
|
3985
4704
|
var model = this._modelForPath(path);
|
3986
|
-
var fx$ = this._propertyEffects[model];
|
4705
|
+
var fx$ = this._propertyEffects && this._propertyEffects[model];
|
3987
4706
|
if (fx$) {
|
3988
|
-
fx$.
|
3989
|
-
var fxFn =
|
4707
|
+
for (var i = 0, fx; i < fx$.length && (fx = fx$[i]); i++) {
|
4708
|
+
var fxFn = fx.pathFn;
|
3990
4709
|
if (fxFn) {
|
3991
4710
|
fxFn.call(this, path, value, fx.effect);
|
3992
4711
|
}
|
3993
|
-
}
|
4712
|
+
}
|
3994
4713
|
}
|
3995
4714
|
if (this._boundPaths) {
|
3996
4715
|
this._notifyBoundPaths(path, value);
|
@@ -4001,9 +4720,9 @@ if (effect.value === path || effect.value.indexOf(path + '.') === 0) {
|
|
4001
4720
|
Polymer.Bind._annotationEffect.call(this, path, value, effect);
|
4002
4721
|
} else if (path.indexOf(effect.value + '.') === 0 && !effect.negate) {
|
4003
4722
|
var node = this._nodes[effect.index];
|
4004
|
-
if (node && node.
|
4723
|
+
if (node && node._notifyPath) {
|
4005
4724
|
var p = this._fixPath(effect.name, effect.value, path);
|
4006
|
-
node.
|
4725
|
+
node._notifyPath(p, value, true);
|
4007
4726
|
}
|
4008
4727
|
}
|
4009
4728
|
},
|
@@ -4043,70 +4762,88 @@ _notifyBoundPaths: function (path, value) {
|
|
4043
4762
|
for (var a in this._boundPaths) {
|
4044
4763
|
var b = this._boundPaths[a];
|
4045
4764
|
if (path.indexOf(a + '.') == 0) {
|
4046
|
-
this.
|
4765
|
+
this._notifyPath(this._fixPath(b, a, path), value);
|
4047
4766
|
} else if (path.indexOf(b + '.') == 0) {
|
4048
|
-
this.
|
4767
|
+
this._notifyPath(this._fixPath(a, b, path), value);
|
4049
4768
|
}
|
4050
4769
|
}
|
4051
4770
|
},
|
4052
4771
|
_fixPath: function (property, root, path) {
|
4053
4772
|
return property + path.slice(root.length);
|
4054
4773
|
},
|
4055
|
-
|
4774
|
+
_notifyPathUp: function (path, value) {
|
4056
4775
|
var rootName = this._modelForPath(path);
|
4057
4776
|
var dashCaseName = Polymer.CaseMap.camelToDashCase(rootName);
|
4058
4777
|
var eventName = dashCaseName + this._EVENT_CHANGED;
|
4059
4778
|
this.fire(eventName, {
|
4060
4779
|
path: path,
|
4061
4780
|
value: value
|
4062
|
-
}, {
|
4781
|
+
}, {
|
4782
|
+
bubbles: false,
|
4783
|
+
_useCache: true
|
4784
|
+
});
|
4063
4785
|
},
|
4064
4786
|
_modelForPath: function (path) {
|
4065
4787
|
var dot = path.indexOf('.');
|
4066
4788
|
return dot < 0 ? path : path.slice(0, dot);
|
4067
4789
|
},
|
4068
4790
|
_EVENT_CHANGED: '-changed',
|
4069
|
-
|
4070
|
-
var
|
4071
|
-
|
4072
|
-
|
4073
|
-
|
4074
|
-
|
4075
|
-
type: 'splice'
|
4076
|
-
}];
|
4791
|
+
notifySplices: function (path, splices) {
|
4792
|
+
var info = {};
|
4793
|
+
var array = this._get(path, this, info);
|
4794
|
+
this._notifySplices(array, info.path, splices);
|
4795
|
+
},
|
4796
|
+
_notifySplices: function (array, path, splices) {
|
4077
4797
|
var change = {
|
4078
4798
|
keySplices: Polymer.Collection.applySplices(array, splices),
|
4079
4799
|
indexSplices: splices
|
4080
4800
|
};
|
4081
|
-
|
4082
|
-
|
4083
|
-
|
4801
|
+
if (!array.hasOwnProperty('splices')) {
|
4802
|
+
Object.defineProperty(array, 'splices', {
|
4803
|
+
configurable: true,
|
4804
|
+
writable: true
|
4805
|
+
});
|
4084
4806
|
}
|
4807
|
+
array.splices = change;
|
4808
|
+
this._notifyPath(path + '.splices', change);
|
4809
|
+
this._notifyPath(path + '.length', array.length);
|
4085
4810
|
change.keySplices = null;
|
4086
4811
|
change.indexSplices = null;
|
4087
4812
|
},
|
4813
|
+
_notifySplice: function (array, path, index, added, removed) {
|
4814
|
+
this._notifySplices(array, path, [{
|
4815
|
+
index: index,
|
4816
|
+
addedCount: added,
|
4817
|
+
removed: removed,
|
4818
|
+
object: array,
|
4819
|
+
type: 'splice'
|
4820
|
+
}]);
|
4821
|
+
},
|
4088
4822
|
push: function (path) {
|
4089
|
-
var
|
4823
|
+
var info = {};
|
4824
|
+
var array = this._get(path, this, info);
|
4090
4825
|
var args = Array.prototype.slice.call(arguments, 1);
|
4091
4826
|
var len = array.length;
|
4092
4827
|
var ret = array.push.apply(array, args);
|
4093
4828
|
if (args.length) {
|
4094
|
-
this._notifySplice(array, path, len, args.length, []);
|
4829
|
+
this._notifySplice(array, info.path, len, args.length, []);
|
4095
4830
|
}
|
4096
4831
|
return ret;
|
4097
4832
|
},
|
4098
4833
|
pop: function (path) {
|
4099
|
-
var
|
4834
|
+
var info = {};
|
4835
|
+
var array = this._get(path, this, info);
|
4100
4836
|
var hadLength = Boolean(array.length);
|
4101
4837
|
var args = Array.prototype.slice.call(arguments, 1);
|
4102
4838
|
var ret = array.pop.apply(array, args);
|
4103
4839
|
if (hadLength) {
|
4104
|
-
this._notifySplice(array, path, array.length, 0, [ret]);
|
4840
|
+
this._notifySplice(array, info.path, array.length, 0, [ret]);
|
4105
4841
|
}
|
4106
4842
|
return ret;
|
4107
4843
|
},
|
4108
4844
|
splice: function (path, start, deleteCount) {
|
4109
|
-
var
|
4845
|
+
var info = {};
|
4846
|
+
var array = this._get(path, this, info);
|
4110
4847
|
if (start < 0) {
|
4111
4848
|
start = array.length - Math.floor(-start);
|
4112
4849
|
} else {
|
@@ -4119,28 +4856,51 @@ var args = Array.prototype.slice.call(arguments, 1);
|
|
4119
4856
|
var ret = array.splice.apply(array, args);
|
4120
4857
|
var addedCount = Math.max(args.length - 2, 0);
|
4121
4858
|
if (addedCount || ret.length) {
|
4122
|
-
this._notifySplice(array, path, start, addedCount, ret);
|
4859
|
+
this._notifySplice(array, info.path, start, addedCount, ret);
|
4123
4860
|
}
|
4124
4861
|
return ret;
|
4125
4862
|
},
|
4126
4863
|
shift: function (path) {
|
4127
|
-
var
|
4864
|
+
var info = {};
|
4865
|
+
var array = this._get(path, this, info);
|
4128
4866
|
var hadLength = Boolean(array.length);
|
4129
4867
|
var args = Array.prototype.slice.call(arguments, 1);
|
4130
4868
|
var ret = array.shift.apply(array, args);
|
4131
4869
|
if (hadLength) {
|
4132
|
-
this._notifySplice(array, path, 0, 0, [ret]);
|
4870
|
+
this._notifySplice(array, info.path, 0, 0, [ret]);
|
4133
4871
|
}
|
4134
4872
|
return ret;
|
4135
4873
|
},
|
4136
4874
|
unshift: function (path) {
|
4137
|
-
var
|
4875
|
+
var info = {};
|
4876
|
+
var array = this._get(path, this, info);
|
4138
4877
|
var args = Array.prototype.slice.call(arguments, 1);
|
4139
4878
|
var ret = array.unshift.apply(array, args);
|
4140
4879
|
if (args.length) {
|
4141
|
-
this._notifySplice(array, path, 0, args.length, []);
|
4880
|
+
this._notifySplice(array, info.path, 0, args.length, []);
|
4142
4881
|
}
|
4143
4882
|
return ret;
|
4883
|
+
},
|
4884
|
+
prepareModelNotifyPath: function (model) {
|
4885
|
+
this.mixin(model, {
|
4886
|
+
fire: Polymer.Base.fire,
|
4887
|
+
_getEvent: Polymer.Base._getEvent,
|
4888
|
+
__eventCache: Polymer.Base.__eventCache,
|
4889
|
+
notifyPath: Polymer.Base.notifyPath,
|
4890
|
+
_get: Polymer.Base._get,
|
4891
|
+
_EVENT_CHANGED: Polymer.Base._EVENT_CHANGED,
|
4892
|
+
_notifyPath: Polymer.Base._notifyPath,
|
4893
|
+
_notifyPathUp: Polymer.Base._notifyPathUp,
|
4894
|
+
_pathEffector: Polymer.Base._pathEffector,
|
4895
|
+
_annotationPathEffect: Polymer.Base._annotationPathEffect,
|
4896
|
+
_complexObserverPathEffect: Polymer.Base._complexObserverPathEffect,
|
4897
|
+
_annotatedComputationPathEffect: Polymer.Base._annotatedComputationPathEffect,
|
4898
|
+
_computePathEffect: Polymer.Base._computePathEffect,
|
4899
|
+
_modelForPath: Polymer.Base._modelForPath,
|
4900
|
+
_pathMatchesEffect: Polymer.Base._pathMatchesEffect,
|
4901
|
+
_notifyBoundPaths: Polymer.Base._notifyBoundPaths,
|
4902
|
+
_getPathParts: Polymer.Base._getPathParts
|
4903
|
+
});
|
4144
4904
|
}
|
4145
4905
|
});
|
4146
4906
|
}());
|
@@ -4199,6 +4959,8 @@ node.parsedCssText = node.cssText = t.trim();
|
|
4199
4959
|
if (node.parent) {
|
4200
4960
|
var ss = node.previous ? node.previous.end : node.parent.start;
|
4201
4961
|
t = text.substring(ss, node.start - 1);
|
4962
|
+
t = this._expandUnicodeEscapes(t);
|
4963
|
+
t = t.replace(this._rx.multipleSpaces, ' ');
|
4202
4964
|
t = t.substring(t.lastIndexOf(';') + 1);
|
4203
4965
|
var s = node.parsedSelector = node.selector = t.trim();
|
4204
4966
|
node.atRule = s.indexOf(this.AT_START) === 0;
|
@@ -4224,6 +4986,15 @@ this._parseCss(r, text);
|
|
4224
4986
|
}
|
4225
4987
|
return node;
|
4226
4988
|
},
|
4989
|
+
_expandUnicodeEscapes: function (s) {
|
4990
|
+
return s.replace(/\\([0-9a-f]{1,6})\s/gi, function () {
|
4991
|
+
var code = arguments[1], repeat = 6 - code.length;
|
4992
|
+
while (repeat--) {
|
4993
|
+
code = '0' + code;
|
4994
|
+
}
|
4995
|
+
return '\\' + code;
|
4996
|
+
});
|
4997
|
+
},
|
4227
4998
|
stringify: function (node, preserveProperties, text) {
|
4228
4999
|
text = text || '';
|
4229
5000
|
var cssText = '';
|
@@ -4253,7 +5024,7 @@ text += this.CLOSE_BRACE + '\n\n';
|
|
4253
5024
|
return text;
|
4254
5025
|
},
|
4255
5026
|
_hasMixinRules: function (rules) {
|
4256
|
-
return rules[0].selector.indexOf(this.VAR_START)
|
5027
|
+
return rules[0].selector.indexOf(this.VAR_START) === 0;
|
4257
5028
|
},
|
4258
5029
|
removeCustomProps: function (cssText) {
|
4259
5030
|
cssText = this.removeCustomPropAssignment(cssText);
|
@@ -4277,10 +5048,11 @@ _rx: {
|
|
4277
5048
|
comments: /\/\*[^*]*\*+([^\/*][^*]*\*+)*\//gim,
|
4278
5049
|
port: /@import[^;]*;/gim,
|
4279
5050
|
customProp: /(?:^|[\s;])--[^;{]*?:[^{};]*?(?:[;\n]|$)/gim,
|
4280
|
-
mixinProp: /(?:^|[\s;])
|
5051
|
+
mixinProp: /(?:^|[\s;])?--[^;{]*?:[^{;]*?{[^}]*?}(?:[;\n]|$)?/gim,
|
4281
5052
|
mixinApply: /@apply[\s]*\([^)]*?\)[\s]*(?:[;\n]|$)?/gim,
|
4282
|
-
varApply: /[^;:]*?:[^;]
|
4283
|
-
keyframesRule: /^@[^\s]*keyframes
|
5053
|
+
varApply: /[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,
|
5054
|
+
keyframesRule: /^@[^\s]*keyframes/,
|
5055
|
+
multipleSpaces: /\s+/g
|
4284
5056
|
},
|
4285
5057
|
VAR_START: '--',
|
4286
5058
|
MEDIA_START: '@media',
|
@@ -4360,21 +5132,21 @@ return cssText;
|
|
4360
5132
|
cssFromModule: function (moduleId, warnIfNotFound) {
|
4361
5133
|
var m = Polymer.DomModule.import(moduleId);
|
4362
5134
|
if (m && !m._cssText) {
|
4363
|
-
m._cssText = this.
|
5135
|
+
m._cssText = this.cssFromElement(m);
|
4364
5136
|
}
|
4365
5137
|
if (!m && warnIfNotFound) {
|
4366
5138
|
console.warn('Could not find style data in module named', moduleId);
|
4367
5139
|
}
|
4368
5140
|
return m && m._cssText || '';
|
4369
5141
|
},
|
4370
|
-
|
5142
|
+
cssFromElement: function (element) {
|
4371
5143
|
var cssText = '';
|
4372
5144
|
var content = element.content || element;
|
4373
|
-
var e$ =
|
5145
|
+
var e$ = Polymer.DomApi.arrayCopy(content.querySelectorAll(this.MODULE_STYLES_SELECTOR));
|
4374
5146
|
for (var i = 0, e; i < e$.length; i++) {
|
4375
5147
|
e = e$[i];
|
4376
5148
|
if (e.localName === 'template') {
|
4377
|
-
cssText += this.
|
5149
|
+
cssText += this.cssFromElement(e);
|
4378
5150
|
} else {
|
4379
5151
|
if (e.localName === 'style') {
|
4380
5152
|
var include = e.getAttribute(this.INCLUDE_ATTR);
|
@@ -4623,7 +5395,7 @@ _extendRule: function (target, source) {
|
|
4623
5395
|
if (target.parent !== source.parent) {
|
4624
5396
|
this._cloneAndAddRuleToParent(source, target.parent);
|
4625
5397
|
}
|
4626
|
-
target.extends = target.extends ||
|
5398
|
+
target.extends = target.extends || [];
|
4627
5399
|
target.extends.push(source);
|
4628
5400
|
source.selector = source.selector.replace(this.rx.STRIP, '');
|
4629
5401
|
source.selector = (source.selector && source.selector + ',\n') + target.selector;
|
@@ -4664,14 +5436,18 @@ _prepStyles: function () {
|
|
4664
5436
|
if (this._encapsulateStyle === undefined) {
|
4665
5437
|
this._encapsulateStyle = !nativeShadow && Boolean(this._template);
|
4666
5438
|
}
|
5439
|
+
if (this._template) {
|
4667
5440
|
this._styles = this._collectStyles();
|
4668
5441
|
var cssText = styleTransformer.elementStyles(this);
|
4669
|
-
if (cssText
|
5442
|
+
if (cssText) {
|
4670
5443
|
var style = styleUtil.applyCss(cssText, this.is, nativeShadow ? this._template.content : null);
|
4671
5444
|
if (!nativeShadow) {
|
4672
5445
|
this._scopeStyle = style;
|
4673
5446
|
}
|
4674
5447
|
}
|
5448
|
+
} else {
|
5449
|
+
this._styles = [];
|
5450
|
+
}
|
4675
5451
|
},
|
4676
5452
|
_collectStyles: function () {
|
4677
5453
|
var styles = [];
|
@@ -4682,6 +5458,10 @@ cssText += styleUtil.cssFromModule(m);
|
|
4682
5458
|
}
|
4683
5459
|
}
|
4684
5460
|
cssText += styleUtil.cssFromModule(this.is);
|
5461
|
+
var p = this._template && this._template.parentNode;
|
5462
|
+
if (this._template && (!p || p.id.toLowerCase() !== this.is)) {
|
5463
|
+
cssText += styleUtil.cssFromElement(this._template);
|
5464
|
+
}
|
4685
5465
|
if (cssText) {
|
4686
5466
|
var style = document.createElement('style');
|
4687
5467
|
style.textContent = cssText;
|
@@ -4715,21 +5495,21 @@ var scopify = function (node) {
|
|
4715
5495
|
if (node.nodeType === Node.ELEMENT_NODE) {
|
4716
5496
|
node.className = self._scopeElementClass(node, node.className);
|
4717
5497
|
var n$ = node.querySelectorAll('*');
|
4718
|
-
|
5498
|
+
for (var i = 0, n; i < n$.length && (n = n$[i]); i++) {
|
4719
5499
|
n.className = self._scopeElementClass(n, n.className);
|
4720
|
-
}
|
5500
|
+
}
|
4721
5501
|
}
|
4722
5502
|
};
|
4723
5503
|
scopify(container);
|
4724
5504
|
if (shouldObserve) {
|
4725
5505
|
var mo = new MutationObserver(function (mxns) {
|
4726
|
-
mxns.
|
5506
|
+
for (var i = 0, m; i < mxns.length && (m = mxns[i]); i++) {
|
4727
5507
|
if (m.addedNodes) {
|
4728
|
-
for (var
|
4729
|
-
scopify(m.addedNodes[
|
5508
|
+
for (var j = 0; j < m.addedNodes.length; j++) {
|
5509
|
+
scopify(m.addedNodes[j]);
|
5510
|
+
}
|
4730
5511
|
}
|
4731
5512
|
}
|
4732
|
-
});
|
4733
5513
|
});
|
4734
5514
|
mo.observe(container, {
|
4735
5515
|
childList: true,
|
@@ -4854,7 +5634,9 @@ p = pp.join(':');
|
|
4854
5634
|
parts[i] = p && p.lastIndexOf(';') === p.length - 1 ? p.slice(0, -1) : p || '';
|
4855
5635
|
}
|
4856
5636
|
}
|
4857
|
-
return parts.
|
5637
|
+
return parts.filter(function (v) {
|
5638
|
+
return v;
|
5639
|
+
}).join(';');
|
4858
5640
|
},
|
4859
5641
|
applyProperties: function (rule, props) {
|
4860
5642
|
var output = '';
|
@@ -4980,7 +5762,7 @@ props[i] = v;
|
|
4980
5762
|
}
|
4981
5763
|
},
|
4982
5764
|
rx: {
|
4983
|
-
VAR_ASSIGN: /(?:^|[;\
|
5765
|
+
VAR_ASSIGN: /(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:([^;{]*)|{([^}]*)})(?:(?=[;\s}])|$)/gi,
|
4984
5766
|
MIXIN_MATCH: /(?:^|\W+)@apply[\s]*\(([^)]*)\)/i,
|
4985
5767
|
VAR_MATCH: /(^|\W+)var\([\s]*([^,)]*)[\s]*,?[\s]*((?:[^,)]*)|(?:[^;]*\([^;)]*\)))[\s]*?\)/gi,
|
4986
5768
|
VAR_CAPTURE: /\([\s]*(--[^,\s)]*)(?:,[\s]*(--[^,\s)]*))?(?:\)|,)/gi,
|
@@ -5099,9 +5881,12 @@ var styleDefaults = Polymer.StyleDefaults;
|
|
5099
5881
|
var nativeShadow = Polymer.Settings.useNativeShadow;
|
5100
5882
|
Polymer.Base._addFeature({
|
5101
5883
|
_prepStyleProperties: function () {
|
5102
|
-
this._ownStylePropertyNames = this._styles ? propertyUtils.decorateStyles(this._styles) :
|
5884
|
+
this._ownStylePropertyNames = this._styles ? propertyUtils.decorateStyles(this._styles) : null;
|
5885
|
+
},
|
5886
|
+
customStyle: null,
|
5887
|
+
getComputedStyleValue: function (property) {
|
5888
|
+
return this._styleProperties && this._styleProperties[property] || getComputedStyle(this).getPropertyValue(property);
|
5103
5889
|
},
|
5104
|
-
customStyle: {},
|
5105
5890
|
_setupStyleProperties: function () {
|
5106
5891
|
this.customStyle = {};
|
5107
5892
|
},
|
@@ -5198,7 +5983,7 @@ if (host) {
|
|
5198
5983
|
value = host._scopeElementClass(node, value);
|
5199
5984
|
}
|
5200
5985
|
}
|
5201
|
-
node = Polymer.dom(node);
|
5986
|
+
node = this.shadyRoot && this.shadyRoot._hasDistributed ? Polymer.dom(node) : node;
|
5202
5987
|
serializeValueToAttribute.call(this, value, attribute, node);
|
5203
5988
|
},
|
5204
5989
|
_scopeElementClass: function (element, selector) {
|
@@ -5247,7 +6032,6 @@ var XSCOPE_NAME = propertyUtils.XSCOPE_NAME;
|
|
5247
6032
|
Polymer.Base._addFeature({
|
5248
6033
|
_registerFeatures: function () {
|
5249
6034
|
this._prepIs();
|
5250
|
-
this._prepAttributes();
|
5251
6035
|
this._prepConstructor();
|
5252
6036
|
this._prepTemplate();
|
5253
6037
|
this._prepStyles();
|
@@ -5255,6 +6039,7 @@ this._prepStyleProperties();
|
|
5255
6039
|
this._prepAnnotations();
|
5256
6040
|
this._prepEffects();
|
5257
6041
|
this._prepBehaviors();
|
6042
|
+
this._prepPropertyInfo();
|
5258
6043
|
this._prepBindings();
|
5259
6044
|
this._prepShady();
|
5260
6045
|
},
|
@@ -5264,23 +6049,28 @@ this._addComplexObserverEffects(b.observers);
|
|
5264
6049
|
this._addHostAttributes(b.hostAttributes);
|
5265
6050
|
},
|
5266
6051
|
_initFeatures: function () {
|
5267
|
-
this._poolContent();
|
5268
6052
|
this._setupConfigure();
|
5269
6053
|
this._setupStyleProperties();
|
5270
|
-
this.
|
6054
|
+
this._setupDebouncers();
|
6055
|
+
this._registerHost();
|
6056
|
+
if (this._template) {
|
6057
|
+
this._poolContent();
|
6058
|
+
this._beginHosting();
|
5271
6059
|
this._stampTemplate();
|
5272
|
-
this.
|
6060
|
+
this._endHosting();
|
5273
6061
|
this._marshalAnnotationReferences();
|
5274
|
-
|
6062
|
+
}
|
5275
6063
|
this._marshalInstanceEffects();
|
5276
|
-
this._marshalHostAttributes();
|
5277
6064
|
this._marshalBehaviors();
|
6065
|
+
this._marshalHostAttributes();
|
5278
6066
|
this._marshalAttributes();
|
5279
6067
|
this._tryReady();
|
5280
6068
|
},
|
5281
6069
|
_marshalBehavior: function (b) {
|
6070
|
+
if (b.listeners) {
|
5282
6071
|
this._listenListeners(b.listeners);
|
5283
6072
|
}
|
6073
|
+
}
|
5284
6074
|
});
|
5285
6075
|
(function () {
|
5286
6076
|
var nativeShadow = Polymer.Settings.useNativeShadow;
|
@@ -5292,6 +6082,7 @@ var styleTransformer = Polymer.StyleTransformer;
|
|
5292
6082
|
Polymer({
|
5293
6083
|
is: 'custom-style',
|
5294
6084
|
extends: 'style',
|
6085
|
+
_template: null,
|
5295
6086
|
properties: { include: String },
|
5296
6087
|
ready: function () {
|
5297
6088
|
this._tryApply();
|
@@ -5306,18 +6097,19 @@ this._appliesToDocument = true;
|
|
5306
6097
|
var e = this.__appliedElement || this;
|
5307
6098
|
styleDefaults.addStyle(e);
|
5308
6099
|
if (e.textContent || this.include) {
|
5309
|
-
this._apply();
|
6100
|
+
this._apply(true);
|
5310
6101
|
} else {
|
6102
|
+
var self = this;
|
5311
6103
|
var observer = new MutationObserver(function () {
|
5312
6104
|
observer.disconnect();
|
5313
|
-
|
5314
|
-
}
|
6105
|
+
self._apply(true);
|
6106
|
+
});
|
5315
6107
|
observer.observe(e, { childList: true });
|
5316
6108
|
}
|
5317
6109
|
}
|
5318
6110
|
}
|
5319
6111
|
},
|
5320
|
-
_apply: function () {
|
6112
|
+
_apply: function (deferProperties) {
|
5321
6113
|
var e = this.__appliedElement || this;
|
5322
6114
|
if (this.include) {
|
5323
6115
|
e.textContent = styleUtil.cssFromModules(this.include, true) + e.textContent;
|
@@ -5326,7 +6118,19 @@ if (e.textContent) {
|
|
5326
6118
|
styleUtil.forEachStyleRule(styleUtil.rulesForStyle(e), function (rule) {
|
5327
6119
|
styleTransformer.documentRule(rule);
|
5328
6120
|
});
|
5329
|
-
this
|
6121
|
+
var self = this;
|
6122
|
+
function fn() {
|
6123
|
+
self._applyCustomProperties(e);
|
6124
|
+
}
|
6125
|
+
if (this._pendingApplyProperties) {
|
6126
|
+
cancelAnimationFrame(this._pendingApplyProperties);
|
6127
|
+
this._pendingApplyProperties = null;
|
6128
|
+
}
|
6129
|
+
if (deferProperties) {
|
6130
|
+
this._pendingApplyProperties = requestAnimationFrame(fn);
|
6131
|
+
} else {
|
6132
|
+
fn();
|
6133
|
+
}
|
5330
6134
|
}
|
5331
6135
|
},
|
5332
6136
|
_applyCustomProperties: function (element) {
|
@@ -5348,6 +6152,7 @@ properties: { __hideTemplateChildren__: { observer: '_showHideChildren' } },
|
|
5348
6152
|
_instanceProps: Polymer.nob,
|
5349
6153
|
_parentPropPrefix: '_parent_',
|
5350
6154
|
templatize: function (template) {
|
6155
|
+
this._templatized = template;
|
5351
6156
|
if (!template._content) {
|
5352
6157
|
template._content = template.content;
|
5353
6158
|
}
|
@@ -5358,12 +6163,13 @@ return;
|
|
5358
6163
|
}
|
5359
6164
|
var archetype = Object.create(Polymer.Base);
|
5360
6165
|
this._customPrepAnnotations(archetype, template);
|
6166
|
+
this._prepParentProperties(archetype, template);
|
5361
6167
|
archetype._prepEffects();
|
5362
6168
|
this._customPrepEffects(archetype);
|
5363
6169
|
archetype._prepBehaviors();
|
6170
|
+
archetype._prepPropertyInfo();
|
5364
6171
|
archetype._prepBindings();
|
5365
|
-
this.
|
5366
|
-
archetype._notifyPath = this._notifyPathImpl;
|
6172
|
+
archetype._notifyPathUp = this._notifyPathUpImpl;
|
5367
6173
|
archetype._scopeElementClass = this._scopeElementClassImpl;
|
5368
6174
|
archetype.listen = this._listenImpl;
|
5369
6175
|
archetype._showHideChildren = this._showHideChildrenImpl;
|
@@ -5424,7 +6230,9 @@ var c = template._content;
|
|
5424
6230
|
if (!c._notes) {
|
5425
6231
|
var rootDataHost = archetype._rootDataHost;
|
5426
6232
|
if (rootDataHost) {
|
5427
|
-
Polymer.Annotations.prepElement =
|
6233
|
+
Polymer.Annotations.prepElement = function () {
|
6234
|
+
rootDataHost._prepElement();
|
6235
|
+
};
|
5428
6236
|
}
|
5429
6237
|
c._notes = Polymer.Annotations.parseAnnotations(template);
|
5430
6238
|
Polymer.Annotations.prepElement = null;
|
@@ -5445,24 +6253,36 @@ delete parentProps[prop];
|
|
5445
6253
|
proto = archetype._parentPropProto = Object.create(null);
|
5446
6254
|
if (template != this) {
|
5447
6255
|
Polymer.Bind.prepareModel(proto);
|
6256
|
+
Polymer.Base.prepareModelNotifyPath(proto);
|
5448
6257
|
}
|
5449
6258
|
for (prop in parentProps) {
|
5450
6259
|
var parentProp = this._parentPropPrefix + prop;
|
5451
6260
|
var effects = [
|
5452
6261
|
{
|
5453
6262
|
kind: 'function',
|
5454
|
-
effect: this._createForwardPropEffector(prop)
|
6263
|
+
effect: this._createForwardPropEffector(prop),
|
6264
|
+
fn: Polymer.Bind._functionEffect
|
5455
6265
|
},
|
5456
|
-
{
|
6266
|
+
{
|
6267
|
+
kind: 'notify',
|
6268
|
+
fn: Polymer.Bind._notifyEffect,
|
6269
|
+
effect: { event: Polymer.CaseMap.camelToDashCase(parentProp) + '-changed' }
|
6270
|
+
}
|
5457
6271
|
];
|
5458
6272
|
Polymer.Bind._createAccessors(proto, parentProp, effects);
|
5459
6273
|
}
|
5460
6274
|
}
|
6275
|
+
var self = this;
|
5461
6276
|
if (template != this) {
|
5462
6277
|
Polymer.Bind.prepareInstance(template);
|
5463
|
-
template._forwardParentProp =
|
6278
|
+
template._forwardParentProp = function (source, value) {
|
6279
|
+
self._forwardParentProp(source, value);
|
6280
|
+
};
|
5464
6281
|
}
|
5465
6282
|
this._extendTemplate(template, proto);
|
6283
|
+
template._pathEffector = function (path, value, fromAbove) {
|
6284
|
+
return self._pathEffectorImpl(path, value, fromAbove);
|
6285
|
+
};
|
5466
6286
|
}
|
5467
6287
|
},
|
5468
6288
|
_createForwardPropEffector: function (prop) {
|
@@ -5473,7 +6293,7 @@ this._forwardParentProp(prop, value);
|
|
5473
6293
|
_createHostPropEffector: function (prop) {
|
5474
6294
|
var prefix = this._parentPropPrefix;
|
5475
6295
|
return function (source, value) {
|
5476
|
-
this.dataHost[prefix + prop] = value;
|
6296
|
+
this.dataHost._templatized[prefix + prop] = value;
|
5477
6297
|
};
|
5478
6298
|
},
|
5479
6299
|
_createInstancePropEffector: function (prop) {
|
@@ -5484,14 +6304,15 @@ this.dataHost._forwardInstanceProp(this, prop, value);
|
|
5484
6304
|
};
|
5485
6305
|
},
|
5486
6306
|
_extendTemplate: function (template, proto) {
|
5487
|
-
Object.getOwnPropertyNames(proto)
|
6307
|
+
var n$ = Object.getOwnPropertyNames(proto);
|
6308
|
+
for (var i = 0, n; i < n$.length && (n = n$[i]); i++) {
|
5488
6309
|
var val = template[n];
|
5489
6310
|
var pd = Object.getOwnPropertyDescriptor(proto, n);
|
5490
6311
|
Object.defineProperty(template, n, pd);
|
5491
6312
|
if (val !== undefined) {
|
5492
6313
|
template._propertySetter(n, val);
|
5493
6314
|
}
|
5494
|
-
}
|
6315
|
+
}
|
5495
6316
|
},
|
5496
6317
|
_showHideChildren: function (hidden) {
|
5497
6318
|
},
|
@@ -5499,31 +6320,36 @@ _forwardInstancePath: function (inst, path, value) {
|
|
5499
6320
|
},
|
5500
6321
|
_forwardInstanceProp: function (inst, prop, value) {
|
5501
6322
|
},
|
5502
|
-
|
6323
|
+
_notifyPathUpImpl: function (path, value) {
|
5503
6324
|
var dataHost = this.dataHost;
|
5504
6325
|
var dot = path.indexOf('.');
|
5505
6326
|
var root = dot < 0 ? path : path.slice(0, dot);
|
5506
6327
|
dataHost._forwardInstancePath.call(dataHost, this, path, value);
|
5507
6328
|
if (root in dataHost._parentProps) {
|
5508
|
-
dataHost.notifyPath(dataHost._parentPropPrefix + path, value);
|
6329
|
+
dataHost._templatized.notifyPath(dataHost._parentPropPrefix + path, value);
|
5509
6330
|
}
|
5510
6331
|
},
|
5511
|
-
|
6332
|
+
_pathEffectorImpl: function (path, value, fromAbove) {
|
5512
6333
|
if (this._forwardParentPath) {
|
5513
6334
|
if (path.indexOf(this._parentPropPrefix) === 0) {
|
5514
|
-
|
6335
|
+
var subPath = path.substring(this._parentPropPrefix.length);
|
6336
|
+
var model = this._modelForPath(subPath);
|
6337
|
+
if (model in this._parentProps) {
|
6338
|
+
this._forwardParentPath(subPath, value);
|
5515
6339
|
}
|
5516
6340
|
}
|
5517
|
-
|
6341
|
+
}
|
6342
|
+
Polymer.Base._pathEffector.call(this._templatized, path, value, fromAbove);
|
5518
6343
|
},
|
5519
6344
|
_constructorImpl: function (model, host) {
|
5520
6345
|
this._rootDataHost = host._getRootDataHost();
|
5521
6346
|
this._setupConfigure(model);
|
5522
|
-
this.
|
6347
|
+
this._registerHost(host);
|
6348
|
+
this._beginHosting();
|
5523
6349
|
this.root = this.instanceTemplate(this._template);
|
5524
6350
|
this.root.__noContent = !this._notes._hasContent;
|
5525
6351
|
this.root.__styleScoped = true;
|
5526
|
-
this.
|
6352
|
+
this._endHosting();
|
5527
6353
|
this._marshalAnnotatedNodes();
|
5528
6354
|
this._marshalInstanceEffects();
|
5529
6355
|
this._marshalAnnotatedListeners();
|
@@ -5557,8 +6383,9 @@ return host._scopeElementClass(node, value);
|
|
5557
6383
|
stamp: function (model) {
|
5558
6384
|
model = model || {};
|
5559
6385
|
if (this._parentProps) {
|
6386
|
+
var templatized = this._templatized;
|
5560
6387
|
for (var prop in this._parentProps) {
|
5561
|
-
model[prop] =
|
6388
|
+
model[prop] = templatized[this._parentPropPrefix + prop];
|
5562
6389
|
}
|
5563
6390
|
}
|
5564
6391
|
return new this.ctor(model, this);
|
@@ -5581,6 +6408,7 @@ el = el.parentNode;
|
|
5581
6408
|
Polymer({
|
5582
6409
|
is: 'dom-template',
|
5583
6410
|
extends: 'template',
|
6411
|
+
_template: null,
|
5584
6412
|
behaviors: [Polymer.Templatizer],
|
5585
6413
|
ready: function () {
|
5586
6414
|
this.templatize(this);
|
@@ -5615,9 +6443,10 @@ this.omap.set(item, key);
|
|
5615
6443
|
} else {
|
5616
6444
|
this.pmap[item] = key;
|
5617
6445
|
}
|
5618
|
-
return key;
|
6446
|
+
return '#' + key;
|
5619
6447
|
},
|
5620
6448
|
removeKey: function (key) {
|
6449
|
+
key = this._parseKey(key);
|
5621
6450
|
this._removeFromMap(this.store[key]);
|
5622
6451
|
delete this.store[key];
|
5623
6452
|
},
|
@@ -5634,16 +6463,29 @@ this.removeKey(key);
|
|
5634
6463
|
return key;
|
5635
6464
|
},
|
5636
6465
|
getKey: function (item) {
|
6466
|
+
var key;
|
5637
6467
|
if (item && typeof item == 'object') {
|
5638
|
-
|
6468
|
+
key = this.omap.get(item);
|
5639
6469
|
} else {
|
5640
|
-
|
6470
|
+
key = this.pmap[item];
|
6471
|
+
}
|
6472
|
+
if (key != undefined) {
|
6473
|
+
return '#' + key;
|
5641
6474
|
}
|
5642
6475
|
},
|
5643
6476
|
getKeys: function () {
|
5644
|
-
return Object.keys(this.store)
|
6477
|
+
return Object.keys(this.store).map(function (key) {
|
6478
|
+
return '#' + key;
|
6479
|
+
});
|
6480
|
+
},
|
6481
|
+
_parseKey: function (key) {
|
6482
|
+
if (key[0] == '#') {
|
6483
|
+
return key.slice(1);
|
6484
|
+
}
|
6485
|
+
throw new Error('unexpected key ' + key);
|
5645
6486
|
},
|
5646
6487
|
setItem: function (key, item) {
|
6488
|
+
key = this._parseKey(key);
|
5647
6489
|
var old = this.store[key];
|
5648
6490
|
if (old) {
|
5649
6491
|
this._removeFromMap(old);
|
@@ -5656,6 +6498,7 @@ this.pmap[item] = key;
|
|
5656
6498
|
this.store[key] = item;
|
5657
6499
|
},
|
5658
6500
|
getItem: function (key) {
|
6501
|
+
key = this._parseKey(key);
|
5659
6502
|
return this.store[key];
|
5660
6503
|
},
|
5661
6504
|
getItems: function () {
|
@@ -5666,21 +6509,21 @@ items.push(store[key]);
|
|
5666
6509
|
return items;
|
5667
6510
|
},
|
5668
6511
|
_applySplices: function (splices) {
|
5669
|
-
var keyMap = {}, key
|
5670
|
-
splices.
|
6512
|
+
var keyMap = {}, key;
|
6513
|
+
for (var i = 0, s; i < splices.length && (s = splices[i]); i++) {
|
5671
6514
|
s.addedKeys = [];
|
5672
|
-
for (
|
5673
|
-
key = this.getKey(s.removed[
|
6515
|
+
for (var j = 0; j < s.removed.length; j++) {
|
6516
|
+
key = this.getKey(s.removed[j]);
|
5674
6517
|
keyMap[key] = keyMap[key] ? null : -1;
|
5675
6518
|
}
|
5676
|
-
for (
|
5677
|
-
var item = this.userArray[s.index +
|
6519
|
+
for (var j = 0; j < s.addedCount; j++) {
|
6520
|
+
var item = this.userArray[s.index + j];
|
5678
6521
|
key = this.getKey(item);
|
5679
6522
|
key = key === undefined ? this.add(item) : key;
|
5680
6523
|
keyMap[key] = keyMap[key] ? null : 1;
|
5681
6524
|
s.addedKeys.push(key);
|
5682
6525
|
}
|
5683
|
-
}
|
6526
|
+
}
|
5684
6527
|
var removed = [];
|
5685
6528
|
var added = [];
|
5686
6529
|
for (var key in keyMap) {
|
@@ -5708,6 +6551,7 @@ return coll ? coll._applySplices(splices) : null;
|
|
5708
6551
|
Polymer({
|
5709
6552
|
is: 'dom-repeat',
|
5710
6553
|
extends: 'template',
|
6554
|
+
_template: null,
|
5711
6555
|
properties: {
|
5712
6556
|
items: { type: Array },
|
5713
6557
|
as: {
|
@@ -5730,22 +6574,37 @@ observe: {
|
|
5730
6574
|
type: String,
|
5731
6575
|
observer: '_observeChanged'
|
5732
6576
|
},
|
5733
|
-
delay: Number
|
6577
|
+
delay: Number,
|
6578
|
+
initialCount: {
|
6579
|
+
type: Number,
|
6580
|
+
observer: '_initializeChunking'
|
6581
|
+
},
|
6582
|
+
targetFramerate: {
|
6583
|
+
type: Number,
|
6584
|
+
value: 20
|
6585
|
+
},
|
6586
|
+
_targetFrameTime: { computed: '_computeFrameTime(targetFramerate)' }
|
5734
6587
|
},
|
5735
6588
|
behaviors: [Polymer.Templatizer],
|
5736
6589
|
observers: ['_itemsChanged(items.*)'],
|
5737
6590
|
created: function () {
|
5738
6591
|
this._instances = [];
|
6592
|
+
this._pool = [];
|
6593
|
+
this._limit = Infinity;
|
6594
|
+
var self = this;
|
6595
|
+
this._boundRenderChunk = function () {
|
6596
|
+
self._renderChunk();
|
6597
|
+
};
|
5739
6598
|
},
|
5740
6599
|
detached: function () {
|
5741
6600
|
for (var i = 0; i < this._instances.length; i++) {
|
5742
|
-
this.
|
6601
|
+
this._detachInstance(i);
|
5743
6602
|
}
|
5744
6603
|
},
|
5745
6604
|
attached: function () {
|
5746
|
-
var
|
6605
|
+
var parent = Polymer.dom(Polymer.dom(this).parentNode);
|
5747
6606
|
for (var i = 0; i < this._instances.length; i++) {
|
5748
|
-
|
6607
|
+
this._attachInstance(i, parent);
|
5749
6608
|
}
|
5750
6609
|
},
|
5751
6610
|
ready: function () {
|
@@ -5756,9 +6615,8 @@ if (!this.ctor) {
|
|
5756
6615
|
this.templatize(this);
|
5757
6616
|
}
|
5758
6617
|
},
|
5759
|
-
_sortChanged: function () {
|
6618
|
+
_sortChanged: function (sort) {
|
5760
6619
|
var dataHost = this._getRootDataHost();
|
5761
|
-
var sort = this.sort;
|
5762
6620
|
this._sortFn = sort && (typeof sort == 'function' ? sort : function () {
|
5763
6621
|
return dataHost[sort].apply(dataHost, arguments);
|
5764
6622
|
});
|
@@ -5767,9 +6625,8 @@ if (this.items) {
|
|
5767
6625
|
this._debounceTemplate(this._render);
|
5768
6626
|
}
|
5769
6627
|
},
|
5770
|
-
_filterChanged: function () {
|
6628
|
+
_filterChanged: function (filter) {
|
5771
6629
|
var dataHost = this._getRootDataHost();
|
5772
|
-
var filter = this.filter;
|
5773
6630
|
this._filterFn = filter && (typeof filter == 'function' ? filter : function () {
|
5774
6631
|
return dataHost[filter].apply(dataHost, arguments);
|
5775
6632
|
});
|
@@ -5778,6 +6635,32 @@ if (this.items) {
|
|
5778
6635
|
this._debounceTemplate(this._render);
|
5779
6636
|
}
|
5780
6637
|
},
|
6638
|
+
_computeFrameTime: function (rate) {
|
6639
|
+
return Math.ceil(1000 / rate);
|
6640
|
+
},
|
6641
|
+
_initializeChunking: function () {
|
6642
|
+
if (this.initialCount) {
|
6643
|
+
this._limit = this.initialCount;
|
6644
|
+
this._chunkCount = this.initialCount;
|
6645
|
+
this._lastChunkTime = performance.now();
|
6646
|
+
}
|
6647
|
+
},
|
6648
|
+
_tryRenderChunk: function () {
|
6649
|
+
if (this.items && this._limit < this.items.length) {
|
6650
|
+
this.debounce('renderChunk', this._requestRenderChunk);
|
6651
|
+
}
|
6652
|
+
},
|
6653
|
+
_requestRenderChunk: function () {
|
6654
|
+
requestAnimationFrame(this._boundRenderChunk);
|
6655
|
+
},
|
6656
|
+
_renderChunk: function () {
|
6657
|
+
var currChunkTime = performance.now();
|
6658
|
+
var ratio = this._targetFrameTime / (currChunkTime - this._lastChunkTime);
|
6659
|
+
this._chunkCount = Math.round(this._chunkCount * ratio) || 1;
|
6660
|
+
this._limit += this._chunkCount;
|
6661
|
+
this._lastChunkTime = currChunkTime;
|
6662
|
+
this._debounceTemplate(this._render);
|
6663
|
+
},
|
5781
6664
|
_observeChanged: function () {
|
5782
6665
|
this._observePaths = this.observe && this.observe.replace('.*', '.').split(' ');
|
5783
6666
|
},
|
@@ -5793,6 +6676,7 @@ this._error(this._logf('dom-repeat', 'expected array for `items`,' + ' found', t
|
|
5793
6676
|
this._keySplices = [];
|
5794
6677
|
this._indexSplices = [];
|
5795
6678
|
this._needFullRefresh = true;
|
6679
|
+
this._initializeChunking();
|
5796
6680
|
this._debounceTemplate(this._render);
|
5797
6681
|
} else if (change.path == 'items.splices') {
|
5798
6682
|
this._keySplices = this._keySplices.concat(change.value.keySplices);
|
@@ -5831,7 +6715,7 @@ var c = this.collection;
|
|
5831
6715
|
if (this._needFullRefresh) {
|
5832
6716
|
this._applyFullRefresh();
|
5833
6717
|
this._needFullRefresh = false;
|
5834
|
-
} else {
|
6718
|
+
} else if (this._keySplices.length) {
|
5835
6719
|
if (this._sortFn) {
|
5836
6720
|
this._applySplicesUserSort(this._keySplices);
|
5837
6721
|
} else {
|
@@ -5841,16 +6725,26 @@ this._applyFullRefresh();
|
|
5841
6725
|
this._applySplicesArrayOrder(this._indexSplices);
|
5842
6726
|
}
|
5843
6727
|
}
|
6728
|
+
} else {
|
5844
6729
|
}
|
5845
6730
|
this._keySplices = [];
|
5846
6731
|
this._indexSplices = [];
|
5847
6732
|
var keyToIdx = this._keyToInstIdx = {};
|
5848
|
-
for (var i =
|
6733
|
+
for (var i = this._instances.length - 1; i >= 0; i--) {
|
5849
6734
|
var inst = this._instances[i];
|
6735
|
+
if (inst.isPlaceholder && i < this._limit) {
|
6736
|
+
inst = this._insertInstance(i, inst.__key__);
|
6737
|
+
} else if (!inst.isPlaceholder && i >= this._limit) {
|
6738
|
+
inst = this._downgradeInstance(i, inst.__key__);
|
6739
|
+
}
|
5850
6740
|
keyToIdx[inst.__key__] = i;
|
6741
|
+
if (!inst.isPlaceholder) {
|
5851
6742
|
inst.__setProperty(this.indexAs, i, true);
|
5852
6743
|
}
|
6744
|
+
}
|
6745
|
+
this._pool.length = 0;
|
5853
6746
|
this.fire('dom-change');
|
6747
|
+
this._tryRenderChunk();
|
5854
6748
|
},
|
5855
6749
|
_applyFullRefresh: function () {
|
5856
6750
|
var c = this.collection;
|
@@ -5866,33 +6760,34 @@ keys.push(c.getKey(items[i]));
|
|
5866
6760
|
}
|
5867
6761
|
}
|
5868
6762
|
}
|
6763
|
+
var self = this;
|
5869
6764
|
if (this._filterFn) {
|
5870
6765
|
keys = keys.filter(function (a) {
|
5871
|
-
return
|
5872
|
-
}
|
6766
|
+
return self._filterFn(c.getItem(a));
|
6767
|
+
});
|
5873
6768
|
}
|
5874
6769
|
if (this._sortFn) {
|
5875
6770
|
keys.sort(function (a, b) {
|
5876
|
-
return
|
5877
|
-
}
|
6771
|
+
return self._sortFn(c.getItem(a), c.getItem(b));
|
6772
|
+
});
|
5878
6773
|
}
|
5879
6774
|
for (var i = 0; i < keys.length; i++) {
|
5880
6775
|
var key = keys[i];
|
5881
6776
|
var inst = this._instances[i];
|
5882
6777
|
if (inst) {
|
5883
|
-
inst.
|
6778
|
+
inst.__key__ = key;
|
6779
|
+
if (!inst.isPlaceholder && i < this._limit) {
|
5884
6780
|
inst.__setProperty(this.as, c.getItem(key), true);
|
6781
|
+
}
|
6782
|
+
} else if (i < this._limit) {
|
6783
|
+
this._insertInstance(i, key);
|
5885
6784
|
} else {
|
5886
|
-
this.
|
6785
|
+
this._insertPlaceholder(i, key);
|
5887
6786
|
}
|
5888
6787
|
}
|
5889
|
-
for (
|
5890
|
-
this.
|
6788
|
+
for (var j = this._instances.length - 1; j >= i; j--) {
|
6789
|
+
this._detachAndRemoveInstance(j);
|
5891
6790
|
}
|
5892
|
-
this._instances.splice(keys.length, this._instances.length - keys.length);
|
5893
|
-
},
|
5894
|
-
_keySort: function (a, b) {
|
5895
|
-
return this.collection.getKey(a) - this.collection.getKey(b);
|
5896
6791
|
},
|
5897
6792
|
_numericSort: function (a, b) {
|
5898
6793
|
return a - b;
|
@@ -5901,18 +6796,16 @@ _applySplicesUserSort: function (splices) {
|
|
5901
6796
|
var c = this.collection;
|
5902
6797
|
var instances = this._instances;
|
5903
6798
|
var keyMap = {};
|
5904
|
-
var
|
5905
|
-
var
|
5906
|
-
|
5907
|
-
for (var i = 0; i < s.removed.length; i++) {
|
5908
|
-
var key = s.removed[i];
|
6799
|
+
for (var i = 0, s; i < splices.length && (s = splices[i]); i++) {
|
6800
|
+
for (var j = 0; j < s.removed.length; j++) {
|
6801
|
+
var key = s.removed[j];
|
5909
6802
|
keyMap[key] = keyMap[key] ? null : -1;
|
5910
6803
|
}
|
5911
|
-
for (var
|
5912
|
-
var key = s.added[
|
6804
|
+
for (var j = 0; j < s.added.length; j++) {
|
6805
|
+
var key = s.added[j];
|
5913
6806
|
keyMap[key] = keyMap[key] ? null : 1;
|
5914
6807
|
}
|
5915
|
-
}
|
6808
|
+
}
|
5916
6809
|
var removedIdxs = [];
|
5917
6810
|
var addedKeys = [];
|
5918
6811
|
for (var key in keyMap) {
|
@@ -5928,36 +6821,35 @@ removedIdxs.sort(this._numericSort);
|
|
5928
6821
|
for (var i = removedIdxs.length - 1; i >= 0; i--) {
|
5929
6822
|
var idx = removedIdxs[i];
|
5930
6823
|
if (idx !== undefined) {
|
5931
|
-
|
5932
|
-
instances.splice(idx, 1);
|
6824
|
+
this._detachAndRemoveInstance(idx);
|
5933
6825
|
}
|
5934
6826
|
}
|
5935
6827
|
}
|
6828
|
+
var self = this;
|
5936
6829
|
if (addedKeys.length) {
|
5937
6830
|
if (this._filterFn) {
|
5938
6831
|
addedKeys = addedKeys.filter(function (a) {
|
5939
|
-
return
|
5940
|
-
}
|
6832
|
+
return self._filterFn(c.getItem(a));
|
6833
|
+
});
|
5941
6834
|
}
|
5942
6835
|
addedKeys.sort(function (a, b) {
|
5943
|
-
return
|
5944
|
-
}
|
6836
|
+
return self._sortFn(c.getItem(a), c.getItem(b));
|
6837
|
+
});
|
5945
6838
|
var start = 0;
|
5946
6839
|
for (var i = 0; i < addedKeys.length; i++) {
|
5947
|
-
start = this._insertRowUserSort(start, addedKeys[i]
|
6840
|
+
start = this._insertRowUserSort(start, addedKeys[i]);
|
5948
6841
|
}
|
5949
6842
|
}
|
5950
6843
|
},
|
5951
|
-
_insertRowUserSort: function (start, key
|
6844
|
+
_insertRowUserSort: function (start, key) {
|
5952
6845
|
var c = this.collection;
|
5953
6846
|
var item = c.getItem(key);
|
5954
6847
|
var end = this._instances.length - 1;
|
5955
6848
|
var idx = -1;
|
5956
|
-
var sortFn = this._sortFn || this._keySort.bind(this);
|
5957
6849
|
while (start <= end) {
|
5958
6850
|
var mid = start + end >> 1;
|
5959
6851
|
var midKey = this._instances[mid].__key__;
|
5960
|
-
var cmp =
|
6852
|
+
var cmp = this._sortFn(c.getItem(midKey), item);
|
5961
6853
|
if (cmp < 0) {
|
5962
6854
|
start = mid + 1;
|
5963
6855
|
} else if (cmp > 0) {
|
@@ -5970,65 +6862,80 @@ break;
|
|
5970
6862
|
if (idx < 0) {
|
5971
6863
|
idx = end + 1;
|
5972
6864
|
}
|
5973
|
-
this.
|
6865
|
+
this._insertPlaceholder(idx, key);
|
5974
6866
|
return idx;
|
5975
6867
|
},
|
5976
6868
|
_applySplicesArrayOrder: function (splices) {
|
5977
|
-
var pool = [];
|
5978
6869
|
var c = this.collection;
|
5979
|
-
splices.
|
5980
|
-
for (var
|
5981
|
-
|
5982
|
-
if (!inst.isPlaceholder) {
|
5983
|
-
pool.push(inst);
|
5984
|
-
}
|
6870
|
+
for (var i = 0, s; i < splices.length && (s = splices[i]); i++) {
|
6871
|
+
for (var j = 0; j < s.removed.length; j++) {
|
6872
|
+
this._detachAndRemoveInstance(s.index);
|
5985
6873
|
}
|
5986
|
-
|
5987
|
-
|
5988
|
-
var inst = {
|
5989
|
-
isPlaceholder: true,
|
5990
|
-
key: s.addedKeys[i]
|
5991
|
-
};
|
5992
|
-
this._instances.splice(s.index + i, 0, inst);
|
5993
|
-
}
|
5994
|
-
}, this);
|
5995
|
-
for (var i = this._instances.length - 1; i >= 0; i--) {
|
5996
|
-
var inst = this._instances[i];
|
5997
|
-
if (inst.isPlaceholder) {
|
5998
|
-
this._instances[i] = this._insertRow(i, inst.key, pool, true);
|
6874
|
+
for (var j = 0; j < s.addedKeys.length; j++) {
|
6875
|
+
this._insertPlaceholder(s.index + j, s.addedKeys[j]);
|
5999
6876
|
}
|
6000
6877
|
}
|
6001
6878
|
},
|
6002
|
-
|
6879
|
+
_detachInstance: function (idx) {
|
6003
6880
|
var inst = this._instances[idx];
|
6004
6881
|
if (!inst.isPlaceholder) {
|
6005
|
-
var parentNode = Polymer.dom(this).parentNode;
|
6006
6882
|
for (var i = 0; i < inst._children.length; i++) {
|
6007
6883
|
var el = inst._children[i];
|
6008
6884
|
Polymer.dom(inst.root).appendChild(el);
|
6009
6885
|
}
|
6010
|
-
}
|
6011
6886
|
return inst;
|
6887
|
+
}
|
6888
|
+
},
|
6889
|
+
_attachInstance: function (idx, parent) {
|
6890
|
+
var inst = this._instances[idx];
|
6891
|
+
if (!inst.isPlaceholder) {
|
6892
|
+
parent.insertBefore(inst.root, this);
|
6893
|
+
}
|
6894
|
+
},
|
6895
|
+
_detachAndRemoveInstance: function (idx) {
|
6896
|
+
var inst = this._detachInstance(idx);
|
6897
|
+
if (inst) {
|
6898
|
+
this._pool.push(inst);
|
6899
|
+
}
|
6900
|
+
this._instances.splice(idx, 1);
|
6901
|
+
},
|
6902
|
+
_insertPlaceholder: function (idx, key) {
|
6903
|
+
this._instances.splice(idx, 0, {
|
6904
|
+
isPlaceholder: true,
|
6905
|
+
__key__: key
|
6906
|
+
});
|
6907
|
+
},
|
6908
|
+
_stampInstance: function (idx, key) {
|
6909
|
+
var model = { __key__: key };
|
6910
|
+
model[this.as] = this.collection.getItem(key);
|
6911
|
+
model[this.indexAs] = idx;
|
6912
|
+
return this.stamp(model);
|
6012
6913
|
},
|
6013
|
-
|
6014
|
-
var inst;
|
6015
|
-
if (inst
|
6914
|
+
_insertInstance: function (idx, key) {
|
6915
|
+
var inst = this._pool.pop();
|
6916
|
+
if (inst) {
|
6016
6917
|
inst.__setProperty(this.as, this.collection.getItem(key), true);
|
6017
6918
|
inst.__setProperty('__key__', key, true);
|
6018
6919
|
} else {
|
6019
|
-
inst = this.
|
6920
|
+
inst = this._stampInstance(idx, key);
|
6020
6921
|
}
|
6021
|
-
var beforeRow = this._instances[
|
6022
|
-
var beforeNode = beforeRow ? beforeRow._children[0] : this;
|
6922
|
+
var beforeRow = this._instances[idx + 1];
|
6923
|
+
var beforeNode = beforeRow && !beforeRow.isPlaceholder ? beforeRow._children[0] : this;
|
6023
6924
|
var parentNode = Polymer.dom(this).parentNode;
|
6024
6925
|
Polymer.dom(parentNode).insertBefore(inst.root, beforeNode);
|
6926
|
+
this._instances[idx] = inst;
|
6025
6927
|
return inst;
|
6026
6928
|
},
|
6027
|
-
|
6028
|
-
var
|
6029
|
-
|
6030
|
-
|
6031
|
-
|
6929
|
+
_downgradeInstance: function (idx, key) {
|
6930
|
+
var inst = this._detachInstance(idx);
|
6931
|
+
if (inst) {
|
6932
|
+
this._pool.push(inst);
|
6933
|
+
}
|
6934
|
+
inst = {
|
6935
|
+
isPlaceholder: true,
|
6936
|
+
__key__: key
|
6937
|
+
};
|
6938
|
+
this._instances[idx] = inst;
|
6032
6939
|
return inst;
|
6033
6940
|
},
|
6034
6941
|
_showHideChildren: function (hidden) {
|
@@ -6049,18 +6956,24 @@ this.set('items.' + idx, value);
|
|
6049
6956
|
},
|
6050
6957
|
_forwardInstancePath: function (inst, path, value) {
|
6051
6958
|
if (path.indexOf(this.as + '.') === 0) {
|
6052
|
-
this.
|
6959
|
+
this._notifyPath('items.' + inst.__key__ + '.' + path.slice(this.as.length + 1), value);
|
6053
6960
|
}
|
6054
6961
|
},
|
6055
6962
|
_forwardParentProp: function (prop, value) {
|
6056
|
-
this._instances
|
6963
|
+
var i$ = this._instances;
|
6964
|
+
for (var i = 0, inst; i < i$.length && (inst = i$[i]); i++) {
|
6965
|
+
if (!inst.isPlaceholder) {
|
6057
6966
|
inst.__setProperty(prop, value, true);
|
6058
|
-
}
|
6967
|
+
}
|
6968
|
+
}
|
6059
6969
|
},
|
6060
6970
|
_forwardParentPath: function (path, value) {
|
6061
|
-
this._instances
|
6062
|
-
|
6063
|
-
|
6971
|
+
var i$ = this._instances;
|
6972
|
+
for (var i = 0, inst; i < i$.length && (inst = i$[i]); i++) {
|
6973
|
+
if (!inst.isPlaceholder) {
|
6974
|
+
inst._notifyPath(path, value, true);
|
6975
|
+
}
|
6976
|
+
}
|
6064
6977
|
},
|
6065
6978
|
_forwardItemPath: function (path, value) {
|
6066
6979
|
if (this._keyToInstIdx) {
|
@@ -6068,10 +6981,10 @@ var dot = path.indexOf('.');
|
|
6068
6981
|
var key = path.substring(0, dot < 0 ? path.length : dot);
|
6069
6982
|
var idx = this._keyToInstIdx[key];
|
6070
6983
|
var inst = this._instances[idx];
|
6071
|
-
if (inst) {
|
6984
|
+
if (inst && !inst.isPlaceholder) {
|
6072
6985
|
if (dot >= 0) {
|
6073
6986
|
path = this.as + '.' + path.substring(dot + 1);
|
6074
|
-
inst.
|
6987
|
+
inst._notifyPath(path, value, true);
|
6075
6988
|
} else {
|
6076
6989
|
inst.__setProperty(this.as, value, true);
|
6077
6990
|
}
|
@@ -6093,6 +7006,7 @@ return instance && instance[this.indexAs];
|
|
6093
7006
|
});
|
6094
7007
|
Polymer({
|
6095
7008
|
is: 'array-selector',
|
7009
|
+
_template: null,
|
6096
7010
|
properties: {
|
6097
7011
|
items: {
|
6098
7012
|
type: Array,
|
@@ -6123,6 +7037,7 @@ this.unlinkPaths('selected.' + i);
|
|
6123
7037
|
}
|
6124
7038
|
} else {
|
6125
7039
|
this.unlinkPaths('selected');
|
7040
|
+
this.unlinkPaths('selectedItem');
|
6126
7041
|
}
|
6127
7042
|
if (this.multi) {
|
6128
7043
|
if (!this.selected || this.selected.length) {
|
@@ -6166,7 +7081,7 @@ this.deselect(item);
|
|
6166
7081
|
}
|
6167
7082
|
} else {
|
6168
7083
|
this.push('selected', item);
|
6169
|
-
skey = this._selectedColl.getKey(item);
|
7084
|
+
var skey = this._selectedColl.getKey(item);
|
6170
7085
|
this.linkPaths('selected.' + skey, 'items.' + key);
|
6171
7086
|
}
|
6172
7087
|
} else {
|
@@ -6184,6 +7099,7 @@ this.linkPaths('selectedItem', 'items.' + key);
|
|
6184
7099
|
Polymer({
|
6185
7100
|
is: 'dom-if',
|
6186
7101
|
extends: 'template',
|
7102
|
+
_template: null,
|
6187
7103
|
properties: {
|
6188
7104
|
'if': {
|
6189
7105
|
type: Boolean,
|
@@ -6231,20 +7147,23 @@ this._lastIf = this.if;
|
|
6231
7147
|
},
|
6232
7148
|
_ensureInstance: function () {
|
6233
7149
|
if (!this._instance) {
|
7150
|
+
var parentNode = Polymer.dom(this).parentNode;
|
7151
|
+
if (parentNode) {
|
7152
|
+
var parent = Polymer.dom(parentNode);
|
6234
7153
|
this._instance = this.stamp();
|
6235
7154
|
var root = this._instance.root;
|
6236
|
-
var parent = Polymer.dom(Polymer.dom(this).parentNode);
|
6237
7155
|
parent.insertBefore(root, this);
|
6238
7156
|
}
|
7157
|
+
}
|
6239
7158
|
},
|
6240
7159
|
_teardownInstance: function () {
|
6241
7160
|
if (this._instance) {
|
6242
|
-
var c = this._instance._children;
|
6243
|
-
if (c) {
|
6244
|
-
var parent = Polymer.dom(Polymer.dom(c[0]).parentNode);
|
6245
|
-
|
7161
|
+
var c$ = this._instance._children;
|
7162
|
+
if (c$) {
|
7163
|
+
var parent = Polymer.dom(Polymer.dom(c$[0]).parentNode);
|
7164
|
+
for (var i = 0, n; i < c$.length && (n = c$[i]); i++) {
|
6246
7165
|
parent.removeChild(n);
|
6247
|
-
}
|
7166
|
+
}
|
6248
7167
|
}
|
6249
7168
|
this._instance = null;
|
6250
7169
|
}
|
@@ -6262,15 +7181,19 @@ this._instance[prop] = value;
|
|
6262
7181
|
},
|
6263
7182
|
_forwardParentPath: function (path, value) {
|
6264
7183
|
if (this._instance) {
|
6265
|
-
this._instance.
|
7184
|
+
this._instance._notifyPath(path, value, true);
|
6266
7185
|
}
|
6267
7186
|
}
|
6268
7187
|
});
|
6269
7188
|
Polymer({
|
6270
7189
|
is: 'dom-bind',
|
6271
7190
|
extends: 'template',
|
7191
|
+
_template: null,
|
6272
7192
|
created: function () {
|
6273
|
-
|
7193
|
+
var self = this;
|
7194
|
+
Polymer.RenderStatus.whenReady(function () {
|
7195
|
+
self._markImportsReady();
|
7196
|
+
});
|
6274
7197
|
},
|
6275
7198
|
_ensureReady: function () {
|
6276
7199
|
if (!this._readied) {
|
@@ -6309,7 +7232,10 @@ var config = {};
|
|
6309
7232
|
for (var prop in this._propertyEffects) {
|
6310
7233
|
config[prop] = this[prop];
|
6311
7234
|
}
|
6312
|
-
|
7235
|
+
var setupConfigure = this._setupConfigure;
|
7236
|
+
this._setupConfigure = function () {
|
7237
|
+
setupConfigure.call(this, config);
|
7238
|
+
};
|
6313
7239
|
},
|
6314
7240
|
attached: function () {
|
6315
7241
|
if (this._importsReady) {
|
@@ -6328,8 +7254,9 @@ this._prepEffects();
|
|
6328
7254
|
this._prepBehaviors();
|
6329
7255
|
this._prepConfigure();
|
6330
7256
|
this._prepBindings();
|
7257
|
+
this._prepPropertyInfo();
|
6331
7258
|
Polymer.Base._initFeatures.call(this);
|
6332
|
-
this._children =
|
7259
|
+
this._children = Polymer.DomApi.arrayCopyChildNodes(this.root);
|
6333
7260
|
}
|
6334
7261
|
this._insertChildren();
|
6335
7262
|
this.fire('dom-change');
|
@@ -8553,7 +9480,7 @@ if (!window.Promise) {
|
|
8553
9480
|
}
|
8554
9481
|
}
|
8555
9482
|
};
|
8556
|
-
</script><dom-module id="concerto-ticker" assetpath="contents/">
|
9483
|
+
</script><dom-module id="concerto-ticker" assetpath="/contents/">
|
8557
9484
|
<style>
|
8558
9485
|
:host {
|
8559
9486
|
position: absolute;
|
@@ -8605,14 +9532,13 @@ if (!window.Promise) {
|
|
8605
9532
|
</dom-module>
|
8606
9533
|
<script>
|
8607
9534
|
ConcertoBehaviors.ContentFactory.registerContent("concerto-ticker", "ConcertoTicker");
|
8608
|
-
</script><dom-module id="concerto-graphic" assetpath="contents/">
|
9535
|
+
</script><dom-module id="concerto-graphic" assetpath="/contents/">
|
8609
9536
|
<style>
|
8610
9537
|
:host {
|
8611
9538
|
display: block;
|
8612
9539
|
position: absolute;
|
8613
9540
|
width: 100%;
|
8614
9541
|
height: 100%;
|
8615
|
-
text-align: center;
|
8616
9542
|
}
|
8617
9543
|
|
8618
9544
|
.portrait {
|
@@ -8624,10 +9550,12 @@ if (!window.Promise) {
|
|
8624
9550
|
}
|
8625
9551
|
|
8626
9552
|
img {
|
8627
|
-
|
8628
|
-
|
8629
|
-
top:
|
8630
|
-
|
9553
|
+
position: absolute;
|
9554
|
+
margin: auto;
|
9555
|
+
top: 0;
|
9556
|
+
left: 0;
|
9557
|
+
right: 0;
|
9558
|
+
bottom: 0;
|
8631
9559
|
}
|
8632
9560
|
</style>
|
8633
9561
|
|
@@ -8709,7 +9637,7 @@ if (!window.Promise) {
|
|
8709
9637
|
</dom-module>
|
8710
9638
|
<script>
|
8711
9639
|
ConcertoBehaviors.ContentFactory.registerContent("concerto-graphic", "ConcertoGraphic");
|
8712
|
-
</script><dom-module id="concerto-htmltext" assetpath="contents/">
|
9640
|
+
</script><dom-module id="concerto-htmltext" assetpath="/contents/">
|
8713
9641
|
<style>
|
8714
9642
|
:host {
|
8715
9643
|
position: absolute;
|
@@ -8760,7 +9688,7 @@ if (!window.Promise) {
|
|
8760
9688
|
|
8761
9689
|
<script>
|
8762
9690
|
ConcertoBehaviors.ContentFactory.registerContent("concerto-htmltext", "ConcertoHtmlText");
|
8763
|
-
</script></dom-module><dom-module id="concerto-client-time" assetpath="contents/">
|
9691
|
+
</script></dom-module><dom-module id="concerto-client-time" assetpath="/contents/">
|
8764
9692
|
<style>
|
8765
9693
|
:host {
|
8766
9694
|
position: absolute;
|
@@ -8826,7 +9754,7 @@ if (!window.Promise) {
|
|
8826
9754
|
|
8827
9755
|
<script>
|
8828
9756
|
ConcertoBehaviors.ContentFactory.registerContent("concerto-client-time", "ConcertoClientTime");
|
8829
|
-
</script><dom-module id="concerto-empty" assetpath="contents/">
|
9757
|
+
</script><dom-module id="concerto-empty" assetpath="/contents/">
|
8830
9758
|
<style>
|
8831
9759
|
:host {
|
8832
9760
|
position: absolute;
|
@@ -8860,7 +9788,7 @@ if (!window.Promise) {
|
|
8860
9788
|
|
8861
9789
|
<script>
|
8862
9790
|
ConcertoBehaviors.ContentFactory.registerContent("concerto-empty", "ConcertoEmpty");
|
8863
|
-
</script></dom-module><dom-module id="concerto-field" assetpath="
|
9791
|
+
</script></dom-module><dom-module id="concerto-field" assetpath="//">
|
8864
9792
|
|
8865
9793
|
<style>
|
8866
9794
|
:host {
|
@@ -9209,7 +10137,7 @@ if (!window.Promise) {
|
|
9209
10137
|
});
|
9210
10138
|
</script>
|
9211
10139
|
|
9212
|
-
</dom-module><dom-module id="concerto-screen" assetpath="
|
10140
|
+
</dom-module><dom-module id="concerto-screen" assetpath="//">
|
9213
10141
|
|
9214
10142
|
<style>
|
9215
10143
|
:host {
|