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

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

Issue 336013003: Version 1.5.0-dev.4.14 (Closed) Base URL: http://dart.googlecode.com/svn/trunk/
Patch Set: Created 6 years, 6 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
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 T,KAAKwV,oBAAoBD,EAAGxD,GAC5BA,EAAE5F,WAAWsJ,aAAaF,EAAGxD,IAGjCyD,oBAAqB,SAAS1D, EAAO4D,GACnC,IAAK,GAA0CrN,GAAtCzF,EAAE,EAAGkF,EAAG4N,EAAK9N,WAAY/E,EAAEiF,EAAGhF ,QAAYuF,EAAEP,EAAGlF,KAASC,EAAFD,EAAKA,IACnD,QAAXyF,EAAE9F,MAA6B,SAAX8F,EAAE9F,M ACxBuP,EAAM5J,aAAaG,EAAE9F,KAAM8F,EAAE5I,QAInC4V,mBAAoB,SAAShG,GAC3B,GAAIsG,KACJ ,IAAItG,EAEF,IAAK,GAAsB0C,GADvBsC,EAAKhF,EAAKY,iBAAiB2E,GACtBhS,EAAE,EAAGC,EAAEw R,EAAGvR,OAAcD,EAAFD,IAASmP,EAAEsC,EAAGzR,IAAKA,IAC5CmP,EAAEC,YAAYtJ,MAAMmM,IACt Bc,EAAUjK,KAAKqG,EAIrB,OAAO4D,IAOTC,cAAe,WACb5V,KAAK6V,cACL7V,KAAK8V,cACL9V,KAAK +V,qBACL/V,KAAKgW,uBAKPH,YAAa,WACX7V,KAAKiW,OAASjW,KAAKkW,UAAUpB,GAC7B9U,KAAKiW, OAAO7W,QAAQ,SAAS2S,GACvBA,EAAE5F,YACJ4F,EAAE5F,WAAWgK,YAAYpE,MAI/B+D,YAAa,WACX9V ,KAAKuR,OAASvR,KAAKkW,UAAUtB,EAAiB,IAAMI,EAAa,KACjEhV,KAAKuR,OAAOnS,QAAQ,SAAS2S, GACvBA,EAAE5F,YACJ4F,EAAE5F,WAAWgK,YAAYpE,MAa/BgE,mBAAoB,WAClB,GAAIE,GAASjW,KAAK iW,OAAOG,OAAO,SAASrE,GACvC,OAAQA,EAAE9J,aAAa+M,KAErBE,EAAUlV,KAAKmV,iBACnB,IAAID ,EAAS,CACX,GAAIlE,GAAU,EAId,IAHAiF,EAAO7W,QAAQ,SAAS0U,GACtB9C,GAAWuD,EAAiBT,GAAS ,OAEnC9C,EAAS,CACX,GAAIc,GAAQoC,EAAmBlD,EAAShR,KAAKuT,cAC7C2B,GAAQrF,aAAaiC,EAAO oD,EAAQmB,eAI1CH,UAAW,SAAShF,EAAUoF,GAC5B,GAAIC,GAAQvW,KAAKiQ,iBAAiBiB,GAAUsF,QA CxCtB,EAAUlV,KAAKmV,iBACnB,IAAID,EAAS,CACX,GAAIuB,GAAgBvB,EAAQjF,iBAAiBiB,GAAUsF ,OACvDD,GAAQA,EAAMG,OAAOD,GAEvB,MAAOH,GAAUC,EAAMH,OAAOE,GAAWC,GAE3CpB,gBAAiB,WAC f,GAAIzI,GAAW1M,KAAKuP,cAAc,WAClC,OAAO7C,IAAYyI,gBAAgBzI,IAWrCsJ,oBAAqB,WACnB,GA AIlE,GAAQ9R,KAAK2W,cAAc5B,EAC/B5C,GAAkBL,EAAO1Q,SAAS4S,OAEpCrC,gBAAiB,SAASiF,GAC xB,GAAI5F,GAAU,GAEVE,EAAW,IAAM8D,EAAa,IAAM4B,EAAkB,IACtDN,EAAU,SAASvE,GACrB,MAAO 0C,GAAgB1C,EAAGb,IAExB+E,EAASjW,KAAKiW,OAAOG,OAAOE,EAChCL,GAAO7W,QAAQ,SAAS0U,GAC tB9C,GAAWuD,EAAiBT,GAAS,QAGvC,IAAIvC,GAASvR,KAAKuR,OAAO6E,OAAOE,EAIhC,OAHA/E,GAA OnS,QAAQ,SAAS0S,GACtBd,GAAWc,EAAME,YAAc,SAE1BhB,GAET2F,cAAe,SAASC,GACtB,GAAI5F,G AAUhR,KAAK2R,gBAAgBiF,EACnC,OAAO5W,MAAKkS,oBAAoBlB,EAAS4F,IAE3C1E,oBAAqB,SAASlB, EAAS4F,GACrC,GAAI5F,EAAS,CACX,GAAIc,GAAQoC,EAAmBlD,EAG/B,OAFAc,GAAM5J,aAAamJ,EAA uBrR,KAAKoQ,aAAa,QACxD,IAAMwG,GACH9E,KA2DTrP,EAAI1B,YAAY/B,UAChB2V,EAAUlS,EAAEkS ,SAAWlS,EAAEgS,iBAAmBhS,EAAEoU,uBAC3CpU,EAAEqU,kBAIThY,GAAMG,IAAImF,YAAYmN,OAASA ,EAC/BzS,EAAMqT,kBAAoBA,GAEzBvT,SCzOH,SAAUE,GAIR,GACIG,IADMJ,OAAOyH,aACPxH,EAAMG ,IAAIoF,SAASmC,QACzBD,EAAetH,EAAIsH,aAGnBC,GACFuQ,gBAAiB,WAEf,GAAIC,GAAYhX,KAAKh B,UAAU0H,cAE/B1G,MAAKiX,sBAAsBD,IAE7BC,sBAAuB,SAASD,GAE9B,IAAK,GAAS3O,GAALzF,EAA E,EAAMyF,EAAErI,KAAK4H,WAAWhF,GAAIA,IAEjC5C,KAAKkX,eAAe7O,EAAE9F,QAExByU,EAAUhX, KAAKmX,kBAAkB9O,EAAE9F,OAAS8F,EAAE5I,MAAMwE,QAAQ,KAAM,IAC7DA,QAAQ,KAAM,IAAImT,SA K7BF,eAAgB,SAAU7X,GACxB,MAAOA,IAAe,MAATA,EAAE,IAAyB,MAATA,EAAE,IAAyB,MAATA,EAAE, IAErD8X,kBAAmB,SAAS9X,GAC1B,MAAOA,GAAEgY,MAAMC,KAIfA,EAAe/Q,EAAazD,MAGhChE,GAAMG ,IAAImF,YAAYoC,OAASA,GAE9B5H,SC1CH,SAAUE,GAIR,GAAI8K,IACF2N,eAAgB,SAASvY,GAEvB,G AAiCuM,GAA7BhB,EAAUvL,EAAUuL,OACxB,KAAK,GAAIlL,KAAKL,GACQ,YAAhBK,EAAEgY,MAAM,MAC L9M,IACHA,EAAYvL,EAAUuL,YAExBgB,EAAWlM,EAAEgY,MAAM,EAAG,IACtB9M,EAAQgB,GAAYhB,EA AQgB,IAAalM,IAI/CmY,iBAAkB,SAASxY,GAEzB,GAAIiL,GAAIjL,EAAUuL,OAClB,IAAIN,EAAG,CA CL,GAAIwN,KACJ,KAAK,GAAIpY,KAAK4K,GAEZ,IAAK,GAASyN,GADVC,EAAQtY,EAAEuY,MAAM,KACX hV,EAAE,EAAO8U,EAAGC,EAAM/U,GAAIA,IAC7B6U,EAASC,GAAMzN,EAAE5K,EAGrBL,GAAUuL,QAAU kN,IAGxBI,qBAAsB,SAAS7Y,GAC7B,GAAIA,EAAUuL,QAAS,CAErB,GAAIlC,GAAIrJ,EAAU8K,gBACl B,KAAK,GAAIzK,KAAKL,GAAUuL,QAEtB,IAAK,GAASmN,GADVC,EAAQtY,EAAEuY,MAAM,KACXhV,EAA E,EAAO8U,EAAGC,EAAM/U,GAAIA,IAC7ByF,EAAEqD,KAAKgM,GAIb,GAAI1Y,EAAUsF,QAAS,CAErB, GAAI+D,GAAIrJ,EAAUgL,gBAClB,KAAK,GAAI3K,KAAKL,GAAUsF,QACtB+D,EAAEqD,KAAKrM,KAIby Y,kBAAmB,SAAS9Y,EAAW2O,GAErC,GAAIrJ,GAAUtF,EAAUsF,OACpBA,KAEFtE,KAAK+X,kBAAkBzT, EAAStF,EAAW2O,GAE3C3O,EAAUoJ,WAAapI,KAAKgY,aAAa1T,KAG7CyT,kBAAmB,SAASnO,EAAY5K,E AAW2O,GAEjD,IAAK,GAAItO,KAAKuK,GACSpE,SAAjBxG,EAAUK,IAAgCmG,SAAZmI,EAAKtO,KACrCL ,EAAUK,GAAKuK,EAAWvK,KAIhC2Y,aAAc,SAASpO,GACrB,GAAIqO,KACJ,KAAK,GAAI5Y,KAAKuK,GA CZqO,EAAI5Y,EAAE6Y,eAAiB7Y,CAEzB,OAAO4Y,IAMXnZ,GAAMG,IAAImF,YAAYwF,WAAaA,GAElChL ,SClFH,SAAUE,GAIR,GAAIqZ,GAAuB,aACvBC,EAAmB,OAInBxQ,GACFyQ,yBAA0B,SAASrZ,GAEjCgB ,KAAKsY,cAActZ,EAAW,aAE9BgB,KAAKsY,cAActZ,EAAW,wBAEhCuZ,kBAAmB,SAASvZ,EAAW2O,GAE rC,GAAI/F,GAAa5H,KAAKoQ,aAAa+H,EACnC,IAAIvQ,EAMF,IAAK,GAAyBvI,GAJ1BiF,EAAUtF,EAA UsF,UAAYtF,EAAUsF,YAE1CqT,EAAQ/P,EAAWgQ,MAAMQ,GAEpBxV,EAAE,EAAGC,EAAE8U,EAAM7U,O AAaD,EAAFD,EAAKA,IAEpCvD,EAAIsY,EAAM/U,GAAGwU,OAET/X,GAAoBmG,SAAflB,EAAQjF,IAAgC mG,SAAZmI,EAAKtO,KACxCiF,EAAQjF,GAAK,OAMrBmZ,6BAA8B,WAK5B,IAAK,GAAsBnQ,GAHvBoQ,E AAWzY,KAAKhB,UAAU+I,oBAE1BD,EAAK9H,KAAK4H,WACLhF,EAAE,EAAGC,EAAEiF,EAAGhF,OAAcD, EAAFD,IAASyF,EAAEP,EAAGlF,IAAKA,IAC5C5C,KAAK0Y,oBAAoBrQ,EAAE9F,QAC7BkW,EAASpQ,EA AE9F,MAAQ8F,EAAE5I,QAI3BiZ,oBAAqB,SAASnW,GAC5B,OAAQvC,KAAK2Y,UAAUpW,IAA6B,QAApBA ,EAAK8U,MAAM,EAAE,IAG/CsB,WACEpW,KAAM,EACNqW,UAAW,EACX/H,YAAa,EACbgI,SAAU,EACVC, UAAW,EACXC,gBAAiB,GAKrBnR,GAAW+Q,UAAUR,GAAwB,EAI7CrZ,EAAMG,IAAImF,YAAYwD,WAAaA,G AElChJ,SCpEH,SAAUE,GA+NR,QAASka,GAAyBha,GAChC,IAAKE,OAAOwD,UAAW,CACrB,GAAIuW,GAA W/Z,OAAOiC,eAAenC,EACrCA,GAAU0D,UAAYuW,EAClBzL,EAAOyL,KACTA,EAASvW,UAAYxD,OAAOiC ,eAAe8X,KAhOjD,GAAIha,GAAMH,EAAMG,IACZuO,EAAS1O,EAAM0O,OACfzO,EAASD,EAAMC,OAIfC, GAEFgC,SAAU,SAASuB,EAAM2W,GAEvBlZ,KAAKmZ,eAAe5W,EAAM2W,GAE1BlZ,KAAKwS,kBAAkBjQ,E AAM2W,GAE7BlZ,KAAKoZ,sBAGPD,eAAgB,SAAS5W,EAAM2W,GAE7B,GAAIG,GAAYva,EAAMyT,uBAAuB hQ,GAEzCoL,EAAO3N,KAAKsZ,sBAAsBJ,EAEtClZ,MAAKuZ,sBAAsBF,EAAW1L,GAEtC3N,KAAKhB,UA AYgB,KAAKwZ,gBAAgBH,EAAW1L,GAEjD3N,KAAKyZ,qBAAqBlX,EAAM2W,IAGlCK,sBAAuB,SAASva,E AAW2O,GAGzC3O,EAAUiQ,QAAUjP,KAEpBA,KAAKuY,kBAAkBvZ,EAAW2O,GAElC3N,KAAK8X,kBAAkB9 Y,EAAW2O,GAElC3N,KAAKuX,eAAevY,GAEpBgB,KAAKwX,iBAAiBxY,IAGxBwa,gBAAiB,SAASxa,EAA W2O,GAEnC3N,KAAK0Z,gBAAgB1a,EAAW2O,EAEhC,IAAIgM,GAAU3Z,KAAK4Z,YAAY5a,EAAW2O,EAG1 C,OADAqL,GAAyBW,GAClBA,GAGTD,gBAAiB,SAAS1a,EAAW2O,GAEnC3N,KAAKsY,cAAc,UAAWtZ,EAA W2O,GAEzC3N,KAAKsY,cAAc,UAAWtZ,EAAW2O,GAEzC3N,KAAKsY,cAAc,aAActZ,EAAW2O,GAE5C3N, KAAKsY,cAAc,sBAAuBtZ,EAAW2O,GAErD3N,KAAKsY,cAAc,iBAAkBtZ,EAAW2O,IAIlD8L,qBAAsB,S AASlX,EAAMsX,GAEnC7Z,KAAK6X,qBAAqB7X,KAAKhB,WAE/BgB,KAAK4V,gBAEL5V,KAAKiT,oBAAoB jT,MAEzBA,KAAKwY,+BAELxY,KAAK+W,kBAKL/W,KAAKoT,oBAEDvU,OAAOoT,mBACTrN,SAASuM,UAA U2I,YAAY9Z,KAAKmV,kBAAmB5S,EAAMsX,GAG3D7Z,KAAKhB,UAAU+a,kBACjB/Z,KAAKhB,UAAU+a,i BAAiB/Z,OAMpCoZ,mBAAoB,WAClB,GAAIY,GAASha,KAAKoQ,aAAa,cAC3B4J,KACFnb,OAAOmb,GAAU ha,KAAKia,OAK1BX,sBAAuB,SAASY,GAC9B,GAAIlb,GAAYgB,KAAKma,kBAAkBD,EACvC,KAAKlb,EA AW,CAEd,GAAIA,GAAY+B,YAAYG,mBAAmBgZ,EAE/Clb,GAAYgB,KAAKoa,cAAcpb,GAE/Bqb,EAAcH,G AAUlb,EAE1B,MAAOA,IAGTmb,kBAAmB,SAAS5X,GAC1B,MAAO8X,GAAc9X,IAIvB6X,cAAe,SAASpb,G ACtB,GAAIA,EAAU0O,YACZ,MAAO1O,EAET,IAAIsb,GAAWpb,OAAOqb,OAAOvb,EAkB7B,OAfAC,GAAI qF,QAAQrF,EAAIoF,SAAUiW,GAa1Bta,KAAKwa,YAAYF,EAAUtb,EAAWC,EAAIoF,SAASmI,IAAK,QAE jD8N,GAGTE,YAAa,SAASF,EAAUtb,EAAWC,EAAKsD,GAC9C,GAAIX,GAAS,SAAS8C,GACpB,MAAO1F,G AAUuD,GAAMb,MAAM1B,KAAM0E,GAErC4V,GAAS/X,GAAQ,WAEf,MADAvC,MAAKgN,WAAapL,EACX3C,E AAIsD,GAAMb,MAAM1B,KAAM2B,aAKjC2W,cAAe,SAAS/V,EAAMvD,EAAW2O,GAEvC,GAAI8M,GAASzb, EAAUuD,MAEvBvD,GAAUuD,GAAQvC,KAAK4Z,YAAYa,EAAQ9M,EAAKpL,KAIlDiQ,kBAAmB,SAASjQ,EA AMsX,GAChC,GAAIa,IACF1b,UAAWgB,KAAKhB,WAGd2b,EAAgB3a,KAAK4a,kBAAkBf,EACvCc,KACFD ,EAAK9B,QAAU+B,GAGjB5Z,YAAYC,SAASuB,EAAMvC,KAAKhB,WAEhCgB,KAAKia,KAAO7Y,SAASyZ,g BAAgBtY,EAAMmY,IAG7CE,kBAAmB,SAASrY,GAC1B,GAAIA,GAAQA,EAAKuY,QAAQ,KAAO,EAC9B,MAA OvY,EAEP,IAAIE,GAAIzC,KAAKma,kBAAkB5X,EAC/B,OAAIE,GAAEwM,QACGjP,KAAK4a,kBAAkBnY, EAAEwM,QAAQ2J,SAD1C,SASFyB,IAIFrb,GAAU4a,YADR1a,OAAOwD,UACe,SAASqB,EAAQgX,GAIvC, MAHIhX,IAAUgX,GAAahX,IAAWgX,IACpChX,EAAOrB,UAAYqY,GAEdhX,GAGe,SAASA,EAAQgX,GACvC ,GAAIhX,GAAUgX,GAAahX,IAAWgX,EAAW,CAC/C,GAAIpB,GAAUza,OAAOqb,OAAOQ,EAC5BhX,GAASh F,EAAO4a,EAAS5V,GAE3B,MAAOA,IAoBX9E,EAAImF,YAAYpF,UAAYA,GAE3BJ,SC7OH,SAAUE,GA4FR ,QAASkc,GAAgB/L,GACvB,MAAO7N,UAAS6Z,SAAShM,GAAWiM,EAAYC,EAGlD,QAASC,KACP,MAAOD,G AAYrY,OAASqY,EAAY,GAAKD,EAAU,GASzD,QAASG,GAAiBzb,GACxB0b,EAAMC,aAAc,EACpBC,eAAe3 N,OAAQ,EACvB4N,YAAYC,iBAAiB,WAC3BJ,EAAMK,iBAAiB/b,GACvB0b,EAAMC,aAAc,EACpBD,EAAM M,UA9GV,GAAIN,IAEFzb,KAAM,SAASoP,EAAS2M,EAAO3b,GAM7B,MAL8B,KAA1BD,KAAK8a,QAAQ7L, KACfjP,KAAKiG,IAAIgJ,GACTA,EAAQ4M,QAAUD,EAClB3M,EAAQ6M,KAAO7b,GAEiB,IAA1BD,KAAK8 a,QAAQ7L,IAEvBhJ,IAAK,SAASgJ,GAEZ+L,EAAgB/L,GAASvD,KAAKuD,IAEhC6L,QAAS,SAAS7L,GA ChB,GAAIrM,GAAIoY,EAAgB/L,GAAS6L,QAAQ7L,EAKzC,OAJIrM,IAAK,GAAKxB,SAAS6Z,SAAShM,K AC9BrM,GAAM6Y,YAAYM,WAAaN,YAAY5N,MACzCsN,EAAYrY,OAAS,KAElBF,GAGT3C,GAAI,SAASgP,G ACX,GAAI+M,GAAUhc,KAAKgG,OAAOiJ,EACtB+M,KACFA,EAAQF,KAAKjb,KAAKmb,GAClBA,EAAQH,Q AAUG,EAAQF,KAAO,KACjC9b,KAAK4b,UAGT5V,OAAQ,SAASiJ,GACf,GAAIrM,GAAI5C,KAAK8a,QAAQ 7L,EACrB,IAAU,IAANrM,EAIJ,MAAOoY,GAAgB/L,GAASgN,SAElCL,MAAO,WAEL,GAAI3M,GAAUjP,K AAKkc,aAInB,OAHIjN,IACFA,EAAQ4M,QAAQhb,KAAKoO,GAEnBjP,KAAKmc,YACPnc,KAAK6N,SACE, GAFT,QAKFqO,YAAa,WACX,MAAOd,MAETe,SAAU,WACR,OAAQnc,KAAKub,aAAevb,KAAKoc,WAEnCA,Q AAS,WACP,OAAQjB,EAAYrY,SAAWoY,EAAUpY,QAE3C+K,MAAO,WAWL,GAJI2N,eAAe3N,SAAU,IAC3B2 N,eAAea,oBAAoBjb,UACnCoa,eAAe3N,OAAQ,GAErByO,EAEF,IADA,GAAIla,GACGka,EAAexZ,SACp BV,EAAKka,EAAeL,YAK1BN,iBAAkB,SAAS/b,GACrBA,GACF0c,EAAe5Q,KAAK9L,IAGxB2b,aAAa,GA GXJ,KACAD,KACAoB,IAYJlb,UAASmb,iBAAiB,qBAAsB,WAC9Cf,eAAe3N,OAAQ,IAczB/O,EAAMwc,M AAQA,EACdxc,EAAMuc,iBAAmBA,GACxBzc,SCvHH,SAAUE,GAIR,QAAS0d,GAAeC,EAAmB7c,GACrC6c ,GACFrb,SAAS4S,KAAKvE,YAAYgN,GAC1BpB,EAAiBzb,IACRA,GACTA,IAIJ,QAAS8c,GAAWC,EAAM/ c,GACxB,GAAI+c,GAAQA,EAAK7Z,OAAQ,CAErB,IAAK,GAAwB8Z,GAAKlH,EAD9BmH,EAAOzb,SAAS0b ,yBACXla,EAAE,EAAGC,EAAE8Z,EAAK7Z,OAAsBD,EAAFD,IAASga,EAAID,EAAK/Z,IAAKA,IAC9D8S ,EAAOtU,SAASC,cAAc,QAC9BqU,EAAKqH,IAAM,SACXrH,EAAK9B,KAAOgJ,EACZC,EAAKpN,YAAYiG, EAEnB8G,GAAeK,EAAMjd,OACdA,IACTA,IAtBJ,GAAIyb,GAAmBvc,EAAMuc,gBA2B7Bvc,GAAMke,OA ASN,EACf5d,EAAM0d,eAAiBA,GAEtB5d,SChCH,SAAUE,GAuHR,QAASme,GAAa1a,GACpB,MAAO2a,SA AQnc,YAAYG,mBAAmBqB,IAGhD,QAAS4a,GAAY5a,GACnB,MAAQA,IAAQA,EAAKuY,QAAQ,MAAQ,EAxHv C,GAAI/b,GAASD,EAAMC,OACfE,EAAMH,EAAMG,IACZqc,EAAQxc,EAAMwc,MACdD,EAAmBvc,EAAMuc ,iBACzB9I,EAAyBzT,EAAMyT,uBAC/BG,EAAsB5T,EAAM4T,oBAI5B1T,EAAYD,EAAOG,OAAOqb,OAAO xZ,YAAY/B,YAE/C8O,gBAAiB,WACX9N,KAAKoQ,aAAa,SACpBpQ,KAAKod,QAITA,KAAM,WAEJpd,KAA KuC,KAAOvC,KAAKoQ,aAAa,QAC9BpQ,KAAK4Y,QAAU5Y,KAAKoQ,aAAa,WAEjCpQ,KAAKqd,gBAELrd, KAAK6S,qBAGPA,kBAAmB,WACd7S,KAAKsd,YACJtd,KAAK0S,oBAAoB1S,KAAKuC,OAC9BvC,KAAKud, mBACLvd,KAAKwd,uBAKTlC,EAAMrb,GAAGD,OAKXyd,UAAW,WAILN,EAAYnd,KAAK4Y,WAAaqE,EAAaj d,KAAK4Y,UAClD3W,QAAQC,KAAK,sGACuClC,KAAKuC,KACrDvC,KAAK4Y,SAEX5Y,KAAKgB,SAAShB, KAAKuC,KAAMvC,KAAK4Y,SAC9B5Y,KAAKsd,YAAa,GAIpB5K,oBAAqB,SAASnQ,GAC5B,MAAKgQ,GAAu BhQ,GAA5B,QAEEmQ,EAAoBnQ,EAAMvC,MAE1BA,KAAK0d,eAAenb,IAEb,IAIXmb,eAAgB,SAASnb,GA EvB,GAAIvC,KAAKiI,aAAa,cAAgBjI,KAAK6Y,SAQzC,GAPA7Y,KAAK6Y,UAAW,EAOZha,OAAO2c,iBA AmBA,eAAeO,UAC3Cnd,QAAQ2D,OACH,CACL,GAAI8P,GAASjR,SAASC,cAAc,SACpCgR,GAAOL,YAAc, YAAezP,EAAO,MAC3CvC,KAAKyP,YAAY4C,KAKvBmL,oBAAqB,WACnB,MAAOxd,MAAK2d,iBAMdJ,gBAA iB,WACf,MAAOjC,GAAMzb,KAAKG,KAAMA,KAAK6S,kBAAmB7S,KAAKyd,YAGvDJ,cAAe,WACbrd,KAAK 2d,iBAAkB,EACvB3d,KAAKiV,WAAW,WACdjV,KAAK2d,iBAAkB,EACvB3d,KAAK6S,qBACLvS,KAAKN, SASXf,GAAIqF,QAAQrF,EAAImF,YAAapF,GAc7BF,EAAMyT,uBAAyBA,EAI/B8I,EAAiB,WACfja,SAA Swc,KAAK7U,gBAAgB,cAC9B3H,SAASqE,cACP,GAAIF,aAAY,iBAAkBJ,SAAS,OAM/C/D,SAASyZ,gBA 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":["../../polymer-gestures/src/scope.js ","../../polymer-gestures/src/targetfind.js","../../polymer-gestures/src/touch-a ction.js","../../polymer-gestures/src/eventFactory.js","../../polymer-gestures/s rc/pointermap.js","../../polymer-gestures/src/dispatcher.js","../../polymer-gest ures/src/installer.js","../../polymer-gestures/src/mouse.js","../../polymer-gest ures/src/touch.js","../../polymer-gestures/src/ms.js","../../polymer-gestures/sr c/pointer.js","../../polymer-gestures/src/platform-events.js","../../polymer-ges tures/src/track.js","../../polymer-gestures/src/hold.js","../../polymer-gestures /src/tap.js","../../polymer-expressions/third_party/esprima/esprima.js","../../p olymer-expressions/src/polymer-expressions.js","polymer-versioned.js","../src/bo ot.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" ,"../src/instance/events.js","../src/instance/attributes.js","../src/instance/pr operties.js","../src/instance/mdv.js","../src/instance/base.js","../src/instance /styles.js","../src/declaration/polymer.js","../src/declaration/path.js","../src /declaration/styles.js","../src/declaration/events.js","../src/declaration/prope rties.js","../src/declaration/attributes.js","../src/declaration/mdv.js","../src /declaration/prototype.js","../src/declaration/queue.js","../src/declaration/imp ort.js","../src/declaration/polymer-element.js","../src/lib/auto-binding.js"],"n ames":["window","PolymerGestures","scope","target","shadow","inEl","shadowRoot", "webkitShadowRoot","canTarget","Boolean","elementFromPoint","targetingShadow","s ","this","olderShadow","os","olderShadowRoot","se","querySelector","allShadows", "element","shadows","push","searchRoot","inRoot","x","y","st","sr","t","ssr","ow ner","document","parentNode","nodeType","Node","DOCUMENT_NODE","DOCUMENT_FRAGMEN T_NODE","findTarget","inEvent","clientX","clientY","LCA","a","b","contains","ade pth","depth","bdepth","d","walk","n","u","i","host","deepContains","common","ins ideNode","node","rect","getBoundingClientRect","left","right","top","bottom","ta rgetFinding","bind","shadowSelector","v","selector","rule","attrib2css","selecto rs","styles","hasTouchAction","head","style","touchAction","hasShadowRoot","Shad owDOMPolyfill","createShadowRoot","forEach","r","String","map","el","createEleme nt","textContent","appendChild","MOUSE_PROPS","MOUSE_DEFAULTS","NOP_FACTORY","ev entFactory","preventTap","makeBaseEvent","inType","inDict","e","createEvent","in itEvent","bubbles","cancelable","makeGestureEvent","Object","create","k","keys", "length","makePointerEvent","p","buttons","pressure","pointerId","width","height ","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","PointerMap","USE_MAP" ,"m","Map","pointers","POINTERS_FN","values","prototype","size","set","inId","in dexOf","has","delete","splice","get","clear","callback","thisArg","call","CLONE_ PROPS","CLONE_DEFAULTS","HAS_SVG_INSTANCE","SVGElementInstance","wrap","wrapIfNe eded","dispatcher","pointermap","eventMap","eventSources","eventSourceList","ges tures","gestureQueue","registerSource","name","source","newEvents","events","reg isterGesture","register","es","l","unregister","down","fireEvent","move","type", "fillGestureQueue","up","cancel","tapPrevented","eventHandler","_handledByPG","f n","listen","addEvent","unlisten","removeEvent","eventName","addEventListener_", "boundHandler","addEventListener","removeEventListener_","removeEventListener"," makeEvent","preventDefault","_target","dispatchEvent","cloneEvent","eventCopy"," correspondingUseElement","clone","gestureTrigger","g","j","ev","requestAnimation Frame","boundGestureTrigger","Installer","add","remove","changed","binder","addC allback","removeCallback","changedCallback","MO","observer","mutationWatcher","A rray","toArray","slice","filter","MutationObserver","WebKitMutationObserver","SE LECTOR","OBSERVER_INIT","subtree","childList","attributes","attributeOldValue"," attributeFilter","watchSubtree","observe","enableOnSubtree","readyState","instal lOnLoad","installNewSubtree","findElements","addElement","querySelectorAll","rem oveElement","elementChanged","oldValue","concatLists","accum","list","concat","i sElement","ELEMENT_NODE","flattenMutationTree","inNodes","tree","reduce","mutati ons","mutationHandler","added","addedNodes","removed","removedNodes","console"," warn","DEDUP_DIST","WHICH_TO_BUTTONS","HAS_BUTTONS","MouseEvent","mouseEvents"," POINTER_ID","POINTER_TYPE","lastTouches","isEventSimulatedFromTouch","lts","dx", "Math","abs","dy","prepareEvent","which","mousedown","mouseup","mousemove","rela tedTarget","cleanupMouse","INSTALLER","DEDUP_TIMEOUT","CLICK_COUNT_TIMEOUT","ATT RIB","HAS_TOUCH_ACTION","touchEvents","elementAdded","getAttribute","touchAction ToScrollType","_scrollType","elementRemoved","undefined","oldSt","scrollTypes"," EMITTER","XSCROLLER","YSCROLLER","SCROLLER","exec","firstTouch","isPrimaryTouch" ,"inTouch","identifier","setPrimaryTouch","firstXY","X","Y","scrolling","cancelR esetClickCount","removePrimaryPointer","inPointer","resetClickCount","clickCount ","resetId","setTimeout","clearTimeout","typeToButtons","ret","touch","id","curr entTouchEvent","touchToPointer","cte","detail","webkitRadiusX","radiusX","webkit RadiusY","radiusY","webkitForce","force","self","processTouches","inFunction","t l","changedTouches","shouldScroll","scrollAxis","currentTarget","oa","da","doa", "findTouch","inTL","vacuumTouches","touches","value","key","out","cancelOut","to uchstart","dedupSynthMouse","touchmove","touchcancel","pointer","touchend","clea nUpPointer","lt","HAS_BITMAP_TYPE","MSPointerEvent","MSPOINTER_TYPE_MOUSE","msEv ents","POINTER_TYPES","cleanup","MSPointerDown","MSPointerMove","MSPointerUp","M SPointerCancel","pointerEvents","pointerdown","pointermove","pointerup","pointer cancel","PointerEvent","navigator","msPointerEnabled","ontouchstart","track","WI GGLE_THRESHOLD","clampDir","inDelta","calcPositionDelta","inA","inB","pageX","pa geY","fireTrack","inTrackingData","downEvent","dd","lastMoveEvent","xDirection", "yDirection","ddx","ddy","screenX","screenY","trackInfo","downTarget","tracking" ,"hold","HOLD_DELAY","heldPointer","holdJob","pulse","Date","now","timeStamp","h eld","fireHold","clearInterval","setInterval","inHoldTime","holdTime","tap","sho uldTap","downState","start","altKey","ctrlKey","metaKey","shiftKey","global","as sert","condition","message","Error","isDecimalDigit","ch","isWhiteSpace","fromCh arCode","isLineTerminator","isIdentifierStart","isIdentifierPart","isKeyword","s kipWhitespace","index","charCodeAt","getIdentifier","scanIdentifier","Token","Id entifier","Keyword","NullLiteral","BooleanLiteral","range","scanPunctuator","cod e2","ch2","code","ch1","Punctuator","throwError","Messages","UnexpectedToken","s canNumericLiteral","number","NumericLiteral","parseFloat","scanStringLiteral","q uote","str","octal","StringLiteral","isIdentifierName","token","advance","EOF"," lex","lookahead","peek","pos","messageFormat","error","args","arguments","msg"," replace","whole","description","throwUnexpected","expect","match","matchKeyword" ,"keyword","parseArrayInitialiser","elements","parseExpression","delegate","crea teArrayExpression","parseObjectPropertyKey","createLiteral","createIdentifier"," parseObjectProperty","createProperty","parseObjectInitialiser","properties","cre ateObjectExpression","parseGroupExpression","expr","parsePrimaryExpression","cre ateThisExpression","parseArguments","parseNonComputedProperty","parseNonComputed Member","parseComputedMember","parseLeftHandSideExpression","property","createMe mberExpression","parseUnaryExpression","parsePostfixExpression","createUnaryExpr ession","binaryPrecedence","prec","parseBinaryExpression","stack","operator","po p","createBinaryExpression","parseConditionalExpression","consequent","alternate ","createConditionalExpression","parseFilter","createFilter","parseFilters","par seTopLevel","Syntax","parseInExpression","parseAsExpression","createTopLevel","c reateAsExpression","indexName","createInExpression","parse","inDelegate","state" ,"labelSet","TokenName","ArrayExpression","BinaryExpression","CallExpression","C onditionalExpression","EmptyStatement","ExpressionStatement","Literal","LabeledS tatement","LogicalExpression","MemberExpression","ObjectExpression","Program","P roperty","ThisExpression","UnaryExpression","UnknownLabel","Redeclaration","espr ima","prepareBinding","expressionText","filterRegistry","expression","getExpress ion","scopeIdent","tagName","ex","model","oneTime","binding","getBinding","polym erExpressionScopeIdent_","indexIdent","polymerExpressionIndexIdent_","expression ParseCache","ASTDelegate","Expression","valueFn_","IdentPath","path","Path","obj ect","accessor","dynamicDeps","valid","simplePath","getFn","Filter","notImplemen ted","arg","valueFn","filters","deps","currentPath","ConstantObservable","value_ ","convertStylePropertyName","c","toLowerCase","findScope","prop","parentScopeNa me","hasOwnProperty","isLiteralExpression","pathString","isNaN","Number","Polyme rExpressions","addPath","getValueFrom","setValue","newValue","setValueFrom",{"en d":{"file":"../../polymer-expressions/src/polymer-expressions.js","comments_befo re":[],"nlb":false,"endpos":3741,"pos":3733,"col":8,"line":123,"value":"fullPath ","type":"name"},"start":{"file":"../../polymer-expressions/src/polymer-expressi ons.js","comments_before":[],"nlb":false,"endpos":3741,"pos":3733,"col":8,"line" :123,"value":"fullPath","type":"name"},"name":"fullPath"},"fullPath","fullPath_" ,"last","context","propName","transform","toModelDirection","toModel","toDOM","a pply","unaryOperators","+","-","!","binaryOperators","*","/","%","<",">","<=","> =","==","!=","===","!==","&&","||","op","argument","test","ident","arr","kind"," obj","open","discardChanges","deliver","close","firstTime","firstValue","startRe set","getValue","finishReset","setValueFn","CompoundObserver","ObserverTransform ","count","random","toString","styleObject","parts","join","tokenList","tokens", "prepareInstancePositionChanged","template","templateInstance","PathObserver","p repareInstanceModel","scopeName","parentScope","exposeGetExpression","getExpress ion_","Polymer","version","extend","api","getOwnPropertyNames","pd","getOwnPrope rtyDescriptor","defineProperty","nom","job","wait","stop","Job","go","inContext" ,"boundComplete","complete","h","handle","cancelAnimationFrame","registry","HTML Element","tag","getPrototypeForTag","getPrototypeOf","originalStopPropagation"," Event","stopPropagation","cancelBubble","$super","arrayOfArgs","caller","_super" ,"nameInThis","memoizeSuper","__proto__","n$","method","proto","nextSuper","supe r","deserializeValue","currentValue","inferredType","typeHandlers","string","dat e","boolean","parseInt","JSON","function","declaration","instance","publish","ap is","utils","async","timeout","Platform","flush","cancelAsync","fire","onNode"," event","CustomEvent","asyncFire","classFollows","anew","old","className","classL ist","nop","nob","asyncMethod","log","logFlags","EVENT_PREFIX","addHostListeners ","eventDelegates","localName","methodName","getEventHandler","dispatchMethod"," group","groupEnd","copyInstanceAttributes","a$","_instanceAttributes","hasAttrib ute","setAttribute","takeAttributes","_publishLC","attributeToProperty","propert yForAttribute","search","bindPattern","stringValue","serializeValue","reflectPro pertyToAttribute","serializedValue","removeAttribute","bindProperties","observab le","Observer","bindToInstance","resolveBindingValue","createPropertyObserver"," _observeNames","o","_propertyObserver","registerObservers","observeArrayValue"," openPropertyObserver","notifyPropertyChanges","newValues","oldValues","paths","c alled","ov","nv","invokeMethod","deliverChanges","propertyChanged_","reflect","c allbackName","isArray","closeNamedObserver","ArrayObserver","registerNamedObserv er","bindProperty","observers","_observers","closeObservers","closeObserverArray ","observerArray","o$","_namedObservers","closeNamedObservers","mdv","instanceTe mplate","syntax","bindingDelegate","dom","createInstance","bindings_","enableBin dingsReflection","path_","_recordBinding","mixinSuper","bindFinished","makeEleme ntReady","asyncUnbindAll","_unbound","unbind","_unbindAllJob","unbindAll","cance lUnbindAll","mustachePattern","isBase","PolymerBase","base","created","ready","c reatedCallback","prepareElement","ownerDocument","isStagingDocument","_elementPr epared","shadowRoots","_readied","parseDeclarations","attachedCallback","attache d","enteredView","hasBeenAttached","domReady","detachedCallback","preventDispose ","detached","leftView","enteredViewCallback","leftViewCallback","enteredDocumen tCallback","leftDocumentCallback","parseDeclaration","elementElement","fetchTemp late","root","shadowFromTemplate","shadowRootReady","lightFromTemplate","refNode ","eventController","insertBefore","marshalNodeReferences","$","attributeChanged Callback","attributeChanged","onMutation","listener","disconnect","constructor", "Base","shimCssText","cssText","is","ShadowCSS","makeScopeSelector","STYLE_SCOPE _ATTRIBUTE","STYLE_CONTROLLER_SCOPE","installControllerStyles","findStyleScope", "scopeHasNamedStyle","cssTextForScope","installScopeCssText","installScopeStyle" ,"cssTextToScopeStyle","applyStyleToScope","_scopeStyles","script","_currentScri pt","getRegisteredPrototype","registerPrototype","notifyPrototype","waitingForPr ototype","client","waitPrototype","registerWhenReady","prototypesByName","declar ations","deliverDeclarations","resolveElementPaths","urlResolver","resolveDom"," addResolvePathApi","assetPath","URL","baseURI","resolvePath","urlPath","href","i mportRuleForSheet","sheet","baseUrl","createStyleElement","attr","firstElementCh ild","s$","nextElementSibling","cssTextFromSheet","__resource","matchesSelector" ,"inSelector","matches","STYLE_SELECTOR","STYLE_LOADABLE_MATCH","SHEET_SELECTOR" ,"STYLE_GLOBAL_SCOPE","SCOPE_ATTR","loadStyles","content","templateContent","con vertSheetsToStyles","findLoadableStyles","templateUrl","styleResolver","copyShee tAttributes","replaceChild","link","loadables","installSheets","cacheSheets","ca cheStyles","installLocalSheets","installGlobalStyles","sheets","findNodes","remo veChild","firstChild","matcher","nodes","array","templateNodes","styleForScope", "scopeDescriptor","webkitMatchesSelector","mozMatchesSelector","mixedCaseEventTy pes","parseHostEvents","delegates","addAttributeDelegates","hasEventPrefix","rem oveEventPrefix","trim","prefixLength","findController","controller","prepareEven tBinding","eventType","bindingValue","handler","inferObservers","explodeObserver s","exploded","ni","names","split","optimizePropertyMaps","_publishNames","publi shProperties","requireProperties","lowerCaseMap","propertyDescriptors","property Descriptor","reflects","reflectHintForDescriptor","valueForDescriptor","createPr opertyAccessors","createBindablePrototypeAccessor","ATTRIBUTES_ATTRIBUTE","ATTRI BUTES_REGEX","inheritAttributesObjects","inheritObject","publishAttributes","acc umulateInstanceAttributes","clonable","isInstanceAttribute","blackList","extends ","noscript","assetpath","cache-csstext","installBindingDelegate","ensurePrototy peTraversal","ancestor","extendeeName","buildPrototype","publishConstructor","ex tension","generateBasePrototype","desugarBeforeChaining","chainPrototypes","desu garAfterChaining","inheritMetaData","chained","chainObject","extendee","shimStyl ing","registerCallback","symbol","ctor","extnds","findBasePrototype","ensureBase Api","memoizedBases","extended","mixinMethod","info","typeExtension","findTypeEx tension","registerElement","inherited","queueForElement","mainQueue","importQueu e","nextQueued","whenPolymerReady","queue","waitToReady","CustomElements","HTMLI mports","whenImportsReady","addReadyCallback","check","shouldAdd","flushQueue"," __check","__go","useNative","readied","addToFlushQueue","shift","nextElement","c anReady","isEmpty","upgradeDocumentTree","flushReadyCallbacks","readyCallbacks", "importElements","elementOrFragment","importUrls","urls","url","frag","createDoc umentFragment","rel","import","isRegistered","isCustomTag","init","loadResources ","registered","waitingForQueue","waitingForResources","_register","handleNoScri pt","_needsResources","body","makeSyntax"],"mappings":";;;;;;;;;;AASAA,OAAOC,mBC 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 K6X,YAAY1R,YAAczE,EAAQyE,UAAW,CACxE,GAAIvF,GAAIc,EAAQC,QAAU3B,KAAK6X,YAAYlW,QACv Cd,EAAIa,EAAQE,QAAU5B,KAAK6X,YAAYjW,OACtChB,GAAIA,EAAIC,EAAIA,EAAKb,KAAKqW,kBACz BrW,KAAK4J,WAIXwO,SAAU,SAASlT,EAAQqT,GACzB,GAAIvS,IACFT,SAAS,EACTC,YAAY,EACZgB,Y AAaxG,KAAK6X,YAAYrR,YAC9BL,UAAWnG,KAAK6X,YAAY1R,UAC5BvF,EAAGZ,KAAK6X,YAAYlW,QACp Bd,EAAGb,KAAK6X,YAAYjW,QAElB2W,KACFvS,EAAEwS,SAAWD,EAEf,IAAInT,GAAIL,EAAaU,iBAAi BP,EAAQc,EAC9ChG,MAAKV,OAAOwL,cAAc1F,IAG9BiD,GAAWY,gBAAgB,OAAQ0O,IAClCxY,OAAOC,i BCpFV,SAAUC,GACR,GAAIgJ,GAAahJ,EAAMgJ,WACnBtD,EAAe1F,EAAM0F,aACrBuD,EAAa,GAAIjJ, GAAMsH,WACvB8R,GACFzP,QACE,OACA,MAEFM,KAAM,SAAS5H,GACTA,EAAQgF,YAAchF,EAAQmI,cAC hCvB,EAAWlB,IAAI1F,EAAQyE,WACrB7G,OAAQoC,EAAQpC,OAChB2G,QAASvE,EAAQuE,QACjBrF,EA AGc,EAAQC,QACXd,EAAGa,EAAQE,WAIjB8W,UAAW,SAAStT,EAAGuT,GACrB,MAAsB,UAAlBvT,EAAEo B,YAEyB,IAAtBmS,EAAU1S,SAEXb,EAAEyE,cAEZF,GAAI,SAASjI,GACX,GAAIkX,GAAQtQ,EAAWZ,I AAIhG,EAAQyE,UACnC,IAAIyS,GAAS5Y,KAAK0Y,UAAUhX,EAASkX,GAAQ,CAE3C,GAAI5X,GAAI3B,E AAM+D,cAAcvB,IAAI+W,EAAMtZ,OAAQoC,EAAQwO,cACtD,IAAIlP,EAAG,CACL,GAAIoE,GAAIL,EAA aU,iBAAiB,OACpCF,SAAS,EACTC,YAAY,EACZ5E,EAAGc,EAAQC,QACXd,EAAGa,EAAQE,QACXmR,OAA QrR,EAAQqR,OAChBvM,YAAa9E,EAAQ8E,YACrBL,UAAWzE,EAAQyE,UACnB0S,OAAQnX,EAAQmX,OACh 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 AS,aACTC,MAAO,cAiBT5E,EAAWvb,WACTib,WAAY,SAASH,EAAON,EAAgBO,GAU1C,QAASsB,KAEP,GA AI+D,EAEF,MADAA,IAAY,EACLC,CAGLjU,GAAK0P,aACP9W,EAASsb,YAEX,IAAInT,GAAQf,EAAKmU, SAASzF,EACA1O,EAAK0P,YAAc9W,EAAW6E,OAC9B2Q,EAI1B,OAHIpO,GAAK0P,aACP9W,EAASwb,cAE JrT,EAGT,QAASsT,GAAW/C,GAElB,MADAtR,GAAKqR,SAAS3C,EAAO4C,EAAUlD,GACxBkD,EA9BT,GA AI3C,EACF,MAAOjiB,MAAKynB,SAASzF,EAAOjR,OAAW2Q,EAEzC,IAAIxV,GAAW,GAAI0b,kBAEfL,E AAavnB,KAAKynB,SAASzF,EAAO9V,EAAUwV,GAC5C4F,GAAY,EACZhU,EAAOtT,IA0BX,OAAO,IAAI6n B,mBAAkB3b,EAAUqX,EAASoE,GAAY,IAG9DF,SAAU,SAASzF,EAAO9V,EAAUwV,GAElC,IAAK,GADDrN ,GAAQ8O,EAAMnjB,KAAK2hB,YAAYK,EAAO9V,GACjC1J,EAAI,EAAGA,EAAIxC,KAAKwjB,QAAQ1d,OA AQtD,IACvC6R,EAAQrU,KAAKwjB,QAAQhhB,GAAG4iB,UAAU/Q,GAAO,EAAOqN,EAAgBM,EAC9B9V,EA GpC,OAAOmI,IAGTsQ,SAAU,SAAS3C,EAAO4C,EAAUlD,GAElC,IADA,GAAIoG,GAAQ9nB,KAAKwjB,QA AUxjB,KAAKwjB,QAAQ1d,OAAS,EAC1CgiB,IAAU,GACflD,EAAW5kB,KAAKwjB,QAAQsE,GAAO1C,UAA UR,GAAU,EAAMlD,EAChBM,EAG3C,OAAIhiB,MAAK2hB,WAAWgD,SACX3kB,KAAK2hB,WAAWgD,SAAS3C ,EAAO4C,GADzC,QAeJ,IAAIV,GAAkB,IAAMxU,KAAKqY,SAASC,SAAS,IAAI1b,MAAM,EAiC7DkY,GAA mBtd,WAEjB+gB,YAAa,SAAS5T,GACpB,GAAI6T,KACJ,KAAK,GAAI5T,KAAOD,GACd6T,EAAMznB,KAA KojB,EAAyBvP,GAAO,KAAOD,EAAMC,GAE1D,OAAO4T,GAAMC,KAAK,OAGpBC,UAAW,SAAS/T,GAClB,G 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 D,EAAUh4B,EAAWgiB,EAAKrgB,GAC9C,GAAI+hB,GAAS,SAASvO,GACpB,MAAOnV,GAAU2B,GAAM2c,M AAMxlB,KAAMqc,GAErC6iB,GAASr2B,GAAQ,WAEf,MADA7I,MAAKmyB,WAAavH,EACX1B,EAAIrgB,GA AM2c,MAAMxlB,KAAMsc,aAKjC2gB,cAAe,SAASp0B,EAAM3B,EAAW6rB,GAEvC,GAAIjqB,GAAS5B,EA AU2B,MAEvB3B,GAAU2B,GAAQ7I,KAAKw+B,YAAY11B,EAAQiqB,EAAKlqB,KAIlDguB,kBAAmB,SAASh uB,EAAM41B,GAChC,GAAIW,IACFl4B,UAAWlH,KAAKkH,WAGdm4B,EAAgBr/B,KAAKs/B,kBAAkBb,EA CvCY,KACFD,EAAK7B,QAAU8B,GAGjBjV,YAAYlhB,SAASL,EAAM7I,KAAKkH,WAEhClH,KAAK6+B,KAA O19B,SAASo+B,gBAAgB12B,EAAMu2B,IAG7CE,kBAAmB,SAASz2B,GAC1B,GAAIA,GAAQA,EAAKvB,QA AQ,KAAO,EAC9B,MAAOuB,EAEP,IAAI7C,GAAIhG,KAAK++B,kBAAkBl2B,EAC/B,OAAI7C,GAAEzF,QA CGP,KAAKs/B,kBAAkBt5B,EAAEzF,QAAQg9B,SAD1C,SASF0B,IAIF/3B,GAAUs3B,YADR94B,OAAOwl B,UACe,SAASpI,EAAQ0c,GAIvC,MAHI1c,IAAU0c,GAAa1c,IAAW0c,IACpC1c,EAAOoI,UAAYsU,GAE d1c,GAGe,SAASA,EAAQ0c,GACvC,GAAI1c,GAAU0c,GAAa1c,IAAW0c,EAAW,CAC/C,GAAIjB,GAAU74 B,OAAOC,OAAO65B,EAC5B1c,GAASmG,EAAOsV,EAASzb,GAE3B,MAAOA,IAoBXoG,EAAIgD,YAAYhlB, UAAYA,GAE3B6hB,SClPH,SAAU1pB,GAoIR,QAASogC,GAAgBl/B,GACvB,MAAOY,UAASa,SAASzB,GAA Wm/B,EAAYC,EAGlD,QAASC,KACP,MAAOD,GAAY75B,OAAS65B,EAAY,GAAKD,EAAU,GASzD,QAASG,GA AiBj4B,GACxBk4B,EAAMC,aAAc,EACpBC,eAAe/M,OAAQ,EACvBgN,YAAYC,iBAAiB,WAC3BJ,EAAMK, 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" ,"sourcesContent":["/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of a uthors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * C ode distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */ \nwindow.PolymerGestures = {};\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD styl e license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete se t of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n * /\n\n(function(scope) {\n var target = {\n shadow: function(inEl) {\n i f (inEl) {\n return inEl.shadowRoot || inEl.webkitShadowRoot;\n }\n },\n canTarget: function(shadow) {\n return shadow && Boolean(shadow. elementFromPoint);\n },\n targetingShadow: function(inEl) {\n var s = this.shadow(inEl);\n if (this.canTarget(s)) {\n return s;\n }\ n },\n olderShadow: function(shadow) {\n var os = shadow.olderShadowR oot;\n if (!os) {\n var se = shadow.querySelector('shadow');\n if (se) {\n os = se.olderShadowRoot;\n }\n }\n retur n os;\n },\n allShadows: function(element) {\n var shadows = [], s = this.shadow(element);\n while(s) {\n shadows.push(s);\n s = t his.olderShadow(s);\n }\n return shadows;\n },\n searchRoot: fun ction(inRoot, x, y) {\n if (inRoot) {\n var t = inRoot.elementFromPo int(x, y);\n var st, sr, os;\n // is element a shadow host?\n sr = this.targetingShadow(t);\n while (sr) {\n // find the th e element inside the shadow root\n st = sr.elementFromPoint(x, y);\n if (!st) {\n // check for older shadows\n sr = this .olderShadow(sr);\n } else {\n // shadowed element may conta in a shadow root\n var ssr = this.targetingShadow(st);\n r eturn this.searchRoot(ssr, x, y) || st;\n }\n }\n // ligh t dom element is the target\n return t;\n }\n },\n owner: func tion(element) {\n if (!element) {\n return document;\n }\n var s = element;\n // walk up until you hit the shadow root or document\n while (s.parentNode) {\n s = s.parentNode;\n }\n // the ow ner element is expected to be a Document or ShadowRoot\n if (s.nodeType != Node.DOCUMENT_NODE && s.nodeType != Node.DOCUMENT_FRAGMENT_NODE) {\n s = document;\n }\n return s;\n },\n findTarget: function(inEvent) { \n var x = inEvent.clientX, y = inEvent.clientY;\n // if the listener is in the shadow root, it is much faster to start there\n var s = this.owne r(inEvent.target);\n // if x, y is not in this root, fall back to document search\n if (!s.elementFromPoint(x, y)) {\n s = document;\n }\n return this.searchRoot(s, x, y);\n },\n LCA: function(a, b) {\n if (a === b) {\n return a;\n }\n if (a && !b) {\n retur n a;\n }\n if (b && !a) {\n return b;\n }\n if (!b && !a) {\n return document;\n }\n // fast case, a is a direct des cendant of b or vice versa\n if (a.contains && a.contains(b)) {\n re turn a;\n }\n if (b.contains && b.contains(a)) {\n return b;\n }\n var adepth = this.depth(a);\n var bdepth = this.depth(b);\n var d = adepth - bdepth;\n if (d > 0) {\n a = this.walk(a, d);\n } else {\n b = this.walk(b, -d);\n }\n while(a && b && a !== b) {\n a = this.walk(a, 1);\n b = this.walk(b, 1);\n }\n return a;\n },\n walk: function(n, u) {\n for (var i = 0; n && ( i < u); i++) {\n n = n.parentNode || n.host;\n }\n return n;\n },\n depth: function(n) {\n var d = 0;\n while(n) {\n d++ ;\n n = n.parentNode || n.host;\n }\n return d;\n },\n de epContains: function(a, b) {\n var common = this.LCA(a, b);\n // if a is the common ancestor, it must \"deeply\" contain b\n return common === a; \n },\n insideNode: function(node, x, y) {\n var rect = node.getBound ingClientRect();\n return (rect.left <= x) && (x <= rect.right) && (rect.to p <= y) && (y <= rect.bottom);\n }\n };\n scope.targetFinding = target;\n /**\n * Given an event, finds the \"deepest\" node that could have been the or iginal target before ShadowDOM retargetting\n *\n * @param {Event} Event An event object with clientX and clientY properties\n * @return {Element} The pro bable event origninator\n */\n scope.findTarget = target.findTarget.bind(targ et);\n /**\n * Determines if the \"container\" node deeply contains the \"con tainee\" node, including situations where the \"containee\" is contained by one or more ShadowDOM\n * roots.\n *\n * @param {Node} container\n * @param {Node} containee\n * @return {Boolean}\n */\n scope.deepContains = target.d eepContains.bind(target);\n\n /**\n * Determines if the x/y position is insid e the given node.\n *\n * Example:\n *\n * function upHandler(event) {\n * var innode = PolymerGestures.insideNode(event.target, event.clien tX, event.clientY);\n * if (innode) {\n * // wait for tap?\n * } else {\n * // tap will never happen\n * }\n * }\n *\n * @param {Node} node\n * @param {Number} x Screen X position\n * @param {Number} y screen Y position\n * @return {Boolean}\n */\n scope.in sideNode = target.insideNode;\n\n})(window.PolymerGestures);\n","/*\n *\n * Copy right (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code m ay only be used under the BSD style license found at http://polymer.github.io/LI CENSE.txt\n * The complete set of authors may be found at http://polymer.github. io/AUTHORS.txt\n * The complete set of contributors may be found at http://polym er.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the poly mer project is also\n * subject to an additional IP rights grant found at http:/ /polymer.github.io/PATENTS.txt\n */\n\n(function() {\n function shadowSelector( v) {\n return 'body /deep/ ' + selector(v);\n }\n function selector(v) {\n return '[touch-action=\"' + v + '\"]';\n }\n function rule(v) {\n return '{ -ms-touch-action: ' + v + '; touch-action: ' + v + ';}';\n }\n var attrib2 css = [\n 'none',\n 'auto',\n 'pan-x',\n 'pan-y',\n {\n rule : 'pan-x pan-y',\n selectors: [\n 'pan-x pan-y',\n 'pan-y pan -x'\n ]\n }\n ];\n var styles = '';\n // only install stylesheet if t he browser has touch action support\n var head = document.head;\n var hasTouch Action = typeof document.head.style.touchAction === 'string';\n // only add sha dow selectors if shadowdom is supported\n var hasShadowRoot = !window.ShadowDOM Polyfill && document.head.createShadowRoot;\n\n if (hasTouchAction) {\n attr ib2css.forEach(function(r) {\n if (String(r) === r) {\n styles += se lector(r) + rule(r) + '\\n';\n if (hasShadowRoot) {\n styles += shadowSelector(r) + rule(r) + '\\n';\n }\n } else {\n styles += r.selectors.map(selector) + rule(r.rule) + '\\n';\n if (hasShadowRoot) {\n styles += r.selectors.map(shadowSelector) + rule(r.rule) + '\\n';\ n }\n }\n });\n\n var el = document.createElement('style');\n el.textContent = styles;\n document.head.appendChild(el);\n }\n})();\n"," /*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt\n * The complete set of authors may be found at http://poly mer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at h ttp://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant foun d at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * This is the constructo r for new PointerEvents.\n *\n * New Pointer Events must be given a type, and an optional dictionary of\n * initialization properties.\n *\n * Due to certain pl atform requirements, events returned from the constructor\n * identify as MouseE vents.\n *\n * @constructor\n * @param {String} inType The type of the event to create.\n * @param {Object} [inDict] An optional dictionary of initial event pro perties.\n * @return {Event} A new PointerEvent of type `inType` and initialized with properties from `inDict`.\n */\n(function(scope) {\n\n var MOUSE_PROPS = [\n 'bubbles',\n 'cancelable',\n 'view',\n 'detail',\n 'screenX', \n 'screenY',\n 'clientX',\n 'clientY',\n 'ctrlKey',\n 'altKey',\ n 'shiftKey',\n 'metaKey',\n 'button',\n 'relatedTarget',\n 'page X',\n 'pageY'\n ];\n\n var MOUSE_DEFAULTS = [\n false,\n false,\n null,\n null,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n fa lse,\n false,\n 0,\n null,\n 0,\n 0\n ];\n\n var NOP_FACTORY = function(){ return function(){}; };\n\n var eventFactory = {\n // TODO(dfree dm): this is overridden by tap recognizer, needs review\n preventTap: NOP_FAC TORY,\n makeBaseEvent: function(inType, inDict) {\n var e = document.cre ateEvent('Event');\n e.initEvent(inType, inDict.bubbles || false, inDict.ca ncelable || false);\n e.preventTap = eventFactory.preventTap(e);\n ret urn e;\n },\n makeGestureEvent: function(inType, inDict) {\n inDict = inDict || Object.create(null);\n\n var e = this.makeBaseEvent(inType, inDi ct);\n for (var i = 0, keys = Object.keys(inDict), k; i < keys.length; i++) {\n k = keys[i];\n e[k] = inDict[k];\n }\n return e;\n },\n makePointerEvent: function(inType, inDict) {\n inDict = inDict | | Object.create(null);\n\n var e = this.makeBaseEvent(inType, inDict);\n // define inherited MouseEvent properties\n for(var i = 0, p; i < MOUSE_ PROPS.length; i++) {\n p = MOUSE_PROPS[i];\n e[p] = inDict[p] || M OUSE_DEFAULTS[i];\n }\n e.buttons = inDict.buttons || 0;\n\n // S pec requires that pointers without pressure specified use 0.5 for down\n // state and 0 for up state.\n var pressure = 0;\n if (inDict.pressure) {\n pressure = inDict.pressure;\n } else {\n pressure = e.but tons ? 0.5 : 0;\n }\n\n // add x/y properties aliased to clientX/Y\n e.x = e.clientX;\n e.y = e.clientY;\n\n // define the properties o f the PointerEvent interface\n e.pointerId = inDict.pointerId || 0;\n e.width = inDict.width || 0;\n e.height = inDict.height || 0;\n e.pres sure = pressure;\n e.tiltX = inDict.tiltX || 0;\n e.tiltY = inDict.til tY || 0;\n e.pointerType = inDict.pointerType || '';\n e.hwTimestamp = inDict.hwTimestamp || 0;\n e.isPrimary = inDict.isPrimary || false;\n return e;\n }\n };\n\n scope.eventFactory = eventFactory;\n})(window.Polym erGestures);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All righ ts reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be fou nd at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed b y Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * This module implements an map of pointer states\n */\n(function(scope) {\n var USE_M AP = window.Map && window.Map.prototype.forEach;\n var POINTERS_FN = function() { return this.size; };\n function PointerMap() {\n if (USE_MAP) {\n var m = new Map();\n m.pointers = POINTERS_FN;\n return m;\n } else {\ n this.keys = [];\n this.values = [];\n }\n }\n\n PointerMap.prot otype = {\n set: function(inId, inEvent) {\n var i = this.keys.indexOf(i nId);\n if (i > -1) {\n this.values[i] = inEvent;\n } else {\n this.keys.push(inId);\n this.values.push(inEvent);\n }\n } ,\n has: function(inId) {\n return this.keys.indexOf(inId) > -1;\n }, \n 'delete': function(inId) {\n var i = this.keys.indexOf(inId);\n if (i > -1) {\n this.keys.splice(i, 1);\n this.values.splice(i, 1) ;\n }\n },\n get: function(inId) {\n var i = this.keys.indexOf(i nId);\n return this.values[i];\n },\n clear: function() {\n this .keys.length = 0;\n this.values.length = 0;\n },\n // return value, k ey, map\n forEach: function(callback, thisArg) {\n this.values.forEach(f unction(v, i) {\n callback.call(thisArg, v, this.keys[i], this);\n } , this);\n },\n pointers: function() {\n return this.keys.length;\n }\n };\n\n scope.PointerMap = PointerMap;\n})(window.PolymerGestures);\n","/ *\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * T his code may only be used under the BSD style license found at http://polymer.gi thub.io/LICENSE.txt\n * The complete set of authors may be found at http://polym er.github.io/AUTHORS.txt\n * The complete set of contributors may be found at ht tp://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part o f the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n var CLONE _PROPS = [\n // MouseEvent\n 'bubbles',\n 'cancelable',\n 'view',\n 'detail',\n 'screenX',\n 'screenY',\n 'clientX',\n 'clientY',\n 'ctrlKey',\n 'altKey',\n 'shiftKey',\n 'metaKey',\n 'button',\n 'relatedTarget',\n // DOM Level 3\n 'buttons',\n // PointerEvent\n 'pointerId',\n 'width',\n 'height',\n 'pressure',\n 'tiltX',\n 't iltY',\n 'pointerType',\n 'hwTimestamp',\n 'isPrimary',\n // event i nstance\n 'type',\n 'target',\n 'currentTarget',\n 'which',\n 'pa geX',\n 'pageY',\n 'timeStamp',\n // gesture addons\n 'preventTap',\ n 'tapPrevented'\n ];\n\n var CLONE_DEFAULTS = [\n // MouseEvent\n fa lse,\n false,\n null,\n null,\n 0,\n 0,\n 0,\n 0,\n fals e,\n false,\n false,\n false,\n 0,\n null,\n // DOM Level 3\n 0,\n // PointerEvent\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n '',\n 0,\n false,\n // event instance\n '',\n null,\n null,\n 0,\n 0,\n 0,\n 0,\n function(){},\n false\n ];\n\n var HAS_S VG_INSTANCE = (typeof SVGElementInstance !== 'undefined');\n\n var wrap = windo w.ShadowDOMPolyfill && ShadowDOMPolyfill.wrapIfNeeded || function(e){ return e; };\n\n var eventFactory = scope.eventFactory;\n /**\n * This module is for n ormalizing events. Mouse and Touch events will be\n * collected here, and fire PointerEvents that have the same semantics, no\n * matter the source.\n * E vents fired:\n * - pointerdown: a pointing is added\n * - pointerup: a p ointer is removed\n * - pointermove: a pointer is moved\n * - pointerove r: a pointer crosses into an element\n * - pointerout: a pointer leaves an e lement\n * - pointercancel: a pointer will no longer generate events\n */\ n var dispatcher = {\n pointermap: new scope.PointerMap(),\n eventMap: Ob ject.create(null),\n // Scope objects for native events.\n // This exists for ease of testing.\n eventSources: Object.create(null),\n eventSourceLis t: [],\n gestures: [],\n gestureQueue: [],\n /**\n * Add a new even t source that will generate pointer events.\n *\n * `inSource` must cont ain an array of event names named `events`, and\n * functions with the names specified in the `events` array.\n * @param {string} name A name for the ev ent source\n * @param {Object} source A new source of platform events.\n */\n registerSource: function(name, source) {\n var s = source;\n var newEvents = s.events;\n if (newEvents) {\n newEvents.forEach(fun ction(e) {\n if (s[e]) {\n this.eventMap[e] = s[e].bind(s);\ n }\n }, this);\n this.eventSources[name] = s;\n t his.eventSourceList.push(s);\n }\n },\n registerGesture: function(nam e, source) {\n this.gestures.push(source);\n },\n register: function( element) {\n // NOTE: Work around for #4, don't add listeners to individual Polymer elmenets in SD Polyfill\n if (window.ShadowDOMPolyfill && element !== document) {\n return;\n }\n var l = this.eventSourceList.le ngth;\n for (var i = 0, es; (i < l) && (es = this.eventSourceList[i]); i++) {\n // call eventsource register\n es.register.call(es, element); \n }\n },\n unregister: function(element) {\n var l = this.event SourceList.length;\n for (var i = 0, es; (i < l) && (es = this.eventSourceL ist[i]); i++) {\n // call eventsource register\n es.unregister.cal l(es, element);\n }\n },\n // EVENTS\n down: function(inEvent) {\n this.fireEvent('down', inEvent);\n },\n move: function(inEvent) {\n // pipe move events into gesture queue directly\n inEvent.type = 'move ';\n this.fillGestureQueue(inEvent);\n },\n up: function(inEvent) {\n this.fireEvent('up', inEvent);\n },\n cancel: function(inEvent) {\n inEvent.tapPrevented = true;\n this.fireEvent('up', inEvent);\n },\ n // LISTENER LOGIC\n eventHandler: function(inEvent) {\n // This is used to prevent multiple dispatch of events from\n // platform events. This can happen when two elements in different scopes\n // are set up to create pointer events, which is relevant to Shadow DOM.\n if (inEvent._handledByP G) {\n return;\n }\n var type = inEvent.type;\n var fn = t his.eventMap && this.eventMap[type];\n if (fn) {\n fn(inEvent);\n }\n inEvent._handledByPG = true;\n },\n // set up event listeners\ n listen: function(target, events) {\n events.forEach(function(e) {\n this.addEvent(target, e);\n }, this);\n },\n // remove event lis teners\n unlisten: function(target, events) {\n events.forEach(function( e) {\n this.removeEvent(target, e);\n }, this);\n },\n addEven t: function(target, eventName) {\n // NOTE: Work around for #4, use native event listener in SD Polyfill\n if (window.ShadowDOMPolyfill) {\n ta rget.addEventListener_(eventName, this.boundHandler);\n } else {\n t arget.addEventListener(eventName, this.boundHandler);\n }\n },\n remo veEvent: function(target, eventName) {\n // NOTE: Work around for #4, use n ative event listener in SD Polyfill\n if (window.ShadowDOMPolyfill) {\n target.removeEventListener_(eventName, this.boundHandler);\n } else {\n target.removeEventListener(eventName, this.boundHandler);\n }\n },\n // EVENT CREATION AND TRACKING\n /**\n * Creates a new Event of t ype `inType`, based on the information in\n * `inEvent`.\n *\n * @pa ram {string} inType A string representing the type of event to create\n * @p aram {Event} inEvent A platform event with a target\n * @return {Event} A Po interEvent of type `inType`\n */\n makeEvent: function(inType, inEvent) { \n var e = eventFactory.makePointerEvent(inType, inEvent);\n e.prevent Default = inEvent.preventDefault;\n e.tapPrevented = inEvent.tapPrevented;\ n e._target = e._target || inEvent.target;\n return e;\n },\n // make and dispatch an event in one call\n fireEvent: function(inType, inEvent ) {\n var e = this.makeEvent(inType, inEvent);\n return this.dispatchE vent(e);\n },\n /**\n * Returns a snapshot of inEvent, with writable p roperties.\n *\n * @param {Event} inEvent An event that contains propert ies to copy.\n * @return {Object} An object containing shallow copies of `in Event`'s\n * properties.\n */\n cloneEvent: function(inEvent) {\n var eventCopy = Object.create(null), p;\n for (var i = 0; i < CLONE_PR OPS.length; i++) {\n p = CLONE_PROPS[i];\n eventCopy[p] = inEvent[ p] || CLONE_DEFAULTS[i];\n // Work around SVGInstanceElement shadow tree\ n // Return the <use> element that is represented by the instance for Saf ari, Chrome, IE.\n // This is the behavior implemented by Firefox.\n if (p === 'target' || p === 'relatedTarget') {\n if (HAS_SVG_INSTANC E && eventCopy[p] instanceof SVGElementInstance) {\n eventCopy[p] = e ventCopy[p].correspondingUseElement;\n }\n eventCopy[p] = wrap (eventCopy[p]);\n }\n }\n // keep the semantics of preventDefau lt\n eventCopy.preventDefault = inEvent.preventDefault;\n return event Copy;\n },\n /**\n * Dispatches the event to its target.\n *\n * @param {Event} inEvent The event to be dispatched.\n * @return {Boolean} True if an event handler returns true, false otherwise.\n */\n dispatchEv ent: function(inEvent) {\n var t = inEvent._target;\n if (t) {\n t.dispatchEvent(inEvent);\n // clone the event for the gesture system t o process\n // clone after dispatch to pick up gesture prevention code\n var clone = this.cloneEvent(inEvent);\n clone.target = t;\n this.fillGestureQueue(clone);\n }\n },\n gestureTrigger: function() {\n // process the gesture queue\n for (var i = 0, e; i < this.gesture Queue.length; i++) {\n e = this.gestureQueue[i];\n for (var j = 0, g; j < this.gestures.length; j++) {\n g = this.gestures[j];\n if (g.events.indexOf(e.type) >= 0) {\n g[e.type].call(g, e);\n }\n }\n }\n this.gestureQueue.length = 0;\n },\n fill GestureQueue: function(ev) {\n // only trigger the gesture queue once\n if (!this.gestureQueue.length) {\n requestAnimationFrame(this.boundGest ureTrigger);\n }\n this.gestureQueue.push(ev);\n }\n };\n dispatc her.boundHandler = dispatcher.eventHandler.bind(dispatcher);\n dispatcher.bound GestureTrigger = dispatcher.gestureTrigger.bind(dispatcher);\n scope.dispatcher = dispatcher;\n scope.register = dispatcher.register.bind(dispatcher);\n scop e.unregister = dispatcher.unregister.bind(dispatcher);\n})(window.PolymerGesture s);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserv ed.\n * This code may only be used under the BSD style license found at http://p olymer.github.io/LICENSE.txt\n * The complete set of authors may be found at htt p://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be fo und at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights gr ant found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * This module us es Mutation Observers to dynamically adjust which nodes will\n * generate Pointe r Events.\n *\n * All nodes that wish to generate Pointer Events must have the a ttribute\n * `touch-action` set to `none`.\n */\n(function(scope) {\n var forEa ch = Array.prototype.forEach.call.bind(Array.prototype.forEach);\n var map = Ar ray.prototype.map.call.bind(Array.prototype.map);\n var toArray = Array.prototy pe.slice.call.bind(Array.prototype.slice);\n var filter = Array.prototype.filte r.call.bind(Array.prototype.filter);\n var MO = window.MutationObserver || wind ow.WebKitMutationObserver;\n var SELECTOR = '[touch-action]';\n var OBSERVER_I NIT = {\n subtree: true,\n childList: true,\n attributes: true,\n at tributeOldValue: true,\n attributeFilter: ['touch-action']\n };\n\n functio n Installer(add, remove, changed, binder) {\n this.addCallback = add.bind(bin der);\n this.removeCallback = remove.bind(binder);\n this.changedCallback = changed.bind(binder);\n if (MO) {\n this.observer = new MO(this.mutati onWatcher.bind(this));\n }\n }\n\n Installer.prototype = {\n watchSubtre e: function(target) {\n // Only watch scopes that can target find, as these are top-level.\n // Otherwise we can see duplicate additions and removals that add noise.\n //\n // TODO(dfreedman): For some instances with Sha dowDOMPolyfill, we can see\n // a removal without an insertion when a node is redistributed among\n // shadows. Since it all ends up correct in the do cument, watching only\n // the document will yield the correct mutations to watch.\n if (scope.targetFinding.canTarget(target)) {\n this.observ er.observe(target, OBSERVER_INIT);\n }\n },\n enableOnSubtree: functi on(target) {\n this.watchSubtree(target);\n if (target === document && document.readyState !== 'complete') {\n this.installOnLoad();\n } e lse {\n this.installNewSubtree(target);\n }\n },\n installNewS ubtree: function(target) {\n forEach(this.findElements(target), this.addEle ment, this);\n },\n findElements: function(target) {\n if (target.que rySelectorAll) {\n return target.querySelectorAll(SELECTOR);\n }\n return [];\n },\n removeElement: function(el) {\n this.removeCall back(el);\n },\n addElement: function(el) {\n this.addCallback(el);\n },\n elementChanged: function(el, oldValue) {\n this.changedCallback (el, oldValue);\n },\n concatLists: function(accum, list) {\n return accum.concat(toArray(list));\n },\n // register all touch-action = none no des on document load\n installOnLoad: function() {\n document.addEventLi stener('readystatechange', function() {\n if (document.readyState === 'co mplete') {\n this.installNewSubtree(document);\n }\n }.bind (this));\n },\n isElement: function(n) {\n return n.nodeType === Node .ELEMENT_NODE;\n },\n flattenMutationTree: function(inNodes) {\n // f ind children with touch-action\n var tree = map(inNodes, this.findElements, this);\n // make sure the added nodes are accounted for\n tree.push(f ilter(inNodes, this.isElement));\n // flatten the list\n return tree.r educe(this.concatLists, []);\n },\n mutationWatcher: function(mutations) { \n mutations.forEach(this.mutationHandler, this);\n },\n mutationHand ler: function(m) {\n if (m.type === 'childList') {\n var added = thi s.flattenMutationTree(m.addedNodes);\n added.forEach(this.addElement, thi s);\n var removed = this.flattenMutationTree(m.removedNodes);\n re moved.forEach(this.removeElement, this);\n } else if (m.type === 'attribute s') {\n this.elementChanged(m.target, m.oldValue);\n }\n }\n };\ n\n if (!MO) {\n Installer.prototype.watchSubtree = function(){\n conso le.warn('PolymerGestures: MutationObservers not found, touch-action will not be dynamically detected');\n };\n }\n\n scope.Installer = Installer;\n})(windo w.PolymerGestures);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. A ll rights reserved.\n * This code may only be used under the BSD style license f ound at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contri butors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distri buted by Google as part of the polymer project is also\n * subject to an additio nal IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(funct ion (scope) {\n var dispatcher = scope.dispatcher;\n var pointermap = dispatch er.pointermap;\n // radius around touchend that swallows mouse events\n var DE DUP_DIST = 25;\n\n var WHICH_TO_BUTTONS = [0, 1, 4, 2];\n\n var HAS_BUTTONS = false;\n try {\n HAS_BUTTONS = new MouseEvent('test', {buttons: 1}).buttons === 1;\n } catch (e) {}\n\n // handler block for native mouse events\n var mo useEvents = {\n POINTER_ID: 1,\n POINTER_TYPE: 'mouse',\n events: [\n 'mousedown',\n 'mousemove',\n 'mouseup',\n ],\n register: fu nction(target) {\n dispatcher.listen(target, this.events);\n },\n unr egister: function(target) {\n dispatcher.unlisten(target, this.events);\n },\n lastTouches: [],\n // collide with the global mouse listener\n i sEventSimulatedFromTouch: function(inEvent) {\n var lts = this.lastTouches; \n var x = inEvent.clientX, y = inEvent.clientY;\n for (var i = 0, l = lts.length, t; i < l && (t = lts[i]); i++) {\n // simulated mouse events will be swallowed near a primary touchend\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DIST && dy <= DEDUP_DIST) {\n return true;\n }\n }\n },\n prepareEvent: function(inE vent) {\n var e = dispatcher.cloneEvent(inEvent);\n e.pointerId = this .POINTER_ID;\n e.isPrimary = true;\n e.pointerType = this.POINTER_TYPE ;\n if (!HAS_BUTTONS) {\n e.buttons = WHICH_TO_BUTTONS[e.which] || 0 ;\n }\n return e;\n },\n mousedown: function(inEvent) {\n i f (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.has(t his.POINTER_ID);\n // TODO(dfreedman) workaround for some elements not se nding mouseup\n // http://crbug/149091\n if (p) {\n this. mouseup(inEvent);\n }\n var e = this.prepareEvent(inEvent);\n pointermap.set(this.POINTER_ID, e.target);\n dispatcher.down(e);\n }\n },\n mousemove: function(inEvent) {\n if (!this.isEventSimulate dFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n e.t arget = pointermap.get(this.POINTER_ID);\n dispatcher.move(e);\n }\n },\n mouseup: function(inEvent) {\n if (!this.isEventSimulatedFromTo uch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n e.relatedT arget = e.target;\n e.target = pointermap.get(this.POINTER_ID);\n dispatcher.up(e);\n this.cleanupMouse();\n }\n },\n cleanupMou se: function() {\n pointermap['delete'](this.POINTER_ID);\n }\n };\n\n scope.mouseEvents = mouseEvents;\n})(window.PolymerGestures);\n","/*\n * Copyri ght (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICE NSE.txt\n * The complete set of authors may be found at http://polymer.github.io /AUTHORS.txt\n * The complete set of contributors may be found at http://polymer .github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polyme r project is also\n * subject to an additional IP rights grant found at http://p olymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n var dispatcher = scop e.dispatcher;\n var allShadows = scope.targetFinding.allShadows.bind(scope.targ etFinding);\n var pointermap = dispatcher.pointermap;\n var touchMap = Array.p rototype.map.call.bind(Array.prototype.map);\n // This should be long enough to ignore compat mouse events made by touch\n var DEDUP_TIMEOUT = 2500;\n var CL ICK_COUNT_TIMEOUT = 200;\n var ATTRIB = 'touch-action';\n var INSTALLER;\n va r HAS_TOUCH_ACTION = typeof document.head.style.touchAction === 'string';\n\n / / handler block for native touch events\n var touchEvents = {\n events: [\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel'\n ],\n register: function(target) {\n if (HAS_TOUCH_ACTION) {\n dispatcher.listen(target, this.events);\n } else {\n INSTALLER.enab leOnSubtree(target);\n }\n },\n unregister: function(target) {\n if (HAS_TOUCH_ACTION) {\n dispatcher.unlisten(target, this.events);\n } else {\n // TODO(dfreedman): is it worth it to disconnect the MO?\n }\n },\n elementAdded: function(el) {\n var a = el.getAttribute( ATTRIB);\n var st = this.touchActionToScrollType(a);\n if (st) {\n el._scrollType = st;\n dispatcher.listen(el, this.events);\n / / set touch-action on shadows as well\n allShadows(el).forEach(function(s ) {\n s._scrollType = st;\n dispatcher.listen(s, this.events); \n }, this);\n }\n },\n elementRemoved: function(el) {\n el._scrollType = undefined;\n dispatcher.unlisten(el, this.events);\n // remove touch-action from shadow\n allShadows(el).forEach(function(s) {\n s._scrollType = undefined;\n dispatcher.unlisten(s, this.events); \n }, this);\n },\n elementChanged: function(el, oldValue) {\n v ar a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a); \n var oldSt = this.touchActionToScrollType(oldValue);\n // simply upd ate scrollType if listeners are already established\n if (st && oldSt) {\n el._scrollType = st;\n allShadows(el).forEach(function(s) {\n s._scrollType = st;\n }, this);\n } else if (oldSt) {\n this.elementRemoved(el);\n } else if (st) {\n this.elementAdded(el); \n }\n },\n scrollTypes: {\n EMITTER: 'none',\n XSCROLLER: 'pan-x',\n YSCROLLER: 'pan-y',\n SCROLLER: /^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/\n },\n touchActionToScrollType: function(touchAction) {\n var t = touchAction;\n var st = this.scrollTypes;\n if (t === 'none ') {\n return 'none';\n } else if (t === st.XSCROLLER) {\n re turn 'X';\n } else if (t === st.YSCROLLER) {\n return 'Y';\n } else if (st.SCROLLER.exec(t)) {\n return 'XY';\n }\n },\n POIN TER_TYPE: 'touch',\n firstTouch: null,\n isPrimaryTouch: function(inTouch) {\n return this.firstTouch === inTouch.identifier;\n },\n setPrimary Touch: function(inTouch) {\n // set primary touch if there no pointers, or the only pointer is the mouse\n if (pointermap.pointers() === 0 || (pointer map.pointers() === 1 && pointermap.has(1))) {\n this.firstTouch = inTouch .identifier;\n this.firstXY = {X: inTouch.clientX, Y: inTouch.clientY};\n this.scrolling = false;\n this.cancelResetClickCount();\n }\ n },\n removePrimaryPointer: function(inPointer) {\n if (inPointer.is Primary) {\n this.firstTouch = null;\n this.firstXY = null;\n this.resetClickCount();\n }\n },\n clickCount: 0,\n resetId: nu ll,\n resetClickCount: function() {\n var fn = function() {\n thi s.clickCount = 0;\n this.resetId = null;\n }.bind(this);\n this .resetId = setTimeout(fn, CLICK_COUNT_TIMEOUT);\n },\n cancelResetClickCou nt: function() {\n if (this.resetId) {\n clearTimeout(this.resetId); \n }\n },\n typeToButtons: function(type) {\n var ret = 0;\n if (type === 'touchstart' || type === 'touchmove') {\n ret = 1;\n }\n return ret;\n },\n findTarget: function(touch, id) {\n if (t his.currentTouchEvent.type === 'touchstart') {\n return scope.findTarget( touch);\n }\n // reuse target we found in touchstart\n return poi ntermap.get(id);\n },\n touchToPointer: function(inTouch) {\n var cte = this.currentTouchEvent;\n var e = dispatcher.cloneEvent(inTouch);\n // Spec specifies that pointerId 1 is reserved for Mouse.\n // Touch ident ifiers can start at 0.\n // Add 2 to the touch identifier for compatibility .\n var id = e.pointerId = inTouch.identifier + 2;\n e.target = this.f indTarget(inTouch, id);\n e.bubbles = true;\n e.cancelable = true;\n e.detail = this.clickCount;\n e.buttons = this.typeToButtons(cte.type); \n e.width = inTouch.webkitRadiusX || inTouch.radiusX || 0;\n e.height = inTouch.webkitRadiusY || inTouch.radiusY || 0;\n e.pressure = inTouch.we bkitForce || inTouch.force || 0.5;\n e.isPrimary = this.isPrimaryTouch(inTo uch);\n e.pointerType = this.POINTER_TYPE;\n // forward touch preventD efaults\n var self = this;\n e.preventDefault = function() {\n self.scrolling = false;\n self.firstXY = null;\n cte.preventDefaul t();\n };\n return e;\n },\n processTouches: function(inEvent, i nFunction) {\n var tl = inEvent.changedTouches;\n this.currentTouchEve nt = inEvent;\n for (var i = 0, t; i < tl.length; i++) {\n t = tl[i] ;\n inFunction.call(this, this.touchToPointer(t));\n }\n },\n // For single axis scrollers, determines whether the element should emit\n // pointer events or behave as a scroller\n shouldScroll: function(inEvent) {\n if (this.firstXY) {\n var ret;\n var scrollAxis = inEvent.cu rrentTarget._scrollType;\n if (scrollAxis === 'none') {\n // thi s element is a touch-action: none, should never scroll\n ret = false;\n } else if (scrollAxis === 'XY') {\n // this element should alwa ys scroll\n ret = true;\n } else {\n var t = inEvent.ch angedTouches[0];\n // check the intended scroll axis, and other axis\n var a = scrollAxis;\n var oa = scrollAxis === 'Y' ? 'X' : 'Y'; \n var da = Math.abs(t['client' + a] - this.firstXY[a]);\n var doa = Math.abs(t['client' + oa] - this.firstXY[oa]);\n // if delta in the scroll axis > delta other axis, scroll instead of\n // making event s\n ret = da >= doa;\n }\n this.firstXY = null;\n return ret;\n }\n },\n findTouch: function(inTL, inId) {\n for ( var i = 0, l = inTL.length, t; i < l && (t = inTL[i]); i++) {\n if (t.ide ntifier === inId) {\n return true;\n }\n }\n },\n // In some instances, a touchstart can happen without a touchend. This\n // leav es the pointermap in a broken state.\n // Therefore, on every touchstart, we remove the touches that did not fire a\n // touchend event.\n // To keep s tate globally consistent, we fire a\n // pointercancel for this \"abandoned\" touch\n vacuumTouches: function(inEvent) {\n var tl = inEvent.touches;\ n // pointermap.pointers() should be < tl.length here, as the touchstart ha s not\n // been processed yet.\n if (pointermap.pointers() >= tl.lengt h) {\n var d = [];\n pointermap.forEach(function(value, key) {\n // Never remove pointerId == 1, which is mouse.\n // Touch iden tifiers are 2 smaller than their pointerId, which is the\n // index in pointermap.\n if (key !== 1 && !this.findTouch(tl, key - 2)) {\n var p = value.out;\n d.push(p);\n }\n }, this);\ n d.forEach(this.cancelOut, this);\n }\n },\n touchstart: func tion(inEvent) {\n this.vacuumTouches(inEvent);\n this.setPrimaryTouch( inEvent.changedTouches[0]);\n this.dedupSynthMouse(inEvent);\n if (!th is.scrolling) {\n this.clickCount++;\n this.processTouches(inEvent , this.down);\n }\n },\n down: function(inPointer) {\n var p = p ointermap.set(inPointer.pointerId, inPointer.target);\n dispatcher.down(inP ointer);\n },\n touchmove: function(inEvent) {\n if (HAS_TOUCH_ACTION ) {\n this.processTouches(inEvent, this.move);\n } else {\n i f (!this.scrolling) {\n if (this.shouldScroll(inEvent)) {\n this.scrolling = true;\n this.touchcancel(inEvent);\n } else {\n inEvent.preventDefault();\n this.processTouches(inEve nt, this.move);\n }\n }\n }\n },\n move: function(inP ointer) {\n var pointer = pointermap.get(inPointer.pointerId);\n // a finger drifted off the screen, ignore it\n if (!pointer) {\n return; \n }\n dispatcher.move(inPointer);\n },\n touchend: function(inE vent) {\n this.dedupSynthMouse(inEvent);\n this.processTouches(inEvent , this.up);\n },\n up: function(inPointer) {\n if (!this.scrolling) { \n inPointer.relatedTarget = scope.findTarget(inPointer);\n dispat cher.up(inPointer);\n }\n this.cleanUpPointer(inPointer);\n },\n cancel: function(inPointer) {\n inPointer.relatedTarget = scope.findTarget (inPointer);\n dispatcher.cancel(inPointer);\n this.cleanUpPointer(inP ointer);\n },\n touchcancel: function(inEvent) {\n this.processTouche s(inEvent, this.cancel);\n },\n cleanUpPointer: function(inPointer) {\n pointermap['delete'](inPointer.pointerId);\n this.removePrimaryPointer(i nPointer);\n },\n // prevent synth mouse events from creating pointer even ts\n dedupSynthMouse: function(inEvent) {\n var lts = scope.mouseEvents. lastTouches;\n var t = inEvent.changedTouches[0];\n // only the primar y finger will synth mouse events\n if (this.isPrimaryTouch(t)) {\n / / remember x/y of last touch\n var lt = {x: t.clientX, y: t.clientY};\n lts.push(lt);\n var fn = (function(lts, lt){\n var i = lts .indexOf(lt);\n if (i > -1) {\n lts.splice(i, 1);\n }\n }).bind(null, lts, lt);\n setTimeout(fn, DEDUP_TIMEOUT);\n }\n }\n };\n\n if (!HAS_TOUCH_ACTION) {\n INSTALLER = new scope.Insta ller(touchEvents.elementAdded, touchEvents.elementRemoved, touchEvents.elementCh anged, touchEvents);\n }\n\n scope.touchEvents = touchEvents;\n})(window.Polym erGestures);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All righ ts reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be fou nd at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed b y Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(sco pe) {\n var dispatcher = scope.dispatcher;\n var pointermap = dispatcher.point ermap;\n var HAS_BITMAP_TYPE = window.MSPointerEvent && typeof window.MSPointer Event.MSPOINTER_TYPE_MOUSE === 'number';\n var msEvents = {\n events: [\n 'MSPointerDown',\n 'MSPointerMove',\n 'MSPointerUp',\n 'MSPoin terCancel',\n ],\n register: function(target) {\n dispatcher.listen(t arget, this.events);\n },\n unregister: function(target) {\n dispatch er.unlisten(target, this.events);\n },\n POINTER_TYPES: [\n '',\n 'unavailable',\n 'touch',\n 'pen',\n 'mouse'\n ],\n prepa reEvent: function(inEvent) {\n var e = inEvent;\n if (HAS_BITMAP_TYPE) {\n e = dispatcher.cloneEvent(inEvent);\n e.pointerType = this.PO INTER_TYPES[inEvent.pointerType];\n }\n return e;\n },\n cleanup : function(id) {\n pointermap['delete'](id);\n },\n MSPointerDown: fu nction(inEvent) {\n var e = this.prepareEvent(inEvent);\n pointermap.s et(inEvent.pointerId, e.target);\n dispatcher.down(e);\n },\n MSPoint erMove: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n e. target = pointermap.get(e.pointerId);\n dispatcher.move(e);\n },\n MS PointerUp: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n e.relatedTarget = e.target;\n e.target = pointermap.get(e.pointerId);\n dispatcher.up(e);\n this.cleanup(inEvent.pointerId);\n },\n MSPoin terCancel: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n e.relatedTarget = e.target;\n e.target = pointermap.get(e.pointerId);\n dispatcher.cancel(e);\n this.cleanup(inEvent.pointerId);\n }\n };\n\ n scope.msEvents = msEvents;\n})(window.PolymerGestures);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may onl y be used under the BSD style license found at http://polymer.github.io/LICENSE. txt\n * The complete set of authors may be found at http://polymer.github.io/AUT HORS.txt\n * The complete set of contributors may be found at http://polymer.git hub.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer pr oject is also\n * subject to an additional IP rights grant found at http://polym er.github.io/PATENTS.txt\n */\n\n(function(scope) {\n var dispatcher = scope.di spatcher;\n var pointermap = dispatcher.pointermap;\n var pointerEvents = {\n events: [\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointercancel'\n ],\n prepareEvent: function(inEvent) {\n return dispatcher.cloneEvent(inEvent);\n },\n register: function(target) {\n dispatcher.listen(target, this.events);\n },\n unregister: function(targ et) {\n dispatcher.unlisten(target, this.events);\n },\n cleanup: fun ction(id) {\n pointermap['delete'](id);\n },\n pointerdown: function( inEvent) {\n var e = this.prepareEvent(inEvent);\n pointermap.set(e.po interId, e.target);\n dispatcher.down(e);\n },\n pointermove: functio n(inEvent) {\n var e = this.prepareEvent(inEvent);\n e.target = pointe rmap.get(e.pointerId);\n dispatcher.move(e);\n },\n pointerup: functi on(inEvent) {\n var e = this.prepareEvent(inEvent);\n e.relatedTarget = e.target;\n e.target = pointermap.get(e.pointerId);\n dispatcher.up( e);\n this.cleanup(inEvent.pointerId);\n },\n pointercancel: function (inEvent) {\n var e = this.prepareEvent(inEvent);\n e.relatedTarget = e.target;\n e.target = pointermap.get(e.pointerId);\n dispatcher.cance l(e);\n this.cleanup(inEvent.pointerId);\n }\n };\n\n scope.pointerEve nts = pointerEvents;\n})(window.PolymerGestures);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * T he complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\ n * The complete set of contributors may be found at http://polymer.github.io/CO NTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github .io/PATENTS.txt\n */\n\n/**\n * This module contains the handlers for native pla tform events.\n * From here, the dispatcher is called to create unified pointer events.\n * Included are touch events (v1), mouse events, and MSPointerEvents.\n */\n(function(scope) {\n var dispatcher = scope.dispatcher;\n\n if (window.Po interEvent) {\n dispatcher.registerSource('pointer', scope.pointerEvents);\n } else if (window.navigator.msPointerEnabled) {\n dispatcher.registerSource( 'ms', scope.msEvents);\n } else {\n dispatcher.registerSource('mouse', scope .mouseEvents);\n if (window.ontouchstart !== undefined) {\n dispatcher.r egisterSource('touch', scope.touchEvents);\n }\n }\n\n dispatcher.register( document);\n})(window.PolymerGestures);\n","/*\n * Copyright (c) 2014 The Polyme r Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complet e set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The co mplete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS .txt\n * Code distributed by Google as part of the polymer project is also\n * s ubject to an additional IP rights grant found at http://polymer.github.io/PATENT S.txt\n */\n\n/**\n * This event denotes the beginning of a series of tracking e vents.\n *\n * @module PointerGestures\n * @submodule Events\n * @class tracksta rt\n */\n/**\n * Pixels moved in the x direction since trackstart.\n * @type Num ber\n * @property dx\n */\n/**\n * Pixes moved in the y direction since tracksta rt.\n * @type Number\n * @property dy\n */\n/**\n * Pixels moved in the x direct ion since the last track.\n * @type Number\n * @property ddx\n */\n/**\n * Pixle s moved in the y direction since the last track.\n * @type Number\n * @property ddy\n */\n/**\n * The clientX position of the track gesture.\n * @type Number\n * @property clientX\n */\n/**\n * The clientY position of the track gesture.\n * @type Number\n * @property clientY\n */\n/**\n * The pageX position of the trac k gesture.\n * @type Number\n * @property pageX\n */\n/**\n * The pageY position of the track gesture.\n * @type Number\n * @property pageY\n */\n/**\n * The sc reenX position of the track gesture.\n * @type Number\n * @property screenX\n */ \n/**\n * The screenY position of the track gesture.\n * @type Number\n * @prope rty screenY\n */\n/**\n * The last x axis direction of the pointer.\n * @type Nu mber\n * @property xDirection\n */\n/**\n * The last y axis direction of the poi nter.\n * @type Number\n * @property yDirection\n */\n/**\n * A shared object be tween all tracking events.\n * @type Object\n * @property trackInfo\n */\n/**\n * The element currently under the pointer.\n * @type Element\n * @property relat edTarget\n */\n/**\n * The type of pointer that make the track gesture.\n * @typ e String\n * @property pointerType\n */\n/**\n *\n * This event fires for all po inter movement being tracked.\n *\n * @class track\n * @extends trackstart\n */\ n/**\n * This event fires when the pointer is no longer being tracked.\n *\n * @ class trackend\n * @extends trackstart\n */\n\n (function(scope) {\n var dispa tcher = scope.dispatcher;\n var eventFactory = scope.eventFactory;\n var poi ntermap = new scope.PointerMap();\n var track = {\n events: [\n 'dow n',\n 'move',\n 'up',\n ],\n WIGGLE_THRESHOLD: 4,\n clam pDir: function(inDelta) {\n return inDelta > 0 ? 1 : -1;\n },\n ca lcPositionDelta: function(inA, inB) {\n var x = 0, y = 0;\n if (inA && inB) {\n x = inB.pageX - inA.pageX;\n y = inB.pageY - inA.pag eY;\n }\n return {x: x, y: y};\n },\n fireTrack: function(in Type, inEvent, inTrackingData) {\n var t = inTrackingData;\n var d = this.calcPositionDelta(t.downEvent, inEvent);\n var dd = this.calcPositio nDelta(t.lastMoveEvent, inEvent);\n if (dd.x) {\n t.xDirection = t his.clampDir(dd.x);\n }\n if (dd.y) {\n t.yDirection = this. clampDir(dd.y);\n }\n var e = eventFactory.makeGestureEvent(inType, {\n bubbles: true,\n cancelable: true,\n dx: d.x,\n dy: d.y,\n ddx: dd.x,\n ddy: dd.y,\n x: inEvent.x,\n y: inEvent.y,\n clientX: inEvent.clientX,\n clientY: in Event.clientY,\n pageX: inEvent.pageX,\n pageY: inEvent.pageY,\n screenX: inEvent.screenX,\n screenY: inEvent.screenY,\n xDirection: t.xDirection,\n yDirection: t.yDirection,\n trackIn fo: t.trackInfo,\n relatedTarget: inEvent.relatedTarget,\n point erType: inEvent.pointerType,\n pointerId: inEvent.pointerId\n });\ n t.downTarget.dispatchEvent(e);\n },\n down: function(inEvent) {\ n if (inEvent.isPrimary && (inEvent.pointerType === 'mouse' ? inEvent.butt ons === 1 : true)) {\n var p = {\n downEvent: inEvent,\n downTarget: inEvent.target,\n trackInfo: {},\n lastMove Event: null,\n xDirection: 0,\n yDirection: 0,\n t racking: false\n };\n pointermap.set(inEvent.pointerId, p);\n }\n },\n move: function(inEvent) {\n var p = pointermap.get(in Event.pointerId);\n if (p) {\n if (!p.tracking) {\n var d = this.calcPositionDelta(p.downEvent, inEvent);\n var move = d.x * d .x + d.y * d.y;\n // start tracking only if finger moves more than WIG GLE_THRESHOLD\n if (move > this.WIGGLE_THRESHOLD) {\n p.tr acking = true;\n this.fireTrack('trackstart', p.downEvent, p);\n this.fireTrack('track', inEvent, p);\n }\n } else {\n this.fireTrack('track', inEvent, p);\n }\n p.lastMove Event = inEvent;\n }\n },\n up: function(inEvent) {\n var p = pointermap.get(inEvent.pointerId);\n if (p) {\n if (p.tracking) {\n this.fireTrack('trackend', inEvent, p);\n }\n poin termap.delete(inEvent.pointerId);\n }\n }\n };\n dispatcher.regist erGesture('track', track);\n })(window.PolymerGestures);\n","/*\n * Copyright (c ) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.tx t\n * The complete set of authors may be found at http://polymer.github.io/AUTHO RS.txt\n * The complete set of contributors may be found at http://polymer.githu b.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer proj ect is also\n * subject to an additional IP rights grant found at http://polymer .github.io/PATENTS.txt\n */\n\n/**\n * This event is fired when a pointer is hel d down for 200ms.\n *\n * @module PointerGestures\n * @submodule Events\n * @cla ss hold\n */\n/**\n * Type of pointer that made the holding event.\n * @type Str ing\n * @property pointerType\n */\n/**\n * Screen X axis position of the held p ointer\n * @type Number\n * @property clientX\n */\n/**\n * Screen Y axis positi on of the held pointer\n * @type Number\n * @property clientY\n */\n/**\n * Type of pointer that made the holding event.\n * @type String\n * @property pointerT ype\n */\n/**\n * This event is fired every 200ms while a pointer is held down.\ n *\n * @class holdpulse\n * @extends hold\n */\n/**\n * Milliseconds pointer ha s been held down.\n * @type Number\n * @property holdTime\n */\n/**\n * This eve nt is fired when a held pointer is released or moved.\n *\n * @class released\n */\n\n(function(scope) {\n var dispatcher = scope.dispatcher;\n var eventFacto ry = scope.eventFactory;\n var hold = {\n // wait at least HOLD_DELAY ms bet ween hold and pulse events\n HOLD_DELAY: 200,\n // pointer can move WIGGLE _THRESHOLD pixels before not counting as a hold\n WIGGLE_THRESHOLD: 16,\n events: [\n 'down',\n 'move',\n 'up',\n ],\n heldPointer: n ull,\n holdJob: null,\n pulse: function() {\n var hold = Date.now() - this.heldPointer.timeStamp;\n var type = this.held ? 'holdpulse' : 'hold'; \n this.fireHold(type, hold);\n this.held = true;\n },\n cancel: function() {\n clearInterval(this.holdJob);\n if (this.held) {\n this.fireHold('release');\n }\n this.held = false;\n this.held Pointer = null;\n this.target = null;\n this.holdJob = null;\n },\n down: function(inEvent) {\n if (inEvent.isPrimary && !this.heldPointer) {\n this.heldPointer = inEvent;\n this.target = inEvent.target;\n this.holdJob = setInterval(this.pulse.bind(this), this.HOLD_DELAY);\n }\n },\n up: function(inEvent) {\n if (this.heldPointer && this.he ldPointer.pointerId === inEvent.pointerId) {\n this.cancel();\n }\n },\n move: function(inEvent) {\n if (this.heldPointer && this.heldPoi nter.pointerId === inEvent.pointerId) {\n var x = inEvent.clientX - this. heldPointer.clientX;\n var y = inEvent.clientY - this.heldPointer.clientY ;\n if ((x * x + y * y) > this.WIGGLE_THRESHOLD) {\n this.cancel ();\n }\n }\n },\n fireHold: function(inType, inHoldTime) {\n var p = {\n bubbles: true,\n cancelable: true,\n point erType: this.heldPointer.pointerType,\n pointerId: this.heldPointer.point erId,\n x: this.heldPointer.clientX,\n y: this.heldPointer.clientY \n };\n if (inHoldTime) {\n p.holdTime = inHoldTime;\n }\n var e = eventFactory.makeGestureEvent(inType, p);\n this.target.dispa tchEvent(e);\n }\n };\n dispatcher.registerGesture('hold', hold);\n})(windo w.PolymerGestures);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. A ll rights reserved.\n * This code may only be used under the BSD style license f ound at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contri butors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distri buted by Google as part of the polymer project is also\n * subject to an additio nal IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * This event is fired when a pointer quickly goes down and up, and is used to\n * denote activation.\n *\n * Any gesture event can prevent the tap event from be ing created by calling\n * `event.preventTap`.\n *\n * Any pointer event can pre vent the tap by setting the `tapPrevented` property\n * on itself.\n *\n * @modu le PointerGestures\n * @submodule Events\n * @class tap\n */\n/**\n * X axis pos ition of the tap.\n * @property x\n * @type Number\n */\n/**\n * Y axis position of the tap.\n * @property y\n * @type Number\n */\n/**\n * Type of the pointer that made the tap.\n * @property pointerType\n * @type String\n */\n(function(sc ope) {\n var dispatcher = scope.dispatcher;\n var eventFactory = scope.eventFa ctory;\n var pointermap = new scope.PointerMap();\n var tap = {\n events: [ \n 'down',\n 'up'\n ],\n down: function(inEvent) {\n if (in Event.isPrimary && !inEvent.tapPrevented) {\n pointermap.set(inEvent.poin terId, {\n target: inEvent.target,\n buttons: inEvent.buttons, \n x: inEvent.clientX,\n y: inEvent.clientY\n });\n }\n },\n shouldTap: function(e, downState) {\n if (e.pointerType == = 'mouse') {\n // only allow left click to tap for mouse\n return downState.buttons === 1;\n }\n return !e.tapPrevented;\n },\n up : function(inEvent) {\n var start = pointermap.get(inEvent.pointerId);\n if (start && this.shouldTap(inEvent, start)) {\n // up.relatedTarget i s target currently under finger\n var t = scope.targetFinding.LCA(start.t arget, inEvent.relatedTarget);\n if (t) {\n var e = eventFactory .makeGestureEvent('tap', {\n bubbles: true,\n cancelable: true,\n x: inEvent.clientX,\n y: inEvent.clientY,\n detail: inEvent.detail,\n pointerType: inEvent.pointerType,\n pointerId: inEvent.pointerId,\n altKey: inEvent.altKey,\n ctrlKey: inEvent.ctrlKey,\n metaKey: inEvent.metaKey,\n shiftKey: inEvent.shiftKey\n });\n t.dispatchEvent(e);\ n }\n }\n pointermap.delete(inEvent.pointerId);\n }\n };\n // patch eventFactory to remove id from tap's pointermap for preventTap calls\n eventFactory.preventTap = function(e) {\n return function() {\n e.tapP revented = true;\n pointermap.delete(e.pointerId);\n };\n };\n dispatc her.registerGesture('tap', tap);\n})(window.PolymerGestures);\n","/*\n Copyrigh t (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>\n Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@ gmail.com>\n Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n Copyright ( C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n Copyright (C) 2012 K ris Kowal <kris.kowal@cixar.com>\n Copyright (C) 2012 Yusuke Suzuki <utatane.te a@gmail.com>\n Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitt ed provided that the following conditions are met:\n\n * Redistributions of s ource code must retain the above copyright\n notice, this list of condition s and the following disclaimer.\n * Redistributions in binary form must repro duce the above copyright\n notice, this list of conditions and the followin g disclaimer in the\n documentation and/or other materials provided with th e distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONT RIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTI CULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DA MAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERV ICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TO RT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(func tion (global) {\n 'use strict';\n\n var Token,\n TokenName,\n Syntax,\n Messages,\n source,\n index,\n length,\n delegate,\n lookahead,\n state;\n\n Token = {\n BooleanLiteral: 1,\n EOF: 2,\n Identifier: 3,\n Keyword: 4, \n NullLiteral: 5,\n NumericLiteral: 6,\n Punctuator: 7,\n StringLiteral: 8\n };\n\n TokenName = {};\n TokenName[Token.Bool eanLiteral] = 'Boolean';\n TokenName[Token.EOF] = '<end>';\n TokenName[Tok en.Identifier] = 'Identifier';\n TokenName[Token.Keyword] = 'Keyword';\n T okenName[Token.NullLiteral] = 'Null';\n TokenName[Token.NumericLiteral] = 'Nu meric';\n TokenName[Token.Punctuator] = 'Punctuator';\n TokenName[Token.St ringLiteral] = 'String';\n\n Syntax = {\n ArrayExpression: 'ArrayExpre ssion',\n BinaryExpression: 'BinaryExpression',\n CallExpression: 'CallExpression',\n ConditionalExpression: 'ConditionalExpression',\n EmptyStatement: 'EmptyStatement',\n ExpressionStatement: 'ExpressionS tatement',\n Identifier: 'Identifier',\n Literal: 'Literal',\n LabeledStatement: 'LabeledStatement',\n LogicalExpression: 'LogicalEx pression',\n MemberExpression: 'MemberExpression',\n ObjectExpress ion: 'ObjectExpression',\n Program: 'Program',\n Property: 'Proper ty',\n ThisExpression: 'ThisExpression',\n UnaryExpression: 'Unary Expression'\n };\n\n // Error messages should be identical to V8.\n Mes sages = {\n UnexpectedToken: 'Unexpected token %0',\n UnknownLabe l: 'Undefined label \\'%0\\'',\n Redeclaration: '%0 \\'%1\\' has already been declared'\n };\n\n // Ensure the condition is true, otherwise throw a n error.\n // This is only to have a better contract semantic, i.e. another s afety net\n // to catch a logic error. The condition shall be fulfilled in no rmal case.\n // Do NOT use this to enforce a certain condition on any user in put.\n\n function assert(condition, message) {\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n }\n\n functi on isDecimalDigit(ch) {\n return (ch >= 48 && ch <= 57); // 0..9\n } \n\n\n // 7.2 White Space\n\n function isWhiteSpace(ch) {\n return (ch === 32) || // space\n (ch === 9) || // tab\n (ch === 0xB) ||\n (ch === 0xC) ||\n (ch === 0xA0) ||\n (ch >= 0x1680 && '\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\ \u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\uFEFF'.indexOf(String.f romCharCode(ch)) > 0);\n }\n\n // 7.3 Line Terminators\n\n function isL ineTerminator(ch) {\n return (ch === 10) || (ch === 13) || (ch === 0x2028 ) || (ch === 0x2029);\n }\n\n // 7.6 Identifier Names and Identifiers\n\n function isIdentifierStart(ch) {\n return (ch === 36) || (ch === 95) | | // $ (dollar) and _ (underscore)\n (ch >= 65 && ch <= 90) || // A..Z\n (ch >= 97 && ch <= 122); // a..z\n }\n\n function isIdentifierPart(ch) {\n return (ch === 36) || (ch === 95) || / / $ (dollar) and _ (underscore)\n (ch >= 65 && ch <= 90) || / / A..Z\n (ch >= 97 && ch <= 122) || // a..z\n (ch > = 48 && ch <= 57); // 0..9\n }\n\n // 7.6.1.1 Keywords\n\n fu nction isKeyword(id) {\n return (id === 'this')\n }\n\n // 7.4 Comm ents\n\n function skipWhitespace() {\n while (index < length && isWhit eSpace(source.charCodeAt(index))) {\n ++index;\n }\n }\n\n function getIdentifier() {\n var start, ch;\n\n start = index++; \n while (index < length) {\n ch = source.charCodeAt(index);\n if (isIdentifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n\n return sour ce.slice(start, index);\n }\n\n function scanIdentifier() {\n var s tart, id, type;\n\n start = index;\n\n id = getIdentifier();\n\n // There is no keyword or literal with only one character.\n // Thu s, it must be an identifier.\n if (id.length === 1) {\n type = Token.Identifier;\n } else if (isKeyword(id)) {\n type = Toke n.Keyword;\n } else if (id === 'null') {\n type = Token.NullLi teral;\n } else if (id === 'true' || id === 'false') {\n type = Token.BooleanLiteral;\n } else {\n type = Token.Identifier;\ n }\n\n return {\n type: type,\n value: id,\ n range: [start, index]\n };\n }\n\n\n // 7.7 Punctuator s\n\n function scanPunctuator() {\n var start = index,\n co de = source.charCodeAt(index),\n code2,\n ch1 = source[ind ex],\n ch2;\n\n switch (code) {\n\n // Check for most c ommon single-character punctuators.\n case 46: // . dot\n case 4 0: // ( open bracket\n case 41: // ) close bracket\n case 59: // ; semicolon\n case 44: // , comma\n case 123: // { open cu rly brace\n case 125: // } close curly brace\n case 91: // [\n case 93: // ]\n case 58: // :\n case 63: // ?\n ++index;\n return {\n type: Token.Punctuator,\n value: String.fromCharCode(code),\n range: [start, index]\n };\n\n default:\n code2 = source.charCode At(index + 1);\n\n // '=' (char #61) marks an assignment or compariso n operator.\n if (code2 === 61) {\n switch (code) {\n case 37: // %\n case 38: // &\n c ase 42: // *:\n case 43: // +\n case 45: // -\n case 47: // /\n case 60: // <\n case 62: // >\n case 124: // |\n index += 2;\ n return {\n type: Token.Punctuator,\n value: String.fromCharCode(code) + String.fromCharCode(c ode2),\n range: [start, index]\n };\n\ n case 33: // !\n case 61: // =\n index += 2;\n\n // !== and ===\n if (so urce.charCodeAt(index) === 61) {\n ++index;\n }\n return {\n type: Token.Pun ctuator,\n value: source.slice(start, index),\n range: [start, index]\n };\n def ault:\n break;\n }\n }\n break;\n }\n\n // Peek more characters.\n\n ch2 = source[i ndex + 1];\n\n // Other 2-character punctuators: && ||\n\n if (ch1 === ch2 && ('&|'.indexOf(ch1) >= 0)) {\n index += 2;\n re turn {\n type: Token.Punctuator,\n value: ch1 + ch 2,\n range: [start, index]\n };\n }\n\n if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n ++index;\n retur n {\n type: Token.Punctuator,\n value: ch1,\n range: [start, index]\n };\n }\n\n throwErro r({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n // 7.8.3 Numeric Liter als\n function scanNumericLiteral() {\n var number, start, ch;\n\n ch = source[index];\n assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),\n 'Numeric literal must start with a decimal digit or a dec imal point');\n\n start = index;\n number = '';\n if (ch != = '.') {\n number = source[index++];\n ch = source[index]; \n\n // Hex number starts with '0x'.\n // Octal number sta rts with '0'.\n if (number === '0') {\n // decimal num ber starts with '0' such as '09' is illegal.\n if (ch && isDecima lDigit(ch.charCodeAt(0))) {\n throwError({}, Messages.Unexpec tedToken, 'ILLEGAL');\n }\n }\n\n while (is DecimalDigit(source.charCodeAt(index))) {\n number += source[inde x++];\n }\n ch = source[index];\n }\n\n if ( ch === '.') {\n number += source[index++];\n while (isDeci malDigit(source.charCodeAt(index))) {\n number += source[index++] ;\n }\n ch = source[index];\n }\n\n if (ch = == 'e' || ch === 'E') {\n number += source[index++];\n\n c h = source[index];\n if (ch === '+' || ch === '-') {\n number += source[index++];\n }\n if (isDecimalDigit(sourc e.charCodeAt(index))) {\n while (isDecimalDigit(source.charCodeAt (index))) {\n number += source[index++];\n }\n } else {\n throwError({}, Messages.UnexpectedToken, ' ILLEGAL');\n }\n }\n\n if (isIdentifierStart(source.cha rCodeAt(index))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGA L');\n }\n\n return {\n type: Token.NumericLiteral,\n value: parseFloat(number),\n range: [start, index]\n };\n }\n\n // 7.8.4 String Literals\n\n function scanStringLiteral() { \n var str = '', quote, start, ch, octal = false;\n\n quote = sour ce[index];\n assert((quote === '\\'' || quote === '\"'),\n 'St ring literal must starts with a quote');\n\n start = index;\n ++in dex;\n\n while (index < length) {\n ch = source[index++];\n\n if (ch === quote) {\n quote = '';\n bre ak;\n } else if (ch === '\\\\') {\n ch = source[index+ +];\n if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n switch (ch) {\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b' ;\n break;\n case 'f':\n str += '\\f';\n break;\n cas e 'v':\n str += '\\x0B';\n break;\ n\n default:\n str += ch;\n break;\n }\n } else {\n if (ch === '\\r' && source[index] === '\\n') {\n ++index;\n }\n }\n } else if (is LineTerminator(ch.charCodeAt(0))) {\n break;\n } else {\n str += ch;\n }\n }\n\n if (quote !== '') {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type: Token.StringLiteral,\n val ue: str,\n octal: octal,\n range: [start, index]\n };\n }\n\n function isIdentifierName(token) {\n return token.type = == Token.Identifier ||\n token.type === Token.Keyword ||\n token.type === Token.BooleanLiteral ||\n token.type === Token.NullLi teral;\n }\n\n function advance() {\n var ch;\n\n skipWhites pace();\n\n if (index >= length) {\n return {\n type: Token.EOF,\n range: [index, index]\n };\n }\n\n ch = source.charCodeAt(index);\n\n // Very common: ( and ) and ;\n if (ch === 40 || ch === 41 || ch === 58) {\n return s canPunctuator();\n }\n\n // String literal starts with single quot e (#39) or double quote (#34).\n if (ch === 39 || ch === 34) {\n return scanStringLiteral();\n }\n\n if (isIdentifierStart(ch)) {\n return scanIdentifier();\n }\n\n // Dot (.) char #4 6 can also start a floating-point number, hence the need\n // to check th e next character.\n if (ch === 46) {\n if (isDecimalDigit(sour ce.charCodeAt(index + 1))) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n }\n\n if (isDeci malDigit(ch)) {\n return scanNumericLiteral();\n }\n\n return scanPunctuator();\n }\n\n function lex() {\n var token;\n\n token = lookahead;\n index = token.range[1];\n\n lookahead = advance();\n\n index = token.range[1];\n\n return token;\n }\ n\n function peek() {\n var pos;\n\n pos = index;\n look ahead = advance();\n index = pos;\n }\n\n // Throw an exception\n\n function throwError(token, messageFormat) {\n var error,\n args = Array.prototype.slice.call(arguments, 2),\n msg = messageForm at.replace(\n /%(\\d)/g,\n function (whole, index) {\n assert(index < args.length, 'Message reference must be i n range');\n return args[index];\n }\n );\n\n error = new Error(msg);\n error.index = index;\n error.description = msg;\n throw error;\n }\n\n // Throw an except ion because of the token.\n\n function throwUnexpected(token) {\n thro wError(token, Messages.UnexpectedToken, token.value);\n }\n\n // Expect th e next token to match the specified punctuator.\n // If not, an exception wil l be thrown.\n\n function expect(value) {\n var token = lex();\n if (token.type !== Token.Punctuator || token.value !== value) {\n t hrowUnexpected(token);\n }\n }\n\n // Return true if the next token matches the specified punctuator.\n\n function match(value) {\n retur n lookahead.type === Token.Punctuator && lookahead.value === value;\n }\n\n // Return true if the next token matches the specified keyword\n\n function matchKeyword(keyword) {\n return lookahead.type === Token.Keyword && loo kahead.value === keyword;\n }\n\n function consumeSemicolon() {\n / / Catch the very common case first: immediately a semicolon (char #59).\n if (source.charCodeAt(index) === 59) {\n lex();\n return; \n }\n\n skipWhitespace();\n\n if (match(';')) {\n lex();\n return;\n }\n\n if (lookahead.type !== Toke n.EOF && !match('}')) {\n throwUnexpected(lookahead);\n }\n }\n\n // 11.1.4 Array Initialiser\n\n function parseArrayInitialiser() {\ n var elements = [];\n\n expect('[');\n\n while (!match(']' )) {\n if (match(',')) {\n lex();\n ele ments.push(null);\n } else {\n elements.push(parseExpr ession());\n\n if (!match(']')) {\n expect(',' );\n }\n }\n }\n\n expect(']');\n\n return delegate.createArrayExpression(elements);\n }\n\n // 11.1.5 Obje ct Initialiser\n\n function parseObjectPropertyKey() {\n var token;\n\ n skipWhitespace();\n token = lex();\n\n // Note: This func tion is called only from parseObjectProperty(), where\n // EOF and Punctu ator tokens are already filtered out.\n if (token.type === Token.StringLi teral || token.type === Token.NumericLiteral) {\n return delegate.cre ateLiteral(token);\n }\n\n return delegate.createIdentifier(token. value);\n }\n\n function parseObjectProperty() {\n var token, key;\ n\n token = lookahead;\n skipWhitespace();\n\n if (token.ty pe === Token.EOF || token.type === Token.Punctuator) {\n throwUnexpec ted(token);\n }\n\n key = parseObjectPropertyKey();\n expec t(':');\n return delegate.createProperty('init', key, parseExpression()); \n }\n\n function parseObjectInitialiser() {\n var properties = []; \n\n expect('{');\n\n while (!match('}')) {\n propertie s.push(parseObjectProperty());\n\n if (!match('}')) {\n expect(',');\n }\n }\n\n expect('}');\n\n retu rn delegate.createObjectExpression(properties);\n }\n\n // 11.1.6 The Grou ping Operator\n\n function parseGroupExpression() {\n var expr;\n\n expect('(');\n\n expr = parseExpression();\n\n expect(')');\n \n return expr;\n }\n\n\n // 11.1 Primary Expressions\n\n functi on parsePrimaryExpression() {\n var type, token, expr;\n\n if (mat ch('(')) {\n return parseGroupExpression();\n }\n\n typ e = lookahead.type;\n\n if (type === Token.Identifier) {\n exp r = delegate.createIdentifier(lex().value);\n } else if (type === Token.S tringLiteral || type === Token.NumericLiteral) {\n expr = delegate.cr eateLiteral(lex());\n } else if (type === Token.Keyword) {\n i f (matchKeyword('this')) {\n lex();\n expr = deleg ate.createThisExpression();\n }\n } else if (type === Token.Bo oleanLiteral) {\n token = lex();\n token.value = (token.va lue === 'true');\n expr = delegate.createLiteral(token);\n } e lse if (type === Token.NullLiteral) {\n token = lex();\n t oken.value = null;\n expr = delegate.createLiteral(token);\n } else if (match('[')) {\n expr = parseArrayInitialiser();\n } else if (match('{')) {\n expr = parseObjectInitialiser();\n }\ n\n if (expr) {\n return expr;\n }\n\n throwUnex pected(lex());\n }\n\n // 11.2 Left-Hand-Side Expressions\n\n function parseArguments() {\n var args = [];\n\n expect('(');\n\n if (!match(')')) {\n while (index < length) {\n args.pus h(parseExpression());\n if (match(')')) {\n br eak;\n }\n expect(',');\n }\n }\ n\n expect(')');\n\n return args;\n }\n\n function parseNonC omputedProperty() {\n var token;\n\n token = lex();\n\n if (!isIdentifierName(token)) {\n throwUnexpected(token);\n }\n\n return delegate.createIdentifier(token.value);\n }\n\n function pa rseNonComputedMember() {\n expect('.');\n\n return parseNonCompute dProperty();\n }\n\n function parseComputedMember() {\n var expr;\n \n expect('[');\n\n expr = parseExpression();\n\n expect('] ');\n\n return expr;\n }\n\n function parseLeftHandSideExpression() {\n var expr, property;\n\n expr = parsePrimaryExpression();\n\n while (match('.') || match('[')) {\n if (match('[')) {\n property = parseComputedMember();\n expr = delegate.cre ateMemberExpression('[', expr, property);\n } else {\n property = parseNonComputedMember();\n expr = delegate.createMem berExpression('.', expr, property);\n }\n }\n\n return expr;\n }\n\n // 11.3 Postfix Expressions\n\n var parsePostfixExpressio n = parseLeftHandSideExpression;\n\n // 11.4 Unary Operators\n\n function parseUnaryExpression() {\n var token, expr;\n\n if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) {\n expr = parsePostfixExpression();\n } else if (match('+') || match('-') || match ('!')) {\n token = lex();\n expr = parseUnaryExpression(); \n expr = delegate.createUnaryExpression(token.value, expr);\n } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('type of')) {\n throwError({}, Messages.UnexpectedToken);\n } else { \n expr = parsePostfixExpression();\n }\n\n return expr ;\n }\n\n function binaryPrecedence(token) {\n var prec = 0;\n\n if (token.type !== Token.Punctuator && token.type !== Token.Keyword) {\n return 0;\n }\n\n switch (token.value) {\n case '| |':\n prec = 1;\n break;\n\n case '&&':\n prec = 2;\n break;\n\n case '==':\n case '!=':\n case '===':\n case '!==':\n prec = 6;\n break;\n \n case '<':\n case '>':\n case '<=':\n case '>=':\n case 'instanceof':\n prec = 7;\n break;\n\n case 'in':\n prec = 7;\n break;\n\n case '+':\n case '-':\n prec = 9;\n break;\n\n case '*':\n case '/':\n case '%':\n prec = 11;\n break; \n\n default:\n break;\n }\n\n return prec;\n }\n\n // 11.5 Multiplicative Operators\n // 11.6 Additive Operators\n // 11.7 Bitwise Shift Operators\n // 11.8 Relational Operators\n // 11.9 E quality Operators\n // 11.10 Binary Bitwise Operators\n // 11.11 Binary Lo gical Operators\n\n function parseBinaryExpression() {\n var expr, tok en, prec, stack, right, operator, left, i;\n\n left = parseUnaryExpressio n();\n\n token = lookahead;\n prec = binaryPrecedence(token);\n if (prec === 0) {\n return left;\n }\n token.prec = prec;\n lex();\n\n right = parseUnaryExpression();\n\n st ack = [left, token, right];\n\n while ((prec = binaryPrecedence(lookahead )) > 0) {\n\n // Reduce: make a binary expression from the three topm ost entries.\n while ((stack.length > 2) && (prec <= stack[stack.leng th - 2].prec)) {\n right = stack.pop();\n operator = stack.pop().value;\n left = stack.pop();\n expr = delegate.createBinaryExpression(operator, left, right);\n stac k.push(expr);\n }\n\n // Shift.\n token = lex() ;\n token.prec = prec;\n stack.push(token);\n e xpr = parseUnaryExpression();\n stack.push(expr);\n }\n\n // Final reduce to clean-up the stack.\n i = stack.length - 1;\n expr = stack[i];\n while (i > 1) {\n expr = delegate.createB inaryExpression(stack[i - 1].value, stack[i - 2], expr);\n i -= 2;\n }\n\n return expr;\n }\n\n\n // 11.12 Conditional Operator\n \n function parseConditionalExpression() {\n var expr, consequent, alt ernate;\n\n expr = parseBinaryExpression();\n\n if (match('?')) {\ n lex();\n consequent = parseConditionalExpression();\n expect(':');\n alternate = parseConditionalExpression();\n\n expr = delegate.createConditionalExpression(expr, consequent, altern ate);\n }\n\n return expr;\n }\n\n // Simplification since w e do not support AssignmentExpression.\n var parseExpression = parseCondition alExpression;\n\n // Polymer Syntax extensions\n\n // Filter ::\n // Identifier\n // Identifier \"(\" \")\"\n // Identifier \"(\" FilterArg uments \")\"\n\n function parseFilter() {\n var identifier, args;\n\n identifier = lex();\n\n if (identifier.type !== Token.Identifier) {\n throwUnexpected(identifier);\n }\n\n args = match(' (') ? parseArguments() : [];\n\n return delegate.createFilter(identifier. value, args);\n }\n\n // Filters ::\n // \"|\" Filter\n // Filte rs \"|\" Filter\n\n function parseFilters() {\n while (match('|')) {\n lex();\n parseFilter();\n }\n }\n\n // TopLe vel ::\n // LabelledExpressions\n // AsExpression\n // InExpressi on\n // FilterExpression\n\n // AsExpression ::\n // FilterExpressi on as Identifier\n\n // InExpression ::\n // Identifier, Identifier in F ilterExpression\n // Identifier in FilterExpression\n\n // FilterExpress ion ::\n // Expression\n // Expression Filters\n\n function parseTo pLevel() {\n skipWhitespace();\n peek();\n\n var expr = par seExpression();\n if (expr) {\n if (lookahead.value === ',' || lookahead.value == 'in' &&\n expr.type === Syntax.Identif ier) {\n parseInExpression(expr);\n } else {\n parseFilters();\n if (lookahead.value === 'as') {\n parseAsExpression(expr);\n } else {\n delegate.createTopLevel(expr);\n }\n }\n }\n\n if (lookahead.type !== Token.EOF) {\n throwUnexpected(lo okahead);\n }\n }\n\n function parseAsExpression(expr) {\n l ex(); // as\n var identifier = lex().value;\n delegate.createAsEx pression(expr, identifier);\n }\n\n function parseInExpression(identifier) {\n var indexName;\n if (lookahead.value === ',') {\n lex();\n if (lookahead.type !== Token.Identifier)\n th rowUnexpected(lookahead);\n indexName = lex().value;\n }\n\n lex(); // in\n var expr = parseExpression();\n parseFilters ();\n delegate.createInExpression(identifier.name, indexName, expr);\n }\n\n function parse(code, inDelegate) {\n delegate = inDelegate;\n source = code;\n index = 0;\n length = source.length;\n lookahead = null;\n state = {\n labelSet: {}\n };\n\ n return parseTopLevel();\n }\n\n global.esprima = {\n parse : parse\n };\n})(this);\n","// Copyright (c) 2014 The Polymer Project Authors . All rights reserved.\n// This code may only be used under the BSD style licens e found at http://polymer.github.io/LICENSE.txt\n// The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n// The complete set of con tributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n// Code dis tributed by Google as part of the polymer project is also\n// subject to an addi tional IP rights grant found at http://polymer.github.io/PATENTS.txt\n\n(functio n (global) {\n 'use strict';\n\n function prepareBinding(expressionText, name, node, filterRegistry) {\n var expression;\n try {\n expression = get Expression(expressionText);\n if (expression.scopeIdent &&\n (node .nodeType !== Node.ELEMENT_NODE ||\n node.tagName !== 'TEMPLATE' ||\n (name !== 'bind' && name !== 'repeat'))) {\n throw Error('as an d in can only be used within <template bind/repeat>');\n }\n } catch (ex ) {\n console.error('Invalid expression syntax: ' + expressionText, ex);\n return;\n }\n\n return function(model, node, oneTime) {\n var bi nding = expression.getBinding(model, filterRegistry, oneTime);\n if (expres sion.scopeIdent && binding) {\n node.polymerExpressionScopeIdent_ = expre ssion.scopeIdent;\n if (expression.indexIdent)\n node.polymerExp ressionIndexIdent_ = expression.indexIdent;\n }\n\n return binding;\n }\n }\n\n // TODO(rafaelw): Implement simple LRU.\n var expressionParseCac he = Object.create(null);\n\n function getExpression(expressionText) {\n var expression = expressionParseCache[expressionText];\n if (!expression) {\n var delegate = new ASTDelegate();\n esprima.parse(expressionText, delega te);\n expression = new Expression(delegate);\n expressionParseCache[e xpressionText] = expression;\n }\n return expression;\n }\n\n function L iteral(value) {\n this.value = value;\n this.valueFn_ = undefined;\n }\n\ n Literal.prototype = {\n valueFn: function() {\n if (!this.valueFn_) { \n var value = this.value;\n this.valueFn_ = function() {\n return value;\n }\n }\n\n return this.valueFn_;\n }\n }\ n\n function IdentPath(name) {\n this.name = name;\n this.path = Path.get (name);\n }\n\n IdentPath.prototype = {\n valueFn: function() {\n if ( !this.valueFn_) {\n var name = this.name;\n var path = this.path;\ n this.valueFn_ = function(model, observer) {\n if (observer)\n observer.addPath(model, path);\n\n return path.getValueFrom( model);\n }\n }\n\n return this.valueFn_;\n },\n\n setVal ue: function(model, newValue) {\n if (this.path.length == 1);\n mode l = findScope(model, this.path[0]);\n\n return this.path.setValueFrom(model , newValue);\n }\n };\n\n function MemberExpression(object, property, acces sor) {\n this.dynamicDeps = typeof object == 'function' ||\n object.dynamicDeps ||\n (accessor == '[' && !(proper ty instanceof Literal));\n\n // convert literal computed property access wher e literal value is a value\n // path to ident dot-access.\n if (accessor = = '[' &&\n property instanceof Literal &&\n Path.get(property.valu e).valid) {\n accessor = '.';\n property = new IdentPath(property.valu e);\n }\n\n this.simplePath =\n !this.dynamicDeps &&\n prope rty instanceof IdentPath &&\n (object instanceof MemberExpression || obje ct instanceof IdentPath);\n\n this.object = this.simplePath ? object : getFn( object);\n this.property = accessor == '.' ? property : getFn(property);\n } \n\n MemberExpression.prototype = {\n get fullPath() {\n if (!this.full Path_) {\n var last = this.object instanceof IdentPath ?\n thi s.object.name : this.object.fullPath;\n this.fullPath_ = Path.get(last + '.' + this.property.name);\n }\n\n return this.fullPath_;\n },\n\n valueFn: function() {\n if (!this.valueFn_) {\n var object = this .object;\n\n if (this.simplePath) {\n var path = this.fullPath;\ n\n this.valueFn_ = function(model, observer) {\n if (observ er)\n observer.addPath(model, path);\n\n return path.get ValueFrom(model);\n };\n } else if (this.property instanceof Ide ntPath) {\n var path = Path.get(this.property.name);\n\n this. valueFn_ = function(model, observer) {\n var context = object(model, observer);\n\n if (observer)\n observer.addPath(context, path);\n\n return path.getValueFrom(context);\n }\n } else {\n // Computed property.\n var property = this.propert y;\n\n this.valueFn_ = function(model, observer) {\n var con text = object(model, observer);\n var propName = property(model, obse rver);\n if (observer)\n observer.addPath(context, propN ame);\n\n return context ? context[propName] : undefined;\n };\n }\n }\n return this.valueFn_;\n },\n\n setValue: fun ction(model, newValue) {\n if (this.simplePath) {\n this.fullPath.se tValueFrom(model, newValue);\n return newValue;\n }\n\n var obj ect = this.object(model);\n var propName = this.property instanceof IdentPa th ? this.property.name :\n this.property(model);\n return object[ propName] = newValue;\n }\n };\n\n function Filter(name, args) {\n this. name = name;\n this.args = [];\n for (var i = 0; i < args.length; i++) {\n this.args[i] = getFn(args[i]);\n }\n }\n\n Filter.prototype = {\n transform: function(value, toModelDirection, filterRegistry, model,\n observer) {\n var fn = filterRegistry[this.name];\n var c ontext = model;\n if (fn) {\n context = undefined;\n } else {\n fn = context[this.name];\n if (!fn) {\n console.error('C annot find filter: ' + this.name);\n return;\n }\n }\n\n // If toModelDirection is falsey, then the \"normal\" (dom-bound) direction\n // is used. Otherwise, it looks for a 'toModel' property function on the\n // object.\n if (toModelDirection) {\n fn = fn.toModel;\n } else if (typeof fn.toDOM == 'function') {\n fn = fn.toDOM;\n }\n\ n if (typeof fn != 'function') {\n console.error('No ' + (toModelDir ection ? 'toModel' : 'toDOM') +\n ' found on' + this.name); \n return;\n }\n\n var args = [value];\n for (var i = 0; i < this.args.length; i++) {\n args[i + 1] = getFn(this.args[i])(model, ob server);\n }\n\n return fn.apply(context, args);\n }\n };\n\n fun ction notImplemented() { throw Error('Not Implemented'); }\n\n var unaryOperato rs = {\n '+': function(v) { return +v; },\n '-': function(v) { return -v; },\n '!': function(v) { return !v; }\n };\n\n var binaryOperators = {\n '+': function(l, r) { return l+r; },\n '-': function(l, r) { return l-r; },\n '*': function(l, r) { return l*r; },\n '/': function(l, r) { return l/r; },\n '%': function(l, r) { return l%r; },\n '<': function(l, r) { return l <r; },\n '>': function(l, r) { return l>r; },\n '<=': function(l, r) { ret urn l<=r; },\n '>=': function(l, r) { return l>=r; },\n '==': function(l, r) { return l==r; },\n '!=': function(l, r) { return l!=r; },\n '===': fun ction(l, r) { return l===r; },\n '!==': function(l, r) { return l!==r; },\n '&&': function(l, r) { return l&&r; },\n '||': function(l, r) { return l||r ; },\n };\n\n function getFn(arg) {\n return typeof arg == 'function' ? arg : arg.valueFn();\n }\n\n function ASTDelegate() {\n this.expression = null ;\n this.filters = [];\n this.deps = {};\n this.currentPath = undefined ;\n this.scopeIdent = undefined;\n this.indexIdent = undefined;\n this. dynamicDeps = false;\n }\n\n ASTDelegate.prototype = {\n createUnaryExpress ion: function(op, argument) {\n if (!unaryOperators[op])\n throw Err or('Disallowed operator: ' + op);\n\n argument = getFn(argument);\n\n return function(model, observer) {\n return unaryOperators[op](argument(m odel, observer));\n };\n },\n\n createBinaryExpression: function(op, left, right) {\n if (!binaryOperators[op])\n throw Error('Disallowed operator: ' + op);\n\n left = getFn(left);\n right = getFn(right);\n\ n return function(model, observer) {\n return binaryOperators[op](le ft(model, observer),\n right(model, observer)) ;\n };\n },\n\n createConditionalExpression: function(test, consequen t, alternate) {\n test = getFn(test);\n consequent = getFn(consequent) ;\n alternate = getFn(alternate);\n\n return function(model, observer) {\n return test(model, observer) ?\n consequent(model, observ er) : alternate(model, observer);\n }\n },\n\n createIdentifier: func tion(name) {\n var ident = new IdentPath(name);\n ident.type = 'Identi fier';\n return ident;\n },\n\n createMemberExpression: function(acce ssor, object, property) {\n var ex = new MemberExpression(object, property, accessor);\n if (ex.dynamicDeps)\n this.dynamicDeps = true;\n return ex;\n },\n\n createLiteral: function(token) {\n return new Lit eral(token.value);\n },\n\n createArrayExpression: function(elements) {\n for (var i = 0; i < elements.length; i++)\n elements[i] = getFn(elem ents[i]);\n\n return function(model, observer) {\n var arr = []\n for (var i = 0; i < elements.length; i++)\n arr.push(elements[i](m odel, observer));\n return arr;\n }\n },\n\n createProperty: f unction(kind, key, value) {\n return {\n key: key instanceof IdentPa th ? key.name : key.value,\n value: value\n };\n },\n\n create ObjectExpression: function(properties) {\n for (var i = 0; i < properties.l ength; i++)\n properties[i].value = getFn(properties[i].value);\n\n return function(model, observer) {\n var obj = {};\n for (var i = 0; i < properties.length; i++)\n obj[properties[i].key] = properties[i] .value(model, observer);\n return obj;\n }\n },\n\n createFilt er: function(name, args) {\n this.filters.push(new Filter(name, args));\n },\n\n createAsExpression: function(expression, scopeIdent) {\n this.e xpression = expression;\n this.scopeIdent = scopeIdent;\n },\n\n crea teInExpression: function(scopeIdent, indexIdent, expression) {\n this.expre ssion = expression;\n this.scopeIdent = scopeIdent;\n this.indexIdent = indexIdent;\n },\n\n createTopLevel: function(expression) {\n this. expression = expression;\n },\n\n createThisExpression: notImplemented\n }\n\n function ConstantObservable(value) {\n this.value_ = value;\n }\n\n ConstantObservable.prototype = {\n open: function() { return this.value_; },\ n discardChanges: function() { return this.value_; },\n deliver: function( ) {},\n close: function() {},\n }\n\n function Expression(delegate) {\n this.scopeIdent = delegate.scopeIdent;\n this.indexIdent = delegate.indexIden t;\n\n if (!delegate.expression)\n throw Error('No expression found.');\ n\n this.expression = delegate.expression;\n getFn(this.expression); // fo rces enumeration of path dependencies\n\n this.filters = delegate.filters;\n this.dynamicDeps = delegate.dynamicDeps;\n }\n\n Expression.prototype = {\n getBinding: function(model, filterRegistry, oneTime) {\n if (oneTime)\n return this.getValue(model, undefined, filterRegistry);\n\n var obs erver = new CompoundObserver();\n // captures deps.\n var firstValue = this.getValue(model, observer, filterRegistry);\n var firstTime = true;\n var self = this;\n\n function valueFn() {\n // deps cannot have changed on first value retrieval.\n if (firstTime) {\n firstTim e = false;\n return firstValue;\n }\n\n if (self.dynamicD eps)\n observer.startReset();\n\n var value = self.getValue(mode l,\n self.dynamicDeps ? observer : undefined,\n filterRegistry);\n if (self.dynamicDeps )\n observer.finishReset();\n\n return value;\n }\n\n function setValueFn(newValue) {\n self.setValue(model, newValue, filterRe gistry);\n return newValue;\n }\n\n return new ObserverTransfor m(observer, valueFn, setValueFn, true);\n },\n\n getValue: function(model, observer, filterRegistry) {\n var value = getFn(this.expression)(model, ob server);\n for (var i = 0; i < this.filters.length; i++) {\n value = this.filters[i].transform(value, false, filterRegistry, model,\n observer);\n }\n\n return value;\n },\n\ n setValue: function(model, newValue, filterRegistry) {\n var count = th is.filters ? this.filters.length : 0;\n while (count-- > 0) {\n newV alue = this.filters[count].transform(newValue, true, filterRegistry,\n model);\n }\n\n if (this.expres sion.setValue)\n return this.expression.setValue(model, newValue);\n } \n }\n\n /**\n * Converts a style property name to a css property name. For example:\n * \"WebkitUserSelect\" to \"-webkit-user-select\"\n */\n functio n convertStylePropertyName(name) {\n return String(name).replace(/[A-Z]/g, fu nction(c) {\n return '-' + c.toLowerCase();\n });\n }\n\n var parentSc opeName = '@' + Math.random().toString(36).slice(2);\n\n // Single ident paths must bind directly to the appropriate scope object.\n // I.e. Pushed values in two-bindings need to be assigned to the actual model\n // object.\n function f indScope(model, prop) {\n while (model[parentScopeName] &&\n !Objec t.prototype.hasOwnProperty.call(model, prop)) {\n model = model[parentScope Name];\n }\n\n return model;\n }\n\n function isLiteralExpression(pathSt ring) {\n switch (pathString) {\n case '':\n return false;\n\n case 'false':\n case 'null':\n case 'true':\n return true;\n }\n\n if (!isNaN(Number(pathString)))\n return true;\n\n return f alse;\n };\n\n function PolymerExpressions() {}\n\n PolymerExpressions.protot ype = {\n // \"built-in\" filters\n styleObject: function(value) {\n var parts = [];\n for (var key in value) {\n parts.push(convertStyle PropertyName(key) + ': ' + value[key]);\n }\n return parts.join('; '); \n },\n\n tokenList: function(value) {\n var tokens = [];\n for (var key in value) {\n if (value[key])\n tokens.push(key);\n }\n return tokens.join(' ');\n },\n\n // binding delegate API\n prepareInstancePositionChanged: function(template) {\n var indexIdent = tem plate.polymerExpressionIndexIdent_;\n if (!indexIdent)\n return;\n\n return function(templateInstance, index) {\n templateInstance.model [indexIdent] = index;\n };\n },\n\n prepareBinding: function(pathStri ng, name, node) {\n var path = Path.get(pathString);\n\n if (!isLitera lExpression(pathString) && path.valid) {\n if (path.length == 1) {\n return function(model, node, oneTime) {\n if (oneTime)\n return path.getValueFrom(model);\n\n var scope = findScope(mode l, path[0]);\n return new PathObserver(scope, path);\n };\n }\n return; // bail out early if pathString is simple path.\n }\n\n return prepareBinding(pathString, name, node, this);\n },\n\n prepareInstanceModel: function(template) {\n var scopeName = template.polym erExpressionScopeIdent_;\n if (!scopeName)\n return;\n\n var pa rentScope = template.templateInstance ?\n template.templateInstance.mod el :\n template.model;\n\n var indexName = template.polymerExpress ionIndexIdent_;\n\n return function(model) {\n var scope = Object.cr eate(parentScope);\n scope[scopeName] = model;\n scope[indexName] = undefined;\n scope[parentScopeName] = parentScope;\n return scop e;\n };\n }\n };\n\n global.PolymerExpressions = PolymerExpressions;\n if (global.exposeGetExpression)\n global.getExpression_ = getExpression;\n\ n})(this);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at h ttp://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors ma y be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP ri ghts grant found at http://polymer.github.io/PATENTS.txt\n */\nPolymer = {\n ve rsion: '0.3.1-604ba08'\n};\n","/*\n * Copyright (c) 2014 The Polymer Project Aut hors. All rights reserved.\n * This code may only be used under the BSD style li cense found at http://polymer.github.io/LICENSE.txt\n * The complete set of auth ors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\ n// TODO(sorvell): this ensures Polymer is an object and not a function\n// Plat form is currently defining it as a function to allow for async loading\n// of po lymer; once we refine the loading process this likely goes away.\nif (typeof win dow.Polymer === 'function') {\n Polymer = {};\n}\n\n","/*\n * Copyright (c) 201 4 The Polymer Project Authors. All rights reserved.\n * This code may only be us ed under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.tx t\n * The complete set of contributors may be found at http://polymer.github.io/ CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project i s also\n * subject to an additional IP rights grant found at http://polymer.gith ub.io/PATENTS.txt\n */\n\n(function(scope) {\n\n // copy own properties from 'a pi' to 'prototype, with name hinting for 'super'\n function extend(prototype, a pi) {\n if (prototype && api) {\n // use only own properties of 'api'\n Object.getOwnPropertyNames(api).forEach(function(n) {\n // acquire p roperty descriptor\n var pd = Object.getOwnPropertyDescriptor(api, n);\n if (pd) {\n // clone property via descriptor\n Object.d efineProperty(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.extend = extend ;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license fou nd at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may b e found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contribu tors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distribu ted by Google as part of the polymer project is also\n * subject to an additiona l IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(functio n(scope) {\n \n // usage\n \n // invoke cb.call(this) in 100ms, unless the j ob 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 = inCon text;\n this.boundComplete = this.complete.bind(this)\n };\n Job.prototype = {\n go: function(callback, wait) {\n this.callback = callback;\n var h;\n if (!wait) {\n h = requestAnimationFrame(this.boundComplete );\n this.handle = function() {\n cancelAnimationFrame(h);\n }\n } else {\n h = setTimeout(this.boundComplete, wait);\n this.handle = function() {\n clearTimeout(h);\n }\n }\n },\n stop: function() {\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.contex t);\n }\n }\n };\n \n function job(job, callback, wait) {\n if (jo b) {\n job.stop();\n } else {\n job = new Job(this);\n }\n jo b.go(callback, wait);\n return job;\n }\n \n // exports \n\n scope.job = job;\n \n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors . All rights reserved.\n * This code may only be used under the BSD style licens e found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of con tributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code dis tributed by Google as part of the polymer project is also\n * subject to an addi tional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(fu nction(scope) {\n\n var registry = {};\n\n HTMLElement.register = function(tag , prototype) {\n registry[tag] = prototype;\n }\n\n // get prototype mapped to node <tag>\n HTMLElement.getPrototypeForTag = function(tag) {\n var prot otype = !tag ? HTMLElement.prototype : registry[tag];\n // TODO(sjmiles): cre ating <tag> is likely to have wasteful side-effects\n return prototype || Obj ect.getPrototypeOf(document.createElement(tag));\n };\n\n // we have to flag p ropagation stoppage for the event dispatcher\n var originalStopPropagation = Ev ent.prototype.stopPropagation;\n Event.prototype.stopPropagation = function() { \n this.cancelBubble = true;\n originalStopPropagation.apply(this, argumen ts);\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","/*\r\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\r\n * This code may only be used under the BSD style license found at http://polymer.github .io/LICENSE.txt\r\n * The complete set of authors may be found at http://polymer .github.io/AUTHORS.txt\r\n * The complete set of contributors may be found at ht tp://polymer.github.io/CONTRIBUTORS.txt\r\n * Code distributed by Google as part of the polymer project is also\r\n * subject to an additional IP rights grant f ound at http://polymer.github.io/PATENTS.txt\r\n */\r\n\r\n (function(scope) {\r \n // super\r\n\r\n // `arrayOfArgs` is an optional array of args like one might pass\r\n // to `Function.apply`\r\n\r\n // TODO(sjmiles):\r\n // $super must be installed on an instance or prototype chain\r\n // as ` super`, and invoked via `this`, e.g.\r\n // `this.super();`\r\n\r\n / / will not work if function objects are not unique, for example,\r\n // when using mixins.\r\n // The memoization strategy assumes each function exists on only one \r\n // prototype chain i.e. we use the function object for memoizing)\r\n // perhaps we can bookkeep on the prototype itself ins tead\r\n function $super(arrayOfArgs) {\r\n // since we are thunking a m ethod call, performance is important here: \r\n // memoize all lookups, onc e memoized the fast path calls no other \r\n // functions\r\n //\r\n // find the caller (cannot be `strict` because of 'caller')\r\n var cal ler = $super.caller;\r\n // memoized 'name of method' \r\n var nom = c aller.nom;\r\n // memoized next implementation prototype\r\n var _supe r = caller._super;\r\n if (!_super) {\r\n if (!nom) {\r\n n om = caller.nom = nameInThis.call(this, caller);\r\n }\r\n if (!no m) {\r\n console.warn('called super() on a method not installed declara tively (has no .nom property)');\r\n }\r\n // super prototype is e ither cached or we have to find it\r\n // by searching __proto__ (at the 'top')\r\n // invariant: because we cache _super on fn below, we never re ach \r\n // here from inside a series of calls to super(), so it's ok to \r\n // start searching from the prototype of 'this' (at the 'top')\r\n // we must never memoize a null super for this reason\r\n _super = memoizeSuper(caller, nom, getPrototypeOf(this));\r\n }\r\n // our supe r function\r\n var fn = _super[nom];\r\n if (fn) {\r\n // memoi ze information so 'fn' can call 'super'\r\n if (!fn._super) {\r\n // must not memoize null, or we lose our invariant above\r\n memoizeS uper(fn, nom, _super);\r\n }\r\n // invoke the inherited method\r\ n // if 'fn' is not function valued, this will throw\r\n return fn .apply(this, arrayOfArgs || []);\r\n }\r\n }\r\n\r\n function nameInT his(value) {\r\n var p = this.__proto__;\r\n while (p && p !== HTMLEle ment.prototype) {\r\n // TODO(sjmiles): getOwnPropertyNames is absurdly e xpensive\r\n var n$ = Object.getOwnPropertyNames(p);\r\n for (var i=0, l=n$.length, n; i<l && (n=n$[i]); i++) {\r\n var d = Object.getOwn PropertyDescriptor(p, n);\r\n if (typeof d.value === 'function' && d.va lue === value) {\r\n return n;\r\n }\r\n }\r\n p = p.__proto__;\r\n }\r\n }\r\n\r\n function memoizeSuper(method, n ame, proto) {\r\n // find and cache next prototype containing `name`\r\n // we need the prototype so we can do another lookup\r\n // from here\r\ n var s = nextSuper(proto, name, method);\r\n if (s[name]) {\r\n // `s` is a prototype, the actual method is `s[name]`\r\n // tag super method with it's name for quicker lookups\r\n s[name].nom = name;\r\n }\r\n return method._super = s;\r\n }\r\n\r\n function nextSuper(pr oto, name, caller) {\r\n // look for an inherited prototype that implements name\r\n while (proto) {\r\n if ((proto[name] !== caller) && proto[ name]) {\r\n return proto;\r\n }\r\n proto = getPrototype Of(proto);\r\n }\r\n // must not return null, or we lose our invariant above\r\n // in this case, a super() call was invoked where no superclass\ r\n // method exists\r\n // TODO(sjmiles): thow an exception?\r\n return Object;\r\n }\r\n\r\n // NOTE: In some platforms (IE10) the protot ype chain is faked via \r\n // __proto__. Therefore, always get prototype via __proto__ instead of\r\n // the more standard Object.getPrototypeOf.\r\n function getPrototypeOf(prototype) {\r\n return prototype.__proto__;\r\n }\r\n\r\n // utility function to precompute name tags for functions\r\n / / in a (unchained) prototype\r\n function hintSuper(prototype) {\r\n // tag functions with their prototype name to optimize\r\n // super call invoc ations\r\n for (var n in prototype) {\r\n var pd = Object.getOwnProp ertyDescriptor(prototype, n);\r\n if (pd && typeof pd.value === 'function ') {\r\n pd.value.nom = n;\r\n }\r\n }\r\n }\r\n\r\n // exports\r\n\r\n scope.super = $super;\r\n\r\n})(Polymer);\r\n","/*\n * Cop yright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/L ICENSE.txt\n * The complete set of authors may be found at http://polymer.github .io/AUTHORS.txt\n * The complete set of contributors may be found at http://poly mer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the pol ymer project is also\n * subject to an additional IP rights grant found at http: //polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n var typeHandlers = {\n string: function(value) {\n return value;\n },\n date: func tion(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 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 trip to their original f ormat\n //return (String(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 obj ect, we can parse is with the JSON library.\n // include convenience repl ace for single-quotes. If the author omits\n // quotes 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 ret urn value;\n }\n },\n // avoid deserialization of functions\n 'fun ction': function(value, currentValue) {\n return currentValue;\n }\n }; \n\n function deserializeValue(value, currentValue) {\n // attempt to infer type from default value\n var inferredType = typeof currentValue;\n // inv ent 'date' type value for Date\n if (currentValue instanceof Date) {\n i nferredType = 'date';\n }\n // delegate deserialization via type string\n return typeHandlers[inferredType](value, currentValue);\n }\n\n // exports\ n\n scope.deserializeValue = deserializeValue;\n\n})(Polymer);\n","/*\n * Copyr ight (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code ma y only be used under the BSD style license found at http://polymer.github.io/LIC ENSE.txt\n * The complete set of authors may be found at http://polymer.github.i o/AUTHORS.txt\n * The complete set of contributors may be found at http://polyme r.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polym er project is also\n * subject to an additional IP rights grant found at http:// polymer.github.io/PATENTS.txt\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 fo r (var n in apis) {\n extend(prototype, apis[n]);\n }\n };\n\n // expo rts\n\n scope.api = api;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Poly mer Project Authors. All rights reserved.\n * This code may only be used under t he BSD style license found at http://polymer.github.io/LICENSE.txt\n * The compl ete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTO RS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATE NTS.txt\n */\n\n(function(scope) {\n\n var utils = {\n /**\n * Invokes a function asynchronously. The context of the callback\n * function is boun d to 'this' automatically.\n * @method async\n * @param {Function|Stri ng} method\n * @param {any|Array} args\n * @param {number} timeout\n */\n async: function(method, args, timeout) {\n // when polyfilling Object.observe, ensure changes \n // propagate before executing the async m ethod\n Platform.flush();\n // second argument to `apply` must be an a rray\n args = (args && args.length) ? args : [args];\n // function to invoke\n var fn = function() {\n (this[method] || method).apply(this , args);\n }.bind(this);\n // execute `fn` sooner or later\n var handle = timeout ? setTimeout(fn, timeout) :\n requestAnimationFrame(fn );\n // NOTE: switch on inverting handle to determine which time is used.\n return timeout ? handle : ~handle;\n },\n cancelAsync: function(hand le) {\n if (handle < 0) {\n cancelAnimationFrame(~handle);\n } else {\n clearTimeout(handle);\n }\n },\n /**\n * Fire an event.\n * @method fire\n * @returns {Object} event\n * @param { string} type An event name.\n * @param {any} detail\n * @param {Node} onNode Target node.\n */\n fire: function(type, detail, onNode, bubbles, cancelable) {\n var node = onNode || this;\n var detail = detail || { };\n var event = new CustomEvent(type, {\n bubbles: (bubbles !== und efined ? bubbles : true), \n cancelable: (cancelable !== undefined ? canc elable : true), \n detail: detail\n });\n node.dispatchEvent(ev ent);\n return event;\n },\n /**\n * Fire an event asynchronousl y.\n * @method asyncFire\n * @param {string} type An event name.\n * @param detail\n * @param {Node} toNode Target node.\n */\n asyn cFire: function(/*inType, inDetail*/) {\n this.async(\"fire\", arguments);\ n },\n /**\n * Remove class from old, add class to anew, if they exis t\n * @param classFollows\n * @param anew A node.\n * @param old 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 util s.asyncMethod = utils.async;\n\n // exports\n\n scope.api.instance.utils = uti ls;\n scope.nop = nop;\n scope.nob = nob;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may on ly be used under the BSD style license found at http://polymer.github.io/LICENSE .txt\n * The complete set of authors may be found at http://polymer.github.io/AU THORS.txt\n * The complete set of contributors may be found at http://polymer.gi thub.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer p roject is also\n * subject to an additional IP rights grant found at http://poly mer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n // imports\n\n var lo g = 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) && c onsole.log('[%s] addHostListeners:', this.localName, events);\n // NOTE: ho st 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 listene rs ('host' and 'instance') and Node.bind\n // by default supports 1 thing b eing bound.\n for (var type in events) {\n var methodName = events[t ype];\n this.addEventListener(type, this.element.getEventHandler(this, th is,\n methodName ));\n }\n },\n // call 'method' or function method on 'obj' with 'arg s', if the method exists\n dispatchMethod: function(obj, method, args) {\n if (obj) {\n log.events && console.group('[%s] dispatch [%s]', obj.loc alName, method);\n var fn = typeof method === 'function' ? method : obj[m ethod];\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 (c) 2014 The Polymer Project Authors. All r ights reserved.\r\n * This code may only be used under the BSD style license fou nd at http://polymer.github.io/LICENSE.txt\r\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\r\n * The complete set of cont ributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\r\n * Code di stributed by Google as part of the polymer project is also\r\n * subject to an a dditional IP rights grant found at http://polymer.github.io/PATENTS.txt\r\n */\r \n\r\n(function(scope) {\r\n\r\n // instance api for attributes\r\n\r\n var at tributes = {\r\n copyInstanceAttributes: function () {\r\n var a$ = this ._instanceAttributes;\r\n for (var k in a$) {\r\n if (!this.hasAttri bute(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 ne eded\r\n takeAttributes: function() {\r\n // if we have no publish looku p 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$.lengt h, a; (a=a$[i]) && i<l; i++) {\r\n this.attributeToProperty(a.name, a.v alue);\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 attribut eToProperty: function(name, value) {\r\n // try to match this attribute to a property (attributes are\r\n // all lower-case, so this is case-insensiti ve search)\r\n var name = this.propertyForAttribute(name);\r\n if (nam e) {\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[n ame];\r\n // deserialize Boolean or Number values from attribute\r\n var value = this.deserializeValue(value, currentValue);\r\n // only ac t 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 nam e, or undefined\r\n propertyForAttribute: function(name) {\r\n var match = this._publishLC && this._publishLC[name];\r\n //console.log('propertyFor Attribute:', 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.de serializeValue(stringValue, currentValue);\r\n },\r\n serializeValue: func tion(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(n ame) {\r\n var inferredType = typeof this[name];\r\n // try to intelli gently serialize property value\r\n var serializedValue = this.serializeVal ue(this[name], inferredType);\r\n // boolean properties must reflect as boo lean attributes\r\n if (serializedValue !== undefined) {\r\n this.se tAttribute(name, serializedValue);\r\n // TODO(sorvell): we should remove attr for all properties\r\n // that have undefined serialization; howeve r, we will need to\r\n // refine the attr reflection system to achieve th is; pica, for example,\r\n // relies on having inferredType object proper ties not removed as\r\n // attrs.\r\n } else if (inferredType === 'b oolean') {\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 (c) 2014 The Polymer Project Authors. All righ ts reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be fou nd at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed b y Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(sco pe) {\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 createPropertyObserver: function() {\n var n$ = this._observeNames;\n if (n$ && n$.length) {\n var o = this._propert yObserver = new CompoundObserver(true);\n this.registerObservers([o]);\n // TODO(sorvell): may not be kosher to access the value here (this[n]);\n // previously we looked at the descriptor on the prototype\n // t his doesn't work for inheritance and not for accessors without \n // a va lue property\n for (var i=0, l=n$.length, n; (i<l) && (n=n$[i]); i++) {\n o.addPath(this, n);\n this.observeArrayValue(n, this[n], null );\n }\n }\n },\n openPropertyObserver: function() {\n if (this._propertyObserver) {\n this._propertyObserver.open(this.notifyProp ertyChanges, this);\n }\n },\n notifyPropertyChanges: function(newVal ues, 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 method = this.observe[name];\n if (method) {\n var ov = oldValues[i], nv = newValues[i];\n // observes the value if it is an array\n this.observeArrayValue(name, nv, ov);\n if (!called[method]) {\n // only invoke change me thod if one of ov or nv is not (undefined | null)\n if ((ov !== undef ined && ov !== null) || (nv !== undefined && nv !== null)) {\n call ed[method] = true;\n // TODO(sorvell): call method with the set of values it's expecting;\n // e.g. 'foo bar': 'invalidate' expects th e new and old values for\n // foo and bar. Currently we give only o ne of these and then\n // deliver all the arguments.\n this.invokeMethod(method, [ov, nv, arguments]);\n }\n }\n }\n }\n },\n deliverChanges: function() {\n if (this._prop ertyObserver) {\n this._propertyObserver.deliver();\n }\n },\n propertyChanged_: function(name, value, oldValue) {\n if (this.reflect[nam e]) {\n this.reflectPropertyToAttribute(name);\n }\n },\n obse rveArrayValue: function(name, 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] observe ArrayValue: unregister observer [%s]', this.localName, name);\n this.cl oseNamedObserver(name + '__array');\n }\n // if the new value is a n array, being observing it\n if (Array.isArray(value)) {\n log. observe && console.log('[%s] observeArrayValue: register observer [%s]', this.lo calName, name, value);\n var observer = new ArrayObserver(value);\n observer.open(function(value, old) {\n this.invokeMethod(callba ckName, [old]);\n }, this);\n this.registerNamedObserver(name + '__array', observer);\n }\n }\n },\n bindProperty: function( property, observable, oneTime) {\n if (oneTime) {\n this[property] = observable;\n return;\n }\n return bindProperties(this, proper ty, 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(observers) {\n this._observers = this._observers || [];\n this._observers.push(ob servers);\n },\n // observer array items are arrays of observers.\n clo seObservers: function() {\n if (!this._observers) {\n return;\n }\n for (var i=0, l=this._observers.length; i<l; i++) {\n this.clos eObserverArray(this._observers[i]);\n }\n this._observers = [];\n } ,\n closeObserverArray: function(observerArray) {\n for (var i=0, l=obse rverArray.length, o; i<l; i++) {\n o = observerArray[i];\n if (o & & o.close) {\n o.close();\n }\n }\n },\n // bookkeepi ng observers for memory management\n registerNamedObserver: function(name, ob server) {\n var o$ = this._namedObservers || (this._namedObservers = {});\n o$[name] = observer;\n },\n closeNamedObserver: function(name) {\n var o$ = this._namedObservers;\n if (o$ && o$[name]) {\n o$[name ].close();\n o$[name] = null;\n return true;\n }\n },\n closeNamedObservers: function() {\n if (this._namedObservers) {\n f or (var i in this._namedObservers) {\n this.closeNamedObserver(i);\n }\n this._namedObservers = {};\n }\n }\n };\n\n // propert y 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 bindProperti es(a, property, observable) {\n // apply Polymer two-way reference binding\n return Observer.bindToInstance(a, property, observable, resolveBindingValue); \n }\n\n // capture A's value if B's value is null or undefined,\n // otherwi se use B's value\n function resolveBindingValue(oldValue, value) {\n if (val ue === undefined && oldValue === null) {\n return value;\n }\n return (value === null || value === undefined) ? oldValue : value;\n }\n\n // loggin g\n var LOG_OBSERVE = '[%s] watching [%s]';\n var LOG_OBSERVED = '[%s#%s] watc h: [%s] now [%s] was [%s]';\n var LOG_CHANGED = '[%s#%s] propertyChanged: [%s] now [%s] was [%s]';\n\n // exports\n\n scope.api.instance.properties = propert ies;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors ma y be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contr ibutors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distr ibuted by Google as part of the polymer project is also\n * subject to an additi onal IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(func tion(scope) {\n\n // imports\n\n var log = window.logFlags || 0;\n\n // eleme nt api supporting mdv\n var mdv = {\n instanceTemplate: function(template) { \n // ensure a default bindingDelegate\n var syntax = this.syntax || ( !template.bindingDelegate &&\n this.element.syntax);\n var dom = t emplate.createInstance(this, syntax);\n this.registerObservers(dom.bindings _);\n return dom;\n },\n bind: function(name, observable, oneTime) {\ n var property = this.propertyForAttribute(name);\n if (!property) {\n // TODO(sjmiles): this mixin method must use the special form\n / / of `super` installed by `mixinMethod` in declaration/prototype.js\n ret urn this.mixinSuper(arguments);\n } else {\n // use n-way Polymer bi nding\n var observer = this.bindProperty(property, observable, oneTime);\ 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 && observer) {\n observer.pa th = observable.path_;\n this._recordBinding(property, observer);\n }\n if (this.reflect[property]) {\n this.reflectPropertyToAt tribute(property);\n }\n return observer;\n }\n },\n bi ndFinished: function() {\n this.makeElementReady();\n },\n _recordBin ding: function(name, observer) {\n this.bindings_ = this.bindings_ || {};\n this.bindings_[name] = observer;\n },\n // TODO(sorvell): unbind/unb indAll has been removed, as public api, from\n // TemplateBinding. We still n eed to close/dispose of observers but perhaps\n // we should choose a more ex plicit name.\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.c loseObservers();\n this.closeNamedObservers();\n this._unbound = t rue;\n }\n },\n cancelUnbindAll: function() {\n if (this._unboun d) {\n log.unbind && console.warn('[%s] already unbound, cannot cancel un bindAll', this.localName);\n return;\n }\n log.unbind && consol e.log('[%s] cancelUnbindAll', this.localName);\n if (this._unbindAllJob) {\ n this._unbindAllJob = this._unbindAllJob.stop();\n }\n }\n };\n \n function unbindNodeTree(node) {\n forNodeTree(node, _nodeUnbindAll);\n } \n\n function _nodeUnbindAll(node) {\n node.unbindAll();\n }\n\n function forNodeTree(node, callback) {\n if (node) {\n callback(node);\n for (var child = node.firstChild; child; child = child.nextSibling) {\n forN odeTree(child, callback);\n }\n }\n }\n\n var mustachePattern = /\\{\\ {([^{}]*)}}/;\n\n // exports\n\n scope.bindPattern = mustachePattern;\n scope .api.instance.mdv = mdv;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polym er Project Authors. All rights reserved.\n * This code may only be used under th e BSD style license found at http://polymer.github.io/LICENSE.txt\n * The comple te set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The c omplete set of contributors may be found at http://polymer.github.io/CONTRIBUTOR S.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATEN TS.txt\n */\n\n(function(scope) {\n\n var base = {\n PolymerBase: true,\n job: function(job, callback, wait) {\n if (typeof job === 'string') {\n var n = '___' + job;\n this[n] = Polymer.job.call(this, this[n], cal lback, wait);\n } else {\n return Polymer.job.call(this, job, callba ck, 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 // a pi interaction\n ready: function() {\n },\n createdCallback: function() {\n if (this.templateInstance && this.templateInstance.model) {\n c onsole.warn('Attributes on ' + this.localName + ' were data bound ' +\n 'prior to Polymer upgrading the element. This may result in ' +\n 'incorrect binding types.');\n }\n this.created();\n this.prepare Element();\n // TODO(sorvell): replace when ShadowDOMPolyfill issue is corr ected\n // https://github.com/Polymer/ShadowDOM/issues/420\n if (!this .ownerDocument.isStagingDocument || window.ShadowDOMPolyfill) {\n this.ma keElementReady();\n }\n },\n // system entry point, do not override\n prepareElement: function() {\n if (this._elementPrepared) {\n co nsole.warn('Element already prepared', this.localName);\n return;\n }\n this._elementPrepared = true;\n // storage for shadowRoots info\n this.shadowRoots = {};\n // install property observers\n this.cre atePropertyObserver();\n // TODO (sorvell): temporarily open observer when created\n this.openPropertyObserver();\n // install boilerplate attrib utes\n this.copyInstanceAttributes();\n // process input attributes\n this.takeAttributes();\n // add event listeners\n this.addHostLis teners();\n },\n makeElementReady: function() {\n if (this._readied) {\n return;\n }\n this._readied = true;\n // TODO(sorvell) : We could create an entry point here\n // for the user to compute property values.\n // process declarative resources\n this.parseDeclarations(t his.__proto__);\n // TODO(sorvell): CE polyfill uses unresolved attribute t o simulate\n // :unresolved; remove this attribute to be compatible with na tive\n // CE.\n this.removeAttribute('unresolved');\n // user ent ry point\n this.ready();\n // TODO (sorvell): temporarily open observe r when created\n // turn on property observation and take any initial chang es\n //this.openPropertyObserver();\n },\n attachedCallback: function () {\n this.cancelUnbindAll();\n // invoke user action\n if (this .attached) {\n this.attached();\n }\n // TODO(sorvell): bc\n if (this.enteredView) {\n this.enteredView();\n }\n // NOTE: domReady can be used to access elements in dom (descendants, \n // ancesto rs, siblings) such that the developer is enured to upgrade\n // ordering. I f the element definitions have loaded, domReady\n // can be used to access upgraded elements.\n if (!this.hasBeenAttached) {\n this.hasBeenAtta ched = true;\n if (this.domReady) {\n this.async('domReady');\n }\n }\n },\n detachedCallback: function() {\n if (!this.p reventDispose) {\n this.asyncUnbindAll();\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): bc\n enteredViewCallback: function() {\n this.attachedCallback();\n },\n // TODO(sorvell): bc\n leftViewCallbac k: function() {\n this.detachedCallback();\n },\n // TODO(sorvell): b c\n enteredDocumentCallback: function() {\n this.attachedCallback();\n },\n // TODO(sorvell): bc\n leftDocumentCallback: function() {\n th is.detachedCallback();\n },\n // recursive ancestral <element> initializat ion, oldest first\n parseDeclarations: function(p) {\n if (p && p.elemen t) {\n this.parseDeclarations(p.__proto__);\n p.parseDeclaration.c all(this, p.element);\n }\n },\n // parse input <element> as needed, override for custom behavior\n parseDeclaration: function(elementElement) {\n var template = this.fetchTemplate(elementElement);\n if (template) {\ n var root = this.shadowFromTemplate(template);\n this.shadowRoots [elementElement.name] = root;\n }\n },\n // return a shadow-root temp late (if desired), override for custom behavior\n fetchTemplate: function(ele mentElement) {\n return elementElement.querySelector('template');\n },\n // utility function that creates a shadow root from a <template>\n shadow FromTemplate: function(template) {\n if (template) {\n // make a sha dow root\n var root = this.createShadowRoot();\n // stamp template \n // which includes parsing and applying MDV bindings 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.in stanceTemplate(template);\n // append to shadow dom\n root.appendC hild(dom);\n // perform post-construction initialization tasks on shadow root\n this.shadowRootReady(root, template);\n // return the creat ed shadow root\n return root;\n }\n },\n // utility function t hat stamps a <template> into light-dom\n lightFromTemplate: function(template , refNode) {\n if (template) {\n // TODO(sorvell): mark this element as an eventController 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 .eventController = this;\n // stamp template\n // which includes p arsing and applying MDV bindings 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 dom\n if (refNode) {\n this.insertBefo re(dom, refNode); \n } else {\n this.appendChild(dom);\ n }\n // perform post-construction initialization tasks on ahem, l ight root\n this.shadowRootReady(this);\n // return the created sh adow root\n return dom;\n }\n },\n shadowRootReady: function(r oot) {\n // locate nodes with id and store references to them in this.$ has h\n this.marshalNodeReferences(root);\n // set up polymer gestures\n PolymerGestures.register(root);\n },\n // locate nodes with id and sto re references to them in this.$ hash\n marshalNodeReferences: function(root) {\n // establish $ instance variable\n var $ = this.$ = this.$ || {};\ n // populate $ from nodes with ID from the LOCAL tree\n if (root) {\n var n$ = root.querySelectorAll(\"[id]\");\n for (var i=0, l=n$.le ngth, n; (i<l) && (n=n$[i]); i++) {\n $[n.id] = n;\n };\n } \n },\n attributeChangedCallback: function(name, oldValue) {\n // TOD O(sjmiles): adhoc filter\n if (name !== 'class' && name !== 'style') {\n this.attributeToProperty(name, this.getAttribute(name));\n }\n if (this.attributeChanged) {\n this.attributeChanged.apply(this, arguments) ;\n }\n },\n onMutation: function(node, listener) {\n var observ er = new MutationObserver(function(mutations) {\n listener.call(this, obs erver, mutations);\n observer.disconnect();\n }.bind(this));\n observer.observe(node, {childList: true, subtree: true});\n }\n };\n\n // t rue if object has own PolymerBase api\n function isBase(object) {\n return o bject.hasOwnProperty('PolymerBase') \n }\n\n // name a base constructor for de v 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.instance.base = base;\n \n})(Polymer);\n"," /*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt\n * The complete set of authors may be found at http://poly mer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at h ttp://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant foun d at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n // imp orts\n\n var log = window.logFlags || {};\n \n // magic words\n \n var STYL E_SCOPE_ATTRIBUTE = 'element';\n var STYLE_CONTROLLER_SCOPE = 'controller';\n \n var styles = {\n STYLE_SCOPE_ATTRIBUTE: STYLE_SCOPE_ATTRIBUTE,\n /**\n * Installs external stylesheets and <style> elements with the attribute \n * polymer-scope='controller' into the scope of element. This is intended\n * to be a called during custom element construction.\n */\n installCont rollerStyles: function() {\n // apply controller styles, but only if they a re 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), cssText = '';\n while (proto && proto.element) {\n cssText += proto.element.cssText ForScope(STYLE_CONTROLLER_SCOPE);\n proto = getPrototypeOf(proto);\n }\n if (cssText) {\n this.installScopeCssText(cssText, scop e);\n }\n }\n },\n installScopeStyle: function(style, name, sc ope) {\n var scope = scope || this.findStyleScope(), name = name || '';\n if (scope && !this.scopeHasNamedStyle(scope, this.localName + 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 = sty le.textContent;\n }\n this.installScopeCssText(cssText, scope, nam e);\n }\n },\n installScopeCssText: function(cssText, scope, name) {\ n scope = scope || this.findStyleScope();\n name = name || '';\n if (!scope) {\n return;\n }\n if (window.ShadowDOMPolyfill) {\n cssText = shimCssText(cssText, scope.host);\n }\n var style = this.element.cssTextToScopeStyle(cssText,\n STYLE_CONTROLLER_SCOPE);\n Polymer.applyStyleToScope(style, scope);\n // cache that this style ha s been applied\n scope._scopeStyles[this.localName + name] = true;\n },\ n findStyleScope: function(node) {\n // find the shadow root that contai ns this element\n var n = node || this;\n while (n.parentNode) {\n n = n.parentNode;\n }\n return n;\n },\n scopeHasNamedStyle: function(scope, name) {\n scope._scopeStyles = scope._scopeStyles || {};\n return scope._scopeStyles[name];\n }\n };\n \n // NOTE: use raw prot otype traversal so that we ensure correct traversal\n // on platforms where the protoype chain is simulated via __proto__ (IE10)\n function getPrototypeOf(pro totype) {\n return prototype.__proto__;\n }\n\n function shimCssText(cssTex t, host) {\n var name = '', is = false;\n if (host) {\n name = host.l ocalName;\n is = host.hasAttribute('is');\n }\n var selector = Platfo rm.ShadowCSS.makeScopeSelector(name, is);\n return Platform.ShadowCSS.shimCss Text(cssText, selector);\n }\n\n // exports\n\n scope.api.instance.styles = s tyles;\n \n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Autho rs. All rights reserved.\n * This code may only be used under the BSD style lice nse found at http://polymer.github.io/LICENSE.txt\n * The complete set of author s may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of c ontributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code d istributed by Google as part of the polymer project is also\n * subject to an ad ditional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n( function(scope) {\n\n // imports\n\n var extend = scope.extend;\n var api = s cope.api;\n\n // imperative implementation: Polymer()\n\n // specify an 'own' prototype for tag `name`\n function element(name, prototype) {\n if (argumen ts.length === 1 && typeof arguments[0] !== 'string') {\n prototype = name;\ n var script = document._currentScript;\n name = script && script.pare ntNode && script.parentNode.getAttribute ?\n script.parentNode.getAttri bute('name') : '';\n if (!name) {\n throw 'Element name could not be inferred.';\n }\n }\n if (getRegisteredPrototype[name]) {\n thr ow 'Already registered (Polymer) prototype for element ' + name;\n }\n // cache the prototype\n registerPrototype(name, prototype);\n // notify the registrar waiting for 'name', if any\n notifyPrototype(name);\n }\n\n // as ync prototype source\n\n function waitingForPrototype(name, client) {\n wait Prototype[name] = client;\n }\n\n var waitPrototype = {};\n\n function notify Prototype(name) {\n if (waitPrototype[name]) {\n waitPrototype[name].reg isterWhenReady();\n delete waitPrototype[name];\n }\n }\n\n // utility and bookkeeping\n\n // maps tag names to prototypes, as registered with\n // Polymer. Prototypes associated with a tag name\n // using document.registerElem ent are available from\n // HTMLElement.getPrototypeForTag().\n // If an eleme nt was fully registered by Polymer, then\n // Polymer.getRegisteredPrototype(na me) === \n // HTMLElement.getPrototypeForTag(name)\n\n var prototypesByName = {};\n\n function registerPrototype(name, prototype) {\n return prototypesB yName[name] = prototype || {};\n }\n\n function getRegisteredPrototype(name) { \n return prototypesByName[name];\n }\n\n // exports\n\n scope.getRegister edPrototype = getRegisteredPrototype;\n scope.waitingForPrototype = waitingForP rototype;\n\n // namespace shenanigans so we can expose our scope on the regist ration \n // function\n\n // make window.Polymer reference `element()`\n\n wi ndow.Polymer = element;\n\n // TODO(sjmiles): find a way to do this that is les s terrible\n // copy window.Polymer properties onto `element()`\n\n extend(Pol ymer, scope);\n\n // Under the HTMLImports polyfill, scripts in the main docume nt\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=declara tions[i]); i++) {\n element.apply(null, d);\n }\n }\n\n})(Polymer);\n", "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer. github.io/LICENSE.txt\n * The complete set of authors may be found at http://pol ymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant fou nd at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\nvar pat h = {\n resolveElementPaths: function(node) {\n Platform.urlResolver.resolve Dom(node);\n },\n addResolvePathApi: function() {\n // let assetpath attrib ute 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(urlPat h, base || root);\n return u.href;\n };\n }\n};\n\n// exports\nscope.ap i.declaration.path = path;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Pol ymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The comp lete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUT ORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PAT ENTS.txt\n */\n\n(function(scope) {\n\n // imports\n\n var log = window.logFla gs || {};\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=st ylesheet]';\n var STYLE_GLOBAL_SCOPE = 'global';\n var SCOPE_ATTR = 'polymer-s cope';\n\n var styles = {\n // returns true if resources are loading\n lo adStyles: function(callback) {\n var template = this.fetchTemplate();\n var content = template && this.templateContent();\n if (content) {\n this.convertSheetsToStyles(content);\n var styles = this.findLoadableS tyles(content);\n if (styles.length) {\n var templateUrl = templ ate.ownerDocument.baseURI;\n return Platform.styleResolver.loadStyles(s tyles, templateUrl, callback);\n }\n }\n if (callback) {\n callback();\n }\n },\n convertSheetsToStyles: function(root) {\n var s$ = root.querySelectorAll(SHEET_SELECTOR);\n for (var i=0, l=s$.le ngth, s, c; (i<l) && (s=s$[i]); i++) {\n c = createStyleElement(importRul eForSheet(s, this.ownerDocument.baseURI),\n this.ownerDocument);\n this.copySheetAttributes(c, s);\n s.parentNode.replaceChild(c, s);\n }\n },\n copySheetAttributes: function(style, link) {\n for (va r 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.setAttribute(a.name, a.value);\n }\n }\n },\n findLoadableStyles: function(root) {\ n var loadables = [];\n if (root) {\n var s$ = root.querySelect orAll(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 <polymer-element> elements into the \n * element's template.\n * @param elementElement Th e <element> element to style.\n */\n installSheets: function() {\n t his.cacheSheets();\n this.cacheStyles();\n this.installLocalSheets();\ n this.installGlobalStyles();\n },\n /**\n * Remove all sheets fr om element and store for later use.\n */\n cacheSheets: function() {\n this.sheets = this.findNodes(SHEET_SELECTOR);\n this.sheets.forEach(func tion(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.for Each(function(s) {\n if (s.parentNode) {\n s.parentNode.removeCh ild(s);\n }\n });\n },\n /**\n * Takes external stylesheet s loaded in an <element> element and moves\n * their content 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 element is loaded in th e main document, the sheet does\n * not become active.\n * Note, ignores sheets with the attribute 'polymer-scope'.\n * @param elementElement The <e lement> element to style.\n */\n installLocalSheets: function () {\n var sheets = this.sheets.filter(function(s) {\n return !s.hasAttribute(S COPE_ATTR);\n });\n var content = this.templateContent();\n if (c ontent) {\n var cssText = '';\n sheets.forEach(function(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.querySelectorAll(se lector).array();\n nodes = nodes.concat(templateNodes);\n }\n r eturn matcher ? nodes.filter(matcher) : nodes;\n },\n /**\n * Promotes external stylesheets and <style> elements with the attribute \n * polymer-s cope='global' into global scope.\n * This is particularly useful for definin g @keyframe rules which \n * currently do not function in scoped or shadow s tyle elements.\n * (See wkb.ug/72462)\n * @param elementElement The <ele ment> element to style.\n */\n // TODO(sorvell): remove when wkb.ug/72462 is addressed.\n installGlobalStyles: function() {\n var style = this.sty leForScope(STYLE_GLOBAL_SCOPE);\n applyStyleToScope(style, document.head);\ n },\n cssTextForScope: function(scopeDescriptor) {\n var cssText = ' ';\n // handle stylesheets\n var selector = '[' + SCOPE_ATTR + '=' + s copeDescriptor + ']';\n var matcher = function(s) {\n return matches Selector(s, selector);\n };\n var sheets = this.sheets.filter(matcher) ;\n sheets.forEach(function(sheet) {\n cssText += cssTextFromSheet(s heet) + '\\n\\n';\n });\n // handle cached style elements\n var s tyles = this.styles.filter(matcher);\n styles.forEach(function(style) {\n cssText += style.textContent + '\\n\\n';\n });\n return cssText; \n },\n styleForScope: function(scopeDescriptor) {\n var cssText = th is.cssTextForScope(scopeDescriptor);\n return this.cssTextToScopeStyle(cssT ext, scopeDescriptor);\n },\n cssTextToScopeStyle: function(cssText, scope Descriptor) {\n if (cssText) {\n var style = createStyleElement(cssT ext);\n style.setAttribute(STYLE_SCOPE_ATTRIBUTE, this.getAttribute('name ') +\n '-' + scopeDescriptor);\n return style;\n }\n } \n };\n\n function importRuleForSheet(sheet, baseUrl) {\n var href = new UR L(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/I E/feedback/details/790212/\n // cloning-a-style-element-and-adding-to-docum ent-produces\n // -unexpected-result#details\n // var clone = style.cl oneNode(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(sorve ll): probably too brittle; try to figure out \n // where to put the element .\n var refNode = scope.firstElementChild;\n if (scope === document.he ad) {\n var selector = 'style[' + STYLE_SCOPE_ATTRIBUTE + ']';\n v ar 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 createStyleElement (cssText, scope) {\n scope = scope || document;\n scope = scope.createElem ent ? scope : scope.ownerDocument;\n var style = scope.createElement('style') ;\n style.textContent = cssText;\n return style;\n }\n\n function cssTex tFromSheet(sheet) {\n return (sheet && sheet.__resource) || '';\n }\n\n fun ction matchesSelector(node, inSelector) {\n if (matches) {\n return matc hes.call(node, inSelector);\n }\n }\n var p = HTMLElement.prototype;\n var matches = p.matches || p.matchesSelector || p.webkitMatchesSelector \n || p.mozMatchesSelector;\n \n // exports\n\n scope.api.declaration.styles = styl es;\n scope.applyStyleToScope = applyStyleToScope;\n \n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This c ode may only be used under the BSD style license found at http://polymer.github. io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.gi thub.io/AUTHORS.txt\n * The complete set of contributors may be found at http:// polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at h ttp://polymer.github.io/PATENTS.txt\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_PREFIX;\n // polymer-element declarative api: even ts feature\n\n var mixedCaseEventTypes = {};\n [\n 'webkitAnimationStart',\ n 'webkitAnimationEnd',\n 'webkitTransitionEnd',\n 'DOMFocusOut',\n 'DOMFocusIn',\n 'DOMMouseScroll'\n ].forEach(function(e) {\n mixedCaseEve ntTypes[e.toLowerCase()] = e;\n });\n\n var events = {\n parseHostEvents: f unction() {\n // our delegates map\n var delegates = this.prototype.ev entDelegates;\n // extract data from attributes into delegates\n this. addAttributeDelegates(delegates);\n },\n addAttributeDelegates: function(d elegates) {\n // for each attribute\n for (var i=0, a; a=this.attribut es[i]; i++) {\n // does it have magic marker identifying it as an event d elegate?\n if (this.hasEventPrefix(a.name)) {\n // if so, add th e info to delegates\n delegates[this.removeEventPrefix(a.name)] = a.val ue.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 rem oveEventPrefix: function(n) {\n return n.slice(prefixLength);\n },\n findController: function(node) {\n while (node.parentNode) {\n if (n ode.eventController) {\n return node.eventController;\n }\n node = node.parentNode;\n }\n return node.host;\n },\n getEve ntHandler: function(controller, target, method) {\n var events = this;\n return function(e) {\n if (!controller || !controller.PolymerBase) {\n controller = events.findController(target);\n }\n\n var args = [e, e.detail, e.currentTarget];\n controller.dispatchMethod(contro ller, method, args);\n };\n },\n prepareEventBinding: function(pathSt ring, name, node) {\n if (!this.hasEventPrefix(name))\n return;\n\n var eventType = this.removeEventPrefix(name);\n eventType = mixedCaseE ventTypes[eventType] || eventType;\n\n var events = this;\n\n return f unction(model, node, oneTime) {\n var handler = events.getEventHandler(un defined, node, pathString);\n node.addEventListener(eventType, handler);\ n\n if (oneTime)\n return;\n\n // TODO(rafaelw): This is really pointless work. Aside from the cost\n // of these allocations, Nod eBind is going to setAttribute back to its\n // current value. Fixing thi s would mean changing the TemplateBinding\n // binding delegate API.\n function bindingValue() {\n return '{{ ' + pathString + ' }}';\n }\n\n return {\n open: bindingValue,\n discardCha nges: bindingValue,\n close: function() {\n node.removeEvent Listener(eventType, handler);\n }\n };\n };\n }\n };\n\ n var prefixLength = EVENT_PREFIX.length;\n\n // exports\n scope.api.declarat ion.events = events;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer P roject Authors. All rights reserved.\n * This code may only be used under the BS D style license found at http://polymer.github.io/LICENSE.txt\n * The complete s et of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The compl ete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.tx t\n * Code distributed by Google as part of the polymer project is also\n * subj ect to an additional IP rights grant found at http://polymer.github.io/PATENTS.t xt\n */\n\n(function(scope) {\n\n // element api\n\n var properties = {\n i nferObservers: function(prototype) {\n // called before prototype.observe i s chained to inherited 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 property = n.slice(0, -7)\n observe[property] = observ e[property] || n;\n }\n }\n },\n explodeObservers: function(pr ototype) {\n // called before prototype.observe is chained to inherited obj ect\n var o = prototype.observe;\n if (o) {\n var exploded = {} ;\n for (var n in o) {\n var names = n.split(' ');\n fo r (var i=0, ni; ni=names[i]; i++) {\n exploded[ni] = o[n];\n }\n }\n prototype.observe = exploded;\n }\n },\n optim izePropertyMaps: function(prototype) {\n if (prototype.observe) {\n // construct name list\n var a = prototype._observeNames = [];\n f or (var n in prototype.observe) {\n var names = n.split(' ');\n for (var i=0, ni; ni=names[i]; i++) {\n a.push(ni);\n }\n }\n }\n if (prototype.publish) {\n // construct name lis t\n var a = prototype._publishNames = [];\n for (var n in prototyp e.publish) {\n a.push(n);\n }\n }\n },\n publishPrope rties: function(prototype, base) {\n // if we have any properties to publis h\n var publish = prototype.publish;\n if (publish) {\n // tran scribe `publish` entries onto own prototype\n this.requireProperties(publ ish, prototype, base);\n // construct map of lower-cased property names\n prototype._publishLC = this.lowerCaseMap(publish);\n }\n },\n // sync prototype to property descriptors; \n // desriptor format contains d efault value and optionally a \n // hint for reflecting the property to an at tribute.\n // e.g. {foo: 5, bar: {value: true, reflect: true}}\n // reflec t: {foo: true} is also supported\n // \n requireProperties: function(prope rtyDescriptors, prototype, base) {\n // reflected properties\n prototy pe.reflect = prototype.reflect || {};\n // ensure a prototype value for eac h property\n // and update the property's reflect to attribute status \n for (var n in propertyDescriptors) {\n var propertyDescriptor = proper tyDescriptors[n];\n var reflects = this.reflectHintForDescriptor(property Descriptor);\n if (prototype.reflect[n] === undefined && reflects !== und efined) {\n prototype.reflect[n] = reflects;\n }\n if (pr ototype[n] === undefined) {\n prototype[n] = this.valueForDescriptor(pr opertyDescriptor); \n }\n }\n },\n valueForDescriptor: functio n(propertyDescriptor) {\n var value = typeof propertyDescriptor === 'object ' && \n propertyDescriptor ? propertyDescriptor.value : propertyDescrip tor;\n return value !== undefined ? value : null;\n },\n // returns t he value of the descriptor's 'reflect' property or undefined\n reflectHintFor Descriptor: function(propertyDescriptor) {\n if (typeof propertyDescriptor === 'object' &&\n propertyDescriptor && propertyDescriptor.reflect !== undefined) {\n return propertyDescriptor.reflect;\n }\n },\n l owerCaseMap: function(properties) {\n var map = {};\n for (var n in pr operties) {\n map[n.toLowerCase()] = n;\n }\n return map;\n },\n createPropertyAccessors: function(prototype) {\n var n$ = prototype ._publishNames;\n if (n$ && n$.length) {\n for (var i=0, l=n$.length , n, fn; (i<l) && (n=n$[i]); i++) {\n Observer.createBindablePrototypeA ccessor(prototype, n);\n }\n }\n }\n };\n\n // exports\n\n sco pe.api.declaration.properties = properties;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may on ly be used under the BSD style license found at http://polymer.github.io/LICENSE .txt\n * The complete set of authors may be found at http://polymer.github.io/AU THORS.txt\n * The complete set of contributors may be found at http://polymer.gi thub.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer p roject is also\n * subject to an additional IP rights grant found at http://poly mer.github.io/PATENTS.txt\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 var attributes = {\n \n inheritAttributesObjects: func tion(prototype) {\n // chain our lower-cased publish map to the inherited v ersion\n this.inheritObject(prototype, 'publishLC');\n // chain our in stance attributes map to the inherited version\n this.inheritObject(prototy pe, '_instanceAttributes');\n },\n\n publishAttributes: function(prototype , base) {\n // merge names from 'attributes' attribute\n var attribute s = this.getAttribute(ATTRIBUTES_ATTRIBUTE);\n if (attributes) {\n / / get properties to publish\n var publish = prototype.publish || (prototy pe.publish = {});\n // names='a b c' or names='a,b,c'\n var names = attributes.split(ATTRIBUTES_REGEX);\n // record each name for publishin g\n for (var i=0, l=names.length, n; i<l; i++) {\n // remove exc ess ws\n n = names[i].trim();\n // do not override explicit en tries\n if (n && publish[n] === undefined && base[n] === undefined) {\n // supply an empty 'descriptor' object and let the publishProperties \n // code determine a default\n publish[n] = Polymer.nob; \n }\n }\n }\n },\n\n // record clonable attributes f rom <element>\n accumulateInstanceAttributes: function() {\n // inherit instance attributes\n var clonable = this.prototype._instanceAttributes;\n // merge attributes from element\n var a$ = this.attributes;\n fo r (var i=0, l=a$.length, a; (i<l) && (a=a$[i]); i++) { \n if (this.isIns tanceAttribute(a.name)) {\n clonable[a.name] = a.value;\n }\n }\n },\n\n isInstanceAttribute: function(name) {\n return !this.bl ackList[name] && name.slice(0,3) !== 'on-';\n },\n\n // do not clone these attributes onto instances\n blackList: {\n name: 1,\n 'extends': 1 ,\n constructor: 1,\n noscript: 1,\n assetpath: 1,\n 'cache- csstext': 1\n }\n \n };\n\n // add ATTRIBUTES_ATTRIBUTE to the blacklist \n attributes.blackList[ATTRIBUTES_ATTRIBUTE] = 1;\n\n // exports\n\n scope.a pi.declaration.attributes = attributes;\n\n})(Polymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only b e used under the BSD style license found at http://polymer.github.io/LICENSE.txt \n * The complete set of authors may be found at http://polymer.github.io/AUTHOR S.txt\n * The complete set of contributors may be found at http://polymer.github .io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer proje ct is also\n * subject to an additional IP rights grant found at http://polymer. github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n // imports\n var events = scope.api.declaration.events;\n\n var syntax = new PolymerExpressions();\n va r prepareBinding = syntax.prepareBinding;\n\n // Polymer takes a first crack at the binding to see if it's a declarative\n // event handler.\n syntax.prepare Binding = function(pathString, name, node) {\n return events.prepareEventBind ing(pathString, name, node) ||\n prepareBinding.call(syntax, pathStrin g, name, node);\n };\n\n // declaration api supporting mdv\n var mdv = {\n syntax: syntax,\n fetchTemplate: function() {\n return this.querySelect or('template');\n },\n templateContent: function() {\n var template = this.fetchTemplate();\n return template && Platform.templateContent(templa te);\n },\n installBindingDelegate: function(template) {\n if (templa te) {\n template.bindingDelegate = this.syntax;\n }\n }\n };\n\n // exports\n scope.api.declaration.mdv = mdv;\n\n})(Polymer);\n","/*\n * Copy right (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code m ay only be used under the BSD style license found at http://polymer.github.io/LI CENSE.txt\n * The complete set of authors may be found at http://polymer.github. io/AUTHORS.txt\n * The complete set of contributors may be found at http://polym er.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the poly mer project is also\n * subject to an additional IP rights grant found at http:/ /polymer.github.io/PATENTS.txt\n */\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 register: function(name, e xtendeeName) {\n // build prototype combining extendee, Polymer base, and n amed api\n this.buildPrototype(name, extendeeName);\n // register our custom element with the platform\n this.registerPrototype(name, extendeeNam e);\n // reference constructor in a global named by 'constructor' attribute \n this.publishConstructor();\n },\n\n buildPrototype: 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 d eclarative features\n this.desugarBeforeChaining(extension, base);\n / / join prototypes\n this.prototype = this.chainPrototypes(extension, base); \n // more declarative features\n this.desugarAfterChaining(name, exte ndeeName);\n },\n\n desugarBeforeChaining: function(prototype, base) {\n // back reference declaration element\n // TODO(sjmiles): replace `elem ent` with `elementElement` or `declaration`\n prototype.element = this;\n // transcribe `attributes` declarations onto own prototype's `publish`\n this.publishAttributes(prototype, base);\n // `publish` properties to the prototype and to attribute watch\n this.publishProperties(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: f unction(prototype, base) {\n // chain various meta-data objects to inherite d 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(chained);\n return chai ned;\n },\n\n inheritMetaData: function(prototype, base) {\n // chain observe object to inherited\n this.inheritObject('observe', prototype, bas e);\n // chain publish object to inherited\n this.inheritObject('publi sh', prototype, base);\n // chain reflect object to inherited\n this.i nheritObject('reflect', prototype, base);\n // chain our lower-cased publis h map to the inherited version\n this.inheritObject('_publishLC', prototype , base);\n // chain our instance attributes map to the inherited version\n this.inheritObject('_instanceAttributes', prototype, base);\n // chain our event delegates map to the inherited version\n this.inheritObject('eve ntDelegates', prototype, base);\n },\n\n // implement various declarative features\n desugarAfterChaining: function(name, extendee) {\n // build s ide-chained lists to optimize iterations\n this.optimizePropertyMaps(this.p rototype);\n this.createPropertyAccessors(this.prototype);\n // instal l mdv delegate on template\n this.installBindingDelegate(this.fetchTemplate ());\n // install external stylesheets as if they are inline\n this.in stallSheets();\n // adjust any paths in dom from imports\n this.resolv eElementPaths(this);\n // compile list of attributes to copy to instances\n this.accumulateInstanceAttributes();\n // parse on-* delegates declar ed on `this` element\n this.parseHostEvents();\n //\n // install a helper method this.resolvePath to aid in \n // setting resource urls. e.g .\n // this.$.image.src = this.resolvePath('images/foo.png')\n this.ad dResolvePathApi();\n // under ShadowDOMPolyfill, transforms to approximate missing CSS features\n if (window.ShadowDOMPolyfill) {\n Platform.Sh adowCSS.shimStyling(this.templateContent(), name, extendee);\n }\n // allow custom element access to the declarative context\n if (this.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 publishConstructor: function () {\n var symbol = this.getAttribute('constructor');\n if (symbol) {\ n window[symbol] = this.ctor;\n }\n },\n\n // build prototype combining extendee, Polymer base, and named api\n generateBasePrototype: func tion(extnds) {\n var prototype = this.findBasePrototype(extnds);\n if (!prototype) {\n // create a prototype based on tag-name extension\n var prototype = HTMLElement.getPrototypeForTag(extnds);\n // insert ba se api in inheritance chain (if needed)\n prototype = this.ensureBaseApi( prototype);\n // memoize this base\n memoizedBases[extnds] = proto type;\n }\n return prototype;\n },\n\n findBasePrototype: functi on(name) {\n return memoizedBases[name];\n },\n\n // install Polymer instance api into prototype chain, as needed \n ensureBaseApi: function(proto type) {\n if (prototype.PolymerBase) {\n return prototype;\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(s jmiles): sharing methods across prototype chains is\n // not supported by ' super' implementation which optimizes\n // by memoizing prototype relations hips.\n // Probably we should have a version of 'extend' that is \n // share-aware: it could study the text of each function,\n // look 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 // ins talled is called `mixinSuper` and the mixin method\n // must use this metho d instead of the default `super`.\n this.mixinMethod(extended, prototype, a pi.instance.mdv, 'bind');\n // return buffed-up prototype\n return ext ended;\n },\n\n mixinMethod: function(extended, prototype, api, name) {\n var $super = function(args) {\n return prototype[name].apply(this, a rgs);\n };\n extended[name] = function() {\n this.mixinSuper = $super;\n return api[name].apply(this, arguments);\n }\n },\n\n // ensure prototype[name] inherits from a prototype.prototype[name]\n inher itObject: function(name, prototype, base) {\n // require an object\n v ar source = prototype[name] || {};\n // chain inherited properties onto a n ew object\n prototype[name] = this.chainObject(source, base[name]);\n }, \n\n // register 'prototype' to custom element 'name', store constructor \n registerPrototype: function(name, extendee) { \n var info = {\n pr ototype: this.prototype\n }\n // native element must be specified in e xtends\n var typeExtension = this.findTypeExtension(extendee);\n if (t ypeExtension) {\n info.extends = typeExtension;\n }\n // regist er the prototype with HTMLElement for name lookup\n HTMLElement.register(na me, this.prototype);\n // register the custom type\n this.ctor = docum ent.registerElement(name, info);\n },\n\n findTypeExtension: function(name ) {\n if (name && name.indexOf('-') < 0) {\n return name;\n } e lse {\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, inherited) {\n if (object && inherited && object !== inherited) {\n object.__proto__ = i nherited;\n }\n return object;\n }\n } else {\n prototype.chain Object = function(object, inherited) {\n if (object && inherited && object !== inherited) {\n var chained = Object.create(inherited);\n objec t = extend(chained, object);\n }\n return object;\n }\n }\n\n // On platforms that do not support __proto__ (versions of IE), the prototype\n // chain of a custom element is simulated via installation of __proto__.\n // Alt hough custom elements manages this, we install it here so it's\n // available d uring desugaring.\n function ensurePrototypeTraversal(prototype) {\n if (!Ob ject.__proto__) {\n var ancestor = Object.getPrototypeOf(prototype);\n prototype.__proto__ = ancestor;\n if (isBase(ancestor)) {\n ancesto r.__proto__ = Object.getPrototypeOf(ancestor);\n }\n }\n }\n\n // expo rts\n\n api.declaration.prototype = prototype;\n\n})(Polymer);\n","/*\n * Copyr ight (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code ma y only be used under the BSD style license found at http://polymer.github.io/LIC ENSE.txt\n * The complete set of authors may be found at http://polymer.github.i o/AUTHORS.txt\n * The complete set of contributors may be found at http://polyme r.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polym er project is also\n * subject to an additional IP rights grant found at http:// polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n /*\n\n Elements are added to a registration queue so that they register in \n the proper ord er at the appropriate time. We do this for a few reasons:\n\n * to enable ele ments to load resources (like stylesheets) \n asynchronously. We need to do t his until the platform provides an efficient\n alternative. One issue is that remote @import stylesheets are \n re-fetched whenever stamped into a shadowR oot.\n\n * to ensure elements loaded 'at the same time' (e.g. via some set of \n imports) are registered as a batch. This allows elements to be enured from \n upgrade ordering as long as they query the dom tree 1 task after\n upgr ade (aka domReady). This is a performance tradeoff. On the one hand,\n elemen ts that could register while imports are loading are prevented from \n doing so. On the other, grouping upgrades into a single task means less\n increment al work (for example style recalcs), Also, we can ensure the \n document is in a known state at the single quantum of time when \n elements upgrade.\n\n */\n var queue = {\n // tell the queue to wait for an element to be ready\n wait: function(element, check, go) {\n var shouldAdd = (this.indexOf(el ement) === -1 && \n flushQueue.indexOf(element) === -1);\n if (sho uldAdd) {\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('queueing', element.name);\ n queueForElement(element).push(element);\n },\n indexOf: function(el ement) {\n var i = queueForElement(element).indexOf(element);\n if (i >= 0 && document.contains(element)) {\n i += (HTMLImports.useNative || HT MLImports.ready) ? \n importQueue.length : 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(element);\n if (read ied) {\n this.addToFlushQueue(readied);\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 re turn;\n }\n return queueForElement(element).shift();\n },\n chec k: function() {\n // next\n var element = this.nextElement();\n i f (element) {\n element.__check.call(element);\n }\n if (this.c anReady()) {\n this.ready();\n return true;\n }\n },\n nextElement: function() {\n return nextQueued();\n },\n canReady: fun ction() {\n return !this.waitToReady && this.isEmpty();\n },\n isEmpt y: function() {\n return !importQueue.length && !mainQueue.length;\n },\ n addToFlushQueue: function(element) {\n flushQueue.push(element); \n },\n flush: function() {\n var element;\n while (flushQueue.lengt h) {\n element = flushQueue.shift();\n element.__go.call(element); \n element.__check = element.__go = null;\n }\n },\n ready: fu nction() {\n this.flush();\n // TODO(sorvell): As an optimization, tur n off CE polyfill upgrading\n // while registering. This way we avoid havin g to upgrade each document\n // piecemeal per registration and can instead register all elements\n // and upgrade once in a batch. Without this optimi zation, 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 polyfill.\n if (CustomElements.ready === false) {\n Cu stomElements.upgradeDocumentTree(document);\n CustomElements.ready = true ;\n }\n Platform.flush();\n requestAnimationFrame(this.flushReady Callbacks);\n },\n addReadyCallback: function(callback) {\n if (callb ack) {\n readyCallbacks.push(callback);\n }\n },\n flushReadyC allbacks: function() {\n if (readyCallbacks) {\n var fn;\n wh ile (readyCallbacks.length) {\n fn = readyCallbacks.shift();\n fn();\n }\n }\n },\n waitToReady: true\n };\n\n var flushQu eue = [];\n\n var importQueue = [];\n var mainQueue = [];\n var readyCallback s = [];\n\n function queueForElement(element) {\n return document.contains(e lement) ? mainQueue : importQueue;\n }\n\n function nextQueued() {\n return importQueue.length ? importQueue[0] : mainQueue[0];\n }\n\n var polymerReadie d = false; \n\n document.addEventListener('WebComponentsReady', function() {\n CustomElements.ready = false;\n });\n \n function whenPolymerReady(callbac k) {\n queue.waitToReady = true;\n CustomElements.ready = false;\n HTML Imports.whenImportsReady(function() {\n queue.addReadyCallback(callback);\n queue.waitToReady = false;\n queue.check();\n });\n }\n\n // exp orts\n scope.queue = queue;\n scope.whenPolymerReady = whenPolymerReady;\n})(P olymer);\n","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights r eserved.\n * This code may only be used under the BSD style license found at htt p://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found a t http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Go ogle as part of the polymer project is also\n * subject to an additional IP righ ts grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n var whenPolymerReady = scope.whenPolymerReady;\n\n function importElemen ts(elementOrFragment, callback) {\n if (elementOrFragment) {\n document. head.appendChild(elementOrFragment);\n whenPolymerReady(callback);\n } e lse if (callback) {\n callback();\n }\n }\n\n function importUrls(urls , callback) {\n if (urls && urls.length) {\n var frag = document.creat eDocumentFragment();\n for (var i=0, l=urls.length, url, link; (i<l) && ( url=urls[i]); i++) {\n link = document.createElement('link');\n link.rel = 'import';\n link.href = url;\n frag.appendChild(l ink);\n }\n importElements(frag, callback);\n } else if (callba ck) {\n callback();\n }\n }\n\n // exports\n scope.import = importUrl s;\n scope.importElements = importElements;\n\n})(Polymer);\n","/*\n * Copyrigh t (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may o nly be used under the BSD style license found at http://polymer.github.io/LICENS E.txt\n * The complete set of authors may be found at http://polymer.github.io/A UTHORS.txt\n * The complete set of contributors may be found at http://polymer.g ithub.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://pol ymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n // imports\n\n var e xtend = scope.extend;\n var api = scope.api;\n var queue = scope.queue;\n var whenPolymerReady = scope.whenPolymerReady;\n var getRegisteredPrototype = scop e.getRegisteredPrototype;\n var waitingForPrototype = scope.waitingForPrototype ;\n\n // declarative implementation: <polymer-element>\n\n var prototype = ext end(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 = thi s.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 || this .waitingForPrototype(this.name)\n || this.waitingForQueue()\n || thi s.waitingForResources()) {\n return;\n }\n // TODO(sorvell): ends up calling '_register' by virtue\n // of `waitingForQueue` (see below) \n queue.go(this);\n },\n\n // TODO(sorvell): refactor, this method i s 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', this.name);\n // warn if extending from a custom eleme nt not registered via Polymer\n if (isCustomTag(this.extends) && !isRegiste red(this.extends)) {\n console.warn('%s is attempting to extend %s, an un registered element ' +\n 'or one that was not registered with Polymer .', this.name,\n this.extends);\n }\n this.register(this.na me, this.extends);\n this.registered = true;\n //console.groupEnd();\n },\n\n waitingForPrototype: function(name) {\n if (!getRegisteredPro totype(name)) {\n // then wait for a prototype\n waitingForPrototy pe(name, this);\n // emulate script if user is not supplying one\n this.handleNoScript(name);\n // prototype not ready yet\n return true;\n }\n },\n\n handleNoScript: function(name) {\n // if expl icitly marked as 'noscript'\n if (this.hasAttribute('noscript') && !this.no script) {\n this.noscript = true;\n // TODO(sorvell): CustomElemen ts polyfill awareness:\n // noscript elements should upgrade in logical o rder\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 // prototype a t this time.\n if (window.CustomElements && !CustomElements.useNative) {\ n Polymer(name);\n } else {\n var script = document.cre ateElement('script');\n script.textContent = 'Polymer(\\'' + name + '\\ ');';\n this.appendChild(script);\n }\n }\n },\n\n wa itingForResources: function() {\n return this._needsResources;\n },\n\n // NOTE: Elements must be queued in proper order for inheritance/composition\ n // dependency resolution. Previously this was enforced for inheritance,\n // and by rule for composition. It's now entirely by rule.\n waitingForQueu e: function() {\n return queue.wait(this, this.registerWhenReady, this._reg ister);\n },\n\n loadResources: function() {\n this._needsResources = true;\n this.loadStyles(function() {\n this._needsResources = false ;\n this.registerWhenReady();\n }.bind(this));\n }\n\n });\n\n // semi-pluggable APIs \n\n // TODO(sjmiles): should be fully pluggable (aka de coupled, currently\n // the various plugins are allowed to depend on each other directly)\n api.publish(api.declaration, prototype);\n\n // utility and bookk eeping\n\n function isRegistered(name) {\n return Boolean(HTMLElement.getPro totypeForTag(name));\n }\n\n function isCustomTag(name) {\n return (name && name.indexOf('-') >= 0);\n }\n\n // boot tasks\n\n whenPolymerReady(function () {\n document.body.removeAttribute('unresolved');\n document.dispatchEve nt(\n new CustomEvent('polymer-ready', {bubbles: true})\n );\n });\n\n // register polymer-element with document\n\n document.registerElement('polyme r-element', {prototype: prototype});\n\n})(Polymer);\n","/*\n * Copyright (c) 20 14 The Polymer Project Authors. All rights reserved.\n * This code may only be u sed under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.t xt\n * The complete set of contributors may be found at http://polymer.github.io /CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.git hub.io/PATENTS.txt\n */\n\n/**\n * The `auto-binding` element extends the templa te element. It provides a quick \n * and easy way to do data binding without the need to setup a model. \n * The `auto-binding` element itself serves as the mod el and controller for the \n * elements it contains. Both data and event handler s can be bound. \n *\n * The `auto-binding` element acts just like a template th at is bound to \n * a model. It stamps its content in the dom adjacent to itself . When the \n * content is stamped, the `template-bound` event is fired.\n *\n * Example:\n *\n * <template is=\"auto-binding\">\n * <div>Say somethin g: <input value=\"{{value}}\"></div>\n * <div>You said: {{value}}</div>\n * <button on-tap=\"{{buttonTap}}\">Tap me!</button>\n * </template>\n * <script>\n * var template = document.querySelector('template');\n * template.value = 'something';\n * template.buttonTap = function() {\ n * console.log('tap!');\n * };\n * </script>\n *\n * @module Polymer\n * @status stable\n*/\n\n(function() {\n\n var element = document.crea teElement('polymer-element');\n element.setAttribute('name', 'auto-binding');\n element.setAttribute('extends', 'template');\n element.init();\n\n Polymer(' auto-binding', {\n\n createdCallback: function() {\n this.syntax = this. bindingDelegate = this.makeSyntax();\n // delay stamping until polymer-read y so that auto-binding is not\n // required to load last.\n Polymer.wh enPolymerReady(function() {\n this.model = this;\n this.setAttribu te('bind', '');\n // we don't bother with an explicit signal here, we cou ld ust a MO\n // if necessary\n this.async(function() {\n // note: this will marshall *all* the elements in the parentNode\n // rather than just stamped ones. We'd need to use createInstance\n // to fix this or something else fancier.\n this.marshalNodeReferences(this.p arentNode);\n // template stamping is asynchronous so stamping isn't co mplete\n // by polymer-ready; fire an event so users can use stamped el ements\n this.fire('template-bound');\n });\n }.bind(this)) ;\n },\n\n makeSyntax: function() {\n var events = Object.create(Poly mer.api.declaration.events);\n var self = this;\n events.findControlle r = function() { return self.model; };\n\n var syntax = new PolymerExpressi ons();\n var prepareBinding = syntax.prepareBinding; \n syntax.prepar eBinding = function(pathString, name, node) {\n return events.prepareEven tBinding(pathString, name, node) ||\n prepareBinding.call(syntax, pathString, name, node);\n };\n return syntax;\n }\n\n });\n\n})() ;\n"]}
OLDNEW
« no previous file with comments | « dart/pkg/polymer/lib/src/js/polymer/polymer.concat.js.map ('k') | dart/pkg/polymer/lib/src/loader.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698