| Index: polymer_0.5.0/bower_components/core-focusable/core-focusable.js | 
| diff --git a/polymer_0.5.0/bower_components/core-focusable/core-focusable.js b/polymer_0.5.0/bower_components/core-focusable/core-focusable.js | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..6633b5f9443737c40f92f9fa8fa6dc33db1aed2c | 
| --- /dev/null | 
| +++ b/polymer_0.5.0/bower_components/core-focusable/core-focusable.js | 
| @@ -0,0 +1,134 @@ | 
| +/** | 
| + * @group Polymer Mixins | 
| + * | 
| + * `Polymer.CoreFocusable` is a mixin for elements that the user can interact with. | 
| + * Elements using this mixin will receive attributes reflecting the focus, pressed | 
| + * and disabled states. | 
| + * | 
| + * @element Polymer.CoreFocusable | 
| + * @status unstable | 
| + */ | 
| + | 
| +Polymer.CoreFocusable = { | 
| + | 
| +  mixinPublish: { | 
| + | 
| +    /** | 
| +     * If true, the element is currently active either because the | 
| +     * user is touching it, or the button is a toggle | 
| +     * and is currently in the active state. | 
| +     * | 
| +     * @attribute active | 
| +     * @type boolean | 
| +     * @default false | 
| +     */ | 
| +    active: {value: false, reflect: true}, | 
| + | 
| +    /** | 
| +     * If true, the element currently has focus due to keyboard | 
| +     * navigation. | 
| +     * | 
| +     * @attribute focused | 
| +     * @type boolean | 
| +     * @default false | 
| +     */ | 
| +    focused: {value: false, reflect: true}, | 
| + | 
| +    /** | 
| +     * If true, the user is currently holding down the button. | 
| +     * | 
| +     * @attribute pressed | 
| +     * @type boolean | 
| +     * @default false | 
| +     */ | 
| +    pressed: {value: false, reflect: true}, | 
| + | 
| +    /** | 
| +     * If true, the user cannot interact with this element. | 
| +     * | 
| +     * @attribute disabled | 
| +     * @type boolean | 
| +     * @default false | 
| +     */ | 
| +    disabled: {value: false, reflect: true}, | 
| + | 
| +    /** | 
| +     * If true, the button toggles the active state with each tap. | 
| +     * Otherwise, the button becomes active when the user is holding | 
| +     * it down. | 
| +     * | 
| +     * @attribute toggle | 
| +     * @type boolean | 
| +     * @default false | 
| +     */ | 
| +    toggle: false | 
| + | 
| +  }, | 
| + | 
| +  mixinDelegates: { | 
| +    contextMenu: '_contextMenuAction', | 
| +    down: '_downAction', | 
| +    up: '_upAction', | 
| +    focus: '_focusAction', | 
| +    blur: '_blurAction' | 
| +  }, | 
| + | 
| +  mixinObserve: { | 
| +    disabled: '_disabledChanged' | 
| +  }, | 
| + | 
| +  _disabledChanged: function() { | 
| +    if (this.disabled) { | 
| +      this.style.pointerEvents = 'none'; | 
| +      this.removeAttribute('tabindex'); | 
| +      this.setAttribute('aria-disabled', ''); | 
| +    } else { | 
| +      this.style.pointerEvents = ''; | 
| +      this.setAttribute('tabindex', 0); | 
| +      this.removeAttribute('aria-disabled'); | 
| +    } | 
| +  }, | 
| + | 
| +  _downAction: function() { | 
| +    this.pressed = true; | 
| + | 
| +    if (this.toggle) { | 
| +      this.active = !this.active; | 
| +    } else { | 
| +      this.active = true; | 
| +    } | 
| +  }, | 
| + | 
| +  // Pulling up the context menu for an item should focus it; but we need to | 
| +  // be careful about how we deal with down/up events surrounding context | 
| +  // menus. The up event typically does not fire until the context menu | 
| +  // closes: so we focus immediately. | 
| +  // | 
| +  // This fires _after_ downAction. | 
| +  _contextMenuAction: function(e) { | 
| +    // Note that upAction may fire _again_ on the actual up event. | 
| +    this._upAction(e); | 
| +    this._focusAction(); | 
| +  }, | 
| + | 
| +  _upAction: function() { | 
| +    this.pressed = false; | 
| + | 
| +    if (!this.toggle) { | 
| +      this.active = false; | 
| +    } | 
| +  }, | 
| + | 
| +  _focusAction: function() { | 
| +    if (!this.pressed) { | 
| +      // Only render the "focused" state if the element gains focus due to | 
| +      // keyboard navigation. | 
| +      this.focused = true; | 
| +    } | 
| +  }, | 
| + | 
| +  _blurAction: function() { | 
| +    this.focused = false; | 
| +  } | 
| + | 
| +} | 
|  |