{
  "file": "addon/components/fountainhead-tabs-content.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><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 comment\" spellcheck=\"true\">/* Source: https://github.com/healthsparq/ember-radical/blob/master/addon/components/rad-tabs/content/component.js */</span>\n\n<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> computed <span class=\"token keyword\">from</span> <span class=\"token string\">'ember-computed'</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 * This component is yielded by the `fountainhead-tabs` component. The `activeId` and\n * actions `registerTab` and `updateTab` are privately bound for internal use.\n *\n * On init each tab will register itself with the `fountainhead-tabs` wrapping container,\n * passing all its data. The `fountainhead-tabs` container uses this to build out the\n * tab buttons.\n *\n * ```handlebars\n * {{#fountainhead-tabs defaultTab=\"dumpsterShrimp\" as |components|}}\n *   {{#components.content label=\"Shrimp\" elementId=\"dumpsterShrimp\" tabDataTest=\"a-nifty-tab-button\"}}\n *     BRINGO! There's some pretty good lil' shrimpers in here, lets check it out.\n *   {{/components.content}}\n * {{/fountainhead-tabs}}\n * ```\n *\n * Configuration | Type | Default | Description\n * --- | --- | --- | ---\n * `label` | string | null | Text label of the tab button for this panel\n * `elementId` | string | null | Set a specific id for this component when using container `defaultTab`\n * `tabDataTest` | string | null | `data-test` for the tab button\n *\n * @class FountainheadTabsContent\n * @constructor\n * @extends Ember.Component\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\">// Passed Properties</span>\n  <span class=\"token comment\" spellcheck=\"true\">// ---------------------------------------------------------------------------</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * The id of the currently active tab in the scope of the\n   * `fountainhead-tabs` component. This is provided privately in the\n   * `fountainhead-tabs` yield hash.\n   * @property activeId\n   * @type {String}\n   * @default ''\n   */</span>\n  activeId<span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Whether this tab should be hidden from view. Useful for situations where\n   * a tab needs to exist in a particular place in the tab ordering but may\n   * not have the data it needs to display information at the time when\n   * `registerTab` is invoked. This allows you to make sure your tab can be\n   * hidden while preserving its place in the list.\n   *\n   * @property hidden\n   * @type {Boolean}\n   */</span>\n  hidden<span class=\"token punctuation\">:</span> <span class=\"token boolean\">false</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   * Aria role `tabpanel` is bound for A++ accessibility.\n   * @property ariaRole\n   * @type {string}\n   * @default tabpanel\n   */</span>\n  ariaRole<span class=\"token punctuation\">:</span> <span class=\"token string\">'tabpanel'</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Bound attributes:\n   * - `data-test`: for precise testing identification\n   * - `_hidden`: to hide this tab if it is not selected or if prop hidden is true\n   * @property attributeBindings\n   * @type {Array}\n   */</span>\n  attributeBindings<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">'data-test'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'_hidden:aria-hidden'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Class names: `tabs-content`\n   * @property classNames\n   * @type {Array}\n   */</span>\n  classNames<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">'tabs-content'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Computed `_hidden` accounts for whether the tab is selected (by checking\n   * `activeId`) &amp;&amp; if this tab has been flagged to be hidden with property\n   * `hidden`\n   * @property _hidden\n   * @param {string} activeId\n   * @param {boolean} hidden\n   * @return {string} String of true/false for use with `aria-hidden` binding\n   */</span>\n  _hidden<span class=\"token punctuation\">:</span> <span class=\"token function\">computed</span><span class=\"token punctuation\">(</span><span class=\"token string\">'activeId'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'hidden'</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'hidden'</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">||</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'activeId'</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!==</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'elementId'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">return</span> <span class=\"token string\">'true'</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">return</span> <span class=\"token string\">'false'</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * The button label text of this tab. This will be passed up via a closure\n   * action to the containing `fountainhead-tabs` component.\n   *\n   * @property label\n   * @type {String}\n   * @default ''\n   */</span>\n  label<span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Use this attribute to place a custom data-test attribute on the tab button\n   * for this tab. This will allow easier, specific/direct targeting of clicking\n   * this tab in automated testing.\n   *\n   * @property tabDataTest\n   * @type {string}\n   */</span>\n  tabDataTest<span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span class=\"token punctuation\">,</span>\n\n  <span class=\"token comment\" spellcheck=\"true\">// Hooks</span>\n  <span class=\"token comment\" spellcheck=\"true\">// ---------------------------------------------------------------------------</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Handle registering with the tabs container on int by firing `registerTab`\n   * closure action with this tab's data.\n   * @event init\n   */</span>\n  <span class=\"token function\">init</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\">_super</span><span class=\"token punctuation\">(</span><span class=\"token operator\">...</span>arguments<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">registerTab</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">getProperties</span><span class=\"token punctuation\">(</span>\n      <span class=\"token string\">'elementId'</span><span class=\"token punctuation\">,</span>\n      <span class=\"token string\">'label'</span><span class=\"token punctuation\">,</span>\n      <span class=\"token string\">'hidden'</span><span class=\"token punctuation\">,</span>\n      <span class=\"token string\">'tabDataTest'</span><span class=\"token punctuation\">,</span>\n      <span class=\"token string\">'tagcategory'</span><span class=\"token punctuation\">,</span>\n      <span class=\"token string\">'tagaction'</span><span class=\"token punctuation\">,</span>\n      <span class=\"token string\">'taglabel'</span><span class=\"token punctuation\">)</span>\n    <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   * Actions Up: When something changes in this component we need to let the\n   * container tabs know by firing the `updateTab` closure action with this\n   * tabs changed data.\n   *\n   * _(Currently the only change we're notifying on is the `hidden` prop)_\n   * @event didUpdateAttrs\n   */</span>\n  <span class=\"token function\">didUpdateAttrs</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">let</span> hidden <span class=\"token operator\">=</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'hidden'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        oldHidden <span class=\"token operator\">=</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'_oldHidden'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>oldHidden <span class=\"token operator\">!==</span> hidden<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\">updateTab</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">getProperties</span><span class=\"token punctuation\">(</span><span class=\"token string\">'elementId'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'hidden'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token comment\" spellcheck=\"true\">// Update the private hidden state so it can be used for comparison</span>\n    <span class=\"token comment\" spellcheck=\"true\">// on the next attrs update</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\">'_oldHidden'</span><span class=\"token punctuation\">,</span> hidden<span class=\"token punctuation\">)</span><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}}`</span></span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n</code></pre>"
}