{
  "file": "addon/components/fountainhead-state.js",
  "content": "<pre class=\"language-javascript line-numbers\"><code class=\"language-javascript}\"><span aria-hidden=\"true\" role=\"presentation\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span><span class=\"token keyword\">import</span> Component <span class=\"token keyword\">from</span> <span class=\"token string\">'ember-component'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> hbs <span class=\"token keyword\">from</span> <span class=\"token string\">'htmlbars-inline-precompile'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\" spellcheck=\"true\">/**\n * ## Ember-Radical `rad-state` Component\n *\n * Component that can be used for tracking state changes with modals or drawers.\n * Wrap either in one of these and use the yielded state and actions to handle\n * showing/hiding/controlling your component.\n *\n * Useful mainly for demonstration/documentation purposes, but also handy for\n * when you don't have a convenient place to store state (particularly during\n * early development stages). It's also kind of nice for not cluttering up your\n * parent scope with a bunch of extra state and actions you might not want to\n * hang onto. Go nuts!\n *\n * ## Usage\n *\n * Instances of `rad-state` yield an `active` property and a hash of `actions`\n * for manipulating that state: `open`, `close`, and `toggleState`.\n *\n * ```handlebars\n * {{#rad-state as |state stateActions|}}\n *   {{bank-vault\n *     isOpen=state\n *     closeVault=stateActions.close\n *     openVault=stateActions.open}}\n * {{/rad-state}}\n * ```\n *\n * Or for a smipler toggling implementation:\n *\n * ```handlebars\n * {{#rad-state as |switchState switchActions|}}\n *   {{light-switch isOn=switchState toggleSwitch=switchActions.toggleState}}\n * {{/rad-state}}\n * ```\n *\n * The actions in the actions hash have already been yielded via the action\n * helper, so it is not necessary to continue using that helper when passing\n * actions into child components as properties (but you totally still can if\n * you would prefer to.\n *\n * @class FountainheadState\n * @constructor\n * @extends EmberRadical.RadState\n */</span>\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> Component<span class=\"token punctuation\">.</span><span class=\"token function\">extend</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n\n  <span class=\"token comment\" spellcheck=\"true\">// Properties</span>\n  <span class=\"token comment\" spellcheck=\"true\">// ---------------------------------------------------------------------------</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Boolean state tracking property. Use this to handle show/hide status.\n   * {{if state 'state' 'no-state'}}\n   * {{#fountainhead-button click=stateActions.toggleState}}Click{{/fountainhead-button}}\n   * @property active\n   * @type {Boolean}\n   */</span>\n  active<span class=\"token punctuation\">:</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Rad State is a purely functional component with no rendered output of its\n   * own, so it doesn't need a root element cluttering up the DOM when it's\n   * being used.\n   * {{if state 'state' 'no-state'}}\n   * {{#fountainhead-button click=stateActions.toggleState}}Click{{/fountainhead-button}}\n   * @property tagName\n   * @type {string}\n   */</span>\n  tagName<span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span class=\"token punctuation\">,</span>\n\n  <span class=\"token comment\" spellcheck=\"true\">// Actions</span>\n  <span class=\"token comment\" spellcheck=\"true\">// ---------------------------------------------------------------------------</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Actions hash\n   * @property actions\n   * @type {Object}\n   */</span>\n  actions<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\" spellcheck=\"true\">/**\n     * Sets the {{c-l 'active'}} property to false.\n     * @method closeModal\n     */</span>\n    <span class=\"token function\">close</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">set</span><span class=\"token punctuation\">(</span><span class=\"token string\">'active'</span><span class=\"token punctuation\">,</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token comment\" spellcheck=\"true\">/**\n     * Sets the {{c-l 'active'}} property to true.\n     * @method openModal\n     */</span>\n    <span class=\"token function\">open</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">set</span><span class=\"token punctuation\">(</span><span class=\"token string\">'active'</span><span class=\"token punctuation\">,</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token comment\" spellcheck=\"true\">/**\n     * Sets the {{c-l 'active'}} property to passed state.\n     * @method toggleState\n     * @param {boolean} state State to set active to\n     */</span>\n    <span class=\"token function\">toggleState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">toggleProperty</span><span class=\"token punctuation\">(</span><span class=\"token string\">'active'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\n  <span class=\"token comment\" spellcheck=\"true\">// Layout</span>\n  <span class=\"token comment\" spellcheck=\"true\">// ---------------------------------------------------------------------------</span>\n  layout<span class=\"token punctuation\">:</span> hbs<span class=\"token template-string\"><span class=\"token string\">`{{yield active (hash\n    open=(action 'open')\n    close=(action 'close')\n    toggleState=(action 'toggleState')\n  )}}`</span></span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n</code></pre>"
}