\n
JWT Generator
\n
\n
\n
\n Invalid ACL provided. Must be JSON\n
\n
\n Invalid private key provided\n
\n
\n
\n
\n\n
\n
Parameters
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Decoded
\n
\n
\n \n \n Name | \n Value | \n Meaning | \n
\n \n \n application_id | {{applicationId}} | The application ID this JWT uses for authentication |
\n iat | {{iat}} | The time at which the token was issued |
\n nbf | {{nbf}} | The time at which the token should become valid |
\n exp | {{exp}} | The time at which the token should expire |
\n sub | {{sub}} | The subject identified by the JWT (only used for the Client SDKs) |
\n acl | {{acl}} | A list of permissions that this token will have |
\n jti | {{jti}} | A unique identifier for the JWT |
\n \n
\n
\n
\n
\n
\n\n\n\n","
\n \n\n\n","
\n \n
\n\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n {{ resultTitle(result.index) }}\n
\n
0\" >\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n\n\n\n","
\n \n\n\n","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"Vlt-box\" }, [\n _c(\"h2\", [_vm._v(\"Try it out\")]),\n _vm._v(\" \"),\n _c(\"h4\", [_vm._v(\"Message\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-textarea\" }, [\n _c(\"textarea\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.body,\n expression: \"body\"\n }\n ],\n domProps: { value: _vm.body },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.body = $event.target.value\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-margin--top2\" }),\n _vm._v(\" \"),\n _c(\"h4\", [_vm._v(\"Data\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-box Vlt-box--white Vlt-box--lesspadding\" }, [\n _c(\"div\", { staticClass: \"Vlt-grid\" }, [\n _c(\"div\", { staticClass: \"Vlt-col Vlt-col--1of3\" }, [\n _c(\"b\", [_vm._v(\"Unicode is Required?\")]),\n _vm._v(\" \"),\n _vm.unicodeRequired\n ? _c(\"i\", {\n staticClass: \"icon icon--large icon-check-circle color--success\"\n })\n : _c(\"i\", {\n staticClass: \"icon icon--large icon-times-circle color--error\"\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-col Vlt-col--2of3\" }),\n _vm._v(\" \"),\n _c(\"hr\", { staticClass: \"hr--shorter\" }),\n _vm._v(\" \"),\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", {\n staticClass: \"Vlt-col Vlt-col--2of3\",\n attrs: { id: \"sms-composition\" },\n domProps: { innerHTML: _vm._s(_vm.smsComposition) }\n })\n ])\n ]),\n _vm._v(\" \"),\n _c(\"h4\", [_vm._v(\"Parts\")]),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"Vlt-box Vlt-box--white Vlt-box--lesspadding\",\n attrs: { id: \"parts\" }\n },\n _vm._l(_vm.messages, function(message, index) {\n return _c(\"div\", { staticClass: \"Vlt-grid\" }, [\n _c(\"div\", { staticClass: \"Vlt-col Vlt-col--1of3\" }, [\n _c(\"b\", [_vm._v(\"Part \" + _vm._s(index + 1))])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-col Vlt-col--2of3\" }, [\n _c(\"code\", [\n _vm.messages.length > 1\n ? _c(\"span\", [\n _c(\"span\", { staticClass: \"Vlt-badge Vlt-badge--blue\" }, [\n _vm._v(\"User Defined Header\")\n ]),\n _vm._v(\" \"),\n _c(\"span\", [_vm._v(\" \")])\n ])\n : _vm._e(),\n _vm._v(\"\\n \" + _vm._s(message) + \"\\n \")\n ])\n ]),\n _vm._v(\" \"),\n index + 1 !== _vm.messages.length\n ? _c(\"hr\", { staticClass: \"hr--shorter\" })\n : _vm._e()\n ])\n }),\n 0\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"Vlt-col Vlt-col--1of3\" }, [\n _c(\"b\", [_vm._v(\"Length\")])\n ])\n }\n]\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"Vlt-box Vlt-box--left Vlt-bg-grey-lighter feedback\" },\n [\n _c(\"div\", { staticClass: \"Vlt-grid\" }, [\n _c(\"div\", { staticClass: \"Vlt-col Vlt-col--3of4\" }, [\n _c(\"h4\", [_vm._v(\"Was this documentation helpful?\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"sentiments\" }, [\n _vm.uploadingSentiment\n ? _c(\"div\", [\n _c(\"div\", { staticClass: \"Vlt-spinner Vlt-spinner--small\" })\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", [\n _c(\n \"span\",\n {\n class: [\n { \"Vlt-btn_active\": _vm.sentiment == \"positive\" },\n \"Vlt-btn Vlt-btn--large Vlt-btn--tertiary Vlt-btn--icon Vlt-bg-green\"\n ],\n on: {\n click: function($event) {\n return _vm.setSentiment(\"positive\")\n }\n }\n },\n [\n _c(\"svg\", { staticClass: \"Vlt-white\" }, [\n _c(\"use\", {\n attrs: {\n \"xlink:href\": \"/symbol/volta-icons.svg#Vlt-icon-happy\"\n }\n })\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"span\",\n {\n class: [\n { \"Vlt-btn_active\": _vm.sentiment == \"negative\" },\n \"Vlt-btn Vlt-btn--large Vlt-btn--tertiary Vlt-btn--icon Vlt-bg-red\"\n ],\n on: {\n click: function($event) {\n return _vm.setSentiment(\"negative\")\n }\n }\n },\n [\n _c(\"svg\", { staticClass: \"Vlt-white\" }, [\n _c(\"use\", {\n attrs: {\n \"xlink:href\": \"/symbol/volta-icons.svg#Vlt-icon-unhappy\"\n }\n })\n ])\n ]\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-col Vlt-col--right Vlt-col--1of4\" }, [\n _vm.githubUrl\n ? _c(\"span\", { attrs: { id: \"feedback__improve\" } }, [\n _c(\"svg\", { staticClass: \"Vlt-icon Vlt-black\" }, [\n _c(\"use\", {\n attrs: {\n \"xlink:href\": \"/symbol/volta-icons.svg#Vlt-icon-github\"\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\n \"a\",\n {\n staticClass: \"Vlt-text-link Vlt-black\",\n attrs: { href: _vm.githubUrl, target: \"_blank\" }\n },\n [_vm._v(\" Improve this page\")]\n )\n ])\n : _vm._e()\n ])\n ]),\n _vm._v(\" \"),\n _vm.error\n ? _c(\"p\", { staticClass: \"form__error\" }, [_vm._v(_vm._s(_vm.error))])\n : _vm._e(),\n _vm._v(\" \"),\n (_vm.sentiment && !_vm.showExtendedFields) || _vm.feedbackComplete\n ? _c(\"div\", [\n _c(\"hr\"),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Great! Thanks for the feedback.\")])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showExtendedFields && _vm.id && !_vm.feedbackComplete\n ? _c(\"div\", [\n _c(\"hr\"),\n _vm._v(\" \"),\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-form__element\" }, [\n _vm._m(1),\n _vm._v(\" \"),\n _vm._m(2),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-textarea\" }, [\n _c(\"textarea\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.comment,\n expression: \"comment\"\n }\n ],\n domProps: { value: _vm.comment },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.comment = $event.target.value\n }\n }\n })\n ])\n ]),\n _vm._v(\" \"),\n !_vm.currentUser\n ? _c(\n \"div\",\n {\n staticClass: \"Vlt-form__element Vlt-form__element--elastic\"\n },\n [\n _vm._m(3),\n _vm._v(\" \"),\n _vm._m(4),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-input\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.emailInput,\n expression: \"emailInput\"\n }\n ],\n attrs: {\n type: \"email\",\n size: \"20\",\n placeholder: \"email\",\n id: \"email\"\n },\n domProps: { value: _vm.emailInput },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.emailInput = $event.target.value\n }\n }\n })\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"Vlt-btn Vlt-btn--primary Vlt-btn--app\",\n attrs: {\n disabled: _vm.isSubmitDisabled,\n type: \"submit\",\n value: \"Send Feedback\"\n },\n on: { click: _vm.submitFeedback }\n }),\n _vm._v(\" \"),\n _vm._m(5)\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.currentUser\n ? _c(\"p\", [\n _c(\"br\"),\n _vm._v(\n \"\\n Logged in as \" + _vm._s(_vm.currentUser.email) + \".\\n \"\n ),\n _c(\"a\", { attrs: { href: _vm.currentUser.signout_path } }, [\n _vm._v(\"Sign out\")\n ])\n ])\n : _vm._e()\n ]\n )\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"p\", [\n _vm._v(\n \"We see that this page didn’t meet your expectations. We’re really sorry!\"\n ),\n _c(\"br\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"p\", [\n _c(\"strong\", [\n _vm._v(\n \"We’d like a chance to fix that. Please would you give us some more information?\"\n )\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"label\", { staticClass: \"Vlt-label\" }, [\n _vm._v(\"What didn’t work for me: \"),\n _c(\"small\", { staticClass: \"Vlt-grey-darker\" }, [_vm._v(\"(required)\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"p\", [\n _c(\"strong\", [\n _vm._v(\"Can we let you know when we've solved your issue?\")\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"label\", { staticClass: \"Vlt-label\" }, [\n _vm._v(\"My email: \"),\n _c(\"small\", { staticClass: \"Vlt-grey-darker\" }, [_vm._v(\"(optional)\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"p\", [\n _vm._v(\"Your data will be treated in accordance with our \"),\n _c(\"a\", { attrs: { href: \"https://www.nexmo.com/privacy-policy\" } }, [\n _vm._v(\"Privacy Policy\")\n ]),\n _vm._v(\", which sets out the rights you have in respect of your data.\")\n ])\n }\n]\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"Vlt-card\" }, [\n _c(\"h1\", [_vm._v(\"JWT Generator\")]),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.jwt,\n expression: \"!jwt\"\n }\n ],\n class: [_vm.computedClass, \"Vlt-callout\"]\n },\n [\n _c(\"i\"),\n _vm._v(\" \"),\n _vm.invalidAcl\n ? _c(\"div\", { staticClass: \"Vlt-callout__content\" }, [\n _vm._v(\"\\n Invalid ACL provided. Must be JSON\\n \")\n ])\n : _vm.invalidPrivateKey\n ? _c(\"div\", { staticClass: \"Vlt-callout__content\" }, [\n _vm._v(\"\\n Invalid private key provided\\n \")\n ])\n : _vm._e(),\n _vm._v(\" \"),\n !_vm.invalidPrivateKey && !_vm.invalidAcl\n ? _c(\"div\", {\n staticClass: \"Vlt-callout__content\",\n domProps: { innerHTML: _vm._s(_vm.callout) }\n })\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-grid\" }, [\n _c(\"div\", { staticClass: \"Vlt-col\" }, [\n _c(\"h2\", [_vm._v(\"Parameters\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-form__element\" }, [\n _c(\"label\", { staticClass: \"Vlt-label\" }, [_vm._v(\"Private Key\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-textarea\" }, [\n _c(\"textarea\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.privateKey,\n expression: \"privateKey\"\n }\n ],\n attrs: { rows: \"8\", cols: \"50\", id: \"private-key\" },\n domProps: { value: _vm.privateKey },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.privateKey = $event.target.value\n }\n }\n })\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-form__element\" }, [\n _c(\"label\", { staticClass: \"Vlt-label\" }, [_vm._v(\"Application ID\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-input\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.applicationId,\n expression: \"applicationId\"\n }\n ],\n attrs: { id: \"application-id\" },\n domProps: { value: _vm.applicationId },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.applicationId = $event.target.value\n }\n }\n })\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-form__element\" }, [\n _c(\n \"label\",\n {\n staticClass: \"Vlt-label\",\n attrs: { htmlFor: \"example-input-icon-button\" }\n },\n [_vm._v(\"Valid For\")]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-composite\" }, [\n _c(\"div\", { staticClass: \"Vlt-input\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model.number\",\n value: _vm.validFor,\n expression: \"validFor\",\n modifiers: { number: true }\n }\n ],\n attrs: { type: \"number\", placeholder: \"6\" },\n domProps: { value: _vm.validFor },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.validFor = _vm._n($event.target.value)\n },\n blur: function($event) {\n return _vm.$forceUpdate()\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-composite__append\" }, [\n _c(\"div\", { staticClass: \"Vlt-native-dropdown\" }, [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model.number\",\n value: _vm.validForTimeUnit,\n expression: \"validForTimeUnit\",\n modifiers: { number: true }\n }\n ],\n attrs: { defaultValue: \"3600\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return _vm._n(val)\n })\n _vm.validForTimeUnit = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n [\n _c(\"option\", { attrs: { value: \"1\" } }, [\n _vm._v(\"Seconds\")\n ]),\n _vm._v(\" \"),\n _c(\"option\", { attrs: { value: \"60\" } }, [\n _vm._v(\"Minutes\")\n ]),\n _vm._v(\" \"),\n _c(\"option\", { attrs: { value: \"3600\" } }, [\n _vm._v(\"Hours\")\n ]),\n _vm._v(\" \"),\n _c(\"option\", { attrs: { value: \"86400\" } }, [\n _vm._v(\"Days\")\n ])\n ]\n )\n ])\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-form__element\" }, [\n _c(\"label\", { staticClass: \"Vlt-label\" }, [_vm._v(\"Sub (optional)\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-input\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.sub,\n expression: \"sub\"\n }\n ],\n domProps: { value: _vm.sub },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.sub = $event.target.value\n }\n }\n })\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-form__element\" }, [\n _c(\"label\", { staticClass: \"Vlt-label\" }, [_vm._v(\"ACL (optional)\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-textarea\" }, [\n _c(\"textarea\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.acl,\n expression: \"acl\"\n }\n ],\n attrs: { rows: \"4\", cols: \"50\", id: \"acl\" },\n domProps: { value: _vm.acl },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.acl = $event.target.value\n }\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-col\" }, [\n _c(\"h2\", [_vm._v(\"Encoded\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-form__element\" }, [\n _c(\"label\", { staticClass: \"Vlt-label\" }, [_vm._v(\"Your JWT\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-textarea\" }, [\n _c(\"textarea\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.jwt,\n expression: \"jwt\"\n }\n ],\n attrs: { rows: \"29\", cols: \"50\", id: \"jwt\" },\n domProps: { value: _vm.jwt },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.jwt = $event.target.value\n }\n }\n })\n ])\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-grid\" }, [\n _c(\"div\", { staticClass: \"Vlt-col\" }, [\n _c(\"h2\", [_vm._v(\"Decoded\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-table Vlt-table--data\" }, [\n _c(\"table\", [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"tbody\", [\n _c(\"tr\", [\n _vm._m(1),\n _c(\"td\", [_vm._v(_vm._s(_vm.applicationId))]),\n _c(\"td\", [\n _vm._v(\"The application ID this JWT uses for authentication\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(2),\n _c(\"td\", [_vm._v(_vm._s(_vm.iat))]),\n _c(\"td\", [_vm._v(\"The time at which the token was issued\")])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(3),\n _c(\"td\", [_vm._v(_vm._s(_vm.nbf))]),\n _c(\"td\", [\n _vm._v(\"The time at which the token should become valid\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(4),\n _c(\"td\", [_vm._v(_vm._s(_vm.exp))]),\n _c(\"td\", [_vm._v(\"The time at which the token should expire\")])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(5),\n _c(\"td\", [_vm._v(_vm._s(_vm.sub))]),\n _c(\"td\", [\n _vm._v(\n \"The subject identified by the JWT (only used for the Client SDKs)\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(6),\n _c(\"td\", [_vm._v(_vm._s(_vm.acl))]),\n _c(\"td\", [\n _vm._v(\"A list of permissions that this token will have\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(7),\n _c(\"td\", [_vm._v(_vm._s(_vm.jti))]),\n _c(\"td\", [_vm._v(\"A unique identifier for the JWT\")])\n ])\n ])\n ])\n ])\n ])\n ])\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"thead\", [\n _c(\"tr\", [\n _c(\"th\", [_vm._v(\"Name\")]),\n _vm._v(\" \"),\n _c(\"th\", [_vm._v(\"Value\")]),\n _vm._v(\" \"),\n _c(\"th\", [_vm._v(\"Meaning\")])\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [_c(\"code\", [_vm._v(\"application_id\")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [_c(\"code\", [_vm._v(\"iat\")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [_c(\"code\", [_vm._v(\"nbf\")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [_c(\"code\", [_vm._v(\"exp\")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [_c(\"code\", [_vm._v(\"sub\")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [_c(\"code\", [_vm._v(\"acl\")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [_c(\"code\", [_vm._v(\"jti\")])])\n }\n]\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"Nxd-search__result\" }, [\n _c(\n \"a\",\n { staticClass: \"Nxd-search__result__link\", attrs: { href: _vm.url } },\n [\n _c(\"div\", [\n _c(\"h6\", { staticClass: \"Vlt-blue-dark\" }, [\n _vm._v(\"\\n \" + _vm._s(_vm.hit.title) + \"\\n \"),\n _vm.showHeading\n ? _c(\"small\", [_vm._v(\" > \" + _vm._s(_vm.hit.heading))])\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _c(\"p\", { staticClass: \"Nxd-search__result__desc\" }, [\n _vm._v(_vm._s(_vm.description))\n ]),\n _vm._v(\" \"),\n _c(\"p\", {\n staticClass: \"Nxd-search__result__highlight\",\n domProps: { innerHTML: _vm._s(_vm.snippet) }\n }),\n _vm._v(\" \"),\n _c(\n \"span\",\n { staticClass: \"Vlt-badge Vlt-badge--grey Nxd-search__badge\" },\n [_vm._v(_vm._s(_vm.badge))]\n )\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", [\n _c(\"div\", [\n _c(\"div\", { staticClass: \"Vlt-composite\" }, [\n _c(\n \"div\",\n {\n staticClass: \"Vlt-composite__prepend Vlt-composite__prepend--icon\"\n },\n [\n _c(\"svg\", [\n _c(\"use\", {\n attrs: {\n \"xlink:href\": \"/symbol/volta-icons.svg#Vlt-icon-search\"\n }\n })\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"Vlt-input Vlt-input--round\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.query,\n expression: \"query\"\n }\n ],\n attrs: {\n name: \"query\",\n placeholder: \"Search\",\n id: \"searchbox-test\",\n type: \"text\",\n autoComplete: \"off\"\n },\n domProps: { value: _vm.query },\n on: {\n keydown: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"esc\", 27, $event.key, [\n \"Esc\",\n \"Escape\"\n ])\n ) {\n return null\n }\n return _vm.onEscDownHandler($event)\n },\n input: [\n function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.query = $event.target.value\n },\n _vm.onInputHandler\n ]\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\n \"svg\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.query,\n expression: \"query\"\n }\n ],\n staticClass: \"Nxd-search__clear\"\n },\n [\n _c(\"use\", {\n attrs: { \"xlink:href\": \"/symbol/volta-icons.svg#Vlt-icon-cross\" }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showResults,\n expression: \"showResults\"\n }\n ],\n staticClass: \"Nxd-search\"\n },\n [\n _c(\"div\", { staticClass: \"Nxd-search__wrapper\" }, [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.loading,\n expression: \"loading\"\n }\n ],\n staticClass: \"spinner\"\n },\n [_c(\"i\", { staticClass: \"icon icon-cog\" })]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.loading,\n expression: \"!loading\"\n }\n ],\n staticClass: \"Nxd-search__wrapper\"\n },\n _vm._l(_vm.results, function(result) {\n return _c(\n \"div\",\n { key: result.index, staticClass: \"Nxd-search__results\" },\n [\n _c(\"h3\", { staticClass: \"Nx-search__title\" }, [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.resultTitle(result.index)) +\n \"\\n \"\n )\n ]),\n _vm._v(\" \"),\n result.hits.length > 0\n ? _c(\"div\", [\n _vm.isZendeskArticle(result)\n ? _c(\n \"div\",\n _vm._l(result.hits, function(hit) {\n return _c(\"ZendeskArticle\", {\n key: _vm.hitKey(result, hit),\n attrs: { hit: hit }\n })\n }),\n 1\n )\n : _vm.isNDPArticle(result)\n ? _c(\n \"div\",\n _vm._l(result.hits, function(hit) {\n return _c(\"NDPArticle\", {\n key: _vm.hitKey(result, hit),\n attrs: { hit: hit }\n })\n }),\n 1\n )\n : _vm._e()\n ])\n : _c(\"div\", [_vm._m(0, true)])\n ]\n )\n }),\n 0\n )\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"p\", { staticClass: \"Nxd-search--no-results\" }, [\n _c(\"i\", [_vm._v(\"No results\")])\n ])\n }\n]\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"Nxd-search__result\" }, [\n _c(\n \"a\",\n {\n staticClass: \"Nxd-search__result__link\",\n attrs: { href: _vm.url, target: \"_blank\" }\n },\n [\n _c(\"div\", [\n _c(\"h6\", { staticClass: \"Vlt-blue-dark\" }, [\n _vm._v(_vm._s(_vm.title))\n ]),\n _vm._v(\" \"),\n _c(\"p\", {\n staticClass: \"Nxd-search__result__highlight\",\n domProps: { innerHTML: _vm._s(_vm.snippet) }\n }),\n _vm._v(\" \"),\n _c(\n \"span\",\n { staticClass: \"Vlt-badge Vlt-badge--grey Nxd-search__badge\" },\n [_vm._v(_vm._s(_vm.badge))]\n )\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import 'whatwg-fetch'\n\nexport default () => {\n fetch('https://xb8glk41jfrv.statuspage.io/api/v2/status.json')\n .then((response) => response.json())\n .then((payload) => {\n \tvar color;\n \tswitch (payload.status.indicator) {\n \t\tcase 'major':\n \t\t\tcolor = 'red';\n \t\tcase 'critical':\n \t\t\tcolor = 'red';\n \t\tcase 'minor':\n \t\t\tcolor = 'yellow';\n \t\tdefault:\n \t\t\tcolor = 'green';\n \t}\n $('.Nxd-api-status').text(payload.status.description).addClass(`Vlt-badge--` + color)\n })\n}\n","export default class Careers {\n\n constructor() {\n this.departments = [];\n this.locations = [];\n this.setupListeners();\n }\n\n showCareer(career) {\n const department = career.getElementsByClassName('department')[0].dataset.department;\n const location = career.getElementsByClassName('location')[0].dataset.location;\n\n return (this.departments.includes(department) || this.departments.length === 0)\n && (this.locations.some(l => location.includes(l) || l.includes(location)) || this.locations.length === 0);\n }\n\n toggleCareers() {\n Array.from(document.getElementsByClassName('Nxd-career')).forEach(function(career) {\n career.classList.toggle('hide', !this.showCareer(career));\n }, this);\n\n document.getElementById('no-results').classList.toggle(\n 'hide',\n document.querySelectorAll('.Nxd-career:not(.hide)').length !== 0\n );\n\n document.querySelectorAll('.Nxd-career:not(.hide)').forEach(function(career, index) {\n career.classList.toggle('striped', index % 2 == 0);\n });\n }\n\n updateURL() {\n let currentUrl = new URL(window.location.href);\n let query = {};\n if (this.departments.length > 0) {\n Object.assign(query, { departments: this.departments });\n }\n if (this.locations.length > 0) {\n Object.assign(query, { locations: this.locations.map((l) => l.split(',')[0]) });\n }\n\n let params = new URLSearchParams(query);\n\n currentUrl.search = params\n window.history.pushState({}, 'Careers', currentUrl);\n }\n\n dropdownValue(length, item) {\n let value;\n switch(length) {\n case 0:\n value = `${item}s`;\n break;\n case 1:\n value = `1 ${item} selected`;\n break;\n default:\n value = `${length} ${item}s selected`;\n }\n return value;\n }\n\n updateDepartmentsDropdown() {\n let value = this.dropdownValue(this.departments.length, 'Department');\n document.querySelector('#department-filter button').innerText = value;\n }\n\n updateLocationsDropdown() {\n let value = this.dropdownValue(this.locations.length, 'Location');\n document.querySelector('#location-filter button').innerText = value;\n }\n\n departmentChangeHandler(event) {\n if (event.target.checked) {\n this.departments.push(event.target.value);\n } else {\n this.departments.splice(this.departments.indexOf(event.target.value), 1);\n }\n this.updateURL();\n this.updateDepartmentsDropdown();\n this.toggleCareers();\n }\n\n locationChangeHandler(event) {\n if (event.target.checked) {\n this.locations.push(event.target.value);\n } else {\n this.locations.splice(this.locations.indexOf(event.target.value), 1);\n }\n this.updateURL();\n this.updateLocationsDropdown();\n this.toggleCareers();\n }\n\n setFiltersFromURL() {\n let params = new URLSearchParams(window.location.search);\n this.departments = [];\n this.locations = [];\n\n params.get('departments') && params.get('departments').split(',').forEach(function(department) {\n this.departments.push(department);\n document.getElementById(department).checked = true;\n }, this);\n\n params.get('locations') && params.get('locations').split(',').forEach(function(location) {\n let checkbox = document.querySelector(`[id^='${location}']`);\n if (checkbox) {\n this.locations.push(location);\n checkbox.checked = true;\n }\n }, this);\n\n this.updateDepartmentsDropdown();\n this.updateLocationsDropdown();\n this.toggleCareers();\n }\n\n setupListeners() {\n const self = this;\n window.addEventListener('load', function() {\n if (!document.getElementById('careers')) { return; }\n\n self.toggleCareers();\n document.getElementById('department-filter').addEventListener('change', self.departmentChangeHandler.bind(self));\n document.getElementById('location-filter').addEventListener('change', self.locationChangeHandler.bind(self));\n self.setFiltersFromURL();\n });\n\n window.addEventListener('popstate', function(event) {\n if (!document.getElementById('careers')) { return; }\n self.setFiltersFromURL();\n });\n }\n}\n","export default () => {\n let hasTriggeredCopyStat = {};\n let hasTriggeredLinkStat = {};\n\n // Track copy to clipboard usage\n var clipboard = new Clipboard('.copy-button',{\n text: function(trigger) {\n return $(trigger).next().find('.main-code').text();\n }\n });\n\n clipboard.on('success', function(e) {\n let trigger = $(e.trigger);\n\n let params = {\n \"language\": trigger.attr(\"data-lang\"),\n \"snippet\": trigger.attr(\"data-block\"),\n \"section\": trigger.attr(\"data-section\"),\n \"event\": \"copy\"\n };\n\n let key = params['language'] + params['section'] + params['snippet'];\n\n // We only want to track each copy once per page load\n if (hasTriggeredCopyStat[key]) { return true; }\n\n trigger.find('span').text('Copied');\n\n fetch(createRequest(params))\n .then((response) => {\n if (response.ok) { return response.json() }\n return Promise.reject({ message: 'Bad response from server', response })\n })\n .then((payload) => {\n hasTriggeredCopyStat[key] = true;\n })\n\n // Can we point them to the dependencies too?\n if (trigger.parent().hasClass(\"main-code\")) {\n trigger.parent().parent().find(\".configure-dependencies\").prepend(\"
Don't forget me!\");\n }\n\n });\n\n\n clipboard.on('error', function(e) {\n console.error('Action:', e.action);\n console.error('Trigger:', e.trigger);\n });\n\n // Track source link usage\n $(document).on('mousedown', '.source-link', function(e){\n if (e.which === 3) { return; }\n let trigger = $(this);\n\n let section = trigger.attr(\"data-section\");\n\n let params = {\n \"language\": trigger.attr(\"data-lang\"),\n \"snippet\": trigger.attr(\"data-block\"),\n \"section\": section,\n \"event\": \"source\"\n };\n\n let key = params['language'] + params['section'];\n\n if (hasTriggeredLinkStat[key]) { return true; }\n\n fetch(createRequest(params))\n .then((response) => {\n if (response.ok) { return response.json() }\n return Promise.reject({ message: 'Bad response from server', response })\n })\n .then((payload) => {\n hasTriggeredLinkStat[key] = true;\n })\n });\n};\n\nfunction createRequest(params) {\n return new Request('/usage/code_snippet', {\n method: 'POST',\n credentials: 'same-origin',\n body: JSON.stringify(params),\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n}\n","import { render, staticRenderFns } from \"./Concatenation.vue?vue&type=template&id=6b3458a9&scoped=true&\"\nimport script from \"./Concatenation.vue?vue&type=script&lang=js&\"\nexport * from \"./Concatenation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Concatenation.vue?vue&type=style&index=0&id=6b3458a9&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b3458a9\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/Users/bgreenberg2/Documents/dev/station/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('6b3458a9')) {\n api.createRecord('6b3458a9', component.options)\n } else {\n api.reload('6b3458a9', component.options)\n }\n module.hot.accept(\"./Concatenation.vue?vue&type=template&id=6b3458a9&scoped=true&\", function () {\n api.rerender('6b3458a9', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"app/webpacker/javascript/components/concatenation/Concatenation.vue\"\nexport default component.exports","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Concatenation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Concatenation.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../../../node_modules/@rails/webpacker/node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--2-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--2-2!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Concatenation.vue?vue&type=style&index=0&id=6b3458a9&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../../../../node_modules/@rails/webpacker/node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--2-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--2-2!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Concatenation.vue?vue&type=style&index=0&id=6b3458a9&scoped=true&lang=css&\"","export * from \"-!../../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Concatenation.vue?vue&type=template&id=6b3458a9&scoped=true&\"","import difference from 'lodash/difference'\n\nconst GSM_STANDARD_CHARS = [\n '@', '0', '¡', 'P', '¿',\n 'p', '£', '_', '!', '1',\n 'A', 'Q', 'a', 'q', '$',\n '\"', '2', 'B', 'R', 'b',\n 'r', '¥', '?', '#', '3',\n 'C', 'S', 'c', 's', 'è',\n '?', '4', 'D', 'T', 'd',\n 't', 'é', '?', '%', '5',\n 'E', 'U', 'e', 'u', 'ù',\n '6', 'F', 'V', 'f', 'v',\n 'ì', '?', \"'\", '7', 'G',\n 'W', 'g', 'w', 'ò', '(',\n '8', 'H', 'X', 'h', 'x',\n 'Ç', ')', '9', 'I', 'Y',\n 'i', 'y', '*', ':', 'J',\n 'Z', 'j', 'z', 'Ø', '+',\n ';', 'K', 'Ä', 'k', 'ä',\n 'Æ', ',', '<', 'L', 'l',\n 'ö', 'æ', '-', '=', 'M',\n 'Ñ', 'm', 'ñ', 'Å', 'ß',\n '.', '>', 'N', 'Ü', 'n',\n 'ü', 'å', 'É', '/', 'O',\n '§', 'o', 'à', 'Δ', 'Φ',\n 'Γ', 'Λ', 'Ω', 'Π', 'Ψ',\n 'Σ', 'Θ', 'Ξ', 'Ö', 'Ä',\n 'Ü', 'ø', ' ', '\\r', '\\n'\n]\n\nconst GSM_EXTENDED_CHARS = [\n '|', '^', '€', '{', '}', '[', ']', '~', '\\\\'\n]\n\nconst BYTE_SIZE = 8;\nconst CHARACTER_SIZE = 7;\nconst GSM_METADATA_LENGTH = 7;\nconst GSM_METADATA_SIZE = GSM_METADATA_LENGTH * CHARACTER_SIZE;\nconst GSM_MAX_SIZE = 140 * BYTE_SIZE;\n\nclass CharacterCounter {\n constructor(text) {\n this.text = text;\n }\n\n getInfo() {\n let messages = this.getMessages();\n return {\n messages: messages,\n unicodeRequired: this.isUnicodeRequired(),\n charactersCount: messages.reduce(function(sum, sms) { return sum + sms.length }, 0)\n }\n }\n\n isUnicodeRequired() {\n let remainder = difference([...this.text], [...GSM_STANDARD_CHARS, ...GSM_EXTENDED_CHARS]);\n return remainder.length !== 0;\n }\n\n getMessages() {\n return this.splitIntoSMS(GSM_MAX_SIZE);\n }\n\n splitIntoSMS(maxSize) {\n let index = 0;\n let messages = [];\n let text = this.text;\n while(index <= this.text.length) {\n let sms = this.getSMS(text, maxSize);\n messages.push(sms);\n text = text.slice(sms.length);\n index += sms.length + 1;\n }\n return messages;\n }\n\n getSMS(text, maxSize) {\n let index = 0, currentSize = 0;\n const maxSizeWithMeta = maxSize - GSM_METADATA_SIZE;\n\n while (currentSize + this.getCharSize(text[index]) <= maxSizeWithMeta && index < text.length) {\n currentSize += this.getCharSize(text[index]);\n index += 1;\n }\n if (this.getTextSize(text.slice(index)) + currentSize <= maxSize && text.length - index <= GSM_METADATA_LENGTH) {\n index = text.length;\n }\n return text.slice(0, index);\n }\n\n getTextSize(text) {\n return [...text].map(this.getCharSize, this).reduce(function(sum, c) { return sum + c }, 0);\n }\n\n getSizeInBytes() {\n return Math.ceil(this.getTextSize(this.text) / BYTE_SIZE);\n }\n\n getCharSize(character) {\n if(!character) { return 0; }\n if (this.isUnicodeRequired()) {\n return character.length * BYTE_SIZE * 2;\n } else if (GSM_EXTENDED_CHARS.includes(character)) {\n return CHARACTER_SIZE * 2;\n } else {\n return CHARACTER_SIZE;\n }\n }\n}\n\nexport default CharacterCounter;\n","import { render, staticRenderFns } from \"./Feedback.vue?vue&type=template&id=93ebdc52&scoped=true&\"\nimport script from \"./Feedback.vue?vue&type=script&lang=js&\"\nexport * from \"./Feedback.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"93ebdc52\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/Users/bgreenberg2/Documents/dev/station/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('93ebdc52')) {\n api.createRecord('93ebdc52', component.options)\n } else {\n api.reload('93ebdc52', component.options)\n }\n module.hot.accept(\"./Feedback.vue?vue&type=template&id=93ebdc52&scoped=true&\", function () {\n api.rerender('93ebdc52', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"app/webpacker/javascript/components/feedback/Feedback.vue\"\nexport default component.exports","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Feedback.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Feedback.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Feedback.vue?vue&type=template&id=93ebdc52&scoped=true&\"","import { render, staticRenderFns } from \"./JwtGenerator.vue?vue&type=template&id=1da9ba30&\"\nimport script from \"./JwtGenerator.vue?vue&type=script&lang=js&\"\nexport * from \"./JwtGenerator.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/Users/bgreenberg2/Documents/dev/station/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('1da9ba30')) {\n api.createRecord('1da9ba30', component.options)\n } else {\n api.reload('1da9ba30', component.options)\n }\n module.hot.accept(\"./JwtGenerator.vue?vue&type=template&id=1da9ba30&\", function () {\n api.rerender('1da9ba30', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"app/webpacker/javascript/components/jwt_generator/JwtGenerator.vue\"\nexport default component.exports","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JwtGenerator.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JwtGenerator.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JwtGenerator.vue?vue&type=template&id=1da9ba30&\"","import { render, staticRenderFns } from \"./NDPArticle.vue?vue&type=template&id=71992deb&\"\nimport script from \"./NDPArticle.vue?vue&type=script&lang=js&\"\nexport * from \"./NDPArticle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/Users/bgreenberg2/Documents/dev/station/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('71992deb')) {\n api.createRecord('71992deb', component.options)\n } else {\n api.reload('71992deb', component.options)\n }\n module.hot.accept(\"./NDPArticle.vue?vue&type=template&id=71992deb&\", function () {\n api.rerender('71992deb', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"app/webpacker/javascript/components/search/NDPArticle.vue\"\nexport default component.exports","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NDPArticle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NDPArticle.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NDPArticle.vue?vue&type=template&id=71992deb&\"","import { render, staticRenderFns } from \"./Search.vue?vue&type=template&id=4abd9ef7&scoped=true&\"\nimport script from \"./Search.vue?vue&type=script&lang=js&\"\nexport * from \"./Search.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4abd9ef7\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/Users/bgreenberg2/Documents/dev/station/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('4abd9ef7')) {\n api.createRecord('4abd9ef7', component.options)\n } else {\n api.reload('4abd9ef7', component.options)\n }\n module.hot.accept(\"./Search.vue?vue&type=template&id=4abd9ef7&scoped=true&\", function () {\n api.rerender('4abd9ef7', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"app/webpacker/javascript/components/search/Search.vue\"\nexport default component.exports","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=template&id=4abd9ef7&scoped=true&\"","import { render, staticRenderFns } from \"./ZendeskArticle.vue?vue&type=template&id=198076e9&\"\nimport script from \"./ZendeskArticle.vue?vue&type=script&lang=js&\"\nexport * from \"./ZendeskArticle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/Users/bgreenberg2/Documents/dev/station/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('198076e9')) {\n api.createRecord('198076e9', component.options)\n } else {\n api.reload('198076e9', component.options)\n }\n module.hot.accept(\"./ZendeskArticle.vue?vue&type=template&id=198076e9&\", function () {\n api.rerender('198076e9', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"app/webpacker/javascript/components/search/ZendeskArticle.vue\"\nexport default component.exports","import mod from \"-!../../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ZendeskArticle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ZendeskArticle.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ZendeskArticle.vue?vue&type=template&id=198076e9&\"","export default class Format {\n constructor() {\n this.formatSelector = $('.js-format-selector')[0]\n if (this.formatSelector) {\n this.formatChanged(this.formatSelector.value, false)\n $(this.formatSelector).change((event) => this.formatChanged(event.target.value))\n\n this.restoreFormat()\n }\n }\n\n formatChanged(format, persist = true) {\n $('.js-format').hide()\n $(`.js-format[data-format='${format}']`).show()\n\n if (persist) {\n this.persistFormat(format)\n }\n }\n\n persistFormat(format) {\n if (window.localStorage) {\n window.localStorage.setItem('format', format)\n }\n }\n\n restoreFormat() {\n if (window.localStorage) {\n const format = window.localStorage.getItem('format')\n if (format) {\n $(this.formatSelector).val(format)\n this.formatChanged(format, false)\n }\n }\n }\n}\n","import 'whatwg-fetch'\n\nexport default () => {\n $('[data-github]').each((index, element) => {\n let repo = $(element).data('github');\n\n fetch('https://api.github.com/repos/' + repo)\n .then(function (response) {\n return response.json();\n })\n .then((response) => {\n $(element).find('[data-forks]').text(response.forks);\n $(element).find('[data-stars]').text(response.stargazers_count);\n });\n });\n}\n","import Rails from '@rails/ujs';\n\nexport default class LocaleSwitcher {\n constructor() {\n this.switcher = document.getElementById('locale-switcher');\n if (this.switcher) {\n this.setupEventListeners();\n }\n }\n\n setupEventListeners() {\n const self = this;\n\n window.addEventListener('load', function() {\n let dropdownBtn = self.switcher.querySelector('.Nxd-locale');\n let dropdownOptions = self.switcher.querySelectorAll('.Vlt-dropdown__link');\n let pannel = self.switcher.querySelector('.Vlt-dropdown__panel');\n\n dropdownOptions.forEach(function(option) {\n option.addEventListener(\"click\", function(event) {\n event.stopPropagation();\n\n dropdownBtn.innerHTML = option.innerHTML;\n\n pannel.hidden = true;\n self.localeChangeHandler(option.dataset.locale);\n });\n });\n });\n }\n\n localeChangeHandler(locale) {\n Rails.ajax({\n url: \"/set_user_locale\",\n type: \"PUT\",\n dataType: 'json',\n data: `preferred_locale=${locale}`\n })\n }\n}\n","export default () => {\n const noticeCloseComplete = function(notice) {\n notice.remove()\n removeNoticesIfEmpty()\n }\n\n const noticeKey = function (notice) {\n const id = notice.data('notice-id')\n return `notice-dismissed(id:${id})`\n }\n\n const isDismissible = function (notice) {\n return notice.data('notice-dismissible')\n }\n\n const bootstrap = function() {\n $(document).on('click', '.notice a[data-close]', function(event) {\n const notice = $(this).parents('.notice')\n localStorage.setItem(noticeKey(notice), true)\n\n TweenLite.to(notice, 0.6, {\n scale: 0,\n height: 0,\n transformOrigin: \"center top\",\n ease: Power2.easeIn,\n onComplete: () => noticeCloseComplete(notice)\n });\n });\n }\n\n const removeNoticesIfEmpty = function() {\n if ($('.notices .notice').length === 0) {\n $('.notices').remove()\n }\n }\n\n const clearRead = function() {\n $('.notices .notice').each(function() {\n const notice = $(this)\n if(isDismissible(notice)) { return }\n if (localStorage.getItem(noticeKey(notice))) {\n $(this).remove()\n }\n })\n removeNoticesIfEmpty()\n }\n\n $(document).ready(function() {\n bootstrap()\n clearRead()\n });\n}\n","export default () => {\n $(document).ready(function(){\n const $body = $('.Vlt-main');\n const nav = $('.Nxd-header');\n const codeNav = $('.Nxd-api__code__header');\n\n $body.on('scroll', function(){\n var scrollTop = $body.scrollTop();\n\n //navigation\n if (scrollTop > 50) {\n nav.addClass('Nxd-scroll-minify');\n } else {\n nav.removeClass('Nxd-scroll-minify');\n }\n\n //api code\n if (scrollTop > 70 && codeNav.length > 0) {\n codeNav.addClass('Nxd-api__code__header--sticky');\n } else if(codeNav.length > 0) {\n codeNav.removeClass('Nxd-api__code__header--sticky');\n }\n });\n })\n}\n","class Menu {\n constructor(domNode, parent) {\n this.domNode = domNode;\n this.parent = parent;\n this.items = [];\n\n this.firstItem = null;\n this.lastItem = null;\n\n this.buildItems();\n }\n\n buildItems() {\n Array.from(this.domNode.children).forEach((child) => {\n if (child.children.length > 0) {\n this.items.push(new SidenavItem(child.querySelector('a.Vlt-sidemenu__trigger, a.Vlt-sidemenu__link, .Vlt-sidemenu__title'), this.parent));\n }\n });\n this.firstItem = this.items[0];\n this.lastItem = this.items[this.items.length - 1];\n }\n\n setFocusToNextItem(current) {\n let node = null;\n\n if (current === this.lastItem) {\n node = this.firstItem.domNode;\n }\n else {\n node = this.items[this.items.indexOf(current) + 1].domNode;\n }\n node.tabIndex = 0;\n node.focus();\n }\n\n setFocusToPreviousItem(item) {\n if (item === this.firstItem) {\n this.lastItem.domNode.focus();\n }\n else {\n this.items[this.items.indexOf(item) - 1].domNode.focus();\n }\n }\n\n setFocusToFirstItem() {\n this.firstItem.domNode.focus();\n }\n}\n\nclass SidenavItem {\n constructor(domNode, parent) {\n this.domNode = domNode;\n this.parent = parent;\n this.menu = null;\n\n this.buildItem();\n\n this.keyCode = Object.freeze({\n 'ENTER': 13,\n 'LEFT': 37,\n 'UP': 38,\n 'RIGHT': 39,\n 'DOWN': 40\n });\n this.domNode.addEventListener('keydown', this.handleKeyDown.bind(this));\n this.domNode.addEventListener('click', this.handleClick.bind(this));\n }\n\n buildItem() {\n if (this.isMenu()) {\n this.menu = new Menu(this.domNode.nextElementSibling, this);\n }\n }\n\n isMenu() {\n return this.domNode.nextElementSibling && this.domNode.nextElementSibling.tagName === 'UL';\n }\n\n handleKeyDown(event) {\n let target = event.currentTarget;\n let key = event.key;\n let bubbleUp = false;\n\n switch (event.keyCode) {\n case this.keyCode.ENTER:\n if (this.menu) {\n this.toggleElement(true);\n bubbleUp = true;\n }\n break;\n\n case this.keyCode.DOWN:\n this.parent.setFocusToNextItem(this);\n bubbleUp = true;\n break;\n\n case this.keyCode.LEFT:\n this.parent.toggleElement(true);\n bubbleUp = true;\n break;\n\n case this.keyCode.RIGHT:\n if (this.menu) {\n this.toggleElement(true);\n }\n bubbleUp = true;\n break;\n\n case this.keyCode.UP:\n this.parent.setFocusToPreviousItem(this);\n bubbleUp = true;\n break;\n }\n\n if (bubbleUp) {\n event.stopPropagation();\n event.preventDefault();\n }\n };\n\n handleClick(event) {\n if (this.menu) {\n event.preventDefault();\n event.stopPropagation();\n this.toggleElement();\n }\n }\n\n toggleElement(focus) {\n if (this.domNode.classList.contains('Vlt-sidemenu__trigger_active')) {\n this.domNode.setAttribute('aria-expanded', 'false');\n this.domNode.classList.remove('Vlt-sidemenu__trigger_active');\n this.domNode.tabIndex = -1;\n if (focus) { this.domNode.focus(); }\n } else {\n this.domNode.tabIndex = 0;\n this.domNode.setAttribute('aria-expanded', 'true');\n this.domNode.classList.add('Vlt-sidemenu__trigger_active');\n this.domNode.dispatchEvent(new CustomEvent('menuClosed', { bubbles: true }));\n if (focus) { this.menu.setFocusToFirstItem(); }\n }\n }\n\n setFocusToPreviousLevel() {\n if (this.menu) {\n this.domNode.setAttribute('aria-expanded', 'false');\n this.domNode.classList.remove('Vlt-sidemenu__trigger_active');\n this.domNode.tabIndex = -1;\n this.domNode.focus();\n } else {\n this.parent.setFocusToPreviousItem(this);\n }\n }\n\n setFocusToNextItem(current) {\n if (this.menu) {\n this.menu.setFocusToNextItem(current);\n }\n }\n\n setFocusToPreviousItem(current) {\n if (this.menu) {\n this.menu.setFocusToPreviousItem(current);\n }\n }\n}\n\nexport default class Sidenav {\n constructor(domNode) {\n this.domNode = document.getElementById('sidenav');\n this.mobileTrigger = document.getElementById('Vlt-sidenav-mobile-trigger');\n this.container = document.getElementById('Vlt-sidenav');\n\n if (this.domNode) {\n this.buildMenu();\n this.setActiveItem();\n this.expandActiveMenu();\n this.setupListeners();\n } else {\n this.mobileTrigger.style.display = 'none';\n }\n }\n\n setupListeners() {\n this.domNode.addEventListener('menuClosed', this.closeOpenedMenu.bind(this));\n this.mobileTrigger.addEventListener('click', this.mobileHandler.bind(this));\n this.mobileTrigger.addEventListener('touchstart', this.mobileHandler.bind(this));\n\n document.querySelector('body').addEventListener('click', this.closeMobileMenu.bind(this));\n document.querySelector('body').addEventListener('touchstart', this.closeMobileMenu.bind(this));\n }\n\n buildMenu() {\n this.menu = new Menu(this.domNode.firstElementChild, this);\n }\n\n setFocusToNextItem(current) {\n this.menu.setFocusToNextItem(current);\n }\n\n setFocusToPreviousItem(current) {\n this.menu.setFocusToPreviousItem(current);\n }\n\n // No-op\n toggleElement() {}\n\n setActiveItem() {\n let url = document.querySelector('nav.sidenav').dataset.active;\n let activeItemSelector = `.Vlt-sidemenu__link[href=\"${url}\"]`;\n let activeItem = document.querySelector(activeItemSelector);\n if (activeItem) {\n activeItem.classList.add('Vlt-sidemenu__link_active');\n }\n }\n\n expandActiveMenu() {\n const activeItem = this.domNode.querySelector('.Vlt-sidemenu__link_active');\n if (activeItem) {\n let activeTrigger = activeItem.closest('ul').previousElementSibling;\n\n while (activeTrigger) {\n activeTrigger.classList.add('Vlt-sidemenu__trigger_active', 'Vlt-sidemenu__trigger_current');\n activeTrigger = activeTrigger.parentNode.closest('ul').previousElementSibling;\n }\n }\n }\n\n closeOpenedMenu(event) {\n Array.from(this.domNode.querySelectorAll('.Vlt-sidemenu__trigger_active')).forEach((subMenu) => {\n if (subMenu !== event.target && !subMenu.parentNode.contains(event.target)) {\n subMenu.classList.remove('Vlt-sidemenu__trigger_active');\n }\n });\n }\n\n mobileHandler(event) {\n if (!this.container.classList.contains('Vlt-sidenav_visible')) {\n this.container.classList.add('Vlt-sidenav_visible');\n document.body.classList.add('Vlt-body--mobile-menu-open');\n event.stopPropagation();\n }\n }\n\n closeMobileMenu(event) {\n if (!this.domNode.contains(event.target)) {\n this.container.classList.remove('Vlt-sidenav_visible');\n document.body.classList.remove('Vlt-body--mobile-menu-open');\n }\n }\n}\n","import Volta from \"../volta/volta.js\"\n\nexport default () => {\n $(document).ready(function() {\n $(document).on('ajax:success', '#spotlight-form', function(event, response) {\n Volta.flash.show('success');\n event.target.reset();\n }).on('ajax:error', '#spotlight-form', function(event) {\n Volta.flash.show('error');\n });\n });\n}\n","/*\n Copyright (C) Federico Zivolo 2018\n Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).\n */(function(a,b){'object'==typeof exports&&'undefined'!=typeof module?module.exports=b(require('popper.js')):'function'==typeof define&&define.amd?define(['popper.js'],b):a.Tooltip=b(a.Popper)})(this,function(a){'use strict';function b(a){return a&&'[object Function]'==={}.toString.call(a)}a=a&&a.hasOwnProperty('default')?a['default']:a;var c=function(a,b){if(!(a instanceof b))throw new TypeError('Cannot call a class as a function')},d=function(){function a(a,b){for(var c,d=0;d
',trigger:'hover focus',offset:0},g=function(){function g(a,b){c(this,g),h.call(this),b=e({},f,b),a.jquery&&(a=a[0]),this.reference=a,this.options=b;var d='string'==typeof b.trigger?b.trigger.split(' ').filter(function(a){return-1!==['click','hover','focus'].indexOf(a)}):[];this._isOpen=!1,this._popperOptions={},this._setEventListeners(a,d,b)}return d(g,[{key:'_create',value:function(a,b,c,d){var e=window.document.createElement('div');e.innerHTML=b.trim();var f=e.childNodes[0];f.id='tooltip_'+Math.random().toString(36).substr(2,10),f.setAttribute('aria-hidden','false');var g=e.querySelector(this.innerSelector);return this._addTitleContent(a,c,d,g),f}},{key:'_addTitleContent',value:function(a,c,d,e){if(1===c.nodeType||11===c.nodeType)d&&e.appendChild(c);else if(b(c)){var f=c.call(a);d?e.innerHTML=f:e.textContent=f}else d?e.innerHTML=c:e.textContent=c}},{key:'_show',value:function(b,c){if(this._isOpen&&!this._isOpening)return this;if(this._isOpen=!0,this._tooltipNode)return this._tooltipNode.style.display='',this._tooltipNode.setAttribute('aria-hidden','false'),this.popperInstance.update(),this;var d=b.getAttribute('title')||c.title;if(!d)return this;var f=this._create(b,c.template,d,c.html);b.setAttribute('aria-describedby',f.id);var g=this._findContainer(c.container,b);return this._append(f,g),this._popperOptions=e({},c.popperOptions,{placement:c.placement}),this._popperOptions.modifiers=e({},this._popperOptions.modifiers,{arrow:{element:this.arrowSelector},offset:{offset:c.offset}}),c.boundariesElement&&(this._popperOptions.modifiers.preventOverflow={boundariesElement:c.boundariesElement}),this.popperInstance=new a(b,f,this._popperOptions),this._tooltipNode=f,this}},{key:'_hide',value:function(){return this._isOpen?(this._isOpen=!1,this._tooltipNode.style.display='none',this._tooltipNode.setAttribute('aria-hidden','true'),this):this}},{key:'_dispose',value:function(){var a=this;return this._events.forEach(function(b){var c=b.func,d=b.event;a.reference.removeEventListener(d,c)}),this._events=[],this._tooltipNode&&(this._hide(),this.popperInstance.destroy(),!this.popperInstance.options.removeOnDestroy&&(this._tooltipNode.parentNode.removeChild(this._tooltipNode),this._tooltipNode=null)),this}},{key:'_findContainer',value:function(a,b){return'string'==typeof a?a=window.document.querySelector(a):!1===a&&(a=b.parentNode),a}},{key:'_append',value:function(a,b){b.appendChild(a)}},{key:'_setEventListeners',value:function(a,b,c){var d=this,e=[],f=[];b.forEach(function(a){'hover'===a?(e.push('mouseenter'),f.push('mouseleave')):'focus'===a?(e.push('focus'),f.push('blur')):'click'===a?(e.push('click'),f.push('click')):void 0}),e.forEach(function(b){var e=function(b){!0===d._isOpening||(b.usedByTooltip=!0,d._scheduleShow(a,c.delay,c,b))};d._events.push({event:b,func:e}),a.addEventListener(b,e)}),f.forEach(function(b){var e=function(b){!0===b.usedByTooltip||d._scheduleHide(a,c.delay,c,b)};d._events.push({event:b,func:e}),a.addEventListener(b,e)})}},{key:'_scheduleShow',value:function(a,b,c){var d=this;this._isOpening=!0;var e=b&&b.show||b||0;this._showTimeout=window.setTimeout(function(){return d._show(a,c)},e)}},{key:'_scheduleHide',value:function(a,b,c,d){var e=this;this._isOpening=!1;var f=b&&b.hide||b||0;window.setTimeout(function(){if((window.clearTimeout(e._showTimeout),!1!==e._isOpen)&&document.body.contains(e._tooltipNode)){if('mouseleave'===d.type){var f=e._setTooltipNodeEvent(d,a,b,c);if(f)return}e._hide(a,c)}},f)}},{key:'_updateTitleContent',value:function(a){if('undefined'==typeof this._tooltipNode)return void('undefined'!=typeof this.options.title&&(this.options.title=a));var b=this._tooltipNode.parentNode.querySelector(this.innerSelector);this._clearTitleContent(b,this.options.html,this.reference.getAttribute('title')||this.options.title),this._addTitleContent(this.reference,a,this.options.html,b),this.options.title=a,this.popperInstance.update()}},{key:'_clearTitleContent',value:function(a,b,c){1===c.nodeType||11===c.nodeType?b&&a.removeChild(c):b?a.innerHTML='':a.textContent=''}}]),g}(),h=function(){var a=this;this.show=function(){return a._show(a.reference,a.options)},this.hide=function(){return a._hide()},this.dispose=function(){return a._dispose()},this.toggle=function(){return a._isOpen?a.hide():a.show()},this.updateTitleContent=function(b){return a._updateTitleContent(b)},this.arrowSelector='.tooltip-arrow, .tooltip__arrow',this.innerSelector='.tooltip-inner, .tooltip__inner',this._events=[],this._setTooltipNodeEvent=function(b,c,d,e){var f=b.relatedreference||b.toElement||b.relatedTarget;return!!a._tooltipNode.contains(f)&&(a._tooltipNode.addEventListener(b.type,function d(f){var g=f.relatedreference||f.toElement||f.relatedTarget;a._tooltipNode.removeEventListener(b.type,d),c.contains(g)||a._scheduleHide(c,e.delay,e,f)}),!0)}};return g});\n//# sourceMappingURL=tooltip.min.js.map\n","import Tooltip from './tooltip.min.js';\n\n/**\n * Copyright (c) 2001-present, Vonage.\n *\t\n * Core of volta\n */\n'use strict';\nvar Volta;\n\nVolta = function (){\n\treturn {\n\t\t_closest: closest,\n\t\t_hasClass: hasClass,\n\t\tinit: initialise,\n\t\t_isMobile: isMobileDevice,\n\t\t_getElementSiblings: getElementSiblings,\n\t\t_getFunction: getFunctionFromString,\n\t\t_removeFromArr: removeFromArr\n\t}\n\n\t/** \n\t *\t@private\n\t *\t\n\t *\t@description Finds the first ancestor of the given element, matching a specific selector.\n\t *\t@param {HTMLElement} element Starting element\n\t *\t@param {string} selector Selector to find (can be .class, #id, div...)\n\t *\t@param {string} stopSelector Selector to stop searching on (can be .class, #id, div...) \n\t * @returns {HTMLElement|null} The matched element or null if no element is found\n\t */\n\tfunction closest(element, selector, stopSelector) {\n\t\tvar match = null;\n\t\twhile (element) {\n\t\tif (element.matches(selector)) {\n\t \t\tmatch = element;\n\t \t\tbreak\n\t\t} else if (stopSelector && element.matches(stopSelector)) {\n\t \t\tbreak\n\t\t}\n\t\t\telement = element.parentElement;\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t *\t@private\n\t *\t@description Given the name of a function returns the function itself\n\t *\t@param {string} callbackFnName The function name e.g. \"testFunction\" OR \"test.function\" \n\t * @returns {Function} \n\t */\n\tfunction getFunctionFromString(fnName) {\n\t var fn;\n\t\t\n\t\tif(fnName) {\n\t\t\tvar fnNames = fnName.split(\".\");\n\t\t\tvar fn = window;\n\t\t\tfor(var i = 0; i < fnNames.length; i++) {\n\t\t\t\tfn = fn[fnNames[i]];\n\t\t\t}\n\t\t}\n\n\t\treturn fn;\n\t}\n\n\t/** \n\t *\t@private\n\t *\t@description Get all siblings of an element\n\t *\t@param {HTMLElement} el \n\t */\n\tfunction getElementSiblings(element) {\n\t var siblings = [];\n\t element = element.parentNode.firstChild;\n\t do { \n\t \tif(element.nodeType === 1) {\n\t \t\tsiblings.push(element); \n\t \t}\n\t } while (element = element.nextSibling);\n\t return siblings;\n\t}\n\n\t/** \n\t *\t@private\n\t *\t\n\t *\t@description Check if the given element has a particular class\n\t *\t@param {HTMLElement} el Element to evaluate\n\t *\t@param {string} className Class name to check for\n\t * @returns {boolean} True if the element has the class or false if not\n\t */\n\tfunction hasClass(element, className) {\n\t\tif(!element) {\n\t\t\treturn false;\n\t\t}\n\t\treturn (\" \" + element.className + \" \").replace(/[\\n\\t]/g, \" \").indexOf(\" \" + className+ \" \") > -1;\n\t}\n\n\t/** \n\t *\t@private\n\t *\t\n\t *\t@description Is the current device a mobile\n\t * @returns {boolean} True if mobile false if not\n\t */\n\tfunction isMobileDevice() {\n\t\tvar isMobile = /Android|webOS|iPhone|iPad|BlackBerry|Windows Phone|Opera Mini|IEMobile|Mobile/i;\n\n\t\treturn isMobile.test(navigator.userAgent);\n\t}\n\n\t/** \n\t *\t@public\n\t *\t\n\t *\t@description Initailise volta with required components\n\t *\t@param {Array} components Array of strings, names of the components to initialise\n\t */ \n\tfunction initialise(components) {\n\t\tpolyfilsForIE11();\n\t\t\n\t\tif(components.indexOf('accordion') !== -1){\n\t\t\tif(Volta.accordion) {\n\t\t\t\tVolta.accordion.init();\n\t\t\t} else {\n\t\t\t\tconsole.warn('Volta: volta.accordion.js component missing')\n\t\t\t}\n\t\t}\n\t\tif(components.indexOf('callout') !== -1){\n\t\t\tif(Volta.callout) {\n\t\t\t\tVolta.callout.init();\n\t\t\t} else {\n\t\t\t\tconsole.warn('Volta: volta.callout.js component missing')\n\t\t\t}\n\t\t}\n\t\tif(components.indexOf('badge') !== -1){\n\t\t\tif(Volta.badge) {\n\t\t\t\tVolta.badge.init();\n\t\t\t} else {\n\t\t\t\tconsole.warn('Volta: volta.badge.js component missing')\n\t\t\t}\n\t\t}\n\t\tif(components.indexOf('dropdown') !== -1){\n\t\t\tif(Volta.dropdown) {\n\t\t\t\tVolta.dropdown.init();\n\t\t\t} else {\n\t\t\t\tconsole.warn('Volta: volta.dropdown.js component missing')\n\t\t\t}\n\t\t}\n\t\tif(components.indexOf('flash') !== -1){\n\t\t\tif(Volta.flash) {\n\t\t\t\tVolta.flash.init();\n\t\t\t} else {\n\t\t\t\tconsole.warn('Volta: volta.dropdown.js component missing')\n\t\t\t}\n\t\t}\n\t\tif(components.indexOf('menu') !== -1){\n\t\t\tif(Volta.menu) {\n\t\t\t\tVolta.menu.init();\n\t\t\t} else {\n\t\t\t\tconsole.warn('Volta: volta.menu.js component missing')\n\t\t\t}\n\t\t}\n\t\tif(components.indexOf('menuCollapse') !== -1){\n\t\t\tif(Volta.menuCollapse) {\n\t\t\t\tVolta.menuCollapse.init();\n\t\t\t} else {\n\t\t\t\tconsole.warn('Volta: volta.menuCollapse.js component missing')\n\t\t\t}\n\t\t}\n\t\tif(components.indexOf('modal') !== -1){\n\t\t\tif(Volta.modal) {\n\t\t\t\tVolta.modal.init();\n\t\t\t} else {\n\t\t\t\tconsole.warn('Volta: volta.modal.js component missing')\n\t\t\t}\n\t\t}\n\t\tif(components.indexOf('tab') !== -1){\n\t\t\tif(Volta.tab) {\n\t\t\t\tVolta.tab.init();\n\t\t\t} else {\n\t\t\t\tconsole.warn('Volta: volta.tab.js component missing')\n\t\t\t}\n\t\t}\n\t\tif(components.indexOf('table') !== -1){\n\t\t\tif(Volta.table) {\n\t\t\t\tVolta.table.init();\n\t\t\t} else {\n\t\t\t\tconsole.warn('Volta: volta.table.js component missing')\n\t\t\t}\n\t\t}\n\t\tif(components.indexOf('tooltip') !== -1){\n\t\t\tif(Volta.tooltip) {\n\t\t\t\tVolta.tooltip.init();\n\t\t\t} else {\n\t\t\t\tconsole.warn('Volta: volta.tooltip.js component missing')\n\t\t\t}\n\t\t}\n\t}\n\n\t/** \n\t *\t@private\n\t *\t\n\t *\t@description Remove an element from an array\n\t * @param {Array} arr The array containing the element\n\t * @param {Element} element The element to remove\n\t * @returns {Array} The array minus the element\n\t */\n\tfunction removeFromArr(arr, element) {\n\t\tvar index = arr.indexOf(element);\n \t\tarr.splice(index, 1);\n \t\treturn arr;\n\t}\n\n\t/** \n\t *\t@private\n\t *\t\n\t */ \n\tfunction polyfilsForIE11() {\n\t\tif (window.NodeList && !NodeList.prototype.forEach) {\n\t\t NodeList.prototype.forEach = function (callback, thisArg) {\n\t\t thisArg = thisArg || window;\n\t\t for (var i = 0; i < this.length; i++) {\n\t\t callback.call(thisArg, this[i], i, this);\n\t\t }\n\t\t };\n\t\t}\n\t\t\n\t\tif (!Element.prototype.matches) {\n\t\t Element.prototype.matches = \n\t\t Element.prototype.matchesSelector || \n\t\t Element.prototype.mozMatchesSelector ||\n\t\t Element.prototype.msMatchesSelector || \n\t\t Element.prototype.oMatchesSelector || \n\t\t Element.prototype.webkitMatchesSelector ||\n\t\t function(s) {\n\t\t var matches = (this.document || this.ownerDocument).querySelectorAll(s),\n\t\t i = matches.length;\n\t\t while (--i >= 0 && matches.item(i) !== this) {}\n\t\t return i > -1; \n\t\t };\n\t\t}\n\t}\n}();\n\n/**\n * Copyright (c) 2001-present, Vonage.\n *\n * Accordions (requires core)\n */\n\n'use strict';\n\nVolta.accordion = function () {\n\tvar _class = {\n\t\tstandard: {\n\t\t\tcontainer: 'Vlt-accordion',\n\t\t\tcontainerGroup: 'Vlt-accordion--group',\n\t\t\ttrigger: 'Vlt-accordion__trigger',\n\t\t\ttriggerActive: 'Vlt-accordion__trigger_active',\n\t\t\tcontent: 'Vlt-accordion__content',\n\t\t\tcontentOpen: 'Vlt-accordion__content_open',\n\t\t\tcontentOpening: 'Vlt-accordion__content_opening',\n\t\t\tcontentClosing: 'Vlt-accordion__content_closing',\n\t\t},\n\t\tjs: {\n\t\t\tcontent: 'Vlt-js-accordion__content',\n\t\t\tcontentOpen: 'Vlt-js-accordion__content_open',\n\t\t\tcontentOpening: 'Vlt-js-accordion__content_opening',\n\t\t\tcontentClosing: 'Vlt-js-accordion__content_closing',\n\t\t\ttrigger: 'Vlt-js-accordion__trigger',\n\t\t\ttriggerActive: 'Vlt-js-accordion__trigger_active'\n\t\t}\n\t}\n\n\tfunction Accordion() {}\n\n\tAccordion.prototype = {\n\t\tinit: function(element, suppressClickHandler, triggerElem) {\n\t\t\tif(this.isStandard) {\n\t\t\t\tthis._initStandard(element, suppressClickHandler);\n\t\t\t} else {\n\t\t\t\tthis._initJs(element, suppressClickHandler, triggerElem);\n\t\t\t}\n\t\t},\n\t\t_initStandard: function(element, suppressClickHandler) {\n\t\t\tvar self = this;\n\n\t\t\tif(!suppressClickHandler) {\n\t\t\t\telement.querySelectorAll('.' + _class.standard.trigger).forEach(function(trigger) {\n\t\t\t\t\tvar parent = Volta._closest(trigger, '.' + _class.standard.container, _class.standard.container);\n\n\t\t\t\t\tif(parent && parent == element) {\n\t\t\t\t\t\ttrigger.addEventListener('click', function(){\n\t\t\t\t\t\t\tself.toggle(trigger);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t_initJs: function(element, suppressClickHandler, triggerElem) {\n\t\t\tthis._content = element;\n\n\t\t\tif(triggerElem) {\n\t\t\t\tthis.trigger = triggerElem;\n\t\t\t} else if(this._content.dataset.trigger) {\n\t\t\t\tvar triggerId = this._content.dataset.trigger;\n\t\t\t\tthis.trigger = document.querySelector('#' + triggerId);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Volta: js accordion trigger missing\");\n\t\t\t}\n\n\t\t\tvar self = this;\n\t\t\tif(!suppressClickHandler && this.trigger) {\n\t\t\t\tthis.trigger.addEventListener('click', function(){\n\t\t\t\t\tself.toggle();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tclose: function(trigger) {\n\t\t\tvar panel = this._content || trigger.nextElementSibling;\n\t\t\tvar trigger = this.trigger || trigger;\n\t\t\tvar classes = this.trigger ? _class.js : _class.standard;\n\n\t\t\ttrigger.classList.remove(classes.triggerActive);\n\t\t\tpanel.classList.add(classes.contentClosing);\n\n\t\t\tpanel.style.height = window.getComputedStyle(panel).height;\n\t\t\tpanel.offsetHeight; // force repaint\n\t\t\tpanel.style.height = '0px';\n\t\t\tpanel.classList.remove(classes.contentOpen);\n\n\t\t\tvar self = this;\n\t\t\tpanel.addEventListener('transitionend', function closingTransitionEndEvent(event) {\n\t\t\t\tif (event.propertyName == 'height' && Volta._hasClass(panel, classes.contentClosing)) {\n\t\t\t\t\tpanel.classList.remove(classes.contentClosing);\n\t\t\t\t\tpanel.style.height = '0px';\n\t\t\t\t\tpanel.removeEventListener('transitionend', closingTransitionEndEvent, false);\n\n\t\t\t\t\tif(self.isGroup && self._isTriggerActive(trigger, true)){\n\t\t\t\t\t\tself._activeGroupTrigger = undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, { passive: true, once: true });\n\t\t},\n\t\tisOpening: false,\n\t\t_activeGroupTrigger: undefined,\n\t\t_isTriggerActive: function(trigger, match) {\n\t\t\treturn (this.isGroup && this._activeGroupTrigger && (!match || this._activeGroupTrigger === trigger)) || Volta._hasClass(trigger, _class.standard.triggerActive);\n\t\t},\n\t\topen: function(trigger) {\n\t\t\tif(!this.trigger) {\n\t\t\t\tif(this._isTriggerActive(trigger, false)) {\n\t\t\t\tthis.close(this._activeGroupTrigger || trigger);\n\t\t\t\t}\n\t\t\t\tif(this.isGroup) {\n\t\t\t\t\tthis._activeGroupTrigger = trigger;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar trig = this.trigger || trigger;\n\t\t\tvar classes = this.trigger ? _class.js : _class.standard;\n\t\t\tvar panel = this._content || trig.nextElementSibling;\n\n\t\t\tthis.isOpening = true;\n\n\t\t\ttrig.classList.add(classes.triggerActive);\n\t\t\tpanel.classList.add(classes.contentOpening);\n\n\t\t\tvar startHeight = panel.style.height;\n\t\t\tpanel.style.height = 'auto';\n\t\t\tvar endHeight = window.getComputedStyle(panel).height;\n\t\t\tpanel.style.height = startHeight;\n\t\t\tpanel.offsetHeight; // force repaint\n\t\t\tpanel.style.height = endHeight;\n\n\t\t\tvar self = this;\n\t\t\tpanel.addEventListener('transitionend', function openingTransitionEndEvent(event) {\n\t\t\t\tif (event.propertyName == 'height' && Volta._hasClass(panel, classes.contentOpening)) {\n\t\t\t\t\tpanel.style.height = 'auto';\n\t\t\t\t\tpanel.classList.remove(classes.contentOpening);\n\t\t\t\t\tpanel.classList.add(classes.contentOpen);\n\t\t\t\t\tpanel.removeEventListener('transitionend', openingTransitionEndEvent, false);\n\t\t\t\t\tself.isOpening = false;\n\t\t\t\t}\n\t\t\t}, { passive: true, once: true });\n\t\t},\n\t\ttoggle: function(trigger) {\n\t\t\tif(this.isOpening) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif((this.trigger && Volta._hasClass(this._content, _class.js.contentOpen))\n\t\t\t\t|| (!this.trigger && this._isTriggerActive(trigger, true))) {\n\t\t\t\tthis.close(trigger);\n\t\t\t} else {\n\t\t\t\tthis.open(trigger);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcreate: create,\n\t\tinit: initialise\n\t}\n\n\t/**\n\t *\t@public\n\t *\n\t *\t@description Create an individual accordion object\n\t *\t@param {Element|string} elementOrId Reference to the accordion content element or the id\n\t *\t@param {Boolean} suppressClickHandler Whether click events should be attached on creation\n\t *\t@param {Element} trigger Private required for legacy accordions\n\t *\t@param {Boolean} isGroup Private required for legacy accordions\n\t * @return {Object}\n\t */\n\tfunction create(elementOrId, suppressClickHandler, trigger, isGroup, isStandard) {\n\t\tif(!elementOrId) {\n\t\t\tconsole.warn(\"Volta: no parameter supplied to accordion.create()\");\n\t\t}\n\t\tvar accordion = Object.create(Accordion.prototype, {});\n\t\tvar element = getElement(elementOrId);\n\n\t\tObject.defineProperties(accordion, {\n\t\t\t'isStandard': {\n\t\t\t\tvalue: isStandard || Volta._hasClass(element, _class.standard.container),\n\t\t\t\twritable: false\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperties(accordion, {\n\t\t\t'isGroup': {\n\t\t\t\tvalue: isGroup,\n\t\t\t\twritable: false\n\t\t\t}\n\t\t});\n\n\t\taccordion.init(element, suppressClickHandler, trigger);\n\n\t\treturn accordion;\n\t}\n\n\t/**\n\t *\t@public\n\t *\n\t *\t@description Initialise all the accordions on the current screen\n\t */\n\tfunction initialise() {\n\t\t//standard\n\t\tvar standardAccordions = document.querySelectorAll('.' + _class.standard.container);\n\n\t\tif(standardAccordions.length) {\n\t\t\tstandardAccordions.forEach(function(accordion){\n\t\t\t\tcreate(accordion, false, null, Volta._hasClass(accordion, _class.standard.containerGroup), true);\n\t\t\t});\n\t\t}\n\n\t\t//js\n\t\tvar triggers = document.querySelectorAll('.' + _class.js.trigger + '[data-accordion]');\n\t\tif(triggers.length > 0) {\n\t\t\ttriggers.forEach(function(trigger) {\n\t\t\t\tvar accordionId = trigger.dataset.accordion;\n\t\t\t\tif(!accordionId) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcreate(accordionId, false, trigger);\n\t\t\t});\n\t\t}\n\n\t\t//js - legacy\n\t\tvar jsAccordions = document.querySelectorAll('.' + _class.js.content + '[data-trigger]');\n\t\tif(jsAccordions.length > 0) {\n\t\t\tjsAccordions.forEach(function(jsLegacy) {\n\t\t\t\tcreate(jsLegacy);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t *\t@private\n\t */\n\tfunction getElement(elementOrId) {\n\t \tvar element;\n\n\t\tif(elementOrId.classList) {\n\t\t\telement = elementOrId;\n\t\t} else if (elementOrId.substring(0, 1) === \"#\") {\n\t\t\telement = document.querySelector(elementOrId);\n\t\t} else {\n\t\t\telement = document.querySelector('#' + elementOrId);\n\t\t}\n\n\t\treturn element;\n\t}\n}();\n\n/**\n * Copyright (c) 2001-present, Vonage.\n *\t\n * Badges (requires core)\n */\n\n'use strict';\n\nVolta.badge = function () {\t\n\tvar _class = {\n\t\tbadge: 'Vlt-badge',\n\t\tdismiss: 'Vlt-badge__dismiss',\n\t\tdismissed: 'Vlt-badge--dismissed'\n\t}\n\n\treturn {\n\t\tdismiss: dismiss,\n\t\tinit: attachBadgeHandlers\n\t}\n\n\t/** \n\t *\t@public\n\t *\t\n\t *\t@description Attach a one time listener to dismissable badges\n\t */\n\tfunction attachBadgeHandlers() {\n\t\tdocument.querySelectorAll('.' + _class.dismiss).forEach(create);\n\t}\n\n\t/** \n\t *\t@private\n\t *\t\n\t *\t@description Create a badge\n\t *\t@param {HTMLElement} badge\n\t */\n\tfunction create(badgeOrDismiss) {\n\t\tvar badge, badgeDismiss;\n\n\t\tif(Volta._hasClass(badgeOrDismiss, _class.badge)) {\n\t\t\tbadge = badgeOrDismiss;\n\t\t\tbadgeDismiss = badge.querySelector('.' + _class.dismiss);\n\t\t} else if(Volta._hasClass(badgeOrDismiss, _class.dismiss)){\n\t\t\tbadgeDismiss = badgeOrDismiss;\n\t\t\tbadge = badgeDismiss.parentElement;\n\t\t}\n\n\t\tbadgeDismiss.addEventListener('click', function(){\n\t\t\tdismiss(badge);\n\t\t}, { once : true});\n\t}\n\n\t/** \n\t *\t@public\n\t *\t\n\t *\t@description Dismiss a badge\n\t *\t@param {HTMLElement} badge\n\t */\n\tfunction dismiss(badge) {\n\t\tbadge.classList.add(_class.dismissed);\n\n\t\tif(badge.dataset.callback) {\n\t\t\treturn Volta._getFunction(badgeWrapper.dataset.callback)();\n\t\t}\n\t}\n}();\n/**\n * Copyright (c) 2001-present, Vonage.\n *\t\n * Callouts (requires core)\n */\n\n'use strict';\n\nVolta.callout = function () {\t\n\tvar _class = {\n\t\tcallout: 'Vlt-callout',\n\t\tdismiss: 'Vlt-callout__dismiss',\n\t\tdismissed: 'Vlt-callout--dismissed'\n\t}\n\n\treturn {\n\t\tdismiss: dismiss,\n\t\tinit: attachCalloutHandlers\n\t}\n\n\t/** \n\t *\t@public\n\t *\t\n\t *\t@description Attach a one time listener to dismissable callouts\n\t */\n\tfunction attachCalloutHandlers() {\n\t\tdocument.querySelectorAll('.' + _class.dismiss).forEach(create);\n\t}\n\n\t/** \n\t *\t@private\n\t *\t\n\t *\t@description Create a callout\n\t *\t@param {HTMLElement} callout\n\t */\n\tfunction create(calloutOrDismiss) {\n\t\tvar callout, calloutDismiss;\n\n\t\tif(Volta._hasClass(calloutOrDismiss, _class.callout)) {\n\t\t\tcallout = calloutOrDismiss;\n\t\t\tcalloutDismiss = callout.querySelector('.' + _class.dismiss);\n\t\t} else if(Volta._hasClass(calloutOrDismiss, _class.dismiss)){\n\t\t\tcalloutDismiss = calloutOrDismiss;\n\t\t\tcallout = calloutDismiss.parentElement;\n\t\t}\n\n\t\tcalloutDismiss.addEventListener('click', function(){\n\t\t\tdismiss(callout);\n\t\t}, { once : true});\n\t}\n\n\t/** \n\t *\t@public\n\t *\t\n\t *\t@description Dismiss a callout\n\t *\t@param {HTMLElement} callout\n\t */\n\tfunction dismiss(callout) {\n\t\tcallout.classList.add(_class.dismissed);\n\n\t\tif(callout.dataset.callback) {\n\t\t\treturn Volta._getFunction(calloutWrapper.dataset.callback)();\n\t\t}\n\t}\n}();\n/**\n * Copyright (c) 2001-present, Vonage.\n *\n * Dropdowns (requires core)\n */\n\n'use strict';\n\nVolta.dropdown = function () {\n\tvar _class = {\n\t\twrapper: 'Vlt-dropdown',\n\t\tblock: 'Vlt-dropdown__block',\n\t\tbtn: 'Vlt-dropdown__trigger',\n\t\tbtnLegacy: 'Vlt-dropdown__btn',\n\t\tdismissed: 'Vlt-callout--dismissed',\n\t\texpanded: 'Vlt-dropdown--expanded',\n\t\tlabel: 'Vlt-dropdown__label',\n\t\tlink: 'Vlt-dropdown__link',\n\t\tnoCloseLink: 'Vlt-dropdown__link--noclose',\n\t\tnoCloseBlock: 'Vlt-dropdown__block--noclose',\n\t\tpanel: 'Vlt-dropdown__panel',\n\t\tpanelContent: 'Vlt-dropdown__panel__content',\n\t\tselection: 'Vlt-dropdown__selection',\n\t\tswitch: 'Vlt-switch',\n\t\tswitchSlider: 'Vlt-switch__slider'\n\t}\n\n\tfunction Dropdown() {}\n\n\tDropdown.prototype = {\n\t\tinit: function(element, supressClickHandler) {\n\t\t\tthis.dropdown = element;\n\t\t\tthis.selection = this.dropdown.querySelector('.' + _class.selection);\n\t\t\tthis.isSelectionVisible = !!this.selection;\n\t\t\tthis.btn = this.dropdown.querySelector('.' + _class.btn) || this.dropdown.querySelector('.' + _class.btnLegacy);\n\t\t\tthis._suppress = supressClickHandler;\n\n\t\t\tif(!this._suppress) {\n\t\t\t\tthis._addEventListener();\n\t\t\t}\n\t\t},\n\t\t_addEventListener: function(){\n\t\t\tvar openHandler = this.open.bind(this);\n\t\t\tthis.dropdown.addEventListener('click', openHandler, { once: true })\n\t\t},\n\t\tclose: function(text) {\n\t\t\tif(text) {\n\t\t\t\tthis._setDropdownSelectionText(text);\n\t\t\t}\n\t\t\tthis.dropdown.classList.remove(_class.expanded);\n\n\t\t\tif(!this._suppress){\n\t\t\t\tthis._addEventListener();\n\t\t\t}\n\n\t\t},\n\t\t_closeEventHandler: undefined,\n\t\t_closeEvent: function(e) {\n\t\t\tvar targetIsPanel = Volta._hasClass(e.target, _class.panel);\n\t\t\tvar parentIsPanel = Volta._closest(e.target, '.' + _class.panelContent, _class.panel) !== null;\n\t\t\tvar parentLink = Volta._closest(e.target, '.' + _class.link, _class.wrapper);\n\t\t\tvar parentIsLink = parentLink && parentLink.length === 1;\n\t\t\tvar isSwitchSlider = Volta._hasClass(e.target, _class.switchSlider);\n\t\t\tvar isParentSwitch = Volta._closest(e.target,'.' + _class.switch, _class.link);\n\t\t\tvar isNoClose = Volta._hasClass(e.target, _class.noCloseLink) || Volta._hasClass(e.target, _class.noCloseBlock);\n\t\t\tvar isNoCloseParent = Volta._closest(e.target,'.' + _class.noCloseLink, _class.link) || Volta._closest(e.target,'.' + _class.noCloseBlock, _class.noCloseBlock);\n\t\t\tvar isInput = e.target instanceof HTMLInputElement;\n\n\t\t\tif(!targetIsPanel && !parentIsPanel && !parentIsLink && !isNoClose && !isInput && !isNoCloseParent) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\n\t\t\tif(isSwitchSlider || isParentSwitch || isNoClose || isInput || isNoCloseParent) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar text;\n\t\t\tif(parentIsPanel && Volta._hasClass(e.target, _class.label)) {\n\t\t\t\ttext = e.target.innerHTML;\n\t\t\t} else if (parentIsPanel) {\n\t\t\t\tvar label = e.target.querySelector('.' + _class.label);\n\t\t\t\tif(label) {\n\t\t\t\t\ttext = label.innerHTML;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.close(text);\n\n\t\t\tdocument.querySelector('body').removeEventListener('click', this._closeEventHandler );\n\t\t},\n\t\topen: function(event) {\n\t\t\tif(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\n\t\t\tthis.dropdown.classList.add(_class.expanded);\n\n\t\t\tif(!this._suppress){\n\t\t\t\tthis._closeEventHandler = this._closeEvent.bind(this);\n\t\t\t\tdocument.querySelector('body').addEventListener('click', this._closeEventHandler );\n\t\t\t}\n\t\t},\n\t\t_setDropdownSelectionText: function(text) {\n\t\t\tif(this.isSelectionVisible) {\n\t\t\t\tthis.selection.innerText = text;\n\t\t\t} else {\n\t\t\t\tthis.btn.innerText = text;\n\t\t\t\tthis.btn.value = text;\n\t\t\t}\n\t\t},\n\t\t_suppress: false\n\t}\n\n\treturn {\n\t\tcreate: create,\n\t\tinit: attachDropdownHandlers\n\t}\n\n\t/**\n\t *\t@public\n\t *\n\t *\t@description Attach a listeners to dropdowns\n\t */\n\tfunction attachDropdownHandlers() {\n\t\tdocument.querySelectorAll('.' + _class.wrapper).forEach(attachHandler);\n\n\t\tfunction attachHandler(dropdown) {\n\t\t\tcreate(dropdown);\n\t\t}\n\t}\n\n\t/**\n\t *\t@private\n\t *\n\t *\t@description Create a dropdown element\n\t * @param {HTMLElement} element\n \t */\n\tfunction create(element){\n\t\tvar dropdown = Object.create(Dropdown.prototype, {})\n\t\tdropdown.init(element);\n\t\treturn dropdown;\n\t}\n}();\n/**\n * Copyright (c) 2001-present, Vonage.\n *\t\n * Tabs (requires core)\n */\n\n'use strict';\n\nVolta.flash = function () {\t\n\tvar _class = {\n\t\tflash: 'Vlt-flash',\n\t\ttrigger: 'Vlt-flash-trigger',\n\t\tvisible: 'Vlt-flash_visible'\n\t}\n\n\tvar gap = 20,\n\t\topenBottomFlashes = [],\n\t\topenTopFlashes = [],\n\t\ttimeouts =[];\n\n\treturn {\n\t\tcloseAll: closeAll,\n\t\tinit: attachFlashHandlers,\n\t\tshow: show\n\t}\n\n\t/** \n\t *\t@public\n\t *\t\n\t *\t@description Attach a click listener to each flash's trigger on the screen\n\t * @param {HTMLElement} element \n\t */\n\tfunction attachFlashHandlers() {\n\t\tvar triggers = document.querySelectorAll('.' + _class.trigger);\n\n\t\tif(triggers.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\ttriggers.forEach(attachHandler);\n\t\t\n\t\tfunction attachHandler(trigger) {\n\t\t\ttrigger.addEventListener('click', function() {\n\t\t\t\tif(trigger.dataset.flash) {\n\t\t\t\t\tvar flash = document.querySelector('#' + trigger.dataset.flash);\n\t\t\t\t\tshow(flash);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Volta: flash trigger is missing data-flash attribute\");\n\t\t\t\t}\t\t\t\t\n\t\t\t});\n\t\t}\n\t}\n\n\t/** \n\t *\t@public\n\t *\t\n\t *\t@description Close all open flashes\n\t */\n\tfunction closeAll() {\t\t\n\t\tif(timeouts.length > 0) {\n\t\t\ttimeouts.forEach(function(timeout){\n\t\t\t\tclearTimeout(timeout);\n\t\t\t});\n\t\t}\n\t\tif(openBottomFlashes.length > 0) {\n\t\t\tclearQueue(openBottomFlashes);\n\t\t}\n\t\tif(openTopFlashes.length > 0) {\n\t\t\tclearQueue(openTopFlashes);\n\t\t}\n\t\t\n\t\ttimeouts = [];\n\t\topenBottomFlashes = [];\n\t\topenTopFlashes = [];\n\n\t\tfunction clearQueue(elementArr) {\n\t\t\telementArr.forEach(function(element){\n\t\t\t\t_hide(element);\n\t\t\t});\t\n\t\t\telementArr = [];\n\t\t}\n\t}\n\n\t/** \n\t *\t@public\n\t *\t\n\t *\t@description Show the flash\n\t * @param {HTMLElement} element \n\t */\n\tfunction show(elementOrId, time) {\n\t\tif(!elementOrId || elementOrId.length == 0) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\ttime = time || 5000;\n\n\t\tvar element = !elementOrId.classList ? document.querySelector('#' + elementOrId) : elementOrId;\n\t\tvar position = Volta._hasClass(element, 'Vlt-flash--bottom') ? 'bottom' : 'top';\n\t\tvar arr = position === 'bottom' ? openBottomFlashes : openTopFlashes;\n\n\t\tif(arr.indexOf(element) !== -1) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t_setFlashPosition(arr, element, position);\n\n\t\tarr.push(element);\n\t\t\t\t\n\t\telement.classList.add(_class.visible);\n\t\t\n\t\tvar hideTimeout = setTimeout(function(){\n\t\t\t_hide(element, true);\n\t\t\tVolta._removeFromArr(timeouts, hideTimeout);\n\t\t}, time);\n\n\t\ttimeouts.push(hideTimeout);\n\t}\n\n\t/** \n\t *\t@private\n\t *\t@description Hide the flash\n\t * @param {HTMLElement} element \n\t */\n\tfunction _hide(element, shouldRemove) {\n\t\tvar position = Volta._hasClass(element, 'Vlt-flash--bottom') ? 'bottom' : 'top';\n\t\tvar arr = position === 'bottom' ? openBottomFlashes : openTopFlashes;\n\t\t\n\t\tif(shouldRemove) {\n\t\t\tVolta._removeFromArr(arr, element);\n\t\t}\n\n\t\t_updateFlashPositions(arr, element, position);\n\n\t\telement.style[position] = '';\n\t\telement.classList.remove(_class.visible);\n\t}\n\n\t/** \n\t *\t@private\n\t *\t@description Set the position of the flash\n\t * @param {HTMLElement} element \n\t */\n\tfunction _setFlashPosition(arr, element, position) {\n\t\tvar positionPx = arr.reduce(function(px, flash) {\n\t\t\treturn px + flash.clientHeight;\t\t\t\t\n\t\t}, 0);\n\t\tif(positionPx > 0) {\n\t\t\telement.style[position] = (gap * arr.length) + gap + positionPx + 'px';\n\t\t}\n\t}\n\n\t/** \n\t *\t@private\n\t *\t@description Update the position of all the visible flashes\n\t * @param {Array} arr\n\t * @param {HTMLElement} element \n\t * @param {string} position \n\t */\n\tfunction _updateFlashPositions(arr, element, position){\n\t\tif(arr.length > 0) {\n\t\t\tvar elementHeight = element.clientHeight;\n\n\t\t\tarr.forEach(function(flash) {\n\t\t\t\tvar newPosition;\n\n\t\t\t\tif(position === 'bottom') {\n\t\t\t\t\tnewPosition = Number(flash.style.bottom.substring(0, flash.style.bottom.length - 2));\n\t\t\t\t} else {\n\t\t\t\t\tnewPosition = flash.getBoundingClientRect()[position];\t\t\t\t\n\t\t\t\t}\n\t\t\t\tflash.style[position] = newPosition -elementHeight - gap + \"px\";\t\t\n\t\t\t});\n\t\t}\n\t}\n}();\n/**\n * Copyright (c) 2001-present, Vonage.\n *\n * Modals (requires core)\n */\n\n'use strict';\n\nVolta.modal = function () {\n\tvar _class = {\n\t\tauto: 'Vlt-modal--auto',\n\t\tbodyModalOpen: 'Vlt-body--modal-open',\n\t\tcancel: 'Vlt-modal__cancel',\n\t\tconfirm: 'Vlt-modal__confirm',\n\t\tcontent: 'Vlt-modal__content',\n\t\tmodal: 'Vlt-modal',\n\t\tout: 'Vlt-modal--out',\n\t\tpanel: 'Vlt-modal__panel',\n\t\ttrigger: 'Vlt-modal-trigger',\n\t\tvisible: 'Vlt-modal_visible',\n\t\tdismiss: 'Vlt-modal__dismiss',\n\t}\n\n\tvar body,\n\t\tdismissModalHandler,\n\t\tcancelModalHandler,\n\t\tconfirmModalHandler,\n\t\tescHandler,\n\t\tclickHandler,\n\t\tescAttached;\n\n\tfunction Modal() {}\n\n\tModal.prototype = {\n\t\tattachButtons: function() {\n\t\t\tvar _this = this;\n\t\t\t_this.dismissBtn = _this.modal.querySelector('.' + _class.dismiss);\n\n\t\t if(_this.dismissBtn) {\n\t\t \tdismissModalHandler = dismissModal.bind(_this);\n\t\t \t_this.dismissBtn.addEventListener('click', dismissModalHandler);\n\t\t }\n\n\t\t _this.cancelBtn = _this.modal.querySelector('.' + _class.cancel);\n\n\t\t if(_this.cancelBtn) {\n\t \t\tcancelModalHandler = cancelModal.bind(_this);\n\t\t \t_this.cancelBtn.addEventListener('click', cancelModalHandler);\n\t\t }\n\n\t\t _this.confirmBtn = _this.modal.querySelector('.' + _class.confirm);\n\n\t\t if(_this.confirmBtn) {\n\t\t \tconfirmModalHandler = confirmModal.bind(_this);\n\t\t \t_this.confirmBtn.addEventListener('click', confirmModalHandler);\n\t\t }\n\t\t},\n\t\thtml: function(newHtml) {\n\t\t\tthis.modal.innerHTML = newHtml;\n\t\t\treturn this;\n\t\t},\n\t\tinit: function(elementOrId) {\n\t\t\tif(elementOrId.length) {\n\t\t\t\tthis.modal = document.querySelector('#' + elementOrId);\n\t\t\t} else {\n\t\t\t\tthis.modal = elementOrId;\n\t\t\t}\n\n\t\t\tthis._callback = Volta._getFunction(this.modal.dataset.callback);\n\t\t},\n\t\topen: function(e) {\n\t\t if(e && e.preventDefault) {\n\t\t e.preventDefault();\n\t\t \te.stopPropagation();\n\t\t }\n\n\t\t this.modal.classList.remove(_class.out);\n\t\t this.modal.classList.add(_class.visible);\n\t\t this.attachButtons();\n\n\t\t disableScroll();\n\n\t\t if(!escAttached && !this.modal.dataset.disableEsc || this.modal.dataset.disableEsc === \"false\") {\n\t\t \tescHandler = closeModalOnEscape.bind(this);\n\t\t \t\tbody.addEventListener('keyup', escHandler, { once: true });\n\t\t \t\tescAttached = true;\n\t\t }\n\n\t\t if(!this.modal.dataset.disableClick || this.modal.dataset.disableClick === \"false\") {\n\t\t \tclickHandler = closeModalOnClick.bind(this);\n\t\t \t\tthis.modal.addEventListener('click', clickHandler, { once: true });\n\t\t }\n\t\t},\n\t\tdismiss: function(e, confirmed) {\n\t\t\tvar _this = this;\n\n\t\t\tif(e && e.preventDefault) {\n\t\t \te.preventDefault();\n\t\t \te.stopPropagation();\n\t\t\t}\n\n\t\t\tenableScroll();\n\n\t\t\tif(_this.modal){\n\t\t\t\t_this.modal.classList.remove(_class.visible);\n\t\t\t\t_this.modal.classList.add(_class.out);\n\t\t\t}\n\n\t\t\tif(_this._callback) {\n\t\t\t\t_this._callback(confirmed);\n\t\t\t}\n\n\t\t\tremoveModal(_this);\n\t\t}\n\t}\n\n\treturn {\n\t\tcreate: create,\n\t\tinit: attachModalHandlers\n\t}\n\n\t/**\n\t *\t@public\n\t *\n\t *\t@description Attach a click listener to each modals trigger on the screen, which will open the modal\n\t */\n\tfunction attachModalHandlers() {\n\t\tif(!body) {\n\t\t\tbody = document.querySelector('body');\n\t\t}\n\n\t\tvar triggers = document.querySelectorAll('.' + _class.trigger);\n\n\t\tif(triggers.length > 0) {\n\t\t\ttriggers.forEach(attachTriggerHandler);\n\t\t}\n\n\t\t//Not the recommended way to use modals\n\t\tvar modals = document.querySelectorAll('.' + _class.modal);\n\n\t\tif(modals.length > 0) {\n\t\t\tmodals.forEach(attachModalHandler);\n\t\t}\n\n\t\tfunction attachModalHandler(modal) {\n\t\t\tif(Volta._hasClass(modal, _class.auto)) {\n\t\t\t\tvar trigger = document.querySelector('#' + modal.dataset.trigger);\n\t\t\t\ttrigger.addEventListener('click', function() {\n\t\t\t\t\tcreate(modal).open();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction attachTriggerHandler(trigger) {\n\t\t\tif(trigger.dataset.modal) {\n\t\t\t\tvar modal = document.querySelector('#' + trigger.dataset.modal);\n\n\t\t\t\tif(!modal) {\n\t\t\t\t\tconsole.warn('Volta: modal ' + trigger.dataset.modal + ' cannot be found');\n\t\t\t\t}\n\n\t\t\t\ttrigger.addEventListener('click', function() {\n\t\t\t\t\tcreate(modal).open();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n /**\n\t *\t@private\n\t *\n\t *\t@description Close the modal, triggered by cancel button, passes false to callback function\n\t * @param {event} e\n\t */\n function cancelModal(e) {\n\t\treturn this.dismiss(e, false);\n\t}\n\n\t/**\n\t *\t@private\n\t *\n\t *\t@description Close the modal, triggered by confirm button, passes true to callback function\n\t * @param {event} e\n\t */\n function confirmModal(e) {\n\t\treturn this.dismiss(e, true);\n\t}\n\n /**\n\t *\t@private\n\t *\n\t *\t@description Close the modal, triggered by 'x' button, passes false to callback function\n\t * @param {event} e\n\t */\n function dismissModal(e) {\n\t\treturn this.dismiss(e, false);\n }\n\n /**\t@private\n\t *\n\t *\t@description Close the modal, triggered by 'esc' key, passes false to callback function\n\t * @param {event} e\n\t */\n function closeModalOnEscape(e){\n \tif(e && e.keyCode === 27) {\n \t\tthis.dismiss(e, false);\n \t} else {\n\t\t\tbody.addEventListener('click', escHandler, { once: true });\n \t}\n }\n\n\n /**\t@private\n\t *\n\t *\t@description Close the modal, triggered by 'body click, passes false to callback function\n\t * @param {event} e\n\t */\n function closeModalOnClick(e){\n \tif(!Volta._hasClass(e.target, _class.trigger)\n\t\t\t&& !Volta._closest(e.target, '.' + _class.trigger, '.' + _class.trigger)\n \t\t&& !Volta._closest(e.target, '.' + _class.panel, '.' + _class.panel)) {\n \t\tthis.dismiss(e, false);\n \t} else if(this.modal) {\n\t\t\tthis.modal.addEventListener('click', clickHandler, { once: true });\n \t}\n }\n\n /**\n\t *\t@public\n\t *\n\t *\t@description Create the modal object\n\t * @param {HTMLElement|string} elementOrId Reference to the modal element or the id\n\t *. @return {Object} A modal object\n\t */\n function create(elementOrId) {\n \tif(!body) {\n\t\t\tbody = document.querySelector('body');\n\t\t}\n\t\tvar modal = Object.create(Modal.prototype, {})\n\t\tmodal.init(elementOrId);\n\t\treturn modal;\n }\n\n /**\n\t * Private functions to disable body scroll when modal is open\n */\n function disableScroll() {\n\t body.classList.add(_class.bodyModalOpen);\n\t\tbody.addEventListener('touchmove', preventScroll);\n\n\t\tif (body.querySelector('.Vlt-main')) {\n\t\t\tbody.querySelector('.Vlt-main').addEventListener('touchmove', preventScroll);\n\t\t} else {\n\t\t\tbody.addEventListener('touchmove', preventScroll);\n\t\t}\n\n\t\tbody.querySelector('.' + _class.content).addEventListener('touchmove', allowScroll);\n }\n\n function enableScroll() {\n\t\tbody.classList.remove(_class.bodyModalOpen);\n\t\tbody.removeEventListener('touchmove', preventScroll);\n\n\t\tif (body.querySelector('.Vlt-main')) {\n\t\t\tbody.querySelector('.Vlt-main').removeEventListener('touchmove', preventScroll);\n\t\t} else {\n\t\t\tbody.removeEventListener('touchmove', preventScroll);\n\t\t}\n\t\t\n\t\tvar modalContent = body.querySelector('.' + _class.content);\n\t\tif(modalContent) modalContent.removeEventListener('touchmove', allowScroll);\n }\n\n function allowScroll(e) {\n \te.stopPropagation();\n }\n\n function preventScroll(e) {\n\t\te.preventDefault();\n }\n\n \t/**\n\t *\t@private\n\t *\n\t *\t@description Remove the modal after dismiss, makes sure to delete the modal properties so it can be garbage collected, and removes event listeners\n\t * @param {HTMLElement|string} elementOrId Reference to the modal element or the id\n\t */\n\tfunction removeModal(modal) {\n\t\tdelete modal.modal;\n\n\t\tif(modal.dismissBtn) {\n\t\t\tmodal.dismissBtn.removeEventListener('click', dismissModalHandler);\n\t\t}\n\n\t\tif(modal.cancelBtn) {\n\t\t\tmodal.cancelBtn.removeEventListener('click', cancelModalHandler);\n\t\t}\n\n\t\tif(modal.confirmBtn) {\n\t\t\tmodal.confirmBtn.removeEventListener('click', confirmModalHandler);\n\t\t}\n\n\t\tif(clickHandler) {\n \t\t\tbody.removeEventListener('click', clickHandler);\n \t}\n\n \tif(escHandler) {\n \t\tbody.removeEventListener('keyup', escHandler);\n \t\tescAttached = false;\n \t}\n\t}\n}();\n/**\n * Copyright (c) 2001-present, Vonage.\n *\n * Tabs (requires core)\n */\n\n'use strict';\n\nVolta.tab = function () {\n\tvar _class = {\n\t\tlink: 'Vlt-tabs__link',\n\t\tlinkJs: 'Vlt-js-tabs__link',\n\t\tlinkActive: 'Vlt-tabs__link_active',\n\t\tlinkDisabled: 'Vlt-tabs__link_disabled',\n\t\tlinkJsActive: 'Vlt-js-tabs__link_active',\n\t\tpanel: 'Vlt-tabs__panel',\n\t\tpanelActive: 'Vlt-tabs__panel_active',\n\t\tpanelJsActive: 'Vlt-js-tabs__panel_active',\n\t\ttabs: 'Vlt-tabs',\n\t}\n\n\tfunction Tabs() { }\n\n\tTabs.prototype = {\n\t\t_keys: {\n\t\t\tleft: 37,\n\t\t\tright: 39\n\t\t},\n\n\t\tinit: function (element, isWrapper) {\n\t\t\tvar _this = this,\n\t\t\t\ttabsHeader,\n\t\t\t\ttabsContent;\n\n\t\t\tif (isWrapper) {\n\t\t\t\ttabsHeader = element.children.item(0);\n\t\t\t\ttabsContent = element.children.item(1);\n\t\t\t} else {\n\t\t\t\t_this.isJs = true;\n\t\t\t\ttabsHeader = element;\n\t\t\t\ttabsContent = element.dataset.tabContent ?\n\t\t\t\t\tdocument.querySelector('#' + element.dataset.tabContent)\n\t\t\t\t\t: null;\n\t\t\t}\n\n\t\t\tvar linkClass = _this.isJs ? _class.linkJs : _class.link;\n\t\t\t_this._links = tabsHeader.querySelectorAll('.' + linkClass);\n\t\t\t_this._panels = tabsContent ? tabsContent.children : undefined;\n\n\t\t\tthis._deactivateElements();\n\t\t\tthis._setActiveElements();\n\n\t\t\tif (_this._panels && _this._panels.length === _this._links.length) {\n\t\t\t\t_this._links.forEach(function (link, index) {\n\t\t\t\t\tvar link = link;\n\n\t\t\t\t\tlink.index = index;\n\t\t\t\t\tlink.addEventListener('keyup', _this._keyUpEventListener.bind(_this));\n\t\t\t\t\tlink.addEventListener('toggle', function () {\n\t\t\t\t\t\t_this.toggle(link);\n\t\t\t\t\t});\n\t\t\t\t\tlink.addEventListener('click', function () {\n\t\t\t\t\t\t_this.toggle(link);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else if (_this._panels && _this._panels.length > 0) {\n\t\t\t\tconsole.log('Volta: Tabs, number of links and panels do not match');\n\t\t\t}\n\t\t},\n\t\ttoggle: function (linkElement) {\n\t\t\tvar linkActiveClass = this.isJs ? _class.linkJsActive : _class.linkActive;\n\t\t\tvar panelActiveClass = this.isJs ? _class.panelJsActive : _class.panelActive;\n\n\t\t\tif (!Volta._hasClass(linkElement, _class.linkDisabled) && (!this._activeLink || this._activeLink !== linkElement)) {\n\t\t\t\tif (this._activeLink) {\n\t\t\t\t\tthis._activeLink.classList.remove(linkActiveClass);\n\t\t\t\t\tthis._activePanel.classList.remove(panelActiveClass);\n\t\t\t\t}\n\n\t\t\t\tthis._deactivateElements();\n\t\t\t\tthis._setActiveElements(linkElement);\n\n\t\t\t\tthis._activeLink.classList.add(linkActiveClass);\n\t\t\t\tthis._activePanel.classList.add(panelActiveClass);\n\n\t\t\t\tif (Volta.tooltip) {\n\t\t\t\t\tVolta.tooltip.init();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_deactivateElements: function () {\n\t\t\tthis._links.forEach(function (link) {\n\t\t\t\tlink.setAttribute('tabIndex', '-1');\n\t\t\t\tlink.setAttribute('aria-selected', 'false');\n\t\t\t});\n\t\t\tArray.from(this._panels).forEach(function (panel) {\n\t\t\t\tpanel.setAttribute('hidden', 'hidden');\n\t\t\t});\n\t\t},\n\t\t_setActiveElements: function (linkElement) {\n\t\t\tvar linkActiveClass = this.isJs ? _class.linkJsActive : _class.linkActive;\n\n\t\t\tif (!linkElement) {\n\t\t\t\tthis._activeLink = this._links.item(linkActiveClass);\n\t\t\t} else {\n\t\t\t\tthis._activeLink = linkElement;\n\t\t\t}\n\n\t\t\tvar tabIndex;\n\t\t\tvar currentNode = 0;\n\n\t\t\twhile (!tabIndex && currentNode < this._links.length) {\n\t\t\t\tif (this._links.item(currentNode) === this._activeLink) {\n\t\t\t\t\ttabIndex = currentNode;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcurrentNode++;\n\t\t\t}\n\n\t\t\tif (this._panels) {\n\t\t\t\tthis._activePanel = this._panels.item(tabIndex);\n\t\t\t}\n\n\t\t\tthis._activeLink.setAttribute('tabindex', '0');\n\t\t\tthis._activeLink.setAttribute('aria-selected', 'true');\n\t\t\tif (this._activePanel) {\n\t\t\t\tthis._activePanel.removeAttribute('hidden');\n\t\t\t}\n\t\t},\n\t\t_keyUpEventListener: function (event) {\n\t\t\tvar key = event.keyCode;\n\n\t\t\tswitch (key) {\n\t\t\t\tcase this._keys.left:\n\t\t\t\tcase this._keys.right:\n\t\t\t\t\tthis._switchTab(event);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\t_switchTab: function (event) {\n\t\t\tvar nextTab;\n\n\t\t\tif (this._keys.left === event.keyCode) {\n\t\t\t\tnextTab = this._findNextTab(-1);\n\t\t\t} else if (this._keys.right === event.keyCode) {\n\t\t\t\tnextTab = this._findNextTab(1);\n\t\t\t}\n\t\t\tthis.toggle(nextTab);\n\t\t},\n\t\t_findNextTab: function (direction) {\n\t\t\tvar tab, nextTab;\n\t\t\tvar currentIndex = this._activeLink.index;\n\t\t\tfor (var i = currentIndex + direction; !nextTab && (this._calculateIndex(i) !== currentIndex); i += direction) {\n\t\t\t\ttab = this._links.item(this._calculateIndex(i));\n\t\t\t\tif (!Volta._hasClass(tab, _class.linkDisabled)) {\n\t\t\t\t\tnextTab = tab;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nextTab;\n\t\t},\n\t\t_calculateIndex: function (i) {\n\t\t\tvar length = this._links.length;\n\t\t\treturn ((i % length) + length) % length;\n\t\t}\n\t}\n\n\treturn {\n\t\tcreate: create,\n\t\tinit: attachTabHandlers\n\t}\n\n\t/**\n\t *\t@public\n\t *\n\t *\t@description Attach a listener to the tab header\n\t */\n\tfunction attachTabHandlers() {\n\t\t//traditional tabs\n\t\tdocument.querySelectorAll('.' + _class.tabs).forEach(create);\n\n\t\tdocument.querySelectorAll('[data-tab-content]').forEach(create);\n\t}\n\n\t/**\n\t *\t@public\n\t *\n\t *\t@description Create a tabs component\n\t * @param {HTMLElement} element\n\t */\n\tfunction create(element) {\n\t\tvar tabs = Object.create(Tabs.prototype, {})\n\n\t\tif (Volta._hasClass(element, _class.tabs)) {\n\t\t\ttabs.init(element, true);\n\t\t} else {\n\t\t\ttabs.init(element);\n\t\t}\n\n\t\treturn tabs;\n\t}\n}();\n\n/**\n * Copyright (c) 2001-present, Vonage.\n *\t\n * tables (requires core)\n */\n\n'use strict';\n\nVolta.table = function () {\t\n\tvar _class = {\n\t\ttable: 'Vlt-table',\n\t\ttall: 'Vlt-table--tall',\n\t\tshort: 'Vlt-table--short',\n\t\ttrigger: 'Vlt-table__density',\n\t\tbuttonActive: 'Vlt-btn_active'\n\t}\n\n\treturn {\n\t\tinit: attachTableDensityHandlers\n\t}\n\n\t/** \n\t *\t@public\n\t *\t\n\t *\t@description Attach a listener to the table density triggers\n\t */\n\tfunction attachTableDensityHandlers() {\n\t\tvar triggers = document.querySelectorAll('.' + _class.trigger);\n\n\t\tif(triggers.length > 0) {\n\t\t\ttriggers.forEach(attachTriggerHandler);\n\t\t}\n\n\t\tfunction attachTriggerHandler(trigger) {\n\t if(trigger.dataset.table) {\n\t var table = document.querySelector('#' + trigger.dataset.table);\n\n\t if(!table) {\n\t console.warn('Volta: table ' + trigger.dataset.table + ' cannot be found');\n\t return;\n\t }\n\n\t var activeButton = trigger.querySelector('.' + _class.buttonActive);\n\n\t trigger.querySelectorAll('.Vlt-btn').forEach( function(button) {\n\t button.addEventListener('click', function() {\n\t if (this.dataset.density) {\n\t console.log('in')\n\t if (this.dataset.density == 'short') {\n\t table.classList.add(_class.short)\n\t table.classList.remove(_class.tall)\n\t } else if (this.dataset.density == 'tall') {\n\t table.classList.add(_class.tall)\n\t table.classList.remove(_class.short)\n\t } else {\n\t table.classList.remove(_class.tall)\n\t table.classList.remove(_class.short)\n\t }\n\n\t // update classes on buttons\n\t if(activeButton) {\n\t activeButton.classList.remove(_class.buttonActive);\n\t }\n\t activeButton = this;\n\t this.classList.add(_class.buttonActive);\n\t }\n\t })\n\t });\n\t }\n\t }\n\t}\n\n}();\n/**\n * Copyright (c) 2001-present, Vonage.\n *\t\n * Tooltips (requires popper.js, tooltip.js)\n */\n'use strict';\n\nVolta.tooltip = function () {\n\tvar _class = {\n\t\tbottom: 'Vlt-tooltip--bottom',\n\t\tleft: 'Vlt-tooltip--left',\n\t\ttooltip: 'Vlt-tooltip',\n\t\ttop: 'Vlt-tooltip--top',\n\t\tright: 'Vlt-tooltip--right'\n\t}\n\n\tvar currentTooltip = undefined,\n\t\tcurrentTooltipContent = undefined;\n\n\treturn {\n\t\tcreate: create,\n\t\tinit: attachTooltipHandlers\n\t}\n\n\t/** \n\t *\t@public\n\t *\t\n\t *\t@description Create a Tooltip instance for every Vlt-tooltip\n\t */\n\tfunction attachTooltipHandlers() {\n\t\tdocument.querySelectorAll('.' + _class.tooltip).forEach(create);\t\t\t\t\n\t}\n\n\t/** \n\t *\t@public\n\t *\t\n\t *\t@description Create a Tooltip instance\n\t *\t@param {HTMLElement} tooltip\n\t * @return {object} a Tooltip element\n\t */\n\t function create(tooltip) {\n\t\tvar placement;\n\n\t\tif (Volta._hasClass(tooltip, _class.bottom)) {\n\t\t\tplacement = 'bottom';\n\t\t} else if (Volta._hasClass(tooltip, _class.top)) {\n\t\t\tplacement = 'top';\n\t\t} else if (Volta._hasClass(tooltip, _class.left)) {\n\t\t\tplacement = 'left';\n\t\t} else if (Volta._hasClass(tooltip, _class.right)) {\n\t\t\tplacement = 'right';\n\t\t}\n\n\t\tvar template = \n\t\t\t'