Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Side by Side Diff: polymer_1.2.3/bower_components/polymer/polymer-micro.html

Issue 1581713003: [third_party] add polymer 1.2.3 (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: 1.2.3 Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!-- 1 <!--
2 @license 2 @license
3 Copyright (c) 2014 The Polymer Project Authors. All rights reserved. 3 Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
4 This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt 4 This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt
5 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 5 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6 The complete set of contributors may be found at http://polymer.github.io/CONTRI BUTORS.txt 6 The complete set of contributors may be found at http://polymer.github.io/CONTRI BUTORS.txt
7 Code distributed by Google as part of the polymer project is also 7 Code distributed by Google as part of the polymer project is also
8 subject to an additional IP rights grant found at http://polymer.github.io/PATEN TS.txt 8 subject to an additional IP rights grant found at http://polymer.github.io/PATEN TS.txt
9 --><script>(function () { 9 --><script>(function () {
10 function resolve() { 10 function resolve() {
11 document.body.removeAttribute('unresolved'); 11 document.body.removeAttribute('unresolved');
12 } 12 }
13 if (window.WebComponents) { 13 if (window.WebComponents) {
14 addEventListener('WebComponentsReady', resolve); 14 addEventListener('WebComponentsReady', resolve);
15 } else { 15 } else {
16 if (document.readyState === 'interactive' || document.readyState === 'complete') { 16 if (document.readyState === 'interactive' || document.readyState === 'complete') {
17 resolve(); 17 resolve();
18 } else { 18 } else {
19 addEventListener('DOMContentLoaded', resolve); 19 addEventListener('DOMContentLoaded', resolve);
20 } 20 }
21 } 21 }
22 }()); 22 }());
23 Polymer = { 23 window.Polymer = {
24 Settings: function () { 24 Settings: function () {
25 var user = window.Polymer || {}; 25 var user = window.Polymer || {};
26 location.search.slice(1).split('&').forEach(function (o) { 26 var parts = location.search.slice(1).split('&');
27 for (var i = 0, o; i < parts.length && (o = parts[i]); i++) {
27 o = o.split('='); 28 o = o.split('=');
28 o[0] && (user[o[0]] = o[1] || true); 29 o[0] && (user[o[0]] = o[1] || true);
29 }); 30 }
30 var wantShadow = user.dom === 'shadow'; 31 var wantShadow = user.dom === 'shadow';
31 var hasShadow = Boolean(Element.prototype.createShadowRoot); 32 var hasShadow = Boolean(Element.prototype.createShadowRoot);
32 var nativeShadow = hasShadow && !window.ShadowDOMPolyfill; 33 var nativeShadow = hasShadow && !window.ShadowDOMPolyfill;
33 var useShadow = wantShadow && hasShadow; 34 var useShadow = wantShadow && hasShadow;
34 var hasNativeImports = Boolean('import' in document.createElement('link')); 35 var hasNativeImports = Boolean('import' in document.createElement('link'));
35 var useNativeImports = hasNativeImports; 36 var useNativeImports = hasNativeImports;
36 var useNativeCustomElements = !window.CustomElements || window.CustomElements.us eNative; 37 var useNativeCustomElements = !window.CustomElements || window.CustomElements.us eNative;
37 return { 38 return {
38 wantShadow: wantShadow, 39 wantShadow: wantShadow,
39 hasShadow: hasShadow, 40 hasShadow: hasShadow,
40 nativeShadow: nativeShadow, 41 nativeShadow: nativeShadow,
41 useShadow: useShadow, 42 useShadow: useShadow,
42 useNativeShadow: useShadow && nativeShadow, 43 useNativeShadow: useShadow && nativeShadow,
43 useNativeImports: useNativeImports, 44 useNativeImports: useNativeImports,
44 useNativeCustomElements: useNativeCustomElements 45 useNativeCustomElements: useNativeCustomElements
45 }; 46 };
46 }() 47 }()
47 }; 48 };
48 (function () { 49 (function () {
49 var userPolymer = window.Polymer; 50 var userPolymer = window.Polymer;
50 window.Polymer = function (prototype) { 51 window.Polymer = function (prototype) {
51 var ctor = desugar(prototype); 52 if (typeof prototype === 'function') {
52 prototype = ctor.prototype; 53 prototype = prototype.prototype;
54 }
55 if (!prototype) {
56 prototype = {};
57 }
58 var factory = desugar(prototype);
59 prototype = factory.prototype;
53 var options = { prototype: prototype }; 60 var options = { prototype: prototype };
54 if (prototype.extends) { 61 if (prototype.extends) {
55 options.extends = prototype.extends; 62 options.extends = prototype.extends;
56 } 63 }
57 Polymer.telemetry._registrate(prototype); 64 Polymer.telemetry._registrate(prototype);
58 document.registerElement(prototype.is, options); 65 document.registerElement(prototype.is, options);
59 return ctor; 66 return factory;
60 }; 67 };
61 var desugar = function (prototype) { 68 var desugar = function (prototype) {
62 prototype = Polymer.Base.chainObject(prototype, Polymer.Base); 69 var base = Polymer.Base;
70 if (prototype.extends) {
71 base = Polymer.Base._getExtendedPrototype(prototype.extends);
72 }
73 prototype = Polymer.Base.chainObject(prototype, base);
63 prototype.registerCallback(); 74 prototype.registerCallback();
64 return prototype.constructor; 75 return prototype.constructor;
65 }; 76 };
66 window.Polymer = Polymer; 77 window.Polymer = Polymer;
67 if (userPolymer) { 78 if (userPolymer) {
68 for (var i in userPolymer) { 79 for (var i in userPolymer) {
69 Polymer[i] = userPolymer[i]; 80 Polymer[i] = userPolymer[i];
70 } 81 }
71 } 82 }
72 Polymer.Class = desugar; 83 Polymer.Class = desugar;
(...skipping 11 matching lines...) Expand all
84 this.registrations.forEach(this._regLog); 95 this.registrations.forEach(this._regLog);
85 } 96 }
86 }; 97 };
87 Object.defineProperty(window, 'currentImport', { 98 Object.defineProperty(window, 'currentImport', {
88 enumerable: true, 99 enumerable: true,
89 configurable: true, 100 configurable: true,
90 get: function () { 101 get: function () {
91 return (document._currentScript || document.currentScript).ownerDocument; 102 return (document._currentScript || document.currentScript).ownerDocument;
92 } 103 }
93 }); 104 });
105 Polymer.RenderStatus = {
106 _ready: false,
107 _callbacks: [],
108 whenReady: function (cb) {
109 if (this._ready) {
110 cb();
111 } else {
112 this._callbacks.push(cb);
113 }
114 },
115 _makeReady: function () {
116 this._ready = true;
117 for (var i = 0; i < this._callbacks.length; i++) {
118 this._callbacks[i]();
119 }
120 this._callbacks = [];
121 },
122 _catchFirstRender: function () {
123 requestAnimationFrame(function () {
124 Polymer.RenderStatus._makeReady();
125 });
126 },
127 _afterNextRenderQueue: [],
128 _waitingNextRender: false,
129 afterNextRender: function (element, fn, args) {
130 this._watchNextRender();
131 this._afterNextRenderQueue.push([
132 element,
133 fn,
134 args
135 ]);
136 },
137 _watchNextRender: function () {
138 if (!this._waitingNextRender) {
139 this._waitingNextRender = true;
140 var fn = function () {
141 Polymer.RenderStatus._flushNextRender();
142 };
143 if (!this._ready) {
144 this.whenReady(fn);
145 } else {
146 requestAnimationFrame(fn);
147 }
148 }
149 },
150 _flushNextRender: function () {
151 var self = this;
152 setTimeout(function () {
153 self._flushRenderCallbacks(self._afterNextRenderQueue);
154 self._afterNextRenderQueue = [];
155 self._waitingNextRender = false;
156 });
157 },
158 _flushRenderCallbacks: function (callbacks) {
159 for (var i = 0, h; i < callbacks.length; i++) {
160 h = callbacks[i];
161 h[1].apply(h[0], h[2] || Polymer.nar);
162 }
163 ;
164 }
165 };
166 if (window.HTMLImports) {
167 HTMLImports.whenReady(function () {
168 Polymer.RenderStatus._catchFirstRender();
169 });
170 } else {
171 Polymer.RenderStatus._catchFirstRender();
172 }
173 Polymer.ImportStatus = Polymer.RenderStatus;
174 Polymer.ImportStatus.whenLoaded = Polymer.ImportStatus.whenReady;
94 Polymer.Base = { 175 Polymer.Base = {
176 __isPolymerInstance__: true,
95 _addFeature: function (feature) { 177 _addFeature: function (feature) {
96 this.extend(this, feature); 178 this.extend(this, feature);
97 }, 179 },
98 registerCallback: function () { 180 registerCallback: function () {
181 this._desugarBehaviors();
182 this._doBehavior('beforeRegister');
99 this._registerFeatures(); 183 this._registerFeatures();
100 this._doBehavior('registered'); 184 this._doBehavior('registered');
101 }, 185 },
102 createdCallback: function () { 186 createdCallback: function () {
103 Polymer.telemetry.instanceCount++; 187 Polymer.telemetry.instanceCount++;
104 this.root = this; 188 this.root = this;
105 this._doBehavior('created'); 189 this._doBehavior('created');
106 this._initFeatures(); 190 this._initFeatures();
107 }, 191 },
108 attachedCallback: function () { 192 attachedCallback: function () {
109 this.isAttached = true; 193 var self = this;
110 this._doBehavior('attached'); 194 Polymer.RenderStatus.whenReady(function () {
195 self.isAttached = true;
196 self._doBehavior('attached');
197 });
111 }, 198 },
112 detachedCallback: function () { 199 detachedCallback: function () {
113 this.isAttached = false; 200 this.isAttached = false;
114 this._doBehavior('detached'); 201 this._doBehavior('detached');
115 }, 202 },
116 attributeChangedCallback: function (name) { 203 attributeChangedCallback: function (name, oldValue, newValue) {
204 this._attributeChangedImpl(name);
205 this._doBehavior('attributeChanged', [
206 name,
207 oldValue,
208 newValue
209 ]);
210 },
211 _attributeChangedImpl: function (name) {
117 this._setAttributeToProperty(this, name); 212 this._setAttributeToProperty(this, name);
118 this._doBehavior('attributeChanged', arguments);
119 }, 213 },
120 extend: function (prototype, api) { 214 extend: function (prototype, api) {
121 if (prototype && api) { 215 if (prototype && api) {
122 Object.getOwnPropertyNames(api).forEach(function (n) { 216 var n$ = Object.getOwnPropertyNames(api);
217 for (var i = 0, n; i < n$.length && (n = n$[i]); i++) {
123 this.copyOwnProperty(n, api, prototype); 218 this.copyOwnProperty(n, api, prototype);
124 }, this); 219 }
125 } 220 }
126 return prototype || api; 221 return prototype || api;
127 }, 222 },
223 mixin: function (target, source) {
224 for (var i in source) {
225 target[i] = source[i];
226 }
227 return target;
228 },
128 copyOwnProperty: function (name, source, target) { 229 copyOwnProperty: function (name, source, target) {
129 var pd = Object.getOwnPropertyDescriptor(source, name); 230 var pd = Object.getOwnPropertyDescriptor(source, name);
130 if (pd) { 231 if (pd) {
131 Object.defineProperty(target, name, pd); 232 Object.defineProperty(target, name, pd);
132 } 233 }
133 }, 234 },
134 _log: console.log.apply.bind(console.log, console), 235 _log: console.log.apply.bind(console.log, console),
135 _warn: console.warn.apply.bind(console.warn, console), 236 _warn: console.warn.apply.bind(console.warn, console),
136 _error: console.error.apply.bind(console.error, console), 237 _error: console.error.apply.bind(console.error, console),
137 _logf: function () { 238 _logf: function () {
(...skipping 10 matching lines...) Expand all
148 Polymer.Base.chainObject = function (object, inherited) { 249 Polymer.Base.chainObject = function (object, inherited) {
149 if (object && inherited && object !== inherited) { 250 if (object && inherited && object !== inherited) {
150 if (!Object.__proto__) { 251 if (!Object.__proto__) {
151 object = Polymer.Base.extend(Object.create(inherited), object); 252 object = Polymer.Base.extend(Object.create(inherited), object);
152 } 253 }
153 object.__proto__ = inherited; 254 object.__proto__ = inherited;
154 } 255 }
155 return object; 256 return object;
156 }; 257 };
157 Polymer.Base = Polymer.Base.chainObject(Polymer.Base, HTMLElement.prototype); 258 Polymer.Base = Polymer.Base.chainObject(Polymer.Base, HTMLElement.prototype);
259 if (window.CustomElements) {
260 Polymer.instanceof = CustomElements.instanceof;
261 } else {
262 Polymer.instanceof = function (obj, ctor) {
263 return obj instanceof ctor;
264 };
265 }
266 Polymer.isInstance = function (obj) {
267 return Boolean(obj && obj.__isPolymerInstance__);
268 };
158 Polymer.telemetry.instanceCount = 0; 269 Polymer.telemetry.instanceCount = 0;
159 (function () { 270 (function () {
160 var modules = {}; 271 var modules = {};
272 var lcModules = {};
273 var findModule = function (id) {
274 return modules[id] || lcModules[id.toLowerCase()];
275 };
161 var DomModule = function () { 276 var DomModule = function () {
162 return document.createElement('dom-module'); 277 return document.createElement('dom-module');
163 }; 278 };
164 DomModule.prototype = Object.create(HTMLElement.prototype); 279 DomModule.prototype = Object.create(HTMLElement.prototype);
165 DomModule.prototype.constructor = DomModule; 280 Polymer.Base.extend(DomModule.prototype, {
166 DomModule.prototype.createdCallback = function () { 281 constructor: DomModule,
167 var id = this.id || this.getAttribute('name') || this.getAttribute('is'); 282 createdCallback: function () {
283 this.register();
284 },
285 register: function (id) {
286 var id = id || this.id || this.getAttribute('name') || this.getAttribute('is');
168 if (id) { 287 if (id) {
169 this.id = id; 288 this.id = id;
170 modules[id] = this; 289 modules[id] = this;
290 lcModules[id.toLowerCase()] = this;
171 } 291 }
172 }; 292 },
173 DomModule.prototype.import = function (id, slctr) { 293 import: function (id, selector) {
174 var m = modules[id]; 294 if (id) {
295 var m = findModule(id);
175 if (!m) { 296 if (!m) {
176 forceDocumentUpgrade(); 297 forceDomModulesUpgrade();
177 m = modules[id]; 298 m = findModule(id);
178 } 299 }
179 if (m && slctr) { 300 if (m && selector) {
180 m = m.querySelector(slctr); 301 m = m.querySelector(selector);
181 } 302 }
182 return m; 303 return m;
183 }; 304 }
305 }
306 });
184 var cePolyfill = window.CustomElements && !CustomElements.useNative; 307 var cePolyfill = window.CustomElements && !CustomElements.useNative;
185 if (cePolyfill) {
186 var ready = CustomElements.ready;
187 CustomElements.ready = true;
188 }
189 document.registerElement('dom-module', DomModule); 308 document.registerElement('dom-module', DomModule);
190 if (cePolyfill) { 309 function forceDomModulesUpgrade() {
191 CustomElements.ready = ready;
192 }
193 function forceDocumentUpgrade() {
194 if (cePolyfill) { 310 if (cePolyfill) {
195 var script = document._currentScript || document.currentScript; 311 var script = document._currentScript || document.currentScript;
196 if (script) { 312 var doc = script && script.ownerDocument || document;
197 CustomElements.upgradeAll(script.ownerDocument); 313 var modules = doc.querySelectorAll('dom-module');
314 for (var i = modules.length - 1, m; i >= 0 && (m = modules[i]); i--) {
315 if (m.__upgraded__) {
316 return;
317 } else {
318 CustomElements.upgrade(m);
198 } 319 }
199 } 320 }
200 } 321 }
322 }
201 }()); 323 }());
202 Polymer.Base._addFeature({ 324 Polymer.Base._addFeature({
203 _prepIs: function () { 325 _prepIs: function () {
204 if (!this.is) { 326 if (!this.is) {
205 var module = (document._currentScript || document.currentScript).parentNode; 327 var module = (document._currentScript || document.currentScript).parentNode;
206 if (module.localName === 'dom-module') { 328 if (module.localName === 'dom-module') {
207 var id = module.id || module.getAttribute('name') || module.getAttribute('is'); 329 var id = module.id || module.getAttribute('name') || module.getAttribute('is');
208 this.is = id; 330 this.is = id;
209 } 331 }
210 } 332 }
333 if (this.is) {
334 this.is = this.is.toLowerCase();
335 }
211 } 336 }
212 }); 337 });
213 Polymer.Base._addFeature({ 338 Polymer.Base._addFeature({
214 behaviors: [], 339 behaviors: [],
215 _prepBehaviors: function () { 340 _desugarBehaviors: function () {
216 if (this.behaviors.length) { 341 if (this.behaviors.length) {
217 this.behaviors = this._flattenBehaviorsList(this.behaviors); 342 this.behaviors = this._desugarSomeBehaviors(this.behaviors);
218 } 343 }
219 this._prepAllBehaviors(this.behaviors); 344 },
345 _desugarSomeBehaviors: function (behaviors) {
346 behaviors = this._flattenBehaviorsList(behaviors);
347 for (var i = behaviors.length - 1; i >= 0; i--) {
348 this._mixinBehavior(behaviors[i]);
349 }
350 return behaviors;
220 }, 351 },
221 _flattenBehaviorsList: function (behaviors) { 352 _flattenBehaviorsList: function (behaviors) {
222 var flat = []; 353 var flat = [];
223 behaviors.forEach(function (b) { 354 for (var i = 0; i < behaviors.length; i++) {
355 var b = behaviors[i];
224 if (b instanceof Array) { 356 if (b instanceof Array) {
225 flat = flat.concat(this._flattenBehaviorsList(b)); 357 flat = flat.concat(this._flattenBehaviorsList(b));
226 } else if (b) { 358 } else if (b) {
227 flat.push(b); 359 flat.push(b);
228 } else { 360 } else {
229 this._warn(this._logf('_flattenBehaviorsList', 'behavior is null, check for miss ing or 404 import')); 361 this._warn(this._logf('_flattenBehaviorsList', 'behavior is null, check for miss ing or 404 import'));
230 } 362 }
231 }, this); 363 }
232 return flat; 364 return flat;
233 }, 365 },
234 _prepAllBehaviors: function (behaviors) { 366 _mixinBehavior: function (b) {
235 for (var i = behaviors.length - 1; i >= 0; i--) { 367 var n$ = Object.getOwnPropertyNames(b);
236 this._mixinBehavior(behaviors[i]); 368 for (var i = 0, n; i < n$.length && (n = n$[i]); i++) {
369 if (!Polymer.Base._behaviorProperties[n] && !this.hasOwnProperty(n)) {
370 this.copyOwnProperty(n, b, this);
237 } 371 }
372 }
373 },
374 _prepBehaviors: function () {
375 this._prepFlattenedBehaviors(this.behaviors);
376 },
377 _prepFlattenedBehaviors: function (behaviors) {
238 for (var i = 0, l = behaviors.length; i < l; i++) { 378 for (var i = 0, l = behaviors.length; i < l; i++) {
239 this._prepBehavior(behaviors[i]); 379 this._prepBehavior(behaviors[i]);
240 } 380 }
241 this._prepBehavior(this); 381 this._prepBehavior(this);
242 }, 382 },
243 _mixinBehavior: function (b) { 383 _doBehavior: function (name, args) {
244 Object.getOwnPropertyNames(b).forEach(function (n) { 384 for (var i = 0; i < this.behaviors.length; i++) {
245 switch (n) { 385 this._invokeBehavior(this.behaviors[i], name, args);
246 case 'hostAttributes':
247 case 'registered':
248 case 'properties':
249 case 'observers':
250 case 'listeners':
251 case 'created':
252 case 'attached':
253 case 'detached':
254 case 'attributeChanged':
255 case 'configure':
256 case 'ready':
257 break;
258 default:
259 if (!this.hasOwnProperty(n)) {
260 this.copyOwnProperty(n, b, this);
261 } 386 }
262 break;
263 }
264 }, this);
265 },
266 _doBehavior: function (name, args) {
267 this.behaviors.forEach(function (b) {
268 this._invokeBehavior(b, name, args);
269 }, this);
270 this._invokeBehavior(this, name, args); 387 this._invokeBehavior(this, name, args);
271 }, 388 },
272 _invokeBehavior: function (b, name, args) { 389 _invokeBehavior: function (b, name, args) {
273 var fn = b[name]; 390 var fn = b[name];
274 if (fn) { 391 if (fn) {
275 fn.apply(this, args || Polymer.nar); 392 fn.apply(this, args || Polymer.nar);
276 } 393 }
277 }, 394 },
278 _marshalBehaviors: function () { 395 _marshalBehaviors: function () {
279 this.behaviors.forEach(function (b) { 396 for (var i = 0; i < this.behaviors.length; i++) {
280 this._marshalBehavior(b); 397 this._marshalBehavior(this.behaviors[i]);
281 }, this); 398 }
282 this._marshalBehavior(this); 399 this._marshalBehavior(this);
283 } 400 }
284 }); 401 });
402 Polymer.Base._behaviorProperties = {
403 hostAttributes: true,
404 registered: true,
405 properties: true,
406 observers: true,
407 listeners: true,
408 created: true,
409 attached: true,
410 detached: true,
411 attributeChanged: true,
412 ready: true
413 };
285 Polymer.Base._addFeature({ 414 Polymer.Base._addFeature({
286 _prepExtends: function () {
287 if (this.extends) {
288 this.__proto__ = this._getExtendedPrototype(this.extends);
289 }
290 },
291 _getExtendedPrototype: function (tag) { 415 _getExtendedPrototype: function (tag) {
292 return this._getExtendedNativePrototype(tag); 416 return this._getExtendedNativePrototype(tag);
293 }, 417 },
294 _nativePrototypes: {}, 418 _nativePrototypes: {},
295 _getExtendedNativePrototype: function (tag) { 419 _getExtendedNativePrototype: function (tag) {
296 var p = this._nativePrototypes[tag]; 420 var p = this._nativePrototypes[tag];
297 if (!p) { 421 if (!p) {
298 var np = this.getNativePrototype(tag); 422 var np = this.getNativePrototype(tag);
299 p = this.extend(Object.create(np), Polymer.Base); 423 p = this.extend(Object.create(np), Polymer.Base);
300 this._nativePrototypes[tag] = p; 424 this._nativePrototypes[tag] = p;
(...skipping 30 matching lines...) Expand all
331 } 455 }
332 return elt; 456 return elt;
333 } 457 }
334 }); 458 });
335 Polymer.nob = Object.create(null); 459 Polymer.nob = Object.create(null);
336 Polymer.Base._addFeature({ 460 Polymer.Base._addFeature({
337 properties: {}, 461 properties: {},
338 getPropertyInfo: function (property) { 462 getPropertyInfo: function (property) {
339 var info = this._getPropertyInfo(property, this.properties); 463 var info = this._getPropertyInfo(property, this.properties);
340 if (!info) { 464 if (!info) {
341 this.behaviors.some(function (b) { 465 for (var i = 0; i < this.behaviors.length; i++) {
342 return info = this._getPropertyInfo(property, b.properties); 466 info = this._getPropertyInfo(property, this.behaviors[i].properties);
343 }, this); 467 if (info) {
468 return info;
469 }
470 }
471 ;
344 } 472 }
345 return info || Polymer.nob; 473 return info || Polymer.nob;
346 }, 474 },
347 _getPropertyInfo: function (property, properties) { 475 _getPropertyInfo: function (property, properties) {
348 var p = properties && properties[property]; 476 var p = properties && properties[property];
349 if (typeof p === 'function') { 477 if (typeof p === 'function') {
350 p = properties[property] = { type: p }; 478 p = properties[property] = { type: p };
351 } 479 }
352 if (p) { 480 if (p) {
353 p.defined = true; 481 p.defined = true;
354 } 482 }
355 return p; 483 return p;
484 },
485 _prepPropertyInfo: function () {
486 this._propertyInfo = {};
487 for (var i = 0, p; i < this.behaviors.length; i++) {
488 this._addPropertyInfo(this._propertyInfo, this.behaviors[i].properties);
489 }
490 this._addPropertyInfo(this._propertyInfo, this.properties);
491 this._addPropertyInfo(this._propertyInfo, this._propertyEffects);
492 },
493 _addPropertyInfo: function (target, source) {
494 if (source) {
495 var t, s;
496 for (var i in source) {
497 t = target[i];
498 s = source[i];
499 if (i[0] === '_' && !s.readOnly) {
500 continue;
501 }
502 if (!target[i]) {
503 target[i] = {
504 type: typeof s === 'function' ? s : s.type,
505 readOnly: s.readOnly,
506 attribute: Polymer.CaseMap.camelToDashCase(i)
507 };
508 } else {
509 if (!t.type) {
510 t.type = s.type;
511 }
512 if (!t.readOnly) {
513 t.readOnly = s.readOnly;
514 }
515 }
516 }
517 }
356 } 518 }
357 }); 519 });
358 Polymer.CaseMap = { 520 Polymer.CaseMap = {
359 _caseMap: {}, 521 _caseMap: {},
360 dashToCamelCase: function (dash) { 522 dashToCamelCase: function (dash) {
361 var mapped = Polymer.CaseMap._caseMap[dash]; 523 var mapped = Polymer.CaseMap._caseMap[dash];
362 if (mapped) { 524 if (mapped) {
363 return mapped; 525 return mapped;
364 } 526 }
365 if (dash.indexOf('-') < 0) { 527 if (dash.indexOf('-') < 0) {
366 return Polymer.CaseMap._caseMap[dash] = dash; 528 return Polymer.CaseMap._caseMap[dash] = dash;
367 } 529 }
368 return Polymer.CaseMap._caseMap[dash] = dash.replace(/-([a-z])/g, function (m) { 530 return Polymer.CaseMap._caseMap[dash] = dash.replace(/-([a-z])/g, function (m) {
369 return m[1].toUpperCase(); 531 return m[1].toUpperCase();
370 }); 532 });
371 }, 533 },
372 camelToDashCase: function (camel) { 534 camelToDashCase: function (camel) {
373 var mapped = Polymer.CaseMap._caseMap[camel]; 535 var mapped = Polymer.CaseMap._caseMap[camel];
374 if (mapped) { 536 if (mapped) {
375 return mapped; 537 return mapped;
376 } 538 }
377 return Polymer.CaseMap._caseMap[camel] = camel.replace(/([a-z][A-Z])/g, function (g) { 539 return Polymer.CaseMap._caseMap[camel] = camel.replace(/([a-z][A-Z])/g, function (g) {
378 return g[0] + '-' + g[1].toLowerCase(); 540 return g[0] + '-' + g[1].toLowerCase();
379 }); 541 });
380 } 542 }
381 }; 543 };
382 Polymer.Base._addFeature({ 544 Polymer.Base._addFeature({
383 _prepAttributes: function () { 545 _addHostAttributes: function (attributes) {
546 if (!this._aggregatedAttributes) {
384 this._aggregatedAttributes = {}; 547 this._aggregatedAttributes = {};
385 }, 548 }
386 _addHostAttributes: function (attributes) {
387 if (attributes) { 549 if (attributes) {
388 this.mixin(this._aggregatedAttributes, attributes); 550 this.mixin(this._aggregatedAttributes, attributes);
389 } 551 }
390 }, 552 },
391 _marshalHostAttributes: function () { 553 _marshalHostAttributes: function () {
554 if (this._aggregatedAttributes) {
392 this._applyAttributes(this, this._aggregatedAttributes); 555 this._applyAttributes(this, this._aggregatedAttributes);
556 }
393 }, 557 },
394 _applyAttributes: function (node, attr$) { 558 _applyAttributes: function (node, attr$) {
395 for (var n in attr$) { 559 for (var n in attr$) {
396 if (!this.hasAttribute(n) && n !== 'class') { 560 if (!this.hasAttribute(n) && n !== 'class') {
397 this.serializeValueToAttribute(attr$[n], n, this); 561 var v = attr$[n];
562 this.serializeValueToAttribute(v, n, this);
398 } 563 }
399 } 564 }
400 }, 565 },
401 _marshalAttributes: function () { 566 _marshalAttributes: function () {
402 this._takeAttributesToModel(this); 567 this._takeAttributesToModel(this);
403 }, 568 },
404 _takeAttributesToModel: function (model) { 569 _takeAttributesToModel: function (model) {
405 for (var i = 0, l = this.attributes.length; i < l; i++) { 570 if (this.hasAttributes()) {
406 this._setAttributeToProperty(model, this.attributes[i].name); 571 for (var i in this._propertyInfo) {
572 var info = this._propertyInfo[i];
573 if (this.hasAttribute(info.attribute)) {
574 this._setAttributeToProperty(model, info.attribute, i, info);
575 }
576 }
407 } 577 }
408 }, 578 },
409 _setAttributeToProperty: function (model, attrName) { 579 _setAttributeToProperty: function (model, attribute, property, info) {
410 if (!this._serializing) { 580 if (!this._serializing) {
411 var propName = Polymer.CaseMap.dashToCamelCase(attrName); 581 var property = property || Polymer.CaseMap.dashToCamelCase(attribute);
412 var info = this.getPropertyInfo(propName); 582 info = info || this._propertyInfo && this._propertyInfo[property];
413 if (info.defined || this._propertyEffects && this._propertyEffects[propName]) { 583 if (info && !info.readOnly) {
414 var val = this.getAttribute(attrName); 584 var v = this.getAttribute(attribute);
415 model[propName] = this.deserialize(val, info.type); 585 model[property] = this.deserialize(v, info.type);
416 } 586 }
417 } 587 }
418 }, 588 },
419 _serializing: false, 589 _serializing: false,
420 reflectPropertyToAttribute: function (name) { 590 reflectPropertyToAttribute: function (property, attribute, value) {
421 this._serializing = true; 591 this._serializing = true;
422 this.serializeValueToAttribute(this[name], Polymer.CaseMap.camelToDashCase(name) ); 592 value = value === undefined ? this[property] : value;
593 this.serializeValueToAttribute(value, attribute || Polymer.CaseMap.camelToDashCa se(property));
423 this._serializing = false; 594 this._serializing = false;
424 }, 595 },
425 serializeValueToAttribute: function (value, attribute, node) { 596 serializeValueToAttribute: function (value, attribute, node) {
426 var str = this.serialize(value); 597 var str = this.serialize(value);
427 (node || this)[str === undefined ? 'removeAttribute' : 'setAttribute'](attribute , str); 598 node = node || this;
599 if (str === undefined) {
600 node.removeAttribute(attribute);
601 } else {
602 node.setAttribute(attribute, str);
603 }
428 }, 604 },
429 deserialize: function (value, type) { 605 deserialize: function (value, type) {
430 switch (type) { 606 switch (type) {
431 case Number: 607 case Number:
432 value = Number(value); 608 value = Number(value);
433 break; 609 break;
434 case Boolean: 610 case Boolean:
435 value = value !== null; 611 value = value !== null;
436 break; 612 break;
437 case Object: 613 case Object:
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 default: 650 default:
475 return value != null ? value : undefined; 651 return value != null ? value : undefined;
476 } 652 }
477 } 653 }
478 }); 654 });
479 Polymer.Base._addFeature({ 655 Polymer.Base._addFeature({
480 _setupDebouncers: function () { 656 _setupDebouncers: function () {
481 this._debouncers = {}; 657 this._debouncers = {};
482 }, 658 },
483 debounce: function (jobName, callback, wait) { 659 debounce: function (jobName, callback, wait) {
484 this._debouncers[jobName] = Polymer.Debounce.call(this, this._debouncers[jobName ], callback, wait); 660 return this._debouncers[jobName] = Polymer.Debounce.call(this, this._debouncers[ jobName], callback, wait);
485 }, 661 },
486 isDebouncerActive: function (jobName) { 662 isDebouncerActive: function (jobName) {
487 var debouncer = this._debouncers[jobName]; 663 var debouncer = this._debouncers[jobName];
488 return debouncer && debouncer.finish; 664 return debouncer && debouncer.finish;
489 }, 665 },
490 flushDebouncer: function (jobName) { 666 flushDebouncer: function (jobName) {
491 var debouncer = this._debouncers[jobName]; 667 var debouncer = this._debouncers[jobName];
492 if (debouncer) { 668 if (debouncer) {
493 debouncer.complete(); 669 debouncer.complete();
494 } 670 }
495 }, 671 },
496 cancelDebouncer: function (jobName) { 672 cancelDebouncer: function (jobName) {
497 var debouncer = this._debouncers[jobName]; 673 var debouncer = this._debouncers[jobName];
498 if (debouncer) { 674 if (debouncer) {
499 debouncer.stop(); 675 debouncer.stop();
500 } 676 }
501 } 677 }
502 }); 678 });
503 Polymer.version = '1.0.4'; 679 Polymer.version = '1.2.3';
504 Polymer.Base._addFeature({ 680 Polymer.Base._addFeature({
505 _registerFeatures: function () { 681 _registerFeatures: function () {
506 this._prepIs(); 682 this._prepIs();
507 this._prepAttributes();
508 this._prepBehaviors(); 683 this._prepBehaviors();
509 this._prepExtends();
510 this._prepConstructor(); 684 this._prepConstructor();
685 this._prepPropertyInfo();
511 }, 686 },
512 _prepBehavior: function (b) { 687 _prepBehavior: function (b) {
513 this._addHostAttributes(b.hostAttributes); 688 this._addHostAttributes(b.hostAttributes);
514 }, 689 },
515 _marshalBehavior: function (b) { 690 _marshalBehavior: function (b) {
516 }, 691 },
517 _initFeatures: function () { 692 _initFeatures: function () {
518 this._marshalHostAttributes(); 693 this._marshalHostAttributes();
519 this._setupDebouncers(); 694 this._setupDebouncers();
520 this._marshalBehaviors(); 695 this._marshalBehaviors();
521 } 696 }
522 });</script> 697 });</script>
523 698
OLDNEW
« no previous file with comments | « polymer_1.2.3/bower_components/polymer/polymer.html ('k') | polymer_1.2.3/bower_components/polymer/polymer-mini.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698