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

Side by Side Diff: pkg/polymer/lib/src/js/polymer/polymer.js.map

Issue 221653004: "Reverting 34633" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « pkg/polymer/lib/src/js/polymer/polymer.concat.js.map ('k') | pkg/web_components/lib/build.log » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 {"version":3,"file":"polymer.js","sources":["../src/polymer.js","../src/boot.js" ,"../src/lib/lang.js","../src/lib/job.js","../src/lib/dom.js","../src/lib/super. js","../src/lib/deserialize.js","../src/api.js","../src/instance/utils.js","../s rc/instance/events.js","../src/instance/attributes.js","../src/instance/properti es.js","../src/instance/mdv.js","../src/instance/base.js","../src/instance/style s.js","../src/declaration/polymer.js","../src/declaration/path.js","../src/decla ration/styles.js","../src/declaration/events.js","../src/declaration/properties. js","../src/declaration/attributes.js","../src/declaration/prototype.js","../src /declaration/queue.js","../src/declaration/import.js","../src/declaration/polyme r-element.js"],"names":["Polymer","window","scope","extend","prototype","api","O bject","getOwnPropertyNames","forEach","n","pd","getOwnPropertyDescriptor","defi neProperty","value","nom","job","callback","wait","stop","Job","this","go","inCo ntext","context","boundComplete","complete","bind","h","setTimeout","handle","cl earTimeout","requestAnimationFrame","cancelAnimationFrame","call","registry","HT MLElement","register","tag","getPrototypeForTag","getPrototypeOf","document","cr eateElement","originalStopPropagation","Event","stopPropagation","cancelBubble", "apply","arguments","$super","arrayOfArgs","caller","_super","nameInThis","conso le","warn","memoizeSuper","fn","nextSuper","proto","name","method","p","__proto_ _","n$","i","l","length","d","super","deserializeValue","currentValue","inferred Type","Date","typeHandlers","string","date","parse","now","boolean","number","pa rseFloat","parseInt","isNaN","object","JSON","replace","e","function","declarati on","instance","publish","apis","utils","async","args","timeout","Platform","flu sh","cancelAsync","fire","type","detail","onNode","bubbles","cancelable","node", "event","CustomEvent","undefined","dispatchEvent","asyncFire","classFollows","an ew","old","className","classList","remove","add","nop","nob","asyncMethod","log" ,"logFlags","EVENT_PREFIX","events","addHostListeners","eventDelegates","keys"," localName","bindable","eventName","self","PolymerExpressions","prepareEventBindi ng","Path","get","resolveEventHandler","model","path","getValueFrom","dispatchMe thod","obj","group","groupEnd","attributes","copyInstanceAttributes","a$","_inst anceAttributes","k","hasAttribute","setAttribute","takeAttributes","_publishLC", "a","attributeToProperty","propertyForAttribute","search","bindPattern","match", "stringValue","serializeValue","reflectPropertyToAttribute","serializedValue","r emoveAttribute","bindProperties","inA","inProperty","observable","LOG_BIND_PROPS ","inB","inPath","v","discardChanges","setValue","Observer","defineComputedPrope rty","properties","observeProperties","_observeNames","pn$","_publishNames","o", "_propertyObserver","CompoundObserver","registerObservers","addPath","observeArr ayValue","observe","open","notifyPropertyChanges","newValues","oldValues","paths ","called","invokeMethod","callbackName","Array","isArray","closeNamedObserver", "observer","ArrayObserver","registerNamedObserver","bindProperty","property","ob servers","_observers","push","closeObservers","closeObserverArray","observerArra y","close","o$","_namedObservers","closeNamedObservers","findEventController","p arentNode","lightDomController","host","syntax","ctlr","mdv","instanceTemplate", "template","dom","createInstance","bindings_","enableBindingsReflection","path_" ,"mixinSuper","asyncUnbindAll","_unbound","unbind","_unbindAllJob","unbindAll"," cancelUnbindAll","mustachePattern","isBase","hasOwnProperty","PolymerBase","base ","created","ready","createdCallback","templateInstance","prepareElement","_elem entPrepared","shadowRoots","parseDeclarations","attachedCallback","attached","en teredView","hasBeenAttached","domReady","detachedCallback","preventDispose","det ached","leftView","enteredViewCallback","leftViewCallback","enteredDocumentCallb ack","leftDocumentCallback","element","parseDeclaration","elementElement","fetch Template","root","shadowFromTemplate","querySelector","createShadowRoot","append Child","shadowRootReady","lightFromTemplate","refNode","insertBefore","marshalNo deReferences","PointerGestures","$","querySelectorAll","id","attributeChangedCal lback","getAttribute","attributeChanged","onMutation","listener","MutationObserv er","mutations","disconnect","childList","subtree","constructor","Base","shimCss Text","cssText","is","selector","ShadowCSS","makeScopeSelector","STYLE_SCOPE_ATT RIBUTE","STYLE_CONTROLLER_SCOPE","styles","installControllerStyles","findStyleSc ope","scopeHasNamedStyle","cssTextForScope","installScopeCssText","installScopeS tyle","style","s","textContent","ShadowDOMPolyfill","cssTextToScopeStyle","apply StyleToScope","_scopeStyles","script","_currentScript","getRegisteredPrototype", "registerPrototype","notifyPrototype","waitingForPrototype","client","waitProtot ype","registerWhenReady","prototypesByName","declarations","deliverDeclarations" ,"resolveElementPaths","urlResolver","resolveDom","addResolvePathApi","assetPath ","URL","ownerDocument","baseURI","resolvePath","urlPath","u","href","importRule ForSheet","sheet","baseUrl","head","clone","createStyleElement","attr","firstEle mentChild","s$","nextElementSibling","cssTextFromSheet","__resource","matchesSel ector","inSelector","matches","STYLE_SELECTOR","STYLE_LOADABLE_MATCH","SHEET_SEL ECTOR","STYLE_GLOBAL_SCOPE","SCOPE_ATTR","loadStyles","content","templateContent ","convertSheetsToStyles","findLoadableStyles","styleResolver","c","copySheetAtt ributes","replaceChild","link","loadables","installSheets","cacheSheets","cacheS tyles","installLocalSheets","installGlobalStyles","sheets","findNodes","removeCh ild","filter","firstChild","matcher","nodes","array","templateNodes","concat","s tyleForScope","scopeDescriptor","webkitMatchesSelector","mozMatchesSelector","pa rseHostEvents","delegates","addAttributeDelegates","hasEventPrefix","removeEvent Prefix","trim","slice","prefixLength","inferObservers","explodeObservers","explo ded","ni","names","split","optimizePropertyMaps","publishProperties","requirePro perties","lowerCaseMap","map","toLowerCase","ATTRIBUTES_ATTRIBUTE","ATTRIBUTES_R EGEX","inheritAttributesObjects","inheritObject","publishAttributes","accumulate InstanceAttributes","clonable","isInstanceAttribute","blackList","extends","nosc ript","assetpath","cache-csstext","ensurePrototypeTraversal","ancestor","extende eName","buildPrototype","publishConstructor","extension","generateBasePrototype" ,"desugarBeforeChaining","chainPrototypes","desugarAfterChaining","inheritMetaDa ta","chained","chainObject","extendee","shimStyling","registerCallback","symbol" ,"ctor","extnds","findBasePrototype","ensureBaseApi","memoizedBases","extended", "create","mixinMethod","source","info","typeExtension","findTypeExtension","regi sterElement","indexOf","inherited","queueForElement","contains","mainQueue","imp ortQueue","nextQueued","whenPolymerReady","queue","waitToReady","CustomElements" ,"HTMLImports","whenImportsReady","addReadyCallback","check","__check","__go","u seNative","readied","shift","nextElement","canReady","isEmpty","upgradeDocumentT ree","readyCallbacks","addEventListener","importElements","elementOrFragment","i mportUrls","urls","url","frag","createDocumentFragment","rel","import","isRegist ered","Boolean","isCustomTag","init","loadResources","registered","waitingForQue ue","waitingForResources","_register","handleNoScript","_needsResources","body"] ,"mappings":"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 AAO,CACLhT,IAAUsC,WACZtC,EAAQsC,SAAS4S,MAEfnV,OAAOoT,oBACTnT,EAAQsC,SAAS4S,KAOnB ,IAAIC,GAAQC,EAAmBpC,EAAME,aACjCmC,EAAOrC,EAAM1B,aAAaiB,EAC1B8C,IACFF,EAAM/L,aAA amJ,EAAuB8C,EAI5C,IAAIvE,GAAU9Q,EAAMsV,iBACpB,IAAItV,IAAUsC,SAAS4S,KAAM,CAC3B,GA AI9C,GAAW,SAAWG,EAAwB,IAC9CgD,EAAKjT,SAAS4S,KAAK/D,iBAAiBiB,EACpCmD,GAAGvR,SACL8 M,EAAUyE,EAAGA,EAAGvR,OAAO,GAAGwR,oBAG9BxV,EAAM+Q,aAAaoE,EAAOrE,IAI9B,QAASsE,GAA mBlD,EAASlS,GACnCA,EAAQA,GAASsC,SACjBtC,EAAQA,EAAMuC,cAAgBvC,EAAQA,EAAMyU,aAC5C, IAAIzB,GAAQhT,EAAMuC,cAAc,QAEhC,OADAyQ,GAAME,YAAchB,EACbc,EAGT,QAASyC,GAAiBT,GAC xB,MAAQA,IAASA,EAAMU,YAAe,GAGxC,QAASC,GAAgBpP,EAAMqP,GAC7B,MAAIC,GACKA,EAAQ9T,KA AKwE,EAAMqP,GAD5B,OAzNF,GACIzV,IADMJ,OAAOyH,aACPxH,EAAMG,IAAIoF,SAASkN,QACzBF,EA AwBpS,EAAIoS,sBAI5BuD,EAAiB,QACjBC,EAAuB,UACvBC,EAAiB,uBACjBC,EAAqB,SACrBC,EAAa, gBAEbzD,GAEF0D,WAAY,SAASrV,GACnB,GAAIsV,GAAUlV,KAAKmV,iBACfD,IACFlV,KAAKoV,sBAAs BF,EAE7B,IAAI3D,GAASvR,KAAKqV,mBAAmBH,EACjC3D,GAAOzO,OACT8B,SAAS0Q,cAAcL,WAAW1D, EAAQ3R,GACjCA,GACTA,KAGJwV,sBAAuB,SAAS/F,GAE9B,IAAK,GAAsB0C,GAAGwD,EAD1BlB,EAAKh F,EAAKY,iBAAiB6E,GACtBlS,EAAE,EAAGC,EAAEwR,EAAGvR,OAAiBD,EAAFD,IAASmP,EAAEsC,EAA GzR,IAAKA,IACnD2S,EAAIrB,EAAmBL,EAAmB9B,EAAG/R,KAAKuT,cAAcC,SAC5DxT,KAAKuT,eACTv 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 AgB,mBAAoB7b,UAAWA,KAEvDJ","sourcesContent":["/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-s tyle\n * license that can be found in the LICENSE file.\n */\nPolymer = {};\n"," /*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICE NSE file.\n */\n\n// TODO(sorvell): this ensures Polymer is an object and not a function\n// Platform is currently defining it as a function to allow for async loading\n// of polymer; once we refine the loading process this likely goes away .\nif (typeof window.Polymer === 'function') {\n Polymer = {};\n}\n\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE fil e.\n */\n(function(scope) {\n\n // copy own properties from 'api' to 'prototype , with name hinting for 'super'\n function extend(prototype, api) {\n if (pr ototype && api) {\n // use only own properties of 'api'\n Object.getOw nPropertyNames(api).forEach(function(n) {\n // acquire property descripto r\n var pd = Object.getOwnPropertyDescriptor(api, n);\n if (pd) {\ n // clone property via descriptor\n Object.defineProperty(pro totype, n, pd);\n // cache name-of-method for 'super' engine\n if (typeof pd.value == 'function') {\n // hint the 'super' engine\n pd.value.nom = n;\n }\n }\n });\n }\n retu rn prototype;\n }\n \n // exports\n\n scope.extend = extend;\n\n})(Polymer); \n","/* \n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in th e LICENSE file.\n */\n\n(function(scope) {\n \n // usage\n \n // invoke cb.c all(this) in 100ms, unless the job is re-registered,\n // which resets the time r\n // \n // this.myJob = this.job(this.myJob, cb, 100)\n //\n // returns a job handle which can be used to re-register a job\n\n var Job = function(inCont ext) {\n this.context = inContext;\n this.boundComplete = this.complete.bi nd(this)\n };\n Job.prototype = {\n go: function(callback, wait) {\n t his.callback = callback;\n var h;\n if (!wait) {\n h = requestA nimationFrame(this.boundComplete);\n this.handle = function() {\n cancelAnimationFrame(h);\n }\n } else {\n h = setTimeout(th is.boundComplete, wait);\n this.handle = function() {\n clearTim eout(h);\n }\n }\n },\n stop: function() {\n if (this.han dle) {\n this.handle();\n this.handle = null;\n }\n },\n complete: function() {\n if (this.handle) {\n this.stop();\n this.callback.call(this.context);\n }\n }\n };\n \n function job(jo b, callback, wait) {\n if (job) {\n job.stop();\n } else {\n job = new Job(this);\n }\n job.go(callback, wait);\n return job;\n }\n \ n // exports \n\n scope.job = job;\n \n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is govern ed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(func tion(scope) {\n\n var registry = {};\n\n HTMLElement.register = function(tag, prototype) {\n registry[tag] = prototype;\n }\n\n // get prototype mapped t o node <tag>\n HTMLElement.getPrototypeForTag = function(tag) {\n var protot ype = !tag ? HTMLElement.prototype : registry[tag];\n // TODO(sjmiles): creat ing <tag> is likely to have wasteful side-effects\n return prototype || Objec t.getPrototypeOf(document.createElement(tag));\n };\n\n // we have to flag pro pagation stoppage for the event dispatcher\n var originalStopPropagation = Even t.prototype.stopPropagation;\n Event.prototype.stopPropagation = function() {\n this.cancelBubble = true;\n originalStopPropagation.apply(this, arguments );\n };\n \n // TODO(sorvell): remove when we're sure imports does not need\n // to load stylesheets\n /*\n HTMLImports.importer.preloadSelectors += \n ', polymer-element link[rel=stylesheet]';\n */\n})(Polymer);\n","/*\n * Copy right 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n (function(scope) {\n // super\n\n // `arrayOfArgs` is an optional ar ray of args like one might pass\n // to `Function.apply`\n\n // TODO(sjmil es):\n // $super must be installed on an instance or prototype chain\n // as `super`, and invoked via `this`, e.g.\n // `this.super();`\n\n // will not work if function objects are not unique, for example,\n // when using mixins.\n // The memoization strategy assumes each function exists on only one \n // prototype chain i.e. we use the function object f or memoizing)\n // perhaps we can bookkeep on the prototype itself instead \n function $super(arrayOfArgs) {\n // since we are thunking a method ca ll, performance is important here: \n // memoize all lookups, once memoized the fast path calls no other \n // functions\n //\n // find the caller (cannot be `strict` because of 'caller')\n var caller = $super.calle r;\n // memoized 'name of method' \n var nom = caller.nom;\n // m emoized next implementation prototype\n var _super = caller._super;\n if (!_super) {\n if (!nom) {\n nom = caller.nom = nameInThis.cal l(this, caller);\n }\n if (!nom) {\n console.warn('called super() on a method not installed declaratively (has no .nom property)');\n }\n // super prototype is either cached or we have to find it\n // by searching __proto__ (at the 'top')\n _super = memoizeSuper(caller , nom, getPrototypeOf(this));\n }\n if (!_super) {\n // if _sup er is falsey, there is no super implementation\n //console.warn('called $ super(' + nom + ') where there is no super implementation');\n } else {\n // our super function\n var fn = _super[nom];\n // memoize i nformation so 'fn' can call 'super'\n if (!fn._super) {\n memoiz eSuper(fn, nom, _super);\n }\n // invoke the inherited method\n // if 'fn' is not function valued, this will throw\n return fn.apply (this, arrayOfArgs || []);\n }\n }\n\n function nextSuper(proto, name , caller) {\n // look for an inherited prototype that implements name\n while (proto) {\n if ((proto[name] !== caller) && proto[name]) {\n return proto;\n }\n proto = getPrototypeOf(proto);\n }\n }\n\n function memoizeSuper(method, name, proto) {\n // find and cac he next prototype containing `name`\n // we need the prototype so we can do another lookup\n // from here\n method._super = nextSuper(proto, name , method);\n if (method._super) {\n // _super is a prototype, the ac tual method is _super[name]\n // tag super method with it's name for furt her lookups\n method._super[name].nom = name;\n }\n return meth od._super;\n }\n\n function nameInThis(value) {\n var p = this.__prot o__;\n while (p && p !== HTMLElement.prototype) {\n // TODO(sjmiles) : getOwnPropertyNames is absurdly expensive\n var n$ = Object.getOwnPrope rtyNames(p);\n for (var i=0, l=n$.length, n; i<l && (n=n$[i]); i++) {\n var d = Object.getOwnPropertyDescriptor(p, n);\n if (typeof d.v alue === 'function' && d.value === value) {\n return n;\n }\ n }\n p = p.__proto__;\n }\n }\n\n // NOTE: In some pla tforms (IE10) the prototype chain is faked via \n // __proto__. Therefore, al ways get prototype via __proto__ instead of\n // the more standard Object.get PrototypeOf.\n function getPrototypeOf(prototype) {\n return prototype._ _proto__;\n }\n\n // utility function to precompute name tags for function s\n // in a (unchained) prototype\n function hintSuper(prototype) {\n // tag functions with their prototype name to optimize\n // super call inv ocations\n for (var n in prototype) {\n var pd = Object.getOwnProper tyDescriptor(prototype, n);\n if (pd && typeof pd.value === 'function') { \n pd.value.nom = n;\n }\n }\n }\n\n // exports\n\n scope.super = $super;\n\n})(Polymer);\n","/* \n * Copyright 2013 The Polymer A uthors. All rights reserved.\n * Use of this source code is governed by a BSD-st yle\n * license that can be found in the LICENSE file.\n */\n\n(function(scope) {\n\n var typeHandlers = {\n string: function(value) {\n return value;\ n },\n date: function(value) {\n return new Date(Date.parse(value) || Date.now());\n },\n boolean: function(value) {\n if (value === '') { \n return true;\n }\n return value === 'false' ? false : !!valu e;\n },\n number: function(value) {\n var n = parseFloat(value);\n // hex values like \"0xFFFF\" parseFloat as 0\n if (n === 0) {\n n = parseInt(value);\n }\n return isNaN(n) ? value : n;\n // this code disabled because encoded values (like \"0xFFFF\")\n // do not round t rip to their original format\n //return (String(floatVal) === value) ? floa tVal : value;\n },\n object: function(value, currentValue) {\n if (cu rrentValue === null) {\n return value;\n }\n try {\n // If the string is an object, we can parse is with the JSON library.\n // i nclude convenience replace for single-quotes. If the author omits\n // qu otes altogether, parse will fail.\n return JSON.parse(value.replace(/'/g, '\"'));\n } catch(e) {\n // The object isn't valid JSON, return the raw value\n return value;\n }\n },\n // avoid deserialization of functions\n 'function': function(value, currentValue) {\n return cur rentValue;\n }\n };\n\n function deserializeValue(value, currentValue) {\n // attempt to infer type from default value\n var inferredType = typeof cu rrentValue;\n // invent 'date' type value for Date\n if (currentValue inst anceof Date) {\n inferredType = 'date';\n }\n // delegate deserializa tion via type string\n return typeHandlers[inferredType](value, currentValue) ;\n }\n\n // exports\n\n scope.deserializeValue = deserializeValue;\n\n})(Pol ymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * U se of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n\n // imports\n\n var extend = scope.extend;\n\n // module\n\n var api = {};\n\n api.declaration = {};\n ap i.instance = {};\n\n api.publish = function(apis, prototype) {\n for (var n in apis) {\n extend(prototype, apis[n]);\n }\n }\n\n // exports\n\n s cope.api = api;\n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. A ll rights reserved.\n * Use of this source code is governed by a BSD-style\n * l icense that can be found in the LICENSE file.\n */\n(function(scope) {\n\n var utils = {\n /**\n * Invokes a function asynchronously. The context of th e callback\n * function is bound to 'this' automatically.\n * @method async\n * @param {Function|String} method\n * @param {any|Array} args\ n * @param {number} timeout\n */\n async: function(method, args, ti meout) {\n // when polyfilling Object.observe, ensure changes \n // pr opagate before executing the async method\n Platform.flush();\n // sec ond argument to `apply` must be an array\n args = (args && args.length) ? a rgs : [args];\n // function to invoke\n var fn = function() {\n (this[method] || method).apply(this, args);\n }.bind(this);\n // exec ute `fn` sooner or later\n var handle = timeout ? setTimeout(fn, timeout) : \n requestAnimationFrame(fn);\n // NOTE: switch on inverting handl e to determine which time is used.\n return timeout ? handle : ~handle;\n },\n cancelAsync: function(handle) {\n if (handle < 0) {\n canc elAnimationFrame(~handle);\n } else {\n clearTimeout(handle);\n }\n },\n /**\n * Fire an event.\n * @method fire\n * @retu rns {Object} event\n * @param {string} type An event name.\n * @param {any} detail\n * @param {Node} onNode Target node.\n */\n fire: fun ction(type, detail, onNode, bubbles, cancelable) {\n var node = onNode || t his;\n var detail = detail || {};\n var event = new CustomEvent(type, {\n bubbles: (bubbles !== undefined ? bubbles : true), \n cancelab le: (cancelable !== undefined ? cancelable : true), \n detail: detail\n });\n node.dispatchEvent(event);\n return event;\n },\n /**\ n * Fire an event asynchronously.\n * @method asyncFire\n * @para m {string} type An event name.\n * @param detail\n * @param {Node} toN ode Target node.\n */\n asyncFire: function(/*inType, inDetail*/) {\n this.async(\"fire\", arguments);\n },\n /**\n * Remove class from old, add class to anew, if they exist\n * @param classFollows\n * @par am anew A node.\n * @param old A node\n * @param className\n */\n classFollows: function(anew, old, className) {\n if (old) {\n ol d.classList.remove(className);\n }\n if (anew) {\n anew.classLi st.add(className);\n }\n }\n };\n\n // no-operation function for handy stubs\n var nop = function() {};\n\n // null-object for handy stubs\n var no b = {};\n\n // deprecated\n\n utils.asyncMethod = utils.async;\n\n // exports \n\n scope.api.instance.utils = utils;\n scope.nop = nop;\n scope.nob = nob;\ n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserv ed.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n(function(scope) {\n\n // imports\n\n va r log = window.logFlags || {};\n var EVENT_PREFIX = 'on-';\n\n // instance eve nts api\n var events = {\n // read-only\n EVENT_PREFIX: EVENT_PREFIX,\n // event listeners on host\n addHostListeners: function() {\n var even ts = this.eventDelegates;\n log.events && (Object.keys(events).length > 0) && console.log('[%s] addHostListeners:', this.localName, events);\n // NOTE : host events look like bindings but really are not;\n // (1) we don't want the attribute to be set and (2) we want to support\n // multiple event lis teners ('host' and 'instance') and Node.bind\n // by default supports 1 thi ng being bound.\n // We do, however, leverage the event hookup code in Poly merExpressions\n // so that we have a common code path for handling declara tive events.\n var self = this, bindable, eventName;\n for (var n in e vents) {\n eventName = EVENT_PREFIX + n;\n bindable = PolymerExpre ssions.prepareEventBinding(\n Path.get(events[n]),\n eventName , \n {\n resolveEventHandler: function(model, path, node) {\ n var fn = path.getValueFrom(self);\n if (fn) {\n return fn.bind(self);\n }\n }\n }\n );\n bindable(this, this, false);\n }\n },\n // call 'm ethod' or function method on 'obj' with 'args', if the method exists\n dispat chMethod: function(obj, method, args) {\n if (obj) {\n log.events && console.group('[%s] dispatch [%s]', obj.localName, method);\n var fn = t ypeof method === 'function' ? method : obj[method];\n if (fn) {\n fn[args ? 'apply' : 'call'](obj, args);\n }\n log.events && cons ole.groupEnd();\n Platform.flush();\n }\n }\n };\n\n // exports \n\n scope.api.instance.events = events;\n\n})(Polymer);\n","/*\r\n * Copyright 2013 The Polymer Authors. All rights reserved.\r\n * Use of this source code is governed by a BSD-style\r\n * license that can be found in the LICENSE file.\r\ n */\r\n(function(scope) {\r\n\r\n // instance api for attributes\r\n\r\n var attributes = {\r\n copyInstanceAttributes: function () {\r\n var a$ = th is._instanceAttributes;\r\n for (var k in a$) {\r\n if (!this.hasAtt ribute(k)) {\r\n this.setAttribute(k, a$[k]);\r\n }\r\n }\r \n },\r\n // for each attribute on this, deserialize value to property as needed\r\n takeAttributes: function() {\r\n // if we have no publish loo kup table, we have no attributes to take\r\n // TODO(sjmiles): ad hoc\r\n if (this._publishLC) {\r\n for (var i=0, a$=this.attributes, l=a$.len gth, a; (a=a$[i]) && i<l; i++) {\r\n this.attributeToProperty(a.name, a .value);\r\n }\r\n }\r\n },\r\n // if attribute 'name' is mapp ed to a property, deserialize\r\n // 'value' into that property\r\n attrib uteToProperty: function(name, value) {\r\n // try to match this attribute t o a property (attributes are\r\n // all lower-case, so this is case-insensi tive search)\r\n var name = this.propertyForAttribute(name);\r\n if (n ame) {\r\n // filter out 'mustached' values, these are to be\r\n / / replaced with bound-data and are not yet values\r\n // themselves\r\n if (value && value.search(scope.bindPattern) >= 0) {\r\n return;\ r\n }\r\n // get original value\r\n var currentValue = this [name];\r\n // deserialize Boolean or Number values from attribute\r\n var value = this.deserializeValue(value, currentValue);\r\n // only act if the value has changed\r\n if (value !== currentValue) {\r\n // install new value (has side-effects)\r\n this[name] = value;\r\n }\r\n }\r\n },\r\n // return the published property matching n ame, or undefined\r\n propertyForAttribute: function(name) {\r\n var mat ch = this._publishLC && this._publishLC[name];\r\n //console.log('propertyF orAttribute:', name, 'matches', match);\r\n return match;\r\n },\r\n // convert representation of 'stringValue' based on type of 'currentValue'\r\n deserializeValue: function(stringValue, currentValue) {\r\n return scope. deserializeValue(stringValue, currentValue);\r\n },\r\n serializeValue: fu nction(value, inferredType) {\r\n if (inferredType === 'boolean') {\r\n return value ? '' : undefined;\r\n } else if (inferredType !== 'object' && inferredType !== 'function'\r\n && value !== undefined) {\r\n return value;\r\n }\r\n },\r\n reflectPropertyToAttribute: function (name) {\r\n var inferredType = typeof this[name];\r\n // try to intel ligently serialize property value\r\n var serializedValue = this.serializeV alue(this[name], inferredType);\r\n // boolean properties must reflect as b oolean attributes\r\n if (serializedValue !== undefined) {\r\n this. setAttribute(name, serializedValue);\r\n // TODO(sorvell): we should remo ve attr for all properties\r\n // that have undefined serialization; howe ver, we will need to\r\n // refine the attr reflection system to achieve this; pica, for example,\r\n // relies on having inferredType object prop erties not removed as\r\n // attrs.\r\n } else if (inferredType === 'boolean') {\r\n this.removeAttribute(name);\r\n }\r\n }\r\n };\ r\n\r\n // exports\r\n\r\n scope.api.instance.attributes = attributes;\r\n\r\n })(Polymer);\r\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserve d.\n * Use of this source code is governed by a BSD-style\n * license that can b e found in the LICENSE file.\n */\n(function(scope) {\n\n // imports\n\n var l og = window.logFlags || {};\n\n // magic words\n\n var OBSERVE_SUFFIX = 'Chang ed';\n\n // element api\n\n var empty = [];\n\n var properties = {\n obser veProperties: function() {\n var n$ = this._observeNames, pn$ = this._publi shNames;\n if ((n$ && n$.length) || (pn$ && pn$.length)) {\n var sel f = this;\n var o = this._propertyObserver = new CompoundObserver();\n // keep track of property observer so we can shut it down\n this.reg isterObservers([o]);\n for (var i=0, l=n$.length, n; (i<l) && (n=n$[i]); i++) {\n o.addPath(this, n);\n // observer array properties\n var pd = Object.getOwnPropertyDescriptor(this.__proto__, n);\n if (pd && pd.value) {\n this.observeArrayValue(n, pd.value, null);\n }\n }\n for (var i=0, l=pn$.length, n; (i<l) && (n=pn$[i ]); i++) {\n if (!this.observe || (this.observe[n] === undefined)) {\n o.addPath(this, n);\n }\n }\n o.open(this.noti fyPropertyChanges, this);\n }\n },\n notifyPropertyChanges: function( newValues, oldValues, paths) {\n var name, method, called = {};\n for (var i in oldValues) {\n // note: paths is of form [object, path, object, path]\n name = paths[2 * i + 1];\n if (this.publish[name] !== und efined) {\n this.reflectPropertyToAttribute(name);\n }\n method = this.observe[name];\n if (method) {\n this.observeArray Value(name, newValues[i], oldValues[i]);\n if (!called[method]) {\n called[method] = true;\n // observes the value if it is an ar ray\n this.invokeMethod(method, [oldValues[i], newValues[i], argument s]);\n }\n }\n }\n },\n observeArrayValue: function(n ame, value, old) {\n // we only care if there are registered side-effects\n var callbackName = this.observe[name];\n if (callbackName) {\n // if we are observing the previous value, stop\n if (Array.isArray(old) ) {\n log.observe && console.log('[%s] observeArrayValue: unregister ob server [%s]', this.localName, name);\n this.closeNamedObserver(name + ' __array');\n }\n // if the new value is an array, being observing it\n if (Array.isArray(value)) {\n log.observe && console.log('[ %s] observeArrayValue: register observer [%s]', this.localName, name, value);\n var observer = new ArrayObserver(value);\n observer.open(funct ion(value, old) {\n this.invokeMethod(callbackName, [old]);\n }, this);\n this.registerNamedObserver(name + '__array', observer);\n }\n }\n },\n bindProperty: function(property, observable) {\n // apply Polymer two-way reference binding\n return bindProperties(th is, property, observable);\n },\n invokeMethod: function(method, args) {\n var fn = this[method] || method;\n if (typeof fn === 'function') {\n fn.apply(this, args);\n }\n },\n registerObservers: function(o bservers) {\n this._observers.push(observers);\n },\n // observer arr ay items are arrays of observers.\n closeObservers: function() {\n for ( var i=0, l=this._observers.length; i<l; i++) {\n this.closeObserverArray( this._observers[i]);\n }\n this._observers = [];\n },\n closeObs erverArray: function(observerArray) {\n for (var i=0, l=observerArray.lengt h, o; i<l; i++) {\n o = observerArray[i];\n if (o && o.close) {\n o.close();\n }\n }\n },\n // bookkeeping observers fo r memory management\n registerNamedObserver: function(name, observer) {\n var o$ = this._namedObservers || (this._namedObservers = {});\n o$[name] = observer;\n },\n closeNamedObserver: function(name) {\n var o$ = th is._namedObservers;\n if (o$ && o$[name]) {\n o$[name].close();\n o$[name] = null;\n return true;\n }\n },\n closeNamedObse rvers: function() {\n if (this._namedObservers) {\n var keys=Object. keys(this._namedObservers);\n for (var i=0, l=keys.length, k, o; (i < l) && (k=keys[i]); i++) {\n o = this._namedObservers[k];\n o.clos e();\n }\n this._namedObservers = {};\n }\n }\n };\n\n / / property binding\n // bind a property in A to a path in B by converting A[pro perty] to a\n // getter/setter pair that accesses B[...path...]\n function bin dProperties(inA, inProperty, observable) {\n log.bind && console.log(LOG_BIND _PROPS, inB.localName || 'object', inPath, inA.localName, inProperty);\n // c apture A's value if B's value is null or undefined,\n // otherwise use B's va lue\n // TODO(sorvell): need to review, can do with ObserverTransform\n va r v = observable.discardChanges();\n if (v === null || v === undefined) {\n observable.setValue(inA[inProperty]);\n }\n return Observer.defineComp utedProperty(inA, inProperty, observable);\n }\n\n // logging\n var LOG_OBSER VE = '[%s] watching [%s]';\n var LOG_OBSERVED = '[%s#%s] watch: [%s] now [%s] w as [%s]';\n var LOG_CHANGED = '[%s#%s] propertyChanged: [%s] now [%s] was [%s]' ;\n var LOG_BIND_PROPS = \"[%s]: bindProperties: [%s] to [%s].[%s]\";\n\n // e xports\n\n scope.api.instance.properties = properties;\n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sour ce code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n\n // imports\n\n var log = window.logFlags || 0;\n var events = scope.api.instance.events;\n\n var syntax = new PolymerExpr essions();\n syntax.resolveEventHandler = function(model, path, node) {\n va r ctlr = findEventController(node);\n if (ctlr) {\n var fn = path.getVal ueFrom(ctlr);\n if (fn) {\n return fn.bind(ctlr);\n }\n }\n }\n\n // An event controller is the host element for the shadowRoot in which \ n // the node exists, or the first ancestor with a 'lightDomController'\n // p roperty.\n function findEventController(node) {\n while (node.parentNode) {\ n if (node.lightDomController) {\n return node;\n }\n node = node.parentNode;\n }\n return node.host;\n };\n\n // element api supp orting mdv\n\n var mdv = {\n syntax: syntax,\n instanceTemplate: function (template) {\n var dom = template.createInstance(this, this.syntax);\n this.registerObservers(dom.bindings_);\n return dom;\n },\n bind: fu nction(name, observable, oneTime) {\n var property = this.propertyForAttrib ute(name);\n if (!property) {\n // TODO(sjmiles): this mixin method must use the special form\n // of `super` installed by `mixinMethod` in d eclaration/prototype.js\n return this.mixinSuper(arguments);\n } els e {\n // use n-way Polymer binding\n var observer = this.bindPrope rty(property, observable);\n this.reflectPropertyToAttribute(property);\n // NOTE: reflecting binding information is typically required only for\n // tooling. It has a performance cost so it's opt-in in Node.bind.\n if (Platform.enableBindingsReflection) {\n observer.path = observab le.path_;\n this.bindings_ = this.bindings_ || {};\n this.bind ings_[name] = observer;\n }\n return observer;\n }\n },\n // TODO(sorvell): unbind/unbindAll has been removed, as public api, from\n // TemplateBinding. We still need to close/dispose of observers but perhaps\n // we should choose a more explicit name.\n asyncUnbindAll: function() {\n if (!this._unbound) {\n log.unbind && console.log('[%s] asyncUnbindA ll', this.localName);\n this._unbindAllJob = this.job(this._unbindAllJob, this.unbindAll, 0);\n }\n },\n unbindAll: function() {\n if (!t his._unbound) {\n this.closeObservers();\n this.closeNamedObserver s();\n this._unbound = true;\n }\n },\n cancelUnbindAll: funct ion() {\n if (this._unbound) {\n log.unbind && console.warn('[%s] al ready unbound, cannot cancel unbindAll', this.localName);\n return;\n }\n log.unbind && console.log('[%s] cancelUnbindAll', this.localName);\n if (this._unbindAllJob) {\n this._unbindAllJob = this._unbindAllJob. stop();\n }\n }\n };\n\n function unbindNodeTree(node) {\n forNodeT ree(node, _nodeUnbindAll);\n }\n\n function _nodeUnbindAll(node) {\n node.u nbindAll();\n }\n\n function forNodeTree(node, callback) {\n if (node) {\n callback(node);\n for (var child = node.firstChild; child; child = chi ld.nextSibling) {\n forNodeTree(child, callback);\n }\n }\n }\n\ n var mustachePattern = /\\{\\{([^{}]*)}}/;\n\n // exports\n\n scope.bindPatt ern = mustachePattern;\n scope.api.instance.mdv = mdv;\n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sour ce code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n\n var base = {\n PolymerBase: true,\n jo b: function(job, callback, wait) {\n if (typeof job === 'string') {\n var n = '___' + job;\n this[n] = Polymer.job.call(this, this[n], callba ck, wait);\n } else {\n return Polymer.job.call(this, job, callback, wait);\n }\n },\n super: Polymer.super,\n // user entry point for element has had its createdCallback called\n created: function() {\n },\n // user entry point for element has shadowRoot and is ready for\n // api interaction\n ready: function() {\n },\n createdCallback: function() {\ n if (this.templateInstance && this.templateInstance.model) {\n cons ole.warn('Attributes on ' + this.localName + ' were data bound ' +\n 'prior to Polymer upgrading the element. This may result in ' +\n 'in correct binding types.');\n }\n this.created();\n this.prepareEle ment();\n },\n // system entry point, do not override\n prepareElement: function() {\n this._elementPrepared = true;\n // install shadowRoots storage\n this.shadowRoots = {};\n // storage for closeable observers .\n this._observers = [];\n // install property observers\n this. observeProperties();\n // install boilerplate attributes\n this.copyIn stanceAttributes();\n // process input attributes\n this.takeAttribute s();\n // add event listeners\n this.addHostListeners();\n // pro cess declarative resources\n this.parseDeclarations(this.__proto__);\n // TODO(sorvell): CE polyfill uses unresolved attribute to simulate\n // : unresolved; remove this attribute to be compatible with native\n // CE.\n this.removeAttribute('unresolved');\n // user entry point\n this.r eady();\n },\n attachedCallback: function() {\n this.cancelUnbindAll( );\n // invoke user action\n if (this.attached) {\n this.attach ed();\n }\n // TODO(sorvell): bc\n if (this.enteredView) {\n this.enteredView();\n }\n // NOTE: domReady can be used to access e lements in dom (descendants, \n // ancestors, siblings) such that the devel oper is enured to upgrade\n // ordering. If the element definitions have lo aded, domReady\n // can be used to access upgraded elements.\n if (!th is.hasBeenAttached) {\n this.hasBeenAttached = true;\n if (this.do mReady) {\n this.async('domReady');\n }\n }\n },\n de tachedCallback: function() {\n if (!this.preventDispose) {\n this.as yncUnbindAll();\n }\n // invoke user action\n if (this.detached) {\n this.detached();\n }\n // TODO(sorvell): bc\n if (this .leftView) {\n this.leftView();\n }\n },\n // TODO(sorvell): b c\n enteredViewCallback: function() {\n this.attachedCallback();\n }, \n // TODO(sorvell): bc\n leftViewCallback: function() {\n this.detac hedCallback();\n },\n // TODO(sorvell): bc\n enteredDocumentCallback: f unction() {\n this.attachedCallback();\n },\n // TODO(sorvell): bc\n leftDocumentCallback: function() {\n this.detachedCallback();\n },\n // recursive ancestral <element> initialization, oldest first\n parseDecla rations: function(p) {\n if (p && p.element) {\n this.parseDeclarati ons(p.__proto__);\n p.parseDeclaration.call(this, p.element);\n }\n },\n // parse input <element> as needed, override for custom behavior\n parseDeclaration: function(elementElement) {\n var template = this.fetchTe mplate(elementElement);\n if (template) {\n var root = this.shadowFr omTemplate(template);\n this.shadowRoots[elementElement.name] = root;\n }\n },\n // return a shadow-root template (if desired), override for c ustom behavior\n fetchTemplate: function(elementElement) {\n return elem entElement.querySelector('template');\n },\n // utility function that crea tes a shadow root from a <template>\n shadowFromTemplate: function(template) {\n if (template) {\n // make a shadow root\n var root = this .createShadowRoot();\n // stamp template\n // which includes parsi ng and applying MDV bindings before being \n // inserted (to avoid {{}} i n attribute values)\n // e.g. to prevent <img src=\"images/{{icon}}\"> fr om generating a 404.\n var dom = this.instanceTemplate(template);\n // append to shadow dom\n root.appendChild(dom);\n // perform po st-construction initialization tasks on shadow root\n this.shadowRootRead y(root, template);\n // return the created shadow root\n return ro ot;\n }\n },\n // utility function that stamps a <template> into ligh t-dom\n lightFromTemplate: function(template, refNode) {\n if (template) {\n // TODO(sorvell): mark this element as a lightDOMController so that\ n // event listeners on bound nodes inside it will be called on it.\n // Note, the expectation here is that events on all descendants \n // should be handled by this element.\n this.lightDomController = true;\n // stamp template\n // which includes parsing and applying MDV bind ings before being \n // inserted (to avoid {{}} in attribute values)\n // e.g. to prevent <img src=\"images/{{icon}}\"> from generating a 404.\n var dom = this.instanceTemplate(template);\n // append to shadow do m\n if (refNode) {\n this.insertBefore(dom, refNode); \ n } else {\n this.appendChild(dom);\n }\n // perfo rm post-construction initialization tasks on ahem, light root\n this.shad owRootReady(this);\n // return the created shadow root\n return do m;\n }\n },\n shadowRootReady: function(root) {\n // locate node s with id and store references to them in this.$ hash\n this.marshalNodeRef erences(root);\n // set up pointer gestures\n PointerGestures.register (root);\n },\n // locate nodes with id and store references to them in thi s.$ hash\n marshalNodeReferences: function(root) {\n // establish $ inst ance variable\n var $ = this.$ = this.$ || {};\n // populate $ from no des with ID from the LOCAL tree\n if (root) {\n var n$ = root.queryS electorAll(\"[id]\");\n for (var i=0, l=n$.length, n; (i<l) && (n=n$[i]); i++) {\n $[n.id] = n;\n };\n }\n },\n attributeChang edCallback: function(name, oldValue) {\n // TODO(sjmiles): adhoc filter\n if (name !== 'class' && name !== 'style') {\n this.attributeToPropert y(name, this.getAttribute(name));\n }\n if (this.attributeChanged) {\n this.attributeChanged.apply(this, arguments);\n }\n },\n onMu tation: function(node, listener) {\n var observer = new MutationObserver(fu nction(mutations) {\n listener.call(this, observer, mutations);\n observer.disconnect();\n }.bind(this));\n observer.observe(node, {chil dList: true, subtree: true});\n }\n };\n\n // true if object has own Polyme rBase api\n function isBase(object) {\n return object.hasOwnProperty('Polyme rBase') \n }\n\n // name a base constructor for dev tools\n\n function Polyme rBase() {};\n PolymerBase.prototype = base;\n base.constructor = PolymerBase;\ n \n // exports\n\n scope.Base = PolymerBase;\n scope.isBase = isBase;\n sc ope.api.instance.base = base;\n \n})(Polymer);\n","/*\n * Copyright 2013 The Po lymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function(sc ope) {\n\n // imports\n\n var log = window.logFlags || {};\n \n // magic wor ds\n \n var STYLE_SCOPE_ATTRIBUTE = 'element';\n var STYLE_CONTROLLER_SCOPE = 'controller';\n \n var styles = {\n STYLE_SCOPE_ATTRIBUTE: STYLE_SCOPE_ATT RIBUTE,\n /**\n * Installs external stylesheets and <style> elements with the attribute \n * polymer-scope='controller' into the scope of element. Th is is intended\n * to be a called during custom element construction.\n * /\n installControllerStyles: function() {\n // apply controller styles, but only if they are not yet applied\n var scope = this.findStyleScope();\n if (scope && !this.scopeHasNamedStyle(scope, this.localName)) {\n / / allow inherited controller styles\n var proto = getPrototypeOf(this), c ssText = '';\n while (proto && proto.element) {\n cssText += pro to.element.cssTextForScope(STYLE_CONTROLLER_SCOPE);\n proto = getProtot ypeOf(proto);\n }\n if (cssText) {\n this.installScopeCss Text(cssText, scope);\n }\n }\n },\n installScopeStyle: functi on(style, name, scope) {\n var scope = scope || this.findStyleScope(), name = name || '';\n if (scope && !this.scopeHasNamedStyle(scope, this.localNam e + name)) {\n var cssText = '';\n if (style instanceof Array) {\n for (var i=0, l=style.length, s; (i<l) && (s=style[i]); i++) {\n cssText += s.textContent + '\\n\\n';\n }\n } else {\n cssText = style.textContent;\n }\n this.installScopeCssText(c ssText, scope, name);\n }\n },\n installScopeCssText: function(cssTex t, scope, name) {\n scope = scope || this.findStyleScope();\n name = n ame || '';\n if (!scope) {\n return;\n }\n if (window.Shad owDOMPolyfill) {\n cssText = shimCssText(cssText, scope.host);\n }\n var style = this.element.cssTextToScopeStyle(cssText,\n STYLE_CON TROLLER_SCOPE);\n Polymer.applyStyleToScope(style, scope);\n // cache that this style has been applied\n scope._scopeStyles[this.localName + name ] = true;\n },\n findStyleScope: function(node) {\n // find the shado w root that contains this element\n var n = node || this;\n while (n.p arentNode) {\n n = n.parentNode;\n }\n return n;\n },\n s copeHasNamedStyle: function(scope, name) {\n scope._scopeStyles = scope._sc opeStyles || {};\n return scope._scopeStyles[name];\n }\n };\n \n // NOTE: use raw prototype traversal so that we ensure correct traversal\n // on p latforms where the protoype chain is simulated via __proto__ (IE10)\n function getPrototypeOf(prototype) {\n return prototype.__proto__;\n }\n\n function shimCssText(cssText, host) {\n var name = '', is = false;\n if (host) {\n name = host.localName;\n is = host.hasAttribute('is');\n }\n var selector = Platform.ShadowCSS.makeScopeSelector(name, is);\n return Platform .ShadowCSS.shimCssText(cssText, selector);\n }\n\n // exports\n\n scope.api.i nstance.styles = styles;\n \n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD- style\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n\n // imports\n\n var extend = scope.extend;\n var api = scope.api;\n\n / / imperative implementation: Polymer()\n\n // specify an 'own' prototype for ta g `name`\n function element(name, prototype) {\n if (arguments.length === 1 && typeof arguments[0] !== 'string') {\n prototype = name;\n var scrip t = document._currentScript;\n name = script && script.parentNode && script .parentNode.getAttribute ?\n script.parentNode.getAttribute('name') : ' ';\n if (!name) {\n throw 'Element name could not be inferred.';\n }\n }\n if (getRegisteredPrototype[name]) {\n throw 'Already regi stered (Polymer) prototype for element ' + name;\n }\n // cache the protot ype\n registerPrototype(name, prototype);\n // notify the registrar waitin g for 'name', if any\n notifyPrototype(name);\n }\n\n // async prototype so urce\n\n function waitingForPrototype(name, client) {\n waitPrototype[name] = client;\n }\n\n var waitPrototype = {};\n\n function notifyPrototype(name) {\n if (waitPrototype[name]) {\n waitPrototype[name].registerWhenReady() ;\n delete waitPrototype[name];\n }\n }\n\n // utility and bookkeeping \n\n // maps tag names to prototypes, as registered with\n // Polymer. Prototy pes associated with a tag name\n // using document.registerElement are availabl e from\n // HTMLElement.getPrototypeForTag().\n // If an element was fully reg istered by Polymer, then\n // Polymer.getRegisteredPrototype(name) === \n // HTMLElement.getPrototypeForTag(name)\n\n var prototypesByName = {};\n\n funct ion registerPrototype(name, prototype) {\n return prototypesByName[name] = pr ototype || {};\n }\n\n function getRegisteredPrototype(name) {\n return pro totypesByName[name];\n }\n\n // exports\n\n scope.getRegisteredPrototype = ge tRegisteredPrototype;\n scope.waitingForPrototype = waitingForPrototype;\n\n / / namespace shenanigans so we can expose our scope on the registration \n // fu nction\n\n // make window.Polymer reference `element()`\n\n window.Polymer = e lement;\n\n // TODO(sjmiles): find a way to do this that is less terrible\n // copy window.Polymer properties onto `element()`\n\n extend(Polymer, scope);\n\ n // Under the HTMLImports polyfill, scripts in the main document\n // do not block on imports; we want to allow calls to Polymer in the main\n // document. Platform collects those calls until we can process them, which\n // we do here. \n\n var declarations = Platform.deliverDeclarations();\n if (declarations) {\ n for (var i=0, l=declarations.length, d; (i<l) && (d=declarations[i]); i++) {\n element.apply(null, d);\n }\n }\n\n})(Polymer);\n","/* \n * Copyrig ht 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */ \n\n(function(scope) {\n\nvar path = {\n resolveElementPaths: function(node) {\ n Platform.urlResolver.resolveDom(node);\n },\n addResolvePathApi: function () {\n // let assetpath attribute modify the resolve path\n var assetPath = this.getAttribute('assetpath') || '';\n var root = new URL(assetPath, this. ownerDocument.baseURI);\n this.prototype.resolvePath = function(urlPath, base ) {\n var u = new URL(urlPath, base || root);\n return u.href;\n }; \n }\n};\n\n// exports\nscope.api.declaration.path = path;\n\n})(Polymer);\n"," /*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICE NSE file.\n */\n(function(scope) {\n\n // imports\n\n var log = window.logFlag s || {};\n var api = scope.api.instance.styles;\n var STYLE_SCOPE_ATTRIBUTE = api.STYLE_SCOPE_ATTRIBUTE;\n\n // magic words\n\n var STYLE_SELECTOR = 'style' ;\n var STYLE_LOADABLE_MATCH = '@import';\n var SHEET_SELECTOR = 'link[rel=sty lesheet]';\n var STYLE_GLOBAL_SCOPE = 'global';\n var SCOPE_ATTR = 'polymer-sc ope';\n\n var styles = {\n // returns true if resources are loading\n loa dStyles: function(callback) {\n var content = this.templateContent();\n if (content) {\n this.convertSheetsToStyles(content);\n }\n v ar styles = this.findLoadableStyles(content);\n if (styles.length) {\n Platform.styleResolver.loadStyles(styles, callback);\n } else if (callba ck) {\n callback();\n }\n },\n convertSheetsToStyles: function (root) {\n var s$ = root.querySelectorAll(SHEET_SELECTOR);\n for (var i=0, l=s$.length, s, c; (i<l) && (s=s$[i]); i++) {\n c = createStyleEleme nt(importRuleForSheet(s, this.ownerDocument.baseURI),\n this.ownerDoc ument);\n this.copySheetAttributes(c, s);\n s.parentNode.replaceCh ild(c, s);\n }\n },\n copySheetAttributes: function(style, link) {\n for (var i=0, a$=link.attributes, l=a$.length, a; (a=a$[i]) && i<l; i++) {\ n if (a.name !== 'rel' && a.name !== 'href') {\n style.setAttrib ute(a.name, a.value);\n }\n }\n },\n findLoadableStyles: funct ion(root) {\n var loadables = [];\n if (root) {\n var s$ = root .querySelectorAll(STYLE_SELECTOR);\n for (var i=0, l=s$.length, s; (i<l) && (s=s$[i]); i++) {\n if (s.textContent.match(STYLE_LOADABLE_MATCH)) { \n loadables.push(s);\n }\n }\n }\n return loadables;\n },\n /**\n * Install external stylesheets loaded in <poly mer-element> elements into the \n * element's template.\n * @param eleme ntElement The <element> element to style.\n */\n installSheets: function( ) {\n this.cacheSheets();\n this.cacheStyles();\n this.installLoc alSheets();\n this.installGlobalStyles();\n },\n /**\n * Remove a ll sheets from element and store for later use.\n */\n cacheSheets: funct ion() {\n this.sheets = this.findNodes(SHEET_SELECTOR);\n this.sheets. forEach(function(s) {\n if (s.parentNode) {\n s.parentNode.remov eChild(s);\n }\n });\n },\n cacheStyles: function() {\n t his.styles = this.findNodes(STYLE_SELECTOR + '[' + SCOPE_ATTR + ']');\n thi s.styles.forEach(function(s) {\n if (s.parentNode) {\n s.parentN ode.removeChild(s);\n }\n });\n },\n /**\n * Takes externa l stylesheets loaded in an <element> element and moves\n * their content int o a <style> element inside the <element>'s template.\n * The sheet is then r emoved from the <element>. This is done only so \n * that if the element is loaded in the main document, the sheet does\n * not become active.\n * N ote, ignores sheets with the attribute 'polymer-scope'.\n * @param elementEl ement The <element> element to style.\n */\n installLocalSheets: function () {\n var sheets = this.sheets.filter(function(s) {\n return !s.ha sAttribute(SCOPE_ATTR);\n });\n var content = this.templateContent();\ n if (content) {\n var cssText = '';\n sheets.forEach(functio n(sheet) {\n cssText += cssTextFromSheet(sheet) + '\\n';\n });\n if (cssText) {\n var style = createStyleElement(cssText, this.o wnerDocument);\n content.insertBefore(style, content.firstChild);\n }\n }\n },\n findNodes: function(selector, matcher) {\n var nodes = this.querySelectorAll(selector).array();\n var content = this.templ ateContent();\n if (content) {\n var templateNodes = content.querySe lectorAll(selector).array();\n nodes = nodes.concat(templateNodes);\n }\n return matcher ? nodes.filter(matcher) : nodes;\n },\n template Content: function() {\n var template = this.querySelector('template');\n return template && templateContent(template);\n },\n /**\n * Promot es external stylesheets and <style> elements with the attribute \n * polymer -scope='global' into global scope.\n * This is particularly useful for defin ing @keyframe rules which \n * currently do not function in scoped or shadow style elements.\n * (See wkb.ug/72462)\n * @param elementElement The <e lement> element to style.\n */\n // TODO(sorvell): remove when wkb.ug/7246 2 is addressed.\n installGlobalStyles: function() {\n var style = this.s tyleForScope(STYLE_GLOBAL_SCOPE);\n applyStyleToScope(style, document.head) ;\n },\n cssTextForScope: function(scopeDescriptor) {\n var cssText = '';\n // handle stylesheets\n var selector = '[' + SCOPE_ATTR + '=' + scopeDescriptor + ']';\n var matcher = function(s) {\n return match esSelector(s, selector);\n };\n var sheets = this.sheets.filter(matche r);\n sheets.forEach(function(sheet) {\n cssText += cssTextFromSheet (sheet) + '\\n\\n';\n });\n // handle cached style elements\n var styles = this.styles.filter(matcher);\n styles.forEach(function(style) {\n cssText += style.textContent + '\\n\\n';\n });\n return cssTex t;\n },\n styleForScope: function(scopeDescriptor) {\n var cssText = this.cssTextForScope(scopeDescriptor);\n return this.cssTextToScopeStyle(cs sText, scopeDescriptor);\n },\n cssTextToScopeStyle: function(cssText, sco peDescriptor) {\n if (cssText) {\n var style = createStyleElement(cs sText);\n style.setAttribute(STYLE_SCOPE_ATTRIBUTE, this.getAttribute('na me') +\n '-' + scopeDescriptor);\n return style;\n }\n }\n };\n\n function importRuleForSheet(sheet, baseUrl) {\n var href = new URL(sheet.getAttribute('href'), baseUrl).href;\n return '@import \\'' + href + '\\';';\n }\n\n function applyStyleToScope(style, scope) {\n if (style) { \n if (scope === document) {\n scope = document.head;\n }\n if (window.ShadowDOMPolyfill) {\n scope = document.head;\n }\n // TODO(sorvell): necessary for IE\n // see https://connect.microsoft.com /IE/feedback/details/790212/\n // cloning-a-style-element-and-adding-to-doc ument-produces\n // -unexpected-result#details\n // var clone = style. cloneNode(true);\n var clone = createStyleElement(style.textContent);\n var attr = style.getAttribute(STYLE_SCOPE_ATTRIBUTE);\n if (attr) {\n clone.setAttribute(STYLE_SCOPE_ATTRIBUTE, attr);\n }\n // TODO(sor vell): probably too brittle; try to figure out \n // where to put the eleme nt.\n var refNode = scope.firstElementChild;\n if (scope === document. head) {\n var selector = 'style[' + STYLE_SCOPE_ATTRIBUTE + ']';\n var s$ = document.head.querySelectorAll(selector);\n if (s$.length) {\n refNode = s$[s$.length-1].nextElementSibling;\n }\n }\n scope.insertBefore(clone, refNode);\n }\n }\n\n function createStyleEleme nt(cssText, scope) {\n scope = scope || document;\n scope = scope.createEl ement ? scope : scope.ownerDocument;\n var style = scope.createElement('style ');\n style.textContent = cssText;\n return style;\n }\n\n function cssT extFromSheet(sheet) {\n return (sheet && sheet.__resource) || '';\n }\n\n f unction matchesSelector(node, inSelector) {\n if (matches) {\n return ma tches.call(node, inSelector);\n }\n }\n var p = HTMLElement.prototype;\n v ar matches = p.matches || p.matchesSelector || p.webkitMatchesSelector \n | | p.mozMatchesSelector;\n \n // exports\n\n scope.api.declaration.styles = st yles;\n scope.applyStyleToScope = applyStyleToScope;\n \n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sour ce code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n(function(scope) {\n\n // imports\n\n var log = window.logFlags || {};\n var api = scope.api.instance.events;\n var EVENT_PREFIX = api.EVENT_P REFIX;\n // polymer-element declarative api: events feature\n\n var events = { \n parseHostEvents: function() {\n // our delegates map\n var dele gates = this.prototype.eventDelegates;\n // extract data from attributes in to delegates\n this.addAttributeDelegates(delegates);\n },\n addAttri buteDelegates: function(delegates) {\n // for each attribute\n for (va r i=0, a; a=this.attributes[i]; i++) {\n // does it have magic marker ide ntifying it as an event delegate?\n if (this.hasEventPrefix(a.name)) {\n // if so, add the info to delegates\n delegates[this.removeEve ntPrefix(a.name)] = a.value.replace('{{', '')\n .replace('}}', ''). trim();\n }\n }\n },\n // starts with 'on-'\n hasEventPrefi x: function (n) {\n return n && (n[0] === 'o') && (n[1] === 'n') && (n[2] = == '-');\n },\n removeEventPrefix: function(n) {\n return n.slice(pre fixLength);\n }\n };\n\n var prefixLength = EVENT_PREFIX.length;\n\n // ex ports\n scope.api.declaration.events = events;\n\n})(Polymer);","/*\r\n * Copyr ight 2013 The Polymer Authors. All rights reserved.\r\n * Use of this source cod e is governed by a BSD-style\r\n * license that can be found in the LICENSE file .\r\n */\r\n(function(scope) {\r\n\r\n // element api\r\n\r\n var properties = {\r\n inferObservers: function(prototype) {\r\n // called before protot ype.observe is chained to inherited object\r\n var observe = prototype.obse rve, property;\r\n for (var n in prototype) {\r\n if (n.slice(-7) == = 'Changed') {\r\n if (!observe) {\r\n observe = (prototype .observe = {});\r\n }\r\n property = n.slice(0, -7)\r\n observe[property] = observe[property] || n;\r\n }\r\n }\r\n }, \r\n explodeObservers: function(prototype) {\r\n // called before protot ype.observe is chained to inherited object\r\n var o = prototype.observe;\r \n if (o) {\r\n var exploded = {};\r\n for (var n in o) {\r\n var names = n.split(' ');\r\n for (var i=0, ni; ni=names[i]; i++) {\r\n exploded[ni] = o[n];\r\n }\r\n }\r\n prototype.observe = exploded;\r\n }\r\n },\r\n optimizePropertyMaps : function(prototype) {\r\n if (prototype.observe) {\r\n // construc t name list\r\n var a = prototype._observeNames = [];\r\n for (var n in prototype.observe) {\r\n var names = n.split(' ');\r\n f or (var i=0, ni; ni=names[i]; i++) {\r\n a.push(ni);\r\n }\r \n }\r\n }\r\n if (prototype.publish) {\r\n // construct name list\r\n var a = prototype._publishNames = [];\r\n for (var n in prototype.publish) {\r\n a.push(n);\r\n }\r\n }\r\n },\r\n publishProperties: function(prototype, base) {\r\n // if we have any properties to publish\r\n var publish = prototype.publish;\r\n if (publish) {\r\n // transcribe `publish` entries onto own prototype\r\n this.requireProperties(publish, prototype, base);\r\n // construct map of lower-cased property names\r\n prototype._publishLC = this.lowerCa seMap(publish);\r\n }\r\n },\r\n requireProperties: function(properti es, prototype, base) {\r\n // ensure a prototype value for each property\r\ n for (var n in properties) {\r\n if (prototype[n] === undefined && base[n] === undefined) {\r\n prototype[n] = properties[n];\r\n } \r\n }\r\n },\r\n lowerCaseMap: function(properties) {\r\n var m ap = {};\r\n for (var n in properties) {\r\n map[n.toLowerCase()] = n;\r\n }\r\n return map;\r\n }\r\n };\r\n\r\n // exports\r\n\r\n scope.api.declaration.properties = properties;\r\n\r\n})(Polymer);\r\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE fi le.\n */\n(function(scope) {\n\n // magic words\n\n var ATTRIBUTES_ATTRIBUTE = 'attributes';\n var ATTRIBUTES_REGEX = /\\s|,/;\n\n // attributes api\n\n va r attributes = {\n inheritAttributesObjects: function(prototype) {\n // chain our lower-cased publish map to the inherited version\n this.inheritOb ject(prototype, 'publishLC');\n // chain our instance attributes map to the inherited version\n this.inheritObject(prototype, '_instanceAttributes');\ n },\n publishAttributes: function(prototype, base) {\n // merge name s from 'attributes' attribute\n var attributes = this.getAttribute(ATTRIBUT ES_ATTRIBUTE);\n if (attributes) {\n // get properties to publish\n var publish = prototype.publish || (prototype.publish = {});\n // names='a b c' or names='a,b,c'\n var names = attributes.split(ATTRIBUTES_ REGEX);\n // record each name for publishing\n for (var i=0, l=nam es.length, n; i<l; i++) {\n // remove excess ws\n n = names[i] .trim();\n // do not override explicit entries\n if (n && publ ish[n] === undefined && base[n] === undefined) {\n publish[n] = null; \n }\n }\n }\n },\n // record clonable attributes fro m <element>\n accumulateInstanceAttributes: function() {\n // inherit in stance attributes\n var clonable = this.prototype._instanceAttributes;\n // merge attributes from element\n var a$ = this.attributes;\n for (var i=0, l=a$.length, a; (i<l) && (a=a$[i]); i++) { \n if (this.isInsta nceAttribute(a.name)) {\n clonable[a.name] = a.value;\n }\n }\n },\n isInstanceAttribute: function(name) {\n return !this.blackL ist[name] && name.slice(0,3) !== 'on-';\n },\n // do not clone these attri butes onto instances\n blackList: {\n name: 1,\n 'extends': 1,\n constructor: 1,\n noscript: 1,\n assetpath: 1,\n 'cache-csstex t': 1\n }\n };\n\n // add ATTRIBUTES_ATTRIBUTE to the blacklist\n attribut es.blackList[ATTRIBUTES_ATTRIBUTE] = 1;\n\n // exports\n\n scope.api.declarati on.attributes = attributes;\n\n})(Polymer);\n","/*\n * Copyright 2013 The Polyme r Authors. All rights reserved.\n * Use of this source code is governed by a BSD -style\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n\n // imports\n \n var api = scope.api;\n var isBase = scope.isBase;\n var extend = scope.extend;\n\n // prototype api\n\n var prototype = {\n\n r egister: function(name, extendeeName) {\n // build prototype combining exte ndee, Polymer base, and named api\n this.buildPrototype(name, extendeeName) ;\n // register our custom element with the platform\n this.registerPr ototype(name, extendeeName);\n // reference constructor in a global named b y 'constructor' attribute\n this.publishConstructor();\n },\n\n build Prototype: function(name, extendeeName) {\n // get our custom prototype (be fore chaining)\n var extension = scope.getRegisteredPrototype(name);\n // get basal prototype\n var base = this.generateBasePrototype(extendeeNam e);\n // implement declarative features\n this.desugarBeforeChaining(e xtension, base);\n // join prototypes\n this.prototype = this.chainPro totypes(extension, base);\n // more declarative features\n this.desuga rAfterChaining(name, extendeeName);\n },\n\n desugarBeforeChaining: functi on(prototype, base) {\n // back reference declaration element\n // TOD O(sjmiles): replace `element` with `elementElement` or `declaration`\n prot otype.element = this;\n // transcribe `attributes` declarations onto own pr ototype's `publish`\n this.publishAttributes(prototype, base);\n // `p ublish` properties to the prototype and to attribute watch\n this.publishPr operties(prototype, base);\n // infer observers for `observe` list based on method names\n this.inferObservers(prototype);\n // desugar compound observer syntax, e.g. 'a b c' \n this.explodeObservers(prototype);\n },\ n\n chainPrototypes: function(prototype, base) {\n // chain various meta -data objects to inherited versions\n this.inheritMetaData(prototype, base) ;\n // chain custom api to inherited\n var chained = this.chainObject( prototype, base);\n // x-platform fixup\n ensurePrototypeTraversal(cha ined);\n return chained;\n },\n\n inheritMetaData: function(prototype , base) {\n // chain observe object to inherited\n this.inheritObject( 'observe', prototype, base);\n // chain publish object to inherited\n this.inheritObject('publish', prototype, base);\n // chain our lower-cased publish map to the inherited version\n this.inheritObject('_publishLC', pro totype, base);\n // chain our instance attributes map to the inherited vers ion\n this.inheritObject('_instanceAttributes', prototype, base);\n // chain our event delegates map to the inherited version\n this.inheritObjec t('eventDelegates', prototype, base);\n },\n\n // implement various declar ative features\n desugarAfterChaining: function(name, extendee) {\n // b uild side-chained lists to optimize iterations\n this.optimizePropertyMaps( this.prototype);\n // install external stylesheets as if they are inline\n this.installSheets();\n // adjust any paths in dom from imports\n this.resolveElementPaths(this);\n // compile list of attributes to copy to instances\n this.accumulateInstanceAttributes();\n // parse on-* dele gates declared on `this` element\n this.parseHostEvents();\n //\n // install a helper method this.resolvePath to aid in \n // setting resour ce urls. e.g.\n // this.$.image.src = this.resolvePath('images/foo.png')\n this.addResolvePathApi();\n // under ShadowDOMPolyfill, transforms to approximate missing CSS features\n if (window.ShadowDOMPolyfill) {\n Platform.ShadowCSS.shimStyling(this.templateContent(), name, extendee);\n }\n // allow custom element access to the declarative context\n if (th is.prototype.registerCallback) {\n this.prototype.registerCallback(this); \n }\n },\n\n // if a named constructor is requested in element, map a reference\n // to the constructor to the given symbol\n publishConstruct or: function() {\n var symbol = this.getAttribute('constructor');\n if (symbol) {\n window[symbol] = this.ctor;\n }\n },\n\n // buil d prototype combining extendee, Polymer base, and named api\n generateBasePro totype: function(extnds) {\n var prototype = this.findBasePrototype(extnds) ;\n if (!prototype) {\n // create a prototype based on tag-name exte nsion\n var prototype = HTMLElement.getPrototypeForTag(extnds);\n // insert base api in inheritance chain (if needed)\n prototype = this.en sureBaseApi(prototype);\n // memoize this base\n memoizedBases[ext nds] = prototype;\n }\n return prototype;\n },\n\n findBaseProto type: function(name) {\n return memoizedBases[name];\n },\n\n // inst all Polymer instance api into prototype chain, as needed \n ensureBaseApi: fu nction(prototype) {\n if (prototype.PolymerBase) {\n return prototyp e;\n }\n var extended = Object.create(prototype);\n // we need a unique copy of base api for each base prototype\n // therefore we 'extend' here instead of simply chaining\n api.publish(api.instance, extended);\n // TODO(sjmiles): sharing methods across prototype chains is\n // not su pported by 'super' implementation which optimizes\n // by memoizing prototy pe relationships.\n // Probably we should have a version of 'extend' that i s \n // share-aware: it could study the text of each function,\n // lo ok for usage of 'super', and wrap those functions in\n // closures.\n // As of now, there is only one problematic method, so \n // we just patch it manually.\n // To avoid re-entrancy problems, the special super method\n // installed is called `mixinSuper` and the mixin method\n // must us e this method instead of the default `super`.\n this.mixinMethod(extended, prototype, api.instance.mdv, 'bind');\n // return buffed-up prototype\n return extended;\n },\n\n mixinMethod: function(extended, prototype, api , name) {\n var $super = function(args) {\n return prototype[name].a pply(this, args);\n };\n extended[name] = function() {\n this.m ixinSuper = $super;\n return api[name].apply(this, arguments);\n }\n },\n\n // ensure prototype[name] inherits from a prototype.prototype[name ]\n inheritObject: function(name, prototype, base) {\n // require an obj ect\n var source = prototype[name] || {};\n // chain inherited propert ies onto a new object\n prototype[name] = this.chainObject(source, base[nam e]);\n },\n\n // register 'prototype' to custom element 'name', store cons tructor \n registerPrototype: function(name, extendee) { \n var info = { \n prototype: this.prototype\n }\n // native element must be sp ecified in extends\n var typeExtension = this.findTypeExtension(extendee);\ n if (typeExtension) {\n info.extends = typeExtension;\n }\n // register the prototype with HTMLElement for name lookup\n HTMLElement .register(name, this.prototype);\n // register the custom type\n this. ctor = document.registerElement(name, info);\n },\n\n findTypeExtension: f unction(name) {\n if (name && name.indexOf('-') < 0) {\n return name ;\n } else {\n var p = this.findBasePrototype(name);\n if (p. element) {\n return this.findTypeExtension(p.element.extends);\n }\n }\n }\n\n };\n\n // memoize base prototypes\n var memoizedBases = {};\n\n // implementation of 'chainObject' depends on support for __proto__\n if (Object.__proto__) {\n prototype.chainObject = function(object, inherite d) {\n if (object && inherited && object !== inherited) {\n object._ _proto__ = inherited;\n }\n return object;\n }\n } else {\n pro totype.chainObject = function(object, inherited) {\n if (object && inherite d && object !== inherited) {\n var chained = Object.create(inherited);\n object = extend(chained, object);\n }\n return object;\n }\n }\n\n // On platforms that do not support __proto__ (versions of IE), the pro totype\n // chain of a custom element is simulated via installation of __proto_ _.\n // Although custom elements manages this, we install it here so it's\n // available during desugaring.\n function ensurePrototypeTraversal(prototype) {\ n if (!Object.__proto__) {\n var ancestor = Object.getPrototypeOf(protot ype);\n prototype.__proto__ = ancestor;\n if (isBase(ancestor)) {\n ancestor.__proto__ = Object.getPrototypeOf(ancestor);\n }\n }\n }\ n\n // exports\n\n api.declaration.prototype = prototype;\n\n})(Polymer);\n"," /*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICE NSE file.\n */\n(function(scope) {\n\n var queue = {\n // tell the queue to wait for an element to be ready\n wait: function(element, check, go) {\n if (this.indexOf(element) === -1) {\n this.add(element);\n elemen t.__check = check;\n element.__go = go;\n }\n return (this.inde xOf(element) !== 0);\n },\n add: function(element) {\n //console.log( 'queueing', element.name);\n queueForElement(element).push(element);\n } ,\n indexOf: function(element) {\n var i = queueForElement(element).inde xOf(element);\n if (i >= 0 && document.contains(element)) {\n i += ( HTMLImports.useNative || HTMLImports.ready) ? \n importQueue.length : 1 e9;\n }\n return i; \n },\n // tell the queue an element is rea dy to be registered\n go: function(element) {\n var readied = this.remov e(element);\n if (readied) {\n readied.__go.call(readied);\n readied.__check = readied.__go = null;\n this.check();\n }\n },\n remove: function(element) {\n var i = this.indexOf(element);\n if (i !== 0) {\n //console.warn('queue order wrong', i);\n return;\n }\n return queueForElement(element).shift();\n },\n check: funct ion() {\n // next\n var element = this.nextElement();\n if (eleme nt) {\n element.__check.call(element);\n }\n if (this.canReady( )) {\n this.ready();\n return true;\n }\n },\n nextElem ent: function() {\n return nextQueued();\n },\n canReady: function() {\n return !this.waitToReady && this.isEmpty();\n },\n isEmpty: funct ion() {\n return !importQueue.length && !mainQueue.length;\n },\n rea dy: function() {\n // TODO(sorvell): As an optimization, turn off CE polyfi ll upgrading\n // while registering. This way we avoid having to upgrade ea ch document\n // piecemeal per registration and can instead register all el ements\n // and upgrade once in a batch. Without this optimization, upgrade time\n // degrades significantly when SD polyfill is used. This is mainly because\n // querying the document tree for elements is slow under the SD p olyfill.\n if (CustomElements.ready === false) {\n CustomElements.up gradeDocumentTree(document);\n CustomElements.ready = true;\n }\n if (readyCallbacks) {\n var fn;\n while (readyCallbacks.length) {\n fn = readyCallbacks.shift();\n fn();\n }\n }\ n },\n addReadyCallback: function(callback) {\n if (callback) {\n readyCallbacks.push(callback);\n }\n },\n waitToReady: true\n }; \n\n var importQueue = [];\n var mainQueue = [];\n var readyCallbacks = [];\n \n function queueForElement(element) {\n return document.contains(element) ? mainQueue : importQueue;\n }\n\n function nextQueued() {\n return importQu eue.length ? importQueue[0] : mainQueue[0];\n }\n\n var polymerReadied = false ; \n\n document.addEventListener('WebComponentsReady', function() {\n Custom Elements.ready = false;\n });\n \n function whenPolymerReady(callback) {\n queue.waitToReady = true;\n CustomElements.ready = false;\n HTMLImports.w henImportsReady(function() {\n queue.addReadyCallback(callback);\n que ue.waitToReady = false;\n queue.check();\n });\n }\n\n // exports\n s cope.queue = queue;\n scope.whenPolymerReady = whenPolymerReady;\n})(Polymer);\ n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of t his source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n\n var whenPolymerReady = scope.whenPol ymerReady;\n\n function importElements(elementOrFragment, callback) {\n if ( elementOrFragment) {\n document.head.appendChild(elementOrFragment);\n whenPolymerReady(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function importUrls(urls, callback) {\n if (urls && urls.length) {\n var frag = document.createDocumentFragment();\n for (var i=0, l=urls.length, url, link; (i<l) && (url=urls[i]); i++) {\n link = docu ment.createElement('link');\n link.rel = 'import';\n link.href = url;\n frag.appendChild(link);\n }\n importElements(fr ag, callback);\n } else if (callback) {\n callback();\n }\n }\n\n / / exports\n scope.import = importUrls;\n scope.importElements = importElements ;\n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights rese rved.\n * Use of this source code is governed by a BSD-style\n * license that ca n be found in the LICENSE file.\n */\n(function(scope) {\n\n // imports\n\n va r extend = scope.extend;\n var api = scope.api;\n var queue = scope.queue;\n var whenPolymerReady = scope.whenPolymerReady;\n var getRegisteredPrototype = s cope.getRegisteredPrototype;\n var waitingForPrototype = scope.waitingForProtot ype;\n\n // declarative implementation: <polymer-element>\n\n var prototype = extend(Object.create(HTMLElement.prototype), {\n\n createdCallback: function( ) {\n if (this.getAttribute('name')) {\n this.init();\n }\n },\n\n init: function() {\n // fetch declared values\n this.name = this.getAttribute('name');\n this.extends = this.getAttribute('extends');\n // initiate any async resource fetches\n this.loadResources();\n // register when all constraints are met\n this.registerWhenReady();\n },\n\n registerWhenReady: function() {\n if (this.registered\n || t his.waitingForPrototype(this.name)\n || this.waitingForQueue()\n || this.waitingForResources()) {\n return;\n }\n // TODO(sorvell ): ends up calling '_register' by virtue\n // of `waitingForQueue` (see bel ow)\n queue.go(this);\n },\n\n // TODO(sorvell): refactor, this metho d is private-ish, but it's being\n // called by the queue object.\n _regis ter: function() {\n //console.log('registering', this.name);\n //conso le.group('registering', this.name);\n // warn if extending from a custom el ement not registered via Polymer\n if (isCustomTag(this.extends) && !isRegi stered(this.extends)) {\n console.warn('%s is attempting to extend %s, an unregistered element ' +\n 'or one that was not registered with Poly mer.', this.name,\n this.extends);\n }\n this.register(this .name, this.extends);\n this.registered = true;\n //console.groupEnd() ;\n },\n\n waitingForPrototype: function(name) {\n if (!getRegistered Prototype(name)) {\n // then wait for a prototype\n waitingForProt otype(name, this);\n // emulate script if user is not supplying one\n this.handleNoScript(name);\n // prototype not ready yet\n retu rn true;\n }\n },\n\n handleNoScript: function(name) {\n // if e xplicitly marked as 'noscript'\n if (this.hasAttribute('noscript') && !this .noscript) {\n this.noscript = true;\n // TODO(sorvell): CustomEle ments polyfill awareness:\n // noscript elements should upgrade in logica l order\n // script injection ensures this under native custom elements;\ n // under imports + ce polyfills, scripts run before upgrades.\n // dependencies should be ready at upgrade time so register\n // prototyp e at this time.\n if (window.CustomElements && !CustomElements.useNative) {\n Polymer(name);\n } else {\n var script = document. createElement('script');\n script.textContent = 'Polymer(\\'' + name + '\\');';\n this.appendChild(script);\n }\n }\n },\n\n waitingForResources: function() {\n return this._needsResources;\n },\n \n // NOTE: Elements must be queued in proper order for inheritance/compositi on\n // dependency resolution. Previously this was enforced for inheritance,\ n // and by rule for composition. It's now entirely by rule.\n waitingForQ ueue: function() {\n return queue.wait(this, this.registerWhenReady, this._ register);\n },\n\n loadResources: function() {\n this._needsResource s = true;\n this.loadStyles(function() {\n this._needsResources = fa lse;\n this.registerWhenReady();\n }.bind(this));\n }\n\n });\n\ n // semi-pluggable APIs \n\n // TODO(sjmiles): should be fully pluggable (aka decoupled, currently\n // the various plugins are allowed to depend on each ot her directly)\n api.publish(api.declaration, prototype);\n\n // utility and bo okkeeping\n\n function isRegistered(name) {\n return Boolean(HTMLElement.get PrototypeForTag(name));\n }\n\n function isCustomTag(name) {\n return (name && name.indexOf('-') >= 0);\n }\n\n // exports\n\n scope.getRegisteredProtot ype = getRegisteredPrototype;\n \n // boot tasks\n\n whenPolymerReady(functio n() {\n document.body.removeAttribute('unresolved');\n document.dispatchEv ent(\n new CustomEvent('polymer-ready', {bubbles: true})\n );\n });\n\n // register polymer-element with document\n\n document.registerElement('polym er-element', {prototype: prototype});\n\n})(Polymer);\n"]} 1 {"version":3,"file":"polymer.js","sources":["src/polymer.js","src/boot.js","src/ lib/lang.js","src/lib/job.js","src/lib/dom.js","src/lib/super.js","src/lib/deser ialize.js","src/api.js","src/instance/utils.js","src/instance/events.js","src/in stance/attributes.js","src/instance/properties.js","src/instance/mdv.js","src/in stance/base.js","src/instance/styles.js","src/declaration/polymer.js","src/decla ration/path.js","src/declaration/styles.js","src/declaration/events.js","src/dec laration/properties.js","src/declaration/attributes.js","src/declaration/prototy pe.js","src/declaration/queue.js","src/declaration/import.js","src/declaration/p olymer-element.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,W 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","sourcesContent":["/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sourc e code is governed by a BSD-style\n * license that can be found in the LICENSE f ile.\n */\nPolymer = {};\n","/*\n * Copyright 2013 The Polymer Authors. All righ ts reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n// TODO(sorvell): this ensures Po lymer is an object and not a function\n// Platform is currently defining it as a function to allow for async loading\n// of polymer; once we refine the loading process this likely goes away.\nif (typeof window.Polymer === 'function') {\n P olymer = {};\n}\n\n","/*\n * Copyright 2013 The Polymer Authors. All rights rese rved.\n * Use of this source code is governed by a BSD-style\n * license that ca n be found in the LICENSE file.\n */\n(function(scope) {\n\n // copy own proper ties from 'api' to 'prototype, with name hinting for 'super'\n function extend( prototype, api) {\n if (prototype && api) {\n // use only own properties of 'api'\n Object.getOwnPropertyNames(api).forEach(function(n) {\n // acquire property descriptor\n var pd = Object.getOwnPropertyDescriptor (api, n);\n if (pd) {\n // clone property via descriptor\n Object.defineProperty(prototype, n, pd);\n // cache name-of-method for 'super' engine\n if (typeof pd.value == 'function') {\n // hint the 'super' engine\n pd.value.nom = n;\n }\n }\n });\n }\n return prototype;\n }\n \n // exports\n\n scope.ext end = extend;\n\n})(Polymer);\n","/* \n * Copyright 2013 The Polymer Authors. Al l rights reserved.\n * Use of this source code is governed by a BSD-style\n * li cense that can be found in the LICENSE file.\n */\n\n(function(scope) {\n \n / / usage\n \n // invoke cb.call(this) in 100ms, unless the job is re-registered ,\n // which resets the timer\n // \n // this.myJob = this.job(this.myJob, cb , 100)\n //\n // returns a job handle which can be used to re-register a job\n \n var Job = function(inContext) {\n this.context = inContext;\n this.bou ndComplete = this.complete.bind(this)\n };\n Job.prototype = {\n go: functi on(callback, wait) {\n this.callback = callback;\n var h;\n if (! wait) {\n h = requestAnimationFrame(this.boundComplete);\n this.ha ndle = function() {\n cancelAnimationFrame(h);\n }\n } else {\n h = setTimeout(this.boundComplete, wait);\n this.handle = fun ction() {\n clearTimeout(h);\n }\n }\n },\n stop: fun ction() {\n if (this.handle) {\n this.handle();\n this.handle = null;\n }\n },\n complete: function() {\n if (this.handle) {\ n this.stop();\n this.callback.call(this.context);\n }\n } \n };\n \n function job(job, callback, wait) {\n if (job) {\n job.sto p();\n } else {\n job = new Job(this);\n }\n job.go(callback, wait );\n return job;\n }\n \n // exports \n\n scope.job = job;\n \n})(Polyme r);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n\n var registry = {};\n\n HTMLElem ent.register = function(tag, prototype) {\n registry[tag] = prototype;\n }\n \n // get prototype mapped to node <tag>\n HTMLElement.getPrototypeForTag = fu nction(tag) {\n var prototype = !tag ? HTMLElement.prototype : registry[tag]; \n // TODO(sjmiles): creating <tag> is likely to have wasteful side-effects\n return prototype || Object.getPrototypeOf(document.createElement(tag));\n } ;\n\n // we have to flag propagation stoppage for the event dispatcher\n var o riginalStopPropagation = Event.prototype.stopPropagation;\n Event.prototype.sto pPropagation = function() {\n this.cancelBubble = true;\n originalStopProp agation.apply(this, arguments);\n };\n \n // TODO(sorvell): remove when we're sure imports does not need\n // to load stylesheets\n /*\n HTMLImports.impor ter.preloadSelectors += \n ', polymer-element link[rel=stylesheet]';\n */\ n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved .\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n (function(scope) {\n // super\n\n // `a rrayOfArgs` is an optional array of args like one might pass\n // to `Functio n.apply`\n\n // TODO(sjmiles):\n // $super must be installed on an inst ance or prototype chain\n // as `super`, and invoked via `this`, e.g.\n // `this.super();`\n\n // will not work if function objects are not unique, for example,\n // when using mixins.\n // The memoization st rategy assumes each function exists on only one \n // prototype chain i.e. we use the function object for memoizing)\n // perhaps we can bookkeep on the prototype itself instead\n function $super(arrayOfArgs) {\n // sinc e we are thunking a method call, performance is important here: \n // memoi ze all lookups, once memoized the fast path calls no other \n // functions\ n //\n // find the caller (cannot be `strict` because of 'caller')\n var caller = $super.caller;\n // memoized 'name of method' \n var nom = caller.nom;\n // memoized next implementation prototype\n var _s uper = caller._super;\n if (!_super) {\n if (!nom) {\n nom = caller.nom = nameInThis.call(this, caller);\n }\n if (!nom) {\n console.warn('called super() on a method not installed declaratively (h as no .nom property)');\n }\n // super prototype is either cached or we have to find it\n // by searching __proto__ (at the 'top')\n _super = memoizeSuper(caller, nom, getPrototypeOf(this));\n }\n if (! _super) {\n // if _super is falsey, there is no super implementation\n //console.warn('called $super(' + nom + ') where there is no super implemen tation');\n } else {\n // our super function\n var fn = _supe r[nom];\n // memoize information so 'fn' can call 'super'\n if (!f n._super) {\n memoizeSuper(fn, nom, _super);\n }\n // inv oke the inherited method\n // if 'fn' is not function valued, this will t hrow\n return fn.apply(this, arrayOfArgs || []);\n }\n }\n\n f unction nextSuper(proto, name, caller) {\n // look for an inherited prototy pe that implements name\n while (proto) {\n if ((proto[name] !== cal ler) && proto[name]) {\n return proto;\n }\n proto = getP rototypeOf(proto);\n }\n }\n\n function memoizeSuper(method, name, pr oto) {\n // find and cache next prototype containing `name`\n // we ne ed the prototype so we can do another lookup\n // from here\n method._ super = nextSuper(proto, name, method);\n if (method._super) {\n // _super is a prototype, the actual method is _super[name]\n // tag super m ethod with it's name for further lookups\n method._super[name].nom = name ;\n }\n return method._super;\n }\n\n function nameInThis(value) {\n var p = this.__proto__;\n while (p && p !== HTMLElement.prototype ) {\n // TODO(sjmiles): getOwnPropertyNames is absurdly expensive\n var n$ = Object.getOwnPropertyNames(p);\n for (var i=0, l=n$.length, n; i<l && (n=n$[i]); i++) {\n var d = Object.getOwnPropertyDescriptor(p, n);\n if (typeof d.value === 'function' && d.value === value) {\n return n;\n }\n }\n p = p.__proto__;\n }\n }\n\n // NOTE: In some platforms (IE10) the prototype chain is faked via \n // __proto__. Therefore, always get prototype via __proto__ instead of\n // the more standard Object.getPrototypeOf.\n function getPrototypeOf(prototype ) {\n return prototype.__proto__;\n }\n\n // utility function to prec ompute name tags for functions\n // in a (unchained) prototype\n function hintSuper(prototype) {\n // tag functions with their prototype name to opti mize\n // super call invocations\n for (var n in prototype) {\n var pd = Object.getOwnPropertyDescriptor(prototype, n);\n if (pd && type of pd.value === 'function') {\n pd.value.nom = n;\n }\n }\n }\n\n // exports\n\n scope.super = $super;\n\n})(Polymer);\n","/* \n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE fi le.\n */\n\n(function(scope) {\n\n var typeHandlers = {\n string: function(v alue) {\n return value;\n },\n date: function(value) {\n return new Date(Date.parse(value) || Date.now());\n },\n boolean: function(value) {\n if (value === '') {\n return true;\n }\n return value === 'false' ? false : !!value;\n },\n number: function(value) {\n va r n = parseFloat(value);\n // hex values like \"0xFFFF\" parseFloat as 0\n if (n === 0) {\n n = parseInt(value);\n }\n return isNaN(n ) ? value : n;\n // this code disabled because encoded values (like \"0xFFF F\")\n // do not round trip to their original format\n //return (Strin g(floatVal) === value) ? floatVal : value;\n },\n object: function(value, currentValue) {\n if (currentValue === null) {\n return value;\n }\n try {\n // If the string is an object, we can parse is with th e JSON library.\n // include convenience replace for single-quotes. If th e author omits\n // quotes altogether, parse will fail.\n return J SON.parse(value.replace(/'/g, '\"'));\n } catch(e) {\n // The object isn't valid JSON, return the raw value\n return value;\n }\n },\ n // avoid deserialization of functions\n 'function': function(value, curr entValue) {\n return currentValue;\n }\n };\n\n function deserializeVa lue(value, currentValue) {\n // attempt to infer type from default value\n var inferredType = typeof currentValue;\n // invent 'date' type value for Da te\n if (currentValue instanceof Date) {\n inferredType = 'date';\n } \n // delegate deserialization via type string\n return typeHandlers[infer redType](value, currentValue);\n }\n\n // exports\n\n scope.deserializeValue = deserializeValue;\n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Author s. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n\n // imports\n\n var extend = scope.extend;\n\n // module\n\n var api = {};\n\n api.declaration = {};\n api.instance = {};\n\n api.publish = function(apis, prototype) {\n for (var n in apis) {\n extend(prototype, apis[n]);\n }\n }\n\n // exports\n\n scope.api = api;\n\n})(Polymer);\n","/*\n * Copyrigh t 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\ n(function(scope) {\n\n var utils = {\n /**\n * Invokes a function asyn chronously. The context of the callback\n * function is bound to 'this' aut omatically.\n * @method async\n * @param {Function|String} method\n * @param {any|Array} args\n * @param {number} timeout\n */\n asy nc: function(method, args, timeout) {\n // when polyfilling Object.observe, ensure changes \n // propagate before executing the async method\n Pl atform.flush();\n // second argument to `apply` must be an array\n arg s = (args && args.length) ? args : [args];\n // function to invoke\n v ar fn = function() {\n (this[method] || method).apply(this, args);\n }.bind(this);\n // execute `fn` sooner or later\n var handle = timeou t ? setTimeout(fn, timeout) :\n requestAnimationFrame(fn);\n // NO TE: switch on inverting handle to determine which time is used.\n return ti meout ? handle : 1 / handle;\n },\n cancelAsync: function(handle) {\n if (handle < 1) {\n cancelAnimationFrame(Math.round(1 / handle));\n } else {\n clearTimeout(handle);\n }\n },\n /**\n * Fire an event.\n * @method fire\n * @returns {Object} event\n * @para m {string} type An event name.\n * @param {any} detail\n * @param {Nod e} onNode Target node.\n */\n fire: function(type, detail, onNode, bubbl es, cancelable) {\n var node = onNode || this;\n var detail = detail | | {};\n var event = new CustomEvent(type, {\n bubbles: (bubbles !== undefined ? bubbles : true), \n cancelable: (cancelable !== undefined ? c ancelable : true), \n detail: detail\n });\n node.dispatchEvent (event);\n return event;\n },\n /**\n * Fire an event asynchrono usly.\n * @method asyncFire\n * @param {string} type An event name.\n * @param detail\n * @param {Node} toNode Target node.\n */\n a syncFire: function(/*inType, inDetail*/) {\n this.async(\"fire\", arguments );\n },\n /**\n * Remove class from old, add class to anew, if they e xist\n * @param classFollows\n * @param anew A node.\n * @param o ld A node\n * @param className\n */\n classFollows: function(anew, old, className) {\n if (old) {\n old.classList.remove(className);\n }\n if (anew) {\n anew.classList.add(className);\n }\n }\n };\n\n // no-operation function for handy stubs\n var nop = function() {} ;\n\n // null-object for handy stubs\n var nob = {};\n\n // deprecated\n\n u tils.asyncMethod = utils.async;\n\n // exports\n\n scope.api.instance.utils = utils;\n scope.nop = nop;\n scope.nob = nob;\n\n})(Polymer);\n","/*\n * Copyri ght 2013 The Polymer Authors. All rights reserved.\n * Use of this source code i s governed by a BSD-style\n * license that can be found in the LICENSE file.\n * /\n\n(function(scope) {\n\n // imports\n\n var log = window.logFlags || {};\n var EVENT_PREFIX = 'on-';\n\n // instance events api\n var events = {\n // read-only\n EVENT_PREFIX: EVENT_PREFIX,\n // event listeners on host\n addHostListeners: function() {\n var events = this.eventDelegates;\n log.events && (Object.keys(events).length > 0) && console.log('[%s] addHostListe ners:', this.localName, events);\n // NOTE: host events look like bindings but really are not;\n // (1) we don't want the attribute to be set and (2) we want to support\n // multiple event listeners ('host' and 'instance') an d Node.bind\n // by default supports 1 thing being bound.\n // We do, however, leverage the event hookup code in PolymerExpressions\n // so that we have a common code path for handling declarative events.\n var self = th is, bindable, eventName;\n for (var n in events) {\n eventName = EVE NT_PREFIX + n;\n bindable = PolymerExpressions.prepareEventBinding(\n Path.get(events[n]),\n eventName, \n {\n reso lveEventHandler: function(model, path, node) {\n var fn = path.getV alueFrom(self);\n if (fn) {\n return fn.bind(self);\ n }\n }\n }\n );\n bindable(this, this, false);\n }\n },\n // call 'method' or function method on 'obj ' with 'args', if the method exists\n dispatchMethod: function(obj, method, a rgs) {\n if (obj) {\n log.events && console.group('[%s] dispatch [%s ]', obj.localName, method);\n var fn = typeof method === 'function' ? met hod : obj[method];\n if (fn) {\n fn[args ? 'apply' : 'call'](obj , args);\n }\n log.events && console.groupEnd();\n Platform .flush();\n }\n }\n };\n\n // exports\n\n scope.api.instance.events = events;\n\n})(Polymer);\n","/*\r\n * Copyright 2013 The Polymer Authors. All ri ghts reserved.\r\n * Use of this source code is governed by a BSD-style\r\n * li cense that can be found in the LICENSE file.\r\n */\r\n(function(scope) {\r\n\r\ n // instance api for attributes\r\n\r\n var attributes = {\r\n copyInstanc eAttributes: function () {\r\n var a$ = this._instanceAttributes;\r\n for (var k in a$) {\r\n if (!this.hasAttribute(k)) {\r\n this.se tAttribute(k, a$[k]);\r\n }\r\n }\r\n },\r\n // for each attri bute on this, deserialize value to property as needed\r\n takeAttributes: fun ction() {\r\n // if we have no publish lookup table, we have no attributes to take\r\n // TODO(sjmiles): ad hoc\r\n if (this._publishLC) {\r\n for (var i=0, a$=this.attributes, l=a$.length, a; (a=a$[i]) && i<l; i++) {\ r\n this.attributeToProperty(a.name, a.value);\r\n }\r\n }\ r\n },\r\n // if attribute 'name' is mapped to a property, deserialize\r\n // 'value' into that property\r\n attributeToProperty: function(name, val ue) {\r\n // try to match this attribute to a property (attributes are\r\n // all lower-case, so this is case-insensitive search)\r\n var name = this.propertyForAttribute(name);\r\n if (name) {\r\n // filter out ' mustached' values, these are to be\r\n // replaced with bound-data and ar e not yet values\r\n // themselves\r\n if (value && value.search(s cope.bindPattern) >= 0) {\r\n return;\r\n }\r\n // get or iginal value\r\n var currentValue = this[name];\r\n // deserialize Boolean or Number values from attribute\r\n var value = this.deserialize Value(value, currentValue);\r\n // only act if the value has changed\r\n if (value !== currentValue) {\r\n // install new value (has side -effects)\r\n this[name] = value;\r\n }\r\n }\r\n },\r\n // return the published property matching name, or undefined\r\n property ForAttribute: function(name) {\r\n var match = this._publishLC && this._pub lishLC[name];\r\n //console.log('propertyForAttribute:', name, 'matches', m atch);\r\n return match;\r\n },\r\n // convert representation of 'str ingValue' based on type of 'currentValue'\r\n deserializeValue: function(stri ngValue, currentValue) {\r\n return scope.deserializeValue(stringValue, cur rentValue);\r\n },\r\n serializeValue: function(value, inferredType) {\r\n if (inferredType === 'boolean') {\r\n return value ? '' : undefined ;\r\n } else if (inferredType !== 'object' && inferredType !== 'function'\r \n && value !== undefined) {\r\n return value;\r\n }\r\n },\r\n reflectPropertyToAttribute: function(name) {\r\n var inferredTyp e = typeof this[name];\r\n // try to intelligently serialize property value \r\n var serializedValue = this.serializeValue(this[name], inferredType);\r \n // boolean properties must reflect as boolean attributes\r\n if (se rializedValue !== undefined) {\r\n this.setAttribute(name, serializedValu e);\r\n // TODO(sorvell): we should remove attr for all properties\r\n // that have undefined serialization; however, we will need to\r\n / / refine the attr reflection system to achieve this; pica, for example,\r\n // relies on having inferredType object properties not removed as\r\n // attrs.\r\n } else if (inferredType === 'boolean') {\r\n this.remo veAttribute(name);\r\n }\r\n }\r\n };\r\n\r\n // exports\r\n\r\n scop e.api.instance.attributes = attributes;\r\n\r\n})(Polymer);\r\n","/*\n * Copyrig ht 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */ \n(function(scope) {\n\n // imports\n\n var log = window.logFlags || {};\n\n // magic words\n\n var OBSERVE_SUFFIX = 'Changed';\n\n // element api\n\n var empty = [];\n\n var properties = {\n observeProperties: function() {\n var n$ = this._observeNames, pn$ = this._publishNames;\n if ((n$ && n$.len gth) || (pn$ && pn$.length)) {\n var self = this;\n var o = this._ propertyObserver = new CompoundObserver();\n for (var i=0, l=n$.length, n ; (i<l) && (n=n$[i]); i++) {\n o.addPath(this, n);\n // observ er array properties\n var pd = Object.getOwnPropertyDescriptor(this.__p roto__, n);\n if (pd && pd.value) {\n this.observeArrayValue (n, pd.value, null);\n }\n }\n for (var i=0, l=pn$.length , n; (i<l) && (n=pn$[i]); i++) {\n if (!this.observe || (this.observe[n ] === undefined)) {\n o.addPath(this, n);\n }\n }\n o.open(this.notifyPropertyChanges, this);\n }\n },\n notifyProp ertyChanges: function(newValues, oldValues, paths) {\n var name, method, ca lled = {};\n for (var i in oldValues) {\n // note: paths is of form [object, path, object, path]\n name = paths[2 * i + 1];\n if (this .publish[name] !== undefined) {\n this.reflectPropertyToAttribute(name) ;\n }\n method = this.observe[name];\n if (method) {\n this.observeArrayValue(name, newValues[i], oldValues[i]);\n if (!c alled[method]) {\n called[method] = true;\n // observes th e value if it is an array\n this.invokeMethod(method, [oldValues[i], newValues[i], arguments]);\n }\n }\n }\n },\n observe ArrayValue: function(name, value, old) {\n // we only care if there are reg istered side-effects\n var callbackName = this.observe[name];\n if (ca llbackName) {\n // if we are observing the previous value, stop\n if (Array.isArray(old)) {\n log.observe && console.log('[%s] observeArr ayValue: unregister observer [%s]', this.localName, name);\n this.unreg isterObserver(name + '__array');\n }\n // if the new value is an a rray, being observing it\n if (Array.isArray(value)) {\n log.obs erve && console.log('[%s] observeArrayValue: register observer [%s]', this.local Name, name, value);\n var observer = new ArrayObserver(value);\n observer.open(function(value, old) {\n this.invokeMethod(callbackN ame, [old]);\n }, this);\n this.registerObserver(name + '__arr ay', observer);\n }\n }\n },\n bindProperty: function(property , observable) {\n // apply Polymer two-way reference binding\n return bindProperties(this, property, observable);\n },\n unbindAllProperties: fu nction() {\n if (this._propertyObserver) {\n this._propertyObserver. close();\n }\n this.unregisterObservers();\n },\n unbindProperty : function(name) {\n return this.unregisterObserver(name);\n },\n inv okeMethod: function(method, args) {\n var fn = this[method] || method;\n if (typeof fn === 'function') {\n fn.apply(this, args);\n }\n },\n // bookkeeping observers for memory management\n registerObserver: fu nction(name, observer) {\n var o$ = this._observers || (this._observers = { });\n o$[name] = observer;\n },\n unregisterObserver: function(name) {\n var o$ = this._observers;\n if (o$ && o$[name]) {\n o$[name ].close();\n o$[name] = null;\n return true;\n }\n },\n unregisterObservers: function() {\n if (this._observers) {\n var ke ys=Object.keys(this._observers);\n for (var i=0, l=keys.length, k, o; (i < l) && (k=keys[i]); i++) {\n o = this._observers[k];\n o.clos e();\n }\n this._observers = {};\n }\n }\n };\n\n // pro perty binding\n // bind a property in A to a path in B by converting A[property ] to a\n // getter/setter pair that accesses B[...path...]\n function bindProp erties(inA, inProperty, observable) {\n log.bind && console.log(LOG_BIND_PROP S, inB.localName || 'object', inPath, inA.localName, inProperty);\n // captur e A's value if B's value is null or undefined,\n // otherwise use B's value\n // TODO(sorvell): need to review, can do with ObserverTransform\n var v = observable.discardChanges();\n if (v === null || v === undefined) {\n o bservable.setValue(inA[inProperty]);\n }\n return Observer.defineComputedP roperty(inA, inProperty, observable);\n }\n\n // logging\n var LOG_OBSERVE = '[%s] watching [%s]';\n var LOG_OBSERVED = '[%s#%s] watch: [%s] now [%s] was [% s]';\n var LOG_CHANGED = '[%s#%s] propertyChanged: [%s] now [%s] was [%s]';\n var LOG_BIND_PROPS = \"[%s]: bindProperties: [%s] to [%s].[%s]\";\n\n // export s\n\n scope.api.instance.properties = properties;\n\n})(Polymer);\n","/*\n * Co pyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source co de is governed by a BSD-style\n * license that can be found in the LICENSE file. \n */\n(function(scope) {\n\n // imports\n\n var log = window.logFlags || 0;\n var events = scope.api.instance.events;\n\n var syntax = new PolymerExpressio ns();\n syntax.resolveEventHandler = function(model, path, node) {\n var ctl r = findEventController(node);\n if (ctlr) {\n var fn = path.getValueFro m(ctlr);\n if (fn) {\n return fn.bind(ctlr);\n }\n }\n }\n\ n // An event controller is the host element for the shadowRoot in which \n // the node exists, or the first ancestor with a 'lightDomController'\n // proper ty.\n function findEventController(node) {\n while (node.parentNode) {\n if (node.lightDomController) {\n return node;\n }\n node = no de.parentNode;\n }\n return node.host;\n };\n\n // element api supportin g mdv\n\n var mdv = {\n syntax: syntax,\n instanceTemplate: function(temp late) {\n return template.createInstance(this, this.syntax);\n },\n b ind: function(name, observable, oneTime) {\n // note: binding is a prepare signal. This allows us to be sure that any\n // property changes that occur as a result of binding will be observed.\n if (!this._elementPrepared) {\n this.prepareElement();\n }\n var property = this.propertyForAt tribute(name);\n if (!property) {\n // TODO(sjmiles): this mixin met hod must use the special form\n // of `super` installed by `mixinMethod` in declaration/prototype.js\n return this.mixinSuper(arguments);\n } else {\n // clean out the closets\n this.unbind(name);\n / / use n-way Polymer binding\n var observer = this.bindProperty(property, observable);\n // stick path on observer so it's available via this.bindi ngs\n observer.path = observable.path_;\n // reflect bound propert y to attribute when binding\n // to ensure binding is not left on attribu te if property\n // does not update due to not changing.\n this.re flectPropertyToAttribute(property);\n return this.bindings[name] = observ er;\n }\n },\n asyncUnbindAll: function() {\n if (!this._unbound ) {\n log.unbind && console.log('[%s] asyncUnbindAll', this.localName);\n this._unbindAllJob = this.job(this._unbindAllJob, this.unbindAll, 0);\n }\n },\n unbindAll: function() {\n if (!this._unbound) {\n this.unbindAllProperties();\n this.super();\n // unbind shadowRo ot\n var root = this.shadowRoot;\n while (root) {\n unbin dNodeTree(root);\n root = root.olderShadowRoot;\n }\n thi s._unbound = true;\n }\n },\n cancelUnbindAll: function(preventCascad e) {\n if (this._unbound) {\n log.unbind && console.warn('[%s] alrea dy unbound, cannot cancel unbindAll', this.localName);\n return;\n } \n log.unbind && console.log('[%s] cancelUnbindAll', this.localName);\n if (this._unbindAllJob) {\n this._unbindAllJob = this._unbindAllJob.sto p();\n }\n // cancel unbinding our shadow tree iff we're not in the pr ocess of\n // cascading our tree (as we do, for example, when the element i s inserted).\n if (!preventCascade) {\n forNodeTree(this.shadowRoot, function(n) {\n if (n.cancelUnbindAll) {\n n.cancelUnbindAl l();\n }\n });\n }\n }\n };\n\n function unbindNodeTre e(node) {\n forNodeTree(node, _nodeUnbindAll);\n }\n\n function _nodeUnbind All(node) {\n node.unbindAll();\n }\n\n function forNodeTree(node, callback ) {\n if (node) {\n callback(node);\n for (var child = node.firstCh ild; child; child = child.nextSibling) {\n forNodeTree(child, callback);\ n }\n }\n }\n\n var mustachePattern = /\\{\\{([^{}]*)}}/;\n\n // expo rts\n\n scope.bindPattern = mustachePattern;\n scope.api.instance.mdv = mdv;\n \n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserve d.\n * Use of this source code is governed by a BSD-style\n * license that can b e found in the LICENSE file.\n */\n(function(scope) {\n var preparingElements = 0;\n\n var base = {\n PolymerBase: true,\n job: Polymer.job,\n super: Polymer.super,\n // user entry point for element has had its createdCallback called\n created: function() {\n },\n // user entry point for element has shadowRoot and is ready for\n // api interaction\n ready: function() { \n },\n createdCallback: function() {\n this.created();\n if (th is.ownerDocument.defaultView || this.alwaysPrepare ||\n preparingElemen ts > 0) {\n this.prepareElement();\n }\n },\n // system entry point, do not override\n prepareElement: function() {\n this._elementPre pared = true;\n // install shadowRoots storage\n this.shadowRoots = {} ;\n // install property observers\n this.observeProperties();\n / / install boilerplate attributes\n this.copyInstanceAttributes();\n // process input attributes\n this.takeAttributes();\n // add event list eners\n this.addHostListeners();\n // guarantees that while preparing, any\n // sub-elements are also prepared\n preparingElements++;\n // process declarative resources\n this.parseDeclarations(this.__proto__); \n // decrement semaphore\n preparingElements--;\n // TODO(sorvel l): CE polyfill uses unresolved attribute to simulate\n // :unresolved; rem ove this attribute to be compatible with native\n // CE.\n this.remove Attribute('unresolved');\n // user entry point\n this.ready();\n }, \n attachedCallback: function() {\n if (!this._elementPrepared) {\n this.prepareElement();\n }\n this.cancelUnbindAll(true);\n // invoke user action\n if (this.attached) {\n this.attached();\n }\n // TODO(sorvell): bc\n if (this.enteredView) {\n this.enter edView();\n }\n // NOTE: domReady can be used to access elements in do m (descendants, \n // ancestors, siblings) such that the developer is enure d to upgrade\n // ordering. If the element definitions have loaded, domRead y\n // can be used to access upgraded elements.\n if (!this.hasBeenAtt ached) {\n this.hasBeenAttached = true;\n if (this.domReady) {\n this.async('domReady');\n }\n }\n },\n detachedCallbac k: function() {\n if (!this.preventDispose) {\n this.asyncUnbindAll( );\n }\n // invoke user action\n if (this.detached) {\n th is.detached();\n }\n // TODO(sorvell): bc\n if (this.leftView) {\ n this.leftView();\n }\n },\n // TODO(sorvell): bc\n entere dViewCallback: function() {\n this.attachedCallback();\n },\n // TODO (sorvell): bc\n leftViewCallback: function() {\n this.detachedCallback() ;\n },\n // TODO(sorvell): bc\n enteredDocumentCallback: function() {\n this.attachedCallback();\n },\n // TODO(sorvell): bc\n leftDocume ntCallback: function() {\n this.detachedCallback();\n },\n // recursi ve ancestral <element> initialization, oldest first\n parseDeclarations: func tion(p) {\n if (p && p.element) {\n this.parseDeclarations(p.__proto __);\n p.parseDeclaration.call(this, p.element);\n }\n },\n // parse input <element> as needed, override for custom behavior\n parseDeclara tion: function(elementElement) {\n var template = this.fetchTemplate(elemen tElement);\n if (template) {\n var root = this.shadowFromTemplate(te mplate);\n this.shadowRoots[elementElement.name] = root; \n } \n },\n // return a shadow-root template (if desired), override for custom behavior\n fetchTemplate: function(elementElement) {\n return elementEl ement.querySelector('template');\n },\n // utility function that creates a shadow root from a <template>\n shadowFromTemplate: function(template) {\n if (template) {\n // make a shadow root\n var root = this.crea teShadowRoot();\n // migrate flag(s)\n root.resetStyleInheritance = this.resetStyleInheritance;\n // stamp template\n // which inclu des parsing and applying MDV bindings before being \n // inserted (to avo id {{}} in attribute values)\n // e.g. to prevent <img src=\"images/{{ico n}}\"> from generating a 404.\n var dom = this.instanceTemplate(template) ;\n // append to shadow dom\n root.appendChild(dom);\n // p erform post-construction initialization tasks on shadow root\n this.shado wRootReady(root, template);\n // return the created shadow root\n return root;\n }\n },\n // utility function that stamps a <template> into light-dom\n lightFromTemplate: function(template) {\n if (template) {\n // TODO(sorvell): mark this element as a lightDOMController so that\ n // event listeners on bound nodes inside it will be called on it.\n // Note, the expectation here is that events on all descendants \n // should be handled by this element.\n this.lightDomController = true;\n // stamp template\n // which includes parsing and applying MDV bind ings before being \n // inserted (to avoid {{}} in attribute values)\n // e.g. to prevent <img src=\"images/{{icon}}\"> from generating a 404.\n var dom = this.instanceTemplate(template);\n // append to shadow do m\n this.appendChild(dom);\n // perform post-construction initiali zation tasks on ahem, light root\n this.shadowRootReady(this, template);\ n // return the created shadow root\n return dom;\n }\n }, \n shadowRootReady: function(root, template) {\n // locate nodes with id and store references to them in this.$ hash\n this.marshalNodeReferences(r oot);\n // set up pointer gestures\n PointerGestures.register(root);\n },\n // locate nodes with id and store references to them in this.$ hash\ n marshalNodeReferences: function(root) {\n // establish $ instance vari able\n var $ = this.$ = this.$ || {};\n // populate $ from nodes with ID from the LOCAL tree\n if (root) {\n var n$ = root.querySelectorAl l(\"[id]\");\n for (var i=0, l=n$.length, n; (i<l) && (n=n$[i]); i++) {\n $[n.id] = n;\n };\n }\n },\n attributeChangedCallbac k: function(name, oldValue) {\n // TODO(sjmiles): adhoc filter\n if (n ame !== 'class' && name !== 'style') {\n this.attributeToProperty(name, t his.getAttribute(name));\n }\n if (this.attributeChanged) {\n t his.attributeChanged.apply(this, arguments);\n }\n },\n onMutation: f unction(node, listener) {\n var observer = new MutationObserver(function(mu tations) {\n listener.call(this, observer, mutations);\n observer. disconnect();\n }.bind(this));\n observer.observe(node, {childList: tr ue, subtree: true});\n }\n };\n\n // true if object has own PolymerBase api \n function isBase(object) {\n return object.hasOwnProperty('PolymerBase') \ n }\n\n // name a base constructor for dev tools\n\n function PolymerBase() { };\n PolymerBase.prototype = base;\n base.constructor = PolymerBase;\n \n // exports\n\n scope.Base = PolymerBase;\n scope.isBase = isBase;\n scope.api.i nstance.base = base;\n \n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Aut hors. All rights reserved.\n * Use of this source code is governed by a BSD-styl e\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n\ n // imports\n\n var log = window.logFlags || {};\n \n // magic words\n \n var STYLE_SCOPE_ATTRIBUTE = 'element';\n var STYLE_CONTROLLER_SCOPE = 'control ler';\n \n var styles = {\n STYLE_SCOPE_ATTRIBUTE: STYLE_SCOPE_ATTRIBUTE,\n /**\n * Installs external stylesheets and <style> elements with the attr ibute \n * polymer-scope='controller' into the scope of element. This is int ended\n * to be a called during custom element construction. Note, this incu rs a \n * per instance cost and should be used sparingly.\n *\n * Th e need for this type of styling should go away when the shadowDOM spec\n * a ddresses these issues:\n * \n * https://www.w3.org/Bugs/Public/show_bug. cgi?id=21391\n * https://www.w3.org/Bugs/Public/show_bug.cgi?id=21390\n * https://www.w3.org/Bugs/Public/show_bug.cgi?id=21389\n * \n * @param e lement The custom element instance into whose controller (parent)\n * scope styles will be installed.\n * @param elementElement The <element> containing controller styles.\n */\n // TODO(sorvell): remove when spec issues are a ddressed\n installControllerStyles: function() {\n // apply controller s tyles, but only if they are not yet applied\n var scope = this.findStyleCon troller();\n if (scope && !this.scopeHasElementStyle(scope, STYLE_CONTROLLE R_SCOPE)) {\n // allow inherited controller styles\n var proto = g etPrototypeOf(this), cssText = '';\n while (proto && proto.element) {\n cssText += proto.element.cssTextForScope(STYLE_CONTROLLER_SCOPE);\n proto = getPrototypeOf(proto);\n }\n if (cssText) {\n var style = this.element.cssTextToScopeStyle(cssText,\n STYLE_CON TROLLER_SCOPE);\n // TODO(sorvell): for now these styles are not shimme d\n // but we may need to shim them\n Polymer.applyStyleToScop e(style, scope);\n }\n }\n },\n findStyleController: function( ) {\n if (window.ShadowDOMPolyfill) {\n return wrap(document.head);\ n } else {\n // find the shadow root that contains this element\n var n = this;\n while (n.parentNode) {\n n = n.parentNode;\ n }\n return n === document ? document.head : n;\n }\n },\ n scopeHasElementStyle: function(scope, descriptor) {\n var rule = STYLE _SCOPE_ATTRIBUTE + '=' + this.localName + '-' + descriptor;\n return scope. querySelector('style[' + rule + ']');\n }\n };\n \n // NOTE: use raw proto type traversal so that we ensure correct traversal\n // on platforms where the protoype chain is simulated via __proto__ (IE10)\n function getPrototypeOf(prot otype) {\n return prototype.__proto__;\n }\n\n // exports\n\n scope.api.in stance.styles = styles;\n \n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-s tyle\n * license that can be found in the LICENSE file.\n */\n(function(scope) { \n\n // imports\n\n var extend = scope.extend;\n var api = scope.api;\n\n // imperative implementation: Polymer()\n\n // specify an 'own' prototype for tag `name`\n function element(name, prototype) {\n if (getRegisteredPrototype[n ame]) {\n throw 'Already registered (Polymer) prototype for element ' + nam e;\n }\n // cache the prototype\n registerPrototype(name, prototype);\n // notify the registrar waiting for 'name', if any\n notifyPrototype(name );\n }\n\n // async prototype source\n\n function waitingForPrototype(name, c lient) {\n waitPrototype[name] = client;\n }\n\n var waitPrototype = {};\n\ n function notifyPrototype(name) {\n if (waitPrototype[name]) {\n waitP rototype[name].registerWhenReady();\n delete waitPrototype[name];\n }\n }\n\n // utility and bookkeeping\n\n // maps tag names to prototypes, as regi stered with\n // Polymer. Prototypes associated with a tag name\n // using doc ument.registerElement are available from\n // HTMLElement.getPrototypeForTag(). \n // If an element was fully registered by Polymer, then\n // Polymer.getRegi steredPrototype(name) === \n // HTMLElement.getPrototypeForTag(name)\n\n var prototypesByName = {};\n\n function registerPrototype(name, prototype) {\n return prototypesByName[name] = prototype || {};\n }\n\n function getRegistere dPrototype(name) {\n return prototypesByName[name];\n }\n\n // exports\n\n scope.getRegisteredPrototype = getRegisteredPrototype;\n scope.waitingForProto type = waitingForPrototype;\n\n // namespace shenanigans so we can expose our s cope on the registration \n // function\n\n // make window.Polymer reference ` element()`\n\n window.Polymer = element;\n\n // TODO(sjmiles): find a way to d o this that is less terrible\n // copy window.Polymer properties onto `element( )`\n\n extend(Polymer, scope);\n\n // Under the HTMLImports polyfill, scripts in the main document\n // do not block on imports; we want to allow calls to Po lymer in the main\n // document. Platform collects those calls until we can pro cess them, which\n // we do here.\n\n var declarations = Platform.deliverDecla rations();\n if (declarations) {\n for (var i=0, l=declarations.length, d; ( i<l) && (d=declarations[i]); i++) {\n element.apply(null, d);\n }\n }\n \n})(Polymer);\n","/* \n * Copyright 2013 The Polymer Authors. All rights reserv ed.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n(function(scope) {\n\nvar path = {\n reso lveElementPaths: function(node) {\n Platform.urlResolver.resolveDom(node);\n },\n addResolvePathApi: function() {\n // let assetpath attribute modify th e resolve path\n var assetPath = this.getAttribute('assetpath') || '';\n v ar root = new URL(assetPath, this.ownerDocument.baseURI);\n this.prototype.re solvePath = function(urlPath, base) {\n var u = new URL(urlPath, base || ro ot);\n return u.href;\n };\n }\n};\n\n// exports\nscope.api.declaration .path = path;\n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * lic ense that can be found in the LICENSE file.\n */\n(function(scope) {\n\n // imp orts\n\n var log = window.logFlags || {};\n var api = scope.api.instance.style s;\n var STYLE_SCOPE_ATTRIBUTE = api.STYLE_SCOPE_ATTRIBUTE;\n\n // magic words \n\n var STYLE_SELECTOR = 'style';\n var STYLE_LOADABLE_MATCH = '@import';\n var SHEET_SELECTOR = 'link[rel=stylesheet]';\n var STYLE_GLOBAL_SCOPE = 'global ';\n var SCOPE_ATTR = 'polymer-scope';\n\n var styles = {\n // returns true if resources are loading\n loadStyles: function(callback) {\n var conte nt = this.templateContent();\n if (content) {\n this.convertSheetsTo Styles(content);\n }\n var styles = this.findLoadableStyles(content);\ n if (styles.length) {\n Platform.styleResolver.loadStyles(styles, c allback);\n } else if (callback) {\n callback();\n }\n },\n convertSheetsToStyles: function(root) {\n var s$ = root.querySelectorAll (SHEET_SELECTOR);\n for (var i=0, l=s$.length, s, c; (i<l) && (s=s$[i]); i+ +) {\n c = createStyleElement(importRuleForSheet(s, this.ownerDocument.ba seURI),\n this.ownerDocument);\n this.copySheetAttributes(c, s );\n s.parentNode.replaceChild(c, s);\n }\n },\n copySheetAttr ibutes: function(style, link) {\n for (var i=0, a$=link.attributes, l=a$.le ngth, a; (a=a$[i]) && i<l; i++) {\n if (a.name !== 'rel' && a.name !== 's rc') {\n style.setAttribute(a.name, a.value);\n }\n }\n },\n findLoadableStyles: function(root) {\n var loadables = [];\n i f (root) {\n var s$ = root.querySelectorAll(STYLE_SELECTOR);\n for (var i=0, l=s$.length, s; (i<l) && (s=s$[i]); i++) {\n if (s.textConte nt.match(STYLE_LOADABLE_MATCH)) {\n loadables.push(s);\n }\n }\n }\n return loadables;\n },\n /**\n * Install ext ernal stylesheets loaded in <polymer-element> elements into the \n * element 's template.\n * @param elementElement The <element> element to style.\n */\n // TODO(sorvell): wip... caching and styles handling can probably be re moved\n // We need a scheme to ensure stylesheets are eagerly loaded without \n // the creation of an element instance. Here are 2 options for handling th is:\n // 1. create a dummy element with ShadowDOM in dom that includes ALL st yles\n // processed here.\n // 2. place stylesheets outside the element te mplate. This will allow \n // imports to naturally load the sheets. Then at l oad time, we can remove\n // the stylesheet from dom.\n installSheets: fun ction() {\n this.cacheSheets();\n this.cacheStyles();\n this.inst allLocalSheets();\n this.installGlobalStyles();\n },\n /**\n * Re move all sheets from element and store for later use.\n */\n cacheSheets: function() {\n this.sheets = this.findNodes(SHEET_SELECTOR);\n this.s heets.forEach(function(s) {\n if (s.parentNode) {\n s.parentNode .removeChild(s);\n }\n });\n },\n cacheStyles: function() {\n this.styles = this.findNodes(STYLE_SELECTOR + '[' + SCOPE_ATTR + ']');\n this.styles.forEach(function(s) {\n if (s.parentNode) {\n s.p arentNode.removeChild(s);\n }\n });\n },\n /**\n * Takes e xternal stylesheets loaded in an <element> element and moves\n * their conte nt into a <style> element inside the <element>'s template.\n * The sheet is then removed from the <element>. This is done only so \n * that if the eleme nt is loaded in the main document, the sheet does\n * not become active.\n * Note, ignores sheets with the attribute 'polymer-scope'.\n * @param ele mentElement The <element> element to style.\n */\n installLocalSheets: fu nction () {\n var sheets = this.sheets.filter(function(s) {\n return !s.hasAttribute(SCOPE_ATTR);\n });\n var content = this.templateConte nt();\n if (content) {\n var cssText = '';\n sheets.forEach(f unction(sheet) {\n cssText += cssTextFromSheet(sheet) + '\\n';\n });\n if (cssText) {\n var style = createStyleElement(cssText, this.ownerDocument);\n content.insertBefore(style, content.firstChild); \n }\n }\n },\n findNodes: function(selector, matcher) {\n var nodes = this.querySelectorAll(selector).array();\n var content = this .templateContent();\n if (content) {\n var templateNodes = content.q uerySelectorAll(selector).array();\n nodes = nodes.concat(templateNodes); \n }\n return matcher ? nodes.filter(matcher) : nodes;\n },\n te mplateContent: function() {\n var template = this.querySelector('template') ;\n return template && templateContent(template);\n },\n /**\n * Promotes external stylesheets and <style> elements with the attribute \n * p olymer-scope='global' into global scope.\n * This is particularly useful for defining @keyframe rules which \n * currently do not function in scoped or shadow style elements.\n * (See wkb.ug/72462)\n * @param elementElement The <element> element to style.\n */\n // TODO(sorvell): remove when wkb.u g/72462 is addressed.\n installGlobalStyles: function() {\n var style = this.styleForScope(STYLE_GLOBAL_SCOPE);\n applyStyleToScope(style, document .head);\n },\n cssTextForScope: function(scopeDescriptor) {\n var css Text = '';\n // handle stylesheets\n var selector = '[' + SCOPE_ATTR + '=' + scopeDescriptor + ']';\n var matcher = function(s) {\n return matchesSelector(s, selector);\n };\n var sheets = this.sheets.filter( matcher);\n sheets.forEach(function(sheet) {\n cssText += cssTextFro mSheet(sheet) + '\\n\\n';\n });\n // handle cached style elements\n var styles = this.styles.filter(matcher);\n styles.forEach(function(styl e) {\n cssText += style.textContent + '\\n\\n';\n });\n return cssText;\n },\n styleForScope: function(scopeDescriptor) {\n var cssT ext = this.cssTextForScope(scopeDescriptor);\n return this.cssTextToScopeSt yle(cssText, scopeDescriptor);\n },\n cssTextToScopeStyle: function(cssTex t, scopeDescriptor) {\n if (cssText) {\n var style = createStyleElem ent(cssText);\n style.setAttribute(STYLE_SCOPE_ATTRIBUTE, this.getAttribu te('name') +\n '-' + scopeDescriptor);\n return style;\n }\n }\n };\n\n function importRuleForSheet(sheet, baseUrl) {\n var href = new URL(sheet.getAttribute('href'), baseUrl).href;\n return '@import \\'' + href + '\\';'\n }\n\n function applyStyleToScope(style, scope) {\n if (sty le) {\n // TODO(sorvell): necessary for IE\n // see https://connect.mi crosoft.com/IE/feedback/details/790212/\n // cloning-a-style-element-and-ad ding-to-document-produces\n // -unexpected-result#details\n // var clo ne = style.cloneNode(true);\n var clone = createStyleElement(style.textCont ent);\n var attr = style.getAttribute(STYLE_SCOPE_ATTRIBUTE);\n if (at tr) {\n clone.setAttribute(STYLE_SCOPE_ATTRIBUTE, attr);\n }\n scope.appendChild(clone);\n }\n }\n\n function createStyleElement(cssText, scope) {\n scope = scope || document;\n scope = scope.createElement ? scop e : scope.ownerDocument;\n var style = scope.createElement('style');\n sty le.textContent = cssText;\n return style;\n }\n\n function cssTextFromSheet (sheet) {\n return (sheet && sheet.__resource) || '';\n }\n\n function matc hesSelector(node, inSelector) {\n if (matches) {\n return matches.call(n ode, inSelector);\n }\n }\n var p = HTMLElement.prototype;\n var matches = p.matches || p.matchesSelector || p.webkitMatchesSelector \n || p.mozMatch esSelector;\n \n // exports\n\n scope.api.declaration.styles = styles;\n sco pe.applyStyleToScope = applyStyleToScope;\n \n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is g overned by a BSD-style\n * license that can be found in the LICENSE file.\n */\n \n(function(scope) {\n\n // imports\n\n var log = window.logFlags || {};\n va r api = scope.api.instance.events;\n var EVENT_PREFIX = api.EVENT_PREFIX;\n // polymer-element declarative api: events feature\n\n var events = { \n parse HostEvents: function() {\n // our delegates map\n var delegates = this .prototype.eventDelegates;\n // extract data from attributes into delegates \n this.addAttributeDelegates(delegates);\n },\n addAttributeDelegate s: function(delegates) {\n // for each attribute\n for (var i=0, a; a= this.attributes[i]; i++) {\n // does it have magic marker identifying it as an event delegate?\n if (this.hasEventPrefix(a.name)) {\n // if so, add the info to delegates\n delegates[this.removeEventPrefix(a.n ame)] = a.value.replace('{{', '')\n .replace('}}', '').trim();\n }\n }\n },\n // starts with 'on-'\n hasEventPrefix: function (n) {\n return n && (n[0] === 'o') && (n[1] === 'n') && (n[2] === '-');\n },\n removeEventPrefix: function(n) {\n return n.slice(prefixLength);\ n }\n };\n\n var prefixLength = EVENT_PREFIX.length;\n\n // exports\n sco pe.api.declaration.events = events;\n\n})(Polymer);","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function( scope) {\n\n // element api\n\n var properties = {\n inferObservers: functi on(prototype) {\n // called before prototype.observe is chained to inherite d object\n var observe = prototype.observe, property;\n for (var n in prototype) {\n if (n.slice(-7) === 'Changed') {\n if (!observe) {\n observe = (prototype.observe = {});\n }\n prop erty = n.slice(0, -7)\n observe[property] = observe[property] || n;\n }\n }\n },\n explodeObservers: function(prototype) {\n // called before prototype.observe is chained to inherited object\n var o = pr ototype.observe;\n if (o) {\n var exploded = {};\n for (var n in o) {\n var names = n.split(' ');\n for (var i=0, ni; ni=na mes[i]; i++) {\n exploded[ni] = o[n];\n }\n }\n prototype.observe = exploded;\n }\n },\n optimizePropertyMaps: func tion(prototype) {\n if (prototype.observe) {\n // construct name lis t\n var a = prototype._observeNames = [];\n for (var n in prototyp e.observe) {\n var names = n.split(' ');\n for (var i=0, ni; n i=names[i]; i++) {\n a.push(ni);\n }\n //a.push(n); \n }\n }\n if (prototype.publish) {\n // construct name list\n var a = prototype._publishNames = [];\n for (var n in proto type.publish) {\n a.push(n);\n }\n }\n },\n publishPr operties: function(prototype, base) {\n // if we have any properties to pub lish\n var publish = prototype.publish;\n if (publish) {\n // t ranscribe `publish` entries onto own prototype\n this.requireProperties(p ublish, prototype, base);\n // construct map of lower-cased property name s\n prototype._publishLC = this.lowerCaseMap(publish);\n }\n },\n requireProperties: function(properties, prototype, base) {\n // ensure a prototype value for each property\n for (var n in properties) {\n if (prototype[n] === undefined && base[n] === undefined) {\n prototype[ n] = properties[n];\n }\n }\n },\n lowerCaseMap: function(prop erties) {\n var map = {};\n for (var n in properties) {\n map[n .toLowerCase()] = n;\n }\n return map;\n }\n };\n\n // exports\n\ n scope.api.declaration.properties = properties;\n\n})(Polymer);\n","/*\n * Cop yright 2013 The Polymer Authors. All rights reserved.\n * Use of this source cod e is governed by a BSD-style\n * license that can be found in the LICENSE file.\ n */\n(function(scope) {\n\n // magic words\n\n var ATTRIBUTES_ATTRIBUTE = 'at tributes';\n var ATTRIBUTES_REGEX = /\\s|,/;\n\n // attributes api\n\n var at tributes = {\n inheritAttributesObjects: function(prototype) {\n // chai n our lower-cased publish map to the inherited version\n this.inheritObject (prototype, 'publishLC');\n // chain our instance attributes map to the inh erited version\n this.inheritObject(prototype, '_instanceAttributes');\n },\n publishAttributes: function(prototype, base) {\n // merge names fr om 'attributes' attribute\n var attributes = this.getAttribute(ATTRIBUTES_A TTRIBUTE);\n if (attributes) {\n // get properties to publish\n var publish = prototype.publish || (prototype.publish = {});\n // name s='a b c' or names='a,b,c'\n var names = attributes.split(ATTRIBUTES_REGE X);\n // record each name for publishing\n for (var i=0, l=names.l ength, n; i<l; i++) {\n // remove excess ws\n n = names[i].tri m();\n // do not override explicit entries\n if (n && publish[ n] === undefined && base[n] === undefined) {\n publish[n] = null;\n }\n }\n }\n },\n // record clonable attributes from <e lement>\n accumulateInstanceAttributes: function() {\n // inherit instan ce attributes\n var clonable = this.prototype._instanceAttributes;\n / / merge attributes from element\n var a$ = this.attributes;\n for (var i=0, l=a$.length, a; (i<l) && (a=a$[i]); i++) { \n if (this.isInstanceA ttribute(a.name)) {\n clonable[a.name] = a.value;\n }\n }\n },\n isInstanceAttribute: function(name) {\n return !this.blackList[ name] && name.slice(0,3) !== 'on-';\n },\n // do not clone these attribute s onto instances\n blackList: {\n name: 1,\n 'extends': 1,\n c onstructor: 1,\n noscript: 1,\n assetpath: 1,\n 'cache-csstext': 1\n }\n };\n\n // add ATTRIBUTES_ATTRIBUTE to the blacklist\n attributes.b lackList[ATTRIBUTES_ATTRIBUTE] = 1;\n\n // exports\n\n scope.api.declaration.a ttributes = attributes;\n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Au thors. All rights reserved.\n * Use of this source code is governed by a BSD-sty le\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n \n // imports\n \n var api = scope.api;\n var isBase = scope.isBase;\n var extend = scope.extend;\n\n // prototype api\n\n var prototype = {\n\n regis ter: function(name, extendeeName) {\n // build prototype combining extendee , Polymer base, and named api\n this.buildPrototype(name, extendeeName);\n // register our custom element with the platform\n this.registerProtot ype(name, extendeeName);\n // reference constructor in a global named by 'c onstructor' attribute\n this.publishConstructor();\n },\n\n buildProt otype: function(name, extendeeName) {\n // get our custom prototype (before chaining)\n var extension = scope.getRegisteredPrototype(name);\n // get basal prototype\n var base = this.generateBasePrototype(extendeeName);\ n // implement declarative features\n this.desugarBeforeChaining(exten sion, base);\n // join prototypes\n this.prototype = this.chainPrototy pes(extension, base);\n // more declarative features\n this.desugarAft erChaining(name, extendeeName);\n },\n\n desugarBeforeChaining: function(p rototype, base) {\n // back reference declaration element\n // TODO(sj miles): replace `element` with `elementElement` or `declaration`\n prototyp e.element = this;\n // transcribe `attributes` declarations onto own protot ype's `publish`\n this.publishAttributes(prototype, base);\n // `publi sh` properties to the prototype and to attribute watch\n this.publishProper ties(prototype, base);\n // infer observers for `observe` list based on met hod names\n this.inferObservers(prototype);\n // desugar compound obse rver syntax, e.g. 'a b c' \n this.explodeObservers(prototype);\n },\n\n chainPrototypes: function(prototype, base) {\n // chain various meta-dat a objects to inherited versions\n this.inheritMetaData(prototype, base);\n // chain custom api to inherited\n var chained = this.chainObject(prot otype, base);\n // x-platform fixup\n ensurePrototypeTraversal(chained );\n return chained;\n },\n\n inheritMetaData: function(prototype, ba se) {\n // chain observe object to inherited\n this.inheritObject('obs erve', prototype, base);\n // chain publish object to inherited\n this .inheritObject('publish', prototype, base);\n // chain our lower-cased publ ish map to the inherited version\n this.inheritObject('_publishLC', prototy pe, base);\n // chain our instance attributes map to the inherited version\ n this.inheritObject('_instanceAttributes', prototype, base);\n // cha in our event delegates map to the inherited version\n this.inheritObject('e ventDelegates', prototype, base);\n },\n\n // implement various declarativ e features\n desugarAfterChaining: function(name, extendee) {\n // build side-chained lists to optimize iterations\n this.optimizePropertyMaps(this .prototype);\n // install external stylesheets as if they are inline\n this.installSheets();\n // adjust any paths in dom from imports\n thi s.resolveElementPaths(this);\n // compile list of attributes to copy to ins tances\n this.accumulateInstanceAttributes();\n // parse on-* delegate s declared on `this` element\n this.parseHostEvents();\n //\n // install a helper method this.resolvePath to aid in \n // setting resource u rls. e.g.\n // this.$.image.src = this.resolvePath('images/foo.png')\n this.addResolvePathApi();\n // under ShadowDOMPolyfill, transforms to appr oximate missing CSS features\n if (window.ShadowDOMPolyfill) {\n Pla tform.ShadowCSS.shimStyling(this.templateContent(), name, extendee);\n }\n // allow custom element access to the declarative context\n if (this.p rototype.registerCallback) {\n this.prototype.registerCallback(this);\n }\n },\n\n // if a named constructor is requested in element, map a re ference\n // to the constructor to the given symbol\n publishConstructor: function() {\n var symbol = this.getAttribute('constructor');\n if (sy mbol) {\n window[symbol] = this.ctor;\n }\n },\n\n // build pr ototype combining extendee, Polymer base, and named api\n generateBasePrototy pe: function(extnds) {\n var prototype = this.findBasePrototype(extnds);\n if (!prototype) {\n // create a prototype based on tag-name extensio n\n var prototype = HTMLElement.getPrototypeForTag(extnds);\n // i nsert base api in inheritance chain (if needed)\n prototype = this.ensure BaseApi(prototype);\n // memoize this base\n memoizedBases[extnds] = prototype;\n }\n return prototype;\n },\n\n findBasePrototype : function(name) {\n return memoizedBases[name];\n },\n\n // install Polymer instance api into prototype chain, as needed \n ensureBaseApi: functi on(prototype) {\n if (prototype.PolymerBase) {\n return prototype;\n }\n var extended = Object.create(prototype);\n // we need a uniq ue copy of base api for each base prototype\n // therefore we 'extend' here instead of simply chaining\n api.publish(api.instance, extended);\n / / TODO(sjmiles): sharing methods across prototype chains is\n // not suppor ted by 'super' implementation which optimizes\n // by memoizing prototype r elationships.\n // Probably we should have a version of 'extend' that is \n // share-aware: it could study the text of each function,\n // look f or usage of 'super', and wrap those functions in\n // closures.\n // A s of now, there is only one problematic method, so \n // we just patch it m anually.\n // To avoid re-entrancy problems, the special super method\n // installed is called `mixinSuper` and the mixin method\n // must use th is method instead of the default `super`.\n this.mixinMethod(extended, prot otype, api.instance.mdv, 'bind');\n // return buffed-up prototype\n re turn extended;\n },\n\n mixinMethod: function(extended, prototype, api, na me) {\n var $super = function(args) {\n return prototype[name].apply (this, args);\n };\n extended[name] = function() {\n this.mixin Super = $super;\n return api[name].apply(this, arguments);\n }\n },\n\n // ensure prototype[name] inherits from a prototype.prototype[name]\n inheritObject: function(name, prototype, base) {\n // require an object\ n var source = prototype[name] || {};\n // chain inherited properties onto a new object\n prototype[name] = this.chainObject(source, base[name]); \n },\n\n // register 'prototype' to custom element 'name', store construc tor \n registerPrototype: function(name, extendee) { \n var info = {\n prototype: this.prototype\n }\n // native element must be specif ied in extends\n var typeExtension = this.findTypeExtension(extendee);\n if (typeExtension) {\n info.extends = typeExtension;\n }\n / / register the prototype with HTMLElement for name lookup\n HTMLElement.reg ister(name, this.prototype);\n // register the custom type\n this.ctor = document.registerElement(name, info);\n },\n\n findTypeExtension: funct ion(name) {\n if (name && name.indexOf('-') < 0) {\n return name;\n } else {\n var p = this.findBasePrototype(name);\n if (p.elem ent) {\n return this.findTypeExtension(p.element.extends);\n }\n }\n }\n\n };\n\n // memoize base prototypes\n var memoizedBases = {} ;\n\n // implementation of 'chainObject' depends on support for __proto__\n if (Object.__proto__) {\n prototype.chainObject = function(object, inherited) { \n if (object && inherited && object !== inherited) {\n object.__pro to__ = inherited;\n }\n return object;\n }\n } else {\n prototy pe.chainObject = function(object, inherited) {\n if (object && inherited && object !== inherited) {\n var chained = Object.create(inherited);\n object = extend(chained, object);\n }\n return object;\n }\n }\ n\n // On platforms that do not support __proto__ (versions of IE), the prototy pe\n // chain of a custom element is simulated via installation of __proto__.\n // Although custom elements manages this, we install it here so it's\n // ava ilable during desugaring.\n function ensurePrototypeTraversal(prototype) {\n if (!Object.__proto__) {\n var ancestor = Object.getPrototypeOf(prototype) ;\n prototype.__proto__ = ancestor;\n if (isBase(ancestor)) {\n ancestor.__proto__ = Object.getPrototypeOf(ancestor);\n }\n }\n }\n\n // exports\n\n api.declaration.prototype = prototype;\n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sour ce code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n\n var queue = {\n // tell the queue to wait for an element to be ready\n wait: function(element, check, go) {\n if (this.indexOf(element) === -1) {\n this.add(element);\n element.__ check = check;\n element.__go = go;\n }\n return (this.indexOf( element) !== 0);\n },\n add: function(element) {\n //console.log('que ueing', element.name);\n queueForElement(element).push(element);\n },\n indexOf: function(element) {\n var i = queueForElement(element).indexOf( element);\n if (i >= 0 && document.contains(element)) {\n i += (HTML Imports.useNative || HTMLImports.ready) ? importQueue.length :\n 1e9; \n }\n return i; \n },\n // tell the queue an element is ready to be registered\n go: function(element) {\n var readied = this.remove(e lement);\n if (readied) {\n readied.__go.call(readied);\n rea died.__check = readied.__go = null;\n this.check();\n }\n },\n remove: function(element) {\n var i = this.indexOf(element);\n if (i !== 0) {\n //console.warn('queue order wrong', i);\n return;\n }\n return queueForElement(element).shift(); \n },\n check: functi on() {\n // next\n var element = this.nextElement();\n if (elemen t) {\n element.__check.call(element);\n }\n if (this.canReady() ) {\n this.ready();\n return true;\n }\n },\n nextEleme nt: function() {\n return nextQueued();\n },\n canReady: function() { \n return !this.waitToReady && this.isEmpty();\n },\n isEmpty: functi on() {\n return !importQueue.length && !mainQueue.length;\n },\n read y: function() {\n // TODO(sorvell): As an optimization, turn off CE polyfil l upgrading\n // while registering. This way we avoid having to upgrade eac h document\n // piecemeal per registration and can instead register all ele ments\n // and upgrade once in a batch. Without this optimization, upgrade time\n // degrades significantly when SD polyfill is used. This is mainly b ecause\n // querying the document tree for elements is slow under the SD po lyfill.\n if (CustomElements.ready === false) {\n CustomElements.upg radeDocumentTree(document);\n CustomElements.ready = true;\n }\n if (readyCallbacks) {\n var fn;\n while (readyCallbacks.length) {\n fn = readyCallbacks.shift();\n fn();\n }\n }\n },\n addReadyCallback: function(callback) {\n if (callback) {\n readyCallbacks.push(callback);\n }\n },\n waitToReady: true\n };\ n\n var importQueue = [];\n var mainQueue = [];\n var readyCallbacks = [];\n\ n function queueForElement(element) {\n return document.contains(element) ? mainQueue : importQueue;\n }\n\n function nextQueued() {\n return importQue ue.length ? importQueue[0] : mainQueue[0];\n }\n\n var polymerReadied = false; \n\n document.addEventListener('WebComponentsReady', function() {\n CustomE lements.ready = false;\n });\n \n function whenPolymerReady(callback) {\n queue.waitToReady = true;\n CustomElements.ready = false;\n HTMLImports.wh enImportsReady(function() {\n queue.addReadyCallback(callback);\n queu e.waitToReady = false;\n queue.check();\n });\n }\n\n // exports\n sc ope.queue = queue;\n scope.whenPolymerReady = whenPolymerReady;\n})(Polymer);\n ","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of th is source code is governed by a BSD-style\n * license that can be found in the L ICENSE file.\n */\n(function(scope) {\n\n var whenPolymerReady = scope.whenPoly merReady;\n\n function importElements(elementOrFragment, callback) {\n if (e lementOrFragment) {\n document.head.appendChild(elementOrFragment);\n whenPolymerReady(callback);\n } else if (callback) {\n callback();\n }\n }\n\n function importUrls(urls, callback) {\n if (urls && urls.length) {\n var frag = document.createDocumentFragment();\n for (var i=0, l=urls.length, url, link; (i<l) && (url=urls[i]); i++) {\n link = docum ent.createElement('link');\n link.rel = 'import';\n link.href = url;\n frag.appendChild(link);\n }\n importElements(fra g, callback);\n } else if (callback) {\n callback();\n }\n }\n\n // exports\n scope.import = importUrls;\n scope.importElements = importElements; \n\n})(Polymer);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reser ved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n\n // imports\n\n var extend = scope.extend;\n var api = scope.api;\n var queue = scope.queue;\n v ar whenPolymerReady = scope.whenPolymerReady;\n var getRegisteredPrototype = sc ope.getRegisteredPrototype;\n var waitingForPrototype = scope.waitingForPrototy pe;\n\n // declarative implementation: <polymer-element>\n\n var prototype = e xtend(Object.create(HTMLElement.prototype), {\n\n createdCallback: function() {\n if (this.getAttribute('name')) {\n this.init();\n }\n } ,\n\n init: function() {\n // fetch declared values\n this.name = t his.getAttribute('name');\n this.extends = this.getAttribute('extends');\n // initiate any async resource fetches\n this.loadResources();\n // register when all constraints are met\n this.registerWhenReady();\n } ,\n\n registerWhenReady: function() {\n if (this.registered\n || th is.waitingForPrototype(this.name)\n || this.waitingForQueue()\n || t his.waitingForResources()) {\n return;\n }\n queue.go(this);\ n },\n\n\n // TODO(sorvell): refactor, this method is private-ish, but it' s being\n // called by the queue object.\n _register: function() {\n //console.log('registering', this.name);\n //console.group('registering', t his.name);\n // warn if extending from a custom element not registered via Polymer\n if (isCustomTag(this.extends) && !isRegistered(this.extends)) {\n console.warn('%s is attempting to extend %s, an unregistered element ' + \n 'or one that was not registered with Polymer.', this.name,\n this.extends);\n }\n this.register(this.name, this.extends);\n this.registered = true;\n //console.groupEnd();\n },\n\n waitingF orPrototype: function(name) {\n if (!getRegisteredPrototype(name)) {\n // then wait for a prototype\n waitingForPrototype(name, this);\n // emulate script if user is not supplying one\n this.handleNoScript(n ame);\n // prototype not ready yet\n return true;\n }\n }, \n\n handleNoScript: function(name) {\n // if explicitly marked as 'nosc ript'\n if (this.hasAttribute('noscript') && !this.noscript) {\n thi s.noscript = true;\n // TODO(sorvell): CustomElements polyfill awareness: \n // noscript elements should upgrade in logical order\n // scrip t injection ensures this under native custom elements;\n // under imports + ce polyfills, scripts run before upgrades.\n // dependencies should be ready at upgrade time so register\n // prototype at this time.\n if (window.CustomElements && !CustomElements.useNative) {\n Polymer(nam e);\n } else {\n var script = document.createElement('script');\ n script.textContent = 'Polymer(\\'' + name + '\\');';\n this. appendChild(script);\n }\n }\n },\n\n waitingForResources: fun ction() {\n return this._needsResources;\n },\n\n // NOTE: Elements m ust be queued in proper order for inheritance/composition\n // dependency res olution. Previously this was enforced for inheritance,\n // and by rule for c omposition. It's now entirely by rule.\n waitingForQueue: function() {\n return queue.wait(this, this.registerWhenReady, this._register);\n },\n\n loadResources: function() {\n this._needsResources = true;\n this.loa dStyles(function() {\n this._needsResources = false;\n this.regist erWhenReady();\n }.bind(this));\n }\n\n });\n\n // semi-pluggable APIs \n\n // TODO(sjmiles): should be fully pluggable (aka decoupled, currently\n // the various plugins are allowed to depend on each other directly)\n api.publ ish(api.declaration, prototype);\n\n // utility and bookkeeping\n\n function i sRegistered(name) {\n return Boolean(HTMLElement.getPrototypeForTag(name));\n }\n\n function isCustomTag(name) {\n return (name && name.indexOf('-') >= 0);\n }\n\n // exports\n\n scope.getRegisteredPrototype = getRegisteredProtot ype;\n \n // boot tasks\n\n whenPolymerReady(function() {\n document.body. removeAttribute('unresolved');\n document.dispatchEvent(\n new CustomEve nt('polymer-ready', {bubbles: true})\n );\n });\n\n // register polymer-ele ment with document\n\n document.registerElement('polymer-element', {prototype: prototype});\n\n})(Polymer);\n"]}
OLDNEW
« no previous file with comments | « pkg/polymer/lib/src/js/polymer/polymer.concat.js.map ('k') | pkg/web_components/lib/build.log » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698