{"version":3,"sources":["webpack:///./src/plugins/bootstrap-vue.js","webpack:///./src/plugins/globals.js","webpack:///src/components/HeaderBar.vue","webpack:///./src/components/HeaderBar.vue?8927","webpack:///./src/components/HeaderBar.vue","webpack:///src/components/FooterBar.vue","webpack:///./src/components/FooterBar.vue?da7f","webpack:///./src/components/FooterBar.vue","webpack:///src/App.vue","webpack:///./src/App.vue?a89e","webpack:///./src/App.vue","webpack:///./src/service/service.js","webpack:///src/components/Home.vue","webpack:///./src/components/Home.vue?44ab","webpack:///./src/components/Home.vue","webpack:///src/components/Done.vue","webpack:///./src/components/Done.vue?0cf2","webpack:///./src/components/Done.vue","webpack:///src/components/NotFound.vue","webpack:///./src/components/NotFound.vue?cc60","webpack:///./src/components/NotFound.vue","webpack:///src/components/Terms.vue","webpack:///./src/components/Terms.vue?e9ef","webpack:///./src/components/Terms.vue","webpack:///src/components/Privacy.vue","webpack:///./src/components/Privacy.vue?f384","webpack:///./src/components/Privacy.vue","webpack:///./src/router/index.js","webpack:///./src/main.js","webpack:///./src/art/logo.png","webpack:///./src/utils/utils.js","webpack:///./src/config/constants.js"],"names":["Vue","use","BootstrapVue","IconsPlugin","library","add","faUserSecret","faKey","faMask","faCat","faAngry","faBell","component","FontAwesomeIcon","globals","data","var1","var2","methods","myGlobalMethod","console","log","mixin","_data","debug","HeaderBar","name","computed","isLoggedIn","this","$root","hasToken","token","getToken","mounted","components_HeaderBar","render","_h","$createElement","_c","_self","staticClass","attrs","id","cols","src","__webpack_require__","staticRenderFns","FooterBar__data","FooterBar","version","getVersion","build","getBuild","components_FooterBar","staticStyle","background-color","size","_v","align-h","to","max-width","_s","Date","getFullYear","App__data","App","components","header-bar","normalizeComponent","ssrContext","footer-bar","FooterBar_normalizeComponent","testme","created","selectortype_template_index_0_src_App","mode","key","$route","fullPath","src_App","App_normalizeComponent","service","getBook","bookCode","c","axios","get","params","then","res","catch","e","saveBookResponse","post","Home","error","errorMsg","busy","success","email","hash","studentHash","book","bookId","companyId","mediaTypeId","code","hasOptin","title","subtitle","formTitle","photo","blurb","buttonLabel","buttonText","pdf","url","youtubeCode","optinText","payloadLinkText","companyName","jobTitles","form","optin","jobTitle","firstname","lastname","phone","bookHash","props","type","String","required","default","mixins","lib","validations","validators","minLength","Object","optionalPhone","value","req","length","isPdf","constants_default","a","VP_MEDIATYPE","PDF","isYoutube","YOUTUBE","isUrl","URL","getYoutubeUrl","utils_default","validateState","_$v$form$name","$v","$dirty","$error","register","_this","$touch","$anyError","status","finally","registerRepEmpower","_this2","window","location","href","_this3","query","h","bind","components_Home","_vm","show","fluid","lg","_e","on","submit","$event","stopPropagation","preventDefault","label","label-for","label-size","label-class","placeholder","options","state","aria-describedby","model","callback","$$v","$set","trim","expression","is-text","icon","unchecked-value","variant","dismissible","bg-variant","target","src_components_Home","Home_normalizeComponent","Done__data","Done","loading","components_Done","src_components_Done","Done_normalizeComponent","NotFound__data","msg","classHash","username","password","NotFound","s","components_NotFound","hidden","sm","_m","src_components_NotFound","NotFound_normalizeComponent","Terms__data","Terms","goBack","$router","go","nl2br","getBlurb","rowCount","components_Terms","domProps","innerHTML","src_components_Terms","Terms_normalizeComponent","Privacy__data","Privacy","components_Privacy","src_components_Privacy","Privacy_normalizeComponent","VueRouter","router","routes","path","meta","requiresAuth","alias","beforeEach","from","next","localStorage","getItem","rurl","afterEach","nextTick","document","process","config","productionTip","filter","replace","dt","utils","prettyDate","prettyDateTime","seconds","prettySeconds","num","prettyNumber","typeId","aout","constants","CE_TYPEID","HOMESTUDY","PARTICIPATORY","hostMap","defaultRunMode","sites","local","hosts","api","test","prod","keys_default","runMode","getRunMode","host","baseUrl","getApiBaseUrl","defaults","baseURL","el","studentId","studentName","studentEmail","testval","__VERSION__","__BUILD__","template","setToken","setItem","getStudentHash","setStudentHash","module","exports","arg","d","isString","getDay","getMonth","getDate","prettyTime","hr","parseInt","getHours","mn","getMinutes","slice","SECONDS_IN_MINUTE","MINUTES_IN_HOUR","SECONDS_IN_HOUR","SECONDS_IN_DAY","twoDigits","val","toString","plural","suffix","MAX_SEARCH_LENGTH","dateStr","durationSeconds","secs","hours","Math","floor","minutes","toLocaleString","prettyCountdown","deltaSeconds","days","concat","getYoutubeCode","match","autoplay","safeParseInt","defaultVal","parsed","isNaN","safeSearch","q","includes","toLowerCase","hostVal","forcedMode","split","_arr","_i","siteName","runModeArg","CLASS_TYPE","UNDEFINED","LIVE","ARCHIVE","PRODUCED","PRODUCED_ARCHIVE","MOVIE","LUNCHLEARN","PRODUCED_PLAYBACK","SLIDESHOW","SEMINAR","NONCE","VP_AD_EVENTID","VIEW","CLICK","NONE"],"mappings":"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","file":"static/js/app.bf3b8ea2dcaf83884378.js","sourcesContent":["import Vue from 'vue'\r\n\r\n// https://bootstrap-vue.js.org/docs/\r\n// https://developer.okta.com/blog/2018/02/15/build-crud-app-vuejs-node\r\nimport { BootstrapVue, IconsPlugin } from 'bootstrap-vue'\r\nimport 'bootstrap/dist/css/bootstrap.css'\r\nimport 'bootstrap-vue/dist/bootstrap-vue.css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core'\r\nimport { faUserSecret, faKey, faMask, faCat, faAngry, faBell } from '@fortawesome/free-solid-svg-icons'\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'\r\n\r\nVue.use(BootstrapVue)\r\n// Optionally install the BootstrapVue icon components plugin\r\nVue.use(IconsPlugin)\r\n\r\n// https://github.com/FortAwesome/vue-fontawesome\r\n// add the \"solid\" icons to the core library\r\nlibrary.add(faUserSecret, faKey, faMask, faCat, faAngry, faBell)\r\nVue.component('font-awesome-icon', FontAwesomeIcon)\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/bootstrap-vue.js","'use strict'\r\n\r\n// inspired by\r\n// https://developpaper.com/question/how-to-access-vue-global-variables-in-vue-files/\r\n\r\n/* eslint-disable */\r\nimport Vue from 'vue'\r\n\r\nlet globals = {\r\n data() {\r\n return {\r\n var1: 1,\r\n var2: 'string'\r\n }\r\n },\r\n methods:{\r\n myGlobalMethod() { console.log(`myGlobalMethod HOWDY!!`) }\r\n },\r\n}\r\n\r\n// export default globals\r\nexport default {\r\n globals: globals\r\n}\r\n\r\n// register global mixin\r\nVue.mixin(globals);\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/globals.js","<template>\r\n <b-row id=\"div-header-bar\" class=\"pt-2\">\r\n <b-col cols=\"12\">\r\n <img src=\"@/art/logo.png\" class=\"fluid\" />\r\n </b-col>\r\n </b-row>\r\n</template>\r\n\r\n<script>\r\n\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nvar data = {\r\n debug: false\r\n };\r\n\r\nexport default {\r\n name: \"HeaderBar\",\r\n data() {\r\n return data;\r\n },\r\n computed: {\r\n isLoggedIn() { \r\n return this.$root.hasToken() \r\n },\r\n token() {\r\n return this.$root.getToken()\r\n }\r\n },\r\n methods: {},\r\n mounted() {}\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n#div-header-bar {\r\n margin: -60px auto 10px auto;\r\n}\r\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/HeaderBar.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-row',{staticClass:\"pt-2\",attrs:{\"id\":\"div-header-bar\"}},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('img',{staticClass:\"fluid\",attrs:{\"src\":require(\"@/art/logo.png\")}})])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-f91d80a8\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/HeaderBar.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-f91d80a8\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./HeaderBar.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HeaderBar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HeaderBar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f91d80a8\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./HeaderBar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-f91d80a8\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/HeaderBar.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container>\r\n <b-row class=\"mt-2 mb-2\">\r\n <b-col>\r\n <hr size=1 style=\"background-color:#CCC;\">\r\n </b-col>\r\n </b-row>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" class=\"text-center\">\r\n <b-link to=\"/home\"><img src=\"@/art/logo.png\" class=\"fluid\" style=\"max-width:180px;\" /></b-link>\r\n </b-col>\r\n </b-row>\r\n <b-row class=\"mb-3\">\r\n <b-col class=\"text-center\">\r\n © {{(new Date).getFullYear()}} Viva Learning LLC\r\n <div>All rights reserved.</div>\r\n </b-col>\r\n </b-row>\r\n <!-- <b-row class=\"mt-3 mb-3\">\r\n <b-col class=\"text-center\">\r\n <b-link to=\"/privacy\">Privacy Policy</b-link>\r\n • \r\n <b-link to=\"/terms\">Terms & Conditions</b-link>\r\n </b-col>\r\n </b-row> -->\r\n <!-- <b-row class=\"mt-3 mb-3\">\r\n <b-col class=\"text-center\">\r\n Version: {{version}}\r\n • \r\n Build: {{build}}\r\n </b-col>\r\n </b-row> -->\r\n </b-container>\r\n</template>\r\n<script>\r\n/* eslint-disable */\r\n// import router from \"../router\"\r\n\r\nvar data = {\r\n debug: false\r\n };\r\n\r\nexport default {\r\n name: \"FooterBar\",\r\n data() {\r\n return data;\r\n },\r\n computed: {\r\n isLoggedIn() { \r\n return this.$root.hasToken() \r\n },\r\n token() {\r\n return this.$root.getToken()\r\n },\r\n version() { return this.$root.getVersion() },\r\n build() { return this.$root.getBuild() }\r\n },\r\n methods: {},\r\n mounted() {}\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.menu-links a {\r\n display: inline-block;\r\n text-decoration: none;\r\n color: #fff;\r\n}\r\n\r\n.nav-item-left {\r\n text-align: left;\r\n}\r\n\r\n.nav-item-right {\r\n text-align: right;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/FooterBar.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',[_c('b-row',{staticClass:\"mt-2 mb-2\"},[_c('b-col',[_c('hr',{staticStyle:{\"background-color\":\"#CCC\"},attrs:{\"size\":\"1\"}})])],1),_vm._v(\" \"),_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\"}},[_c('b-link',{attrs:{\"to\":\"/home\"}},[_c('img',{staticClass:\"fluid\",staticStyle:{\"max-width\":\"180px\"},attrs:{\"src\":require(\"@/art/logo.png\")}})])],1)],1),_vm._v(\" \"),_c('b-row',{staticClass:\"mb-3\"},[_c('b-col',{staticClass:\"text-center\"},[_vm._v(\"\\n © \"+_vm._s((new Date).getFullYear())+\" Viva Learning LLC\\n \"),_c('div',[_vm._v(\"All rights reserved.\")])])],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7deab781\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/FooterBar.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7deab781\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./FooterBar.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./FooterBar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./FooterBar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7deab781\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./FooterBar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-7deab781\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/FooterBar.vue\n// module id = null\n// module chunks = ","<template>\r\n <div id=\"app\">\r\n <header-bar></header-bar>\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <div class=\"div-view pt-2 pb-2\">\r\n <router-view :key=\"$route.fullPath\"></router-view>\r\n </div>\r\n </transition>\r\n <footer-bar></footer-bar>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\n'use strict'\r\n\r\n/* eslint-disable */\r\nimport HeaderBar from \"@/components/HeaderBar\"\r\nimport FooterBar from \"@/components/FooterBar\"\r\n\r\nlet data = {\r\n}\r\n\r\nexport default {\r\n name: \"App\",\r\n data() { return data },\r\n components: {\r\n \"header-bar\": HeaderBar,\r\n \"footer-bar\": FooterBar\r\n },\r\n methods: {\r\n testme() { \r\n // call using this.$parent.testme()\r\n console.log(`APP testme!!`) \r\n },\r\n },\r\n created() { console.log(`APP created`)},\r\n mounted() { console.log(`APP mounted`)}\r\n}\r\n</script>\r\n\r\n<style>\r\nbody {\r\n line-height: 1.5;\r\n}\r\n\r\n#app {\r\n background-color: #f3f4f9; /* light gray background */\r\n font-family: \"Avenir\", Helvetica, Arial, sans-serif;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n /* text-align: center; */\r\n color: #2c3e50;\r\n margin-top: 60px;\r\n}\r\n\r\n.div-view {\r\n background-color: #FFF;\r\n}\r\n\r\n.div-section-header {\r\n /* border: 1px solid #77F; */\r\n background-color: #f3f4f9;\r\n margin: 15px 5px 10px 0;\r\n}\r\n.div-section-body {\r\n padding: 1px 0px 0px 10px;\r\n background-color: #FFF;\r\n border: 1px solid #DDD;\r\n}\r\n\r\n.div-padding {\r\n padding: 10px 5px 10px 5px;\r\n}\r\n\r\n.txt-section-title {\r\n font-weight: bold;\r\n color: black;\r\n font-size: 1.2rem;\r\n}\r\n.txt-section-subtitle {\r\n font-weight: bold;\r\n color: #3471b3;;\r\n font-size: .9rem;\r\n}\r\n\r\n.divPlayerApp {\r\n z-index: 100;\r\n background-color: #FFF;\r\n margin: 5px auto 0 auto;\r\n position: fixed;\r\n /* position: sticky; */\r\n /* left: 20px; */\r\n bottom: 0;\r\n}\r\n\r\n.divPlayerApp2 {\r\n padding: 5px 20px;\r\n border: 2px solid gray;\r\n}\r\n\r\n.page-header h2 {\r\n font-size: 1.1em;\r\n color: white;\r\n background-color: black;\r\n padding: 10px 0px;\r\n text-align: center;\r\n}\r\n\r\n.class-title {\r\n font-size: .9rem; \r\n font-weight: bold;\r\n}\r\n.class-details {\r\n font-size: .71rem;\r\n}\r\n\r\n.txt-class-blurb {\r\n font-size: .95rem;\r\n}\r\n\r\n.pointer {\r\n cursor: pointer;\r\n}\r\n\r\n.red {\r\n color: red;\r\n}\r\n\r\n.reserved { /* subtitle under photo */\r\n font-size: .7rem;\r\n font-weight: bold;\r\n letter-spacing: 1px;\r\n color: white;\r\n background-color: rgba(255, 0, 0, 1.0);;\r\n margin-top: 0;\r\n max-width: 150px;\r\n}\r\n\r\n.waitlist { /* subtitle under photo */\r\n font-size: .7rem;\r\n font-weight: bold;\r\n letter-spacing: 1px;\r\n color: white;\r\n background-color: #3471b3;\r\n margin-top: 0;\r\n max-width: 150px; \r\n}\r\n\r\n/* transitions */\r\n\r\n.fade-enter-to {\r\n opacity: 1;\r\n}\r\n\r\n.fade-enter {\r\n opacity: 0;\r\n}\r\n\r\n.fade-enter-active,\r\n.fade-leave-active {\r\n transition: opacity .4s ease-out;\r\n}\r\n\r\n.fade-leave-to {\r\n opacity: 0;\r\n}\r\n\r\n/* misc */\r\n.col,\r\n.col-1,\r\n.col-2,\r\n.col-3,\r\n.col-4,\r\n.col-5,\r\n.col-6,\r\n.col-7,\r\n.col-8,\r\n.col-9,\r\n.col-10,\r\n.col-11,\r\n.col-12 {\r\n /* border: 1px solid #ccc; */\r\n font-size: auto;\r\n}\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('header-bar'),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',{staticClass:\"div-view pt-2 pb-2\"},[_c('router-view',{key:_vm.$route.fullPath})],1)]),_vm._v(\" \"),_c('footer-bar')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2ceae0d6\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2ceae0d6\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2ceae0d6\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","'use strict'\r\nimport axios from 'axios'\r\n\r\n/* eslint-disable */\r\n\r\n// axios example\r\n// https://github.com/axios/axios\r\n\r\n// service naming conventions\r\n// https://restfulapi.net/resource-naming/\r\n// -- use hyphens, not underscore, for readability\r\n\r\n// axios tutorial\r\n// https://medium.com/codingthesmartway-com-blog/getting-started-with-axios-166cb0035237\r\n// video\r\n// https://www.youtube.com/watch?v=1vbpBDWu1AQ\r\n\r\nexport default {\r\n getBook(bookCode) {\r\n let data = { c: bookCode }\r\n return axios.get('/api/book',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n saveBookResponse(data) {\r\n return axios.post('/api/book-response',data).then(res => res.data).catch(e => console.log(e) )\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/service/service.js","<template>\r\n <b-overlay :show=\"busy\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"10\" lg=\"8\">\r\n\r\n <b-row>\r\n\r\n <b-col cols=\"12\" lg=\"8\" class=\"mb-4\">\r\n <div class=\"div-book-title\">{{book.title}}</div>\r\n <div class=\"div-book-subtitle\">{{book.subtitle}}</div>\r\n <div>\r\n <img :src=\"book.photo\" class=\"w-100\" style=\"max-width:600px;\" />\r\n </div>\r\n <div class=\"mt-2 div-book-blurb\">{{book.blurb}}</div>\r\n </b-col>\r\n\r\n <b-col cols=\"12\" lg=\"4\" class=\"mt-2 mb-2\">\r\n <div class=\"div-form\">\r\n <div v-if=\"!success\" class=\"div-book-formtitle\">{{book.formTitle}}</div>\r\n <b-form v-if=\"!success\" @submit.stop.prevent=\"register\">\r\n\r\n <b-form-group label=\"Position\" label-for=\"position\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"position\" placeholder=\"\" v-model.trim=\"$v.form.jobTitle.$model\" :options=\"jobTitles\" :state=\"validateState('jobTitle')\" aria-describedby=\"support-position-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-position-feedback\">Select position.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- First Name -->\r\n <b-form-group label=\"First Name\" label-for=\"firstname\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"firstname\"\r\n v-model.trim=\"$v.form.firstname.$model\"\r\n type=\"text\"\r\n placeholder=\"Your first name\"\r\n :state=\"validateState('firstname')\"\r\n aria-describedby=\"support-firstname-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-firstname-feedback\">First name is a required field and must be at least 2 characters.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Last Name -->\r\n <b-form-group label=\"Last Name\" label-for=\"lastname\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"lastname\"\r\n v-model.trim=\"$v.form.lastname.$model\"\r\n type=\"text\"\r\n placeholder=\"Your last name\"\r\n :state=\"validateState('lastname')\"\r\n aria-describedby=\"support-lastname-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-lastname-feedback\">Last name is a required field and must be at least 2 characters.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Email -->\r\n <b-form-group label=\"Email\" label-for=\"email\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"envelope\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"email\"\r\n v-model.trim.lazy=\"$v.form.email.$model\"\r\n type=\"email\"\r\n placeholder=\"Your email\"\r\n :state=\"validateState('email')\"\r\n aria-describedby=\"support-email-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback v-if=\"!$v.form.email.required\">Email is required.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.form.email.email\">Enter valid email address.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- Phone -->\r\n <b-form-group label=\"Telephone (optional)\" label-for=\"phone\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"phone\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"phone\"\r\n v-model.trim.lazy=\"$v.form.phone.$model\"\r\n type=\"tel\"\r\n placeholder=\"Your phone number\"\r\n :state=\"validateState('phone')\"\r\n aria-describedby=\"support-phone-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback v-if=\"!$v.form.phone.optionalPhone\">Provide full phone number.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <b-form-checkbox\r\n id=\"optin\"\r\n v-if=\"book.hasOptin\"\r\n v-model=\"$v.form.optin.$model\"\r\n name=\"optin\"\r\n value=\"1\"\r\n unchecked-value=\"0\"\r\n class=\"mb-2\"\r\n >\r\n {{book.optinText || \"Text not available.\"}}\r\n </b-form-checkbox>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <b-alert v-model=\"error\" key=\"error-box\" show variant=\"danger\" dismissible class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n </transition>\r\n\r\n <b-card bg-variant=\"light\" class=\"mb-2\">\r\n {{book.buttonLabel || \"Complete all fields and click button below to get this eBook.\"}}\r\n <div class=\"text-center mt-2 mb-2\">\r\n <b-button type=\"submit\" variant=\"danger\">\r\n <span class=\"text-nowrap\"> {{ book.buttonText || \"Get eBook\" }} </span>\r\n </b-button>\r\n </div>\r\n </b-card>\r\n\r\n </b-form>\r\n\r\n <!-- Success -->\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <b-alert v-model=\"success\" key=\"success-box\" show variant=\"secondary\" class=\"mt-2\">\r\n <div>\r\n <h4>Thanks for submitting the form!</h4>\r\n </div>\r\n <div v-if=\"isPdf\" class=\"div-pdf-link\">\r\n <a :href=\"book.pdf\" target=\"_blank\">{{ book.payloadLinkText || \"View eBook Now\"}}</a>\r\n </div>\r\n <div v-if=\"isYoutube\" class=\"div-pdf-link\">\r\n <a :href=\"getYoutubeUrl\" target=\"_blank\">{{ book.payloadLinkText || \"View Video Now\"}}</a>\r\n </div>\r\n <div v-if=\"isUrl\" class=\"div-pdf-link\">\r\n <a :href=\"book.url\" target=\"_blank\">{{ book.payloadLinkText || \"View URL Now\"}}</a>\r\n </div>\r\n\r\n </b-alert>\r\n </transition>\r\n\r\n </div>\r\n\r\n </b-col>\r\n\r\n </b-row>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\nimport constants from \"@/config/constants\"\r\n\r\nimport { validationMixin } from 'vuelidate'\r\nimport { required, email, minLength, maxLength, between, sameAs, helpers } from 'vuelidate/lib/validators'\r\nimport { T } from \"caniuse-lite/data/browserVersions\"\r\n\r\n// optional phone validator\r\n// https://vuelidate.js.org/#sub-optional-validator\r\nconst optionalPhone = (value) => !helpers.req(value) || value.length >= 10\r\n\r\nexport default {\r\n name: \"Home\",\r\n data() {\r\n return {\r\n debug:false, // logs to console\r\n error: false,\r\n errorMsg: null,\r\n busy: false,\r\n success: false,\r\n bookCode: null,\r\n email: null, // optional: provided via query parameter \"e\"\r\n hash: null, // optional: newsletterEmails.hash value via query parameter \"h\"\r\n studentHash: null,\r\n book: {\r\n bookId: 0,\r\n companyId: 0,\r\n mediaTypeId: 0,\r\n code: null,\r\n hasOptin: false,\r\n title: null,\r\n subtitle: null,\r\n formTitle: null,\r\n photo: null,\r\n blurb: null,\r\n buttonLabel: null,\r\n buttonText: null,\r\n pdf: null,\r\n url: null,\r\n youtubeCode: null,\r\n optinText: null,\r\n payloadLinkText: null,\r\n hash: null,\r\n companyName: null\r\n },\r\n jobTitles: null,\r\n form: {\r\n optin: \"0\",\r\n jobTitle: null,\r\n firstname: null,\r\n lastname: null,\r\n phone: null,\r\n email: null,\r\n bookHash: null,\r\n hash: null\r\n }\r\n }\r\n },\r\n props: {\r\n // Ebook.code\r\n c: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n }\r\n },\r\n mixins: [validationMixin],\r\n validations: {\r\n form: {\r\n optin: {},\r\n jobTitle: {\r\n required\r\n },\r\n firstname: {\r\n required,\r\n minLength: minLength(2)\r\n },\r\n lastname: {\r\n required,\r\n minLength: minLength(2)\r\n },\r\n phone: {\r\n optionalPhone\r\n // required,\r\n // minLength: minLength(10)\r\n },\r\n email: {\r\n required,\r\n email\r\n }\r\n }\r\n },\r\n computed: {\r\n isPdf() {\r\n return this.book.mediaTypeId == constants.VP_MEDIATYPE.PDF\r\n },\r\n isYoutube() {\r\n return this.book.mediaTypeId == constants.VP_MEDIATYPE.YOUTUBE\r\n },\r\n isUrl() {\r\n return this.book.mediaTypeId == constants.VP_MEDIATYPE.URL\r\n },\r\n getYoutubeUrl() {\r\n return utils.getYoutubeUrl(this.book.youtubeCode, true)\r\n }\r\n },\r\n methods: {\r\n validateState(name) {\r\n // console.log(`name: ${name}`)\r\n const { $dirty, $error } = this.$v.form[name]\r\n return $dirty ? !$error : null;\r\n },\r\n register(e) { // user filled out form.\r\n\r\n this.$v.form.$touch()\r\n if (this.$v.form.$anyError) {\r\n console.log(`ERROR!!`)\r\n this.errorMsg = 'Correct errors and resubmit.'\r\n this.error = true\r\n return\r\n }\r\n\r\n this.error = false\r\n this.success = false\r\n this.busy = true\r\n service\r\n .saveBookResponse(this.form)\r\n .then( res => {\r\n if (this.debug) console.log(res.data)\r\n if (res.status) {\r\n\r\n // this.$router.push(`/done/${this.book.code}`)\r\n\r\n console.log(`mediaTypeId: ${this.book.mediaTypeId} VP_MEDIATYPE.PDF: ${constants.VP_MEDIATYPE.PDF}`)\r\n\r\n this.error = false\r\n this.success = true\r\n\r\n // Re-init whole form\r\n this.form.firstname = null\r\n this.form.lastname = null\r\n this.form.phone = null\r\n this.form.email = null\r\n\r\n } else {\r\n this.success = false\r\n this.errorMsg = res.errorMsg || 'System Error from Register Service.'\r\n this.error = true\r\n }\r\n })\r\n .finally( () => {\r\n this.busy = false\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n this.error = true\r\n })\r\n },\r\n registerRepEmpower() { // email or hash provided - short circuit\r\n\r\n this.form.jobTitle = 'Sales Rep'\r\n this.form.firstname = 'Undefined'\r\n this.form.lastname = 'Undefined'\r\n this.form.phone = null\r\n\r\n // Validate form fields if hash not provided.\r\n if (!this.form.hash) {\r\n this.$v.form.$touch()\r\n if (this.$v.form.$anyError) {\r\n console.log(`ERROR!!`)\r\n this.errorMsg = 'Correct errors and resubmit.'\r\n this.error = true\r\n return\r\n }\r\n }\r\n\r\n this.error = false\r\n this.success = false\r\n this.busy = true\r\n service\r\n .saveBookResponse(this.form)\r\n .then( res => {\r\n if (this.debug) console.log(res.data)\r\n if (res.status) {\r\n\r\n // this.$router.push(`/done/${this.book.code}`)\r\n this.error = false\r\n this.success = true\r\n\r\n // Re-init whole form\r\n this.form.firstname = null\r\n this.form.lastname = null\r\n this.form.phone = null\r\n this.form.email = null\r\n\r\n if (this.book.mediaTypeId === constants.VP_MEDIATYPE.URL) {\r\n // proceed directly to url\r\n window.location.href = this.book.url\r\n }\r\n else {\r\n console.log(`mediaTypeId: ${this.book.mediaTypeId} VP_MEDIATYPE.PDF: ${constants.VP_MEDIATYPE.PDF}`)\r\n }\r\n } else {\r\n this.success = false\r\n this.errorMsg = res.errorMsg || 'System Error from Register Service.'\r\n this.error = true\r\n }\r\n })\r\n .finally(() => {\r\n this.busy = false\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n this.error = true\r\n })\r\n }\r\n },\r\n created() {\r\n\r\n this.bookCode = this.c || this.$route.query.c || null\r\n this.email = this.$route.query.e || null // optional email address\r\n this.hash = this.$route.query.h || null // optional newsletterEmails.hash\r\n this.busy = true\r\n\r\n service\r\n .getBook(this.bookCode)\r\n .then(\r\n (res => {\r\n console.log(`back from getBook`);\r\n if (this.debug) console.log(res);\r\n if (res.status) {\r\n this.book = res.book\r\n this.form.bookHash = this.book.hash\r\n this.jobTitles = res.jobTitles\r\n if (this.email || this.hash) { // store response if email or hash provided\r\n if(this.debug) console.log(`Calling registerRepEmpower e: |${this.email}| hash: |${this.hash}|`)\r\n this.form.email = this.email\r\n this.form.hash = this.hash\r\n this.registerRepEmpower()\r\n }\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.busy = false\r\n })\r\n .catch(e => {\r\n this.error = true\r\n console.log(e)\r\n });\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n.div-book-title {\r\n color: #c51749;\r\n font-family: Poppins,Arial,Sans-Serif;\r\n margin: 0 0 15px 0;\r\n font-size: 30px;\r\n font-weight: 700;\r\n font-style: normal;\r\n}\r\n\r\n.div-book-subtitle {\r\n font-family: Poppins,Arial,Sans-Serif;\r\n margin: 0 0 15px 0;\r\n color: #0d78c0;\r\n font-weight: 700;\r\n font-style: normal;\r\n font-size: 26px;\r\n}\r\n\r\n.div-book-blurb {\r\n color: #000;\r\n font-family: \"Arial\",\"Sans-Serif\";\r\n font-size: 16px;\r\n line-height: 1.5;\r\n}\r\n\r\n.div-book-formtitle {\r\n font-size: 30px;\r\n font-weight: 400;\r\n color: #c51749;\r\n font-family: Poppins,Arial,Sans-Serif;\r\n margin: 0 0 15px 0;\r\n font-style: normal;\r\n}\r\n\r\n.div-form {\r\n box-shadow: 0px 0px 50px -16px rgba(0,0,0,0.75);\r\n padding: 20px 22px;\r\n}\r\n\r\n.div-pdf-link a, .div-pdf-link a:visited {\r\n font-weight: bold;\r\n font-size: 1.1rem;\r\n color: #c51749;\r\n}\r\n\r\n.div-pdf-link a:active {\r\n font-weight: bold;\r\n font-size: 1.1rem;\r\n color: #F00;\r\n}\r\n\r\n.txt-home-title-part1 {\r\n font-weight: bold;\r\n color: #939393;\r\n font-size: 2rem;\r\n}\r\n.txt-home-title-part2 {\r\n /* font-weight: bold; */\r\n color: #3471b3;\r\n font-size: 1.9rem;\r\n}\r\n.txt-home-subtitle {\r\n font-weight: bold;\r\n font-size: 1.1rem;\r\n line-height: 130%;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Home.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"10\",\"lg\":\"8\"}},[_c('b-row',[_c('b-col',{staticClass:\"mb-4\",attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[_c('div',{staticClass:\"div-book-title\"},[_vm._v(_vm._s(_vm.book.title))]),_vm._v(\" \"),_c('div',{staticClass:\"div-book-subtitle\"},[_vm._v(_vm._s(_vm.book.subtitle))]),_vm._v(\" \"),_c('div',[_c('img',{staticClass:\"w-100\",staticStyle:{\"max-width\":\"600px\"},attrs:{\"src\":_vm.book.photo}})]),_vm._v(\" \"),_c('div',{staticClass:\"mt-2 div-book-blurb\"},[_vm._v(_vm._s(_vm.book.blurb))])]),_vm._v(\" \"),_c('b-col',{staticClass:\"mt-2 mb-2\",attrs:{\"cols\":\"12\",\"lg\":\"4\"}},[_c('div',{staticClass:\"div-form\"},[(!_vm.success)?_c('div',{staticClass:\"div-book-formtitle\"},[_vm._v(_vm._s(_vm.book.formTitle))]):_vm._e(),_vm._v(\" \"),(!_vm.success)?_c('b-form',{on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.register($event)}}},[_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Position\",\"label-for\":\"position\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"position\",\"placeholder\":\"\",\"options\":_vm.jobTitles,\"state\":_vm.validateState('jobTitle'),\"aria-describedby\":\"support-position-feedback\"},model:{value:(_vm.$v.form.jobTitle.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.jobTitle, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.jobTitle.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-position-feedback\"}},[_vm._v(\"Select position.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"First Name\",\"label-for\":\"firstname\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"firstname\",\"type\":\"text\",\"placeholder\":\"Your first name\",\"state\":_vm.validateState('firstname'),\"aria-describedby\":\"support-firstname-feedback\"},model:{value:(_vm.$v.form.firstname.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.firstname, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.firstname.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-firstname-feedback\"}},[_vm._v(\"First name is a required field and must be at least 2 characters.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Last Name\",\"label-for\":\"lastname\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"lastname\",\"type\":\"text\",\"placeholder\":\"Your last name\",\"state\":_vm.validateState('lastname'),\"aria-describedby\":\"support-lastname-feedback\"},model:{value:(_vm.$v.form.lastname.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.lastname, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.lastname.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-lastname-feedback\"}},[_vm._v(\"Last name is a required field and must be at least 2 characters.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Email\",\"label-for\":\"email\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"envelope\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"email\",\"type\":\"email\",\"placeholder\":\"Your email\",\"state\":_vm.validateState('email'),\"aria-describedby\":\"support-email-feedback\"},model:{value:(_vm.$v.form.email.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.email, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.email.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.email.required)?_c('b-form-invalid-feedback',[_vm._v(\"Email is required.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.form.email.email)?_c('b-form-invalid-feedback',[_vm._v(\"Enter valid email address.\")]):_vm._e()],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Telephone (optional)\",\"label-for\":\"phone\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"phone\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"phone\",\"type\":\"tel\",\"placeholder\":\"Your phone number\",\"state\":_vm.validateState('phone'),\"aria-describedby\":\"support-phone-feedback\"},model:{value:(_vm.$v.form.phone.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.phone, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.phone.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.phone.optionalPhone)?_c('b-form-invalid-feedback',[_vm._v(\"Provide full phone number.\")]):_vm._e()],1)],1),_vm._v(\" \"),(_vm.book.hasOptin)?_c('b-form-checkbox',{staticClass:\"mb-2\",attrs:{\"id\":\"optin\",\"name\":\"optin\",\"value\":\"1\",\"unchecked-value\":\"0\"},model:{value:(_vm.$v.form.optin.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.optin, \"$model\", $$v)},expression:\"$v.form.optin.$model\"}},[_vm._v(\"\\n \"+_vm._s(_vm.book.optinText || \"Text not available.\")+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"},model:{value:(_vm.error),callback:function ($$v) {_vm.error=$$v},expression:\"error\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")])],1),_vm._v(\" \"),_c('b-card',{staticClass:\"mb-2\",attrs:{\"bg-variant\":\"light\"}},[_vm._v(\"\\n \"+_vm._s(_vm.book.buttonLabel || \"Complete all fields and click button below to get this eBook.\")+\"\\n \"),_c('div',{staticClass:\"text-center mt-2 mb-2\"},[_c('b-button',{attrs:{\"type\":\"submit\",\"variant\":\"danger\"}},[_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" \"+_vm._s(_vm.book.buttonText || \"Get eBook\")+\" \")])])],1)])],1):_vm._e(),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('b-alert',{key:\"success-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"secondary\"},model:{value:(_vm.success),callback:function ($$v) {_vm.success=$$v},expression:\"success\"}},[_c('div',[_c('h4',[_vm._v(\"Thanks for submitting the form!\")])]),_vm._v(\" \"),(_vm.isPdf)?_c('div',{staticClass:\"div-pdf-link\"},[_c('a',{attrs:{\"href\":_vm.book.pdf,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.book.payloadLinkText || \"View eBook Now\"))])]):_vm._e(),_vm._v(\" \"),(_vm.isYoutube)?_c('div',{staticClass:\"div-pdf-link\"},[_c('a',{attrs:{\"href\":_vm.getYoutubeUrl,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.book.payloadLinkText || \"View Video Now\"))])]):_vm._e(),_vm._v(\" \"),(_vm.isUrl)?_c('div',{staticClass:\"div-pdf-link\"},[_c('a',{attrs:{\"href\":_vm.book.url,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.book.payloadLinkText || \"View URL Now\"))])]):_vm._e()])],1)],1)])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0a33b8e8\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Home.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0a33b8e8\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Home.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Home.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Home.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0a33b8e8\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Home.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-0a33b8e8\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Home.vue\n// module id = null\n// module chunks = ","<template>\r\n <h1>{{ bookCode }}</h1>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\n\r\nvar data = {\r\n busy: false,\r\n bookCode: null,\r\n book: null\r\n}\r\n\r\nexport default {\r\n name: \"Done\",\r\n data() {\r\n return data\r\n },\r\n props: {\r\n // Ebook.code\r\n c: {\r\n type: String,\r\n required: true, \r\n default: \"\"\r\n } \r\n },\r\n created() {\r\n this.bookCode = this.c || this.$route.query.c || null\r\n this.busy = true\r\n\r\n service\r\n .getBook(this.bookCode)\r\n .then(\r\n (res => {\r\n console.log(`back from getBook`);\r\n if (this.debug) console.log(res);\r\n if (res.status) {\r\n this.book = res.book\r\n this.form.hash = this.book.hash\r\n this.jobTitles = res.jobTitles\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false;\r\n console.log(`finally...`)\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e)\r\n });\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Done.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h1',[_vm._v(_vm._s(_vm.bookCode))])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7495a488\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Done.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7495a488\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Done.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Done.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Done.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7495a488\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Done.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-7495a488\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Done.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container fluid>\r\n <b-row hidden>\r\n <b-col>1</b-col>\r\n <b-col>2</b-col>\r\n <b-col>3</b-col>\r\n <b-col>4</b-col>\r\n <b-col>5</b-col>\r\n <b-col>6</b-col>\r\n <b-col>7</b-col>\r\n <b-col>8</b-col>\r\n <b-col>9</b-col>\r\n <b-col>10</b-col>\r\n <b-col>11</b-col>\r\n <b-col>12</b-col>\r\n </b-row>\r\n\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" sm=\"8\" lg=\"4\">\r\n <div class=\"page-header\">\r\n <h2>{{ msg }}</h2>\r\n </div>Unable to locate this resource.\r\n <div>\r\n <b-link to=\"/login\">Home</b-link>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <div v-if=\"debug\">\r\n <h2 v-once>s: {{ studentHash }}</h2>\r\n <h2 v-once>c: {{ classHash }}</h2>\r\n </div>\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\n\r\nvar data = {\r\n msg: \"Page Not Found\",\r\n show: true,\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n studentHash: \"\",\r\n classHash: \"\",\r\n form: { username: \"\", password: \"\" }\r\n};\r\n\r\n// using props for url parameters\r\n// https://www.youtube.com/watch?v=ESg0k2zdME4\r\n\r\nexport default {\r\n name: \"NotFound\",\r\n data() {\r\n return data;\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n s: {\r\n type: String,\r\n default: \"\"\r\n },\r\n c: {\r\n type: String,\r\n default: \"\"\r\n }\r\n },\r\n methods: { }\r\n};\r\n\r\nfunction handleInit(data) {\r\n console.log(`status: ${data.status}`);\r\n console.log(`studentHash: ${studentHash}`);\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/NotFound.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"hidden\":\"\"}},[_c('b-col',[_vm._v(\"1\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"2\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"3\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"4\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"5\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"6\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"7\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"8\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"9\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"10\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"11\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"12\")])],1),_vm._v(\" \"),_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"sm\":\"8\",\"lg\":\"4\"}},[_c('div',{staticClass:\"page-header\"},[_c('h2',[_vm._v(_vm._s(_vm.msg))])]),_vm._v(\"Unable to locate this resource.\\n \"),_c('div',[_c('b-link',{attrs:{\"to\":\"/login\"}},[_vm._v(\"Home\")])],1)])],1),_vm._v(\" \"),(_vm.debug)?_c('div',[_vm._m(0),_vm._v(\" \"),_vm._m(1)]):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h2',[_vm._v(\"s: \"+_vm._s(_vm.studentHash))])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h2',[_vm._v(\"c: \"+_vm._s(_vm.classHash))])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-d00aa95a\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/NotFound.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-d00aa95a\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./NotFound.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NotFound.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NotFound.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d00aa95a\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./NotFound.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-d00aa95a\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/NotFound.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">No class selected.</b-alert>\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">{{msg}}</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n <div class=\"div-padding\" v-html=\"blurb\"></div>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n msg: \"Terms & Conditions\",\r\n code: \"terms\",\r\n blurb: \"\",\r\n studentHash: '',\r\n};\r\n\r\nexport default {\r\n name: \"Terms\",\r\n data() {\r\n return data;\r\n },\r\n props: {},\r\n computed: {},\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1);\r\n },\r\n nl2br(msg) {\r\n return utils.nl2br(msg)\r\n }\r\n },\r\n created() {\r\n this.studentHash = this.$root.getToken() || '';\r\n if (this.code) {\r\n service\r\n .getBlurb(this.code)\r\n .then(\r\n (res => {\r\n console.log(`back from getBlurb!`);\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n // this.blurb = res.data[0].blurb.replace('\\r\\n','').replace('<br>','')\r\n this.blurb = res.data[0].blurb\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false;\r\n console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e);\r\n });\r\n }\r\n else {\r\n // flag error!\r\n }\r\n // this.error = this.$root.getClassId() === 0;\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Terms.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"No class selected.\")]):_vm._e(),_vm._v(\" \"),(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(_vm._s(_vm.msg))])])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},[_c('div',{staticClass:\"div-padding\",domProps:{\"innerHTML\":_vm._s(_vm.blurb)}})])],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-59c54de1\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Terms.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-59c54de1\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Terms.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Terms.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Terms.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-59c54de1\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Terms.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-59c54de1\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Terms.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">{{msg}}</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n <div class=\"div-padding\" v-html=\"nl2br(blurb)\"></div>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n msg: \"Privacy\",\r\n code: \"privacy\",\r\n blurb: \"\",\r\n studentHash: '',\r\n};\r\n\r\nexport default {\r\n name: \"Privacy\",\r\n data() {\r\n return data;\r\n },\r\n props: {},\r\n computed: {},\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1);\r\n },\r\n nl2br(msg) {\r\n return utils.nl2br(msg)\r\n }\r\n },\r\n created() {\r\n this.studentHash = this.$root.getToken() || '';\r\n if (this.code) {\r\n service\r\n .getBlurb(this.code)\r\n .then(\r\n (res => {\r\n console.log(`back from getBlurb!`);\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = res.data[0].blurb\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false;\r\n console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e);\r\n });\r\n }\r\n else {\r\n // flag error!\r\n }\r\n // this.error = this.$root.getClassId() === 0;\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Privacy.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(_vm._s(_vm.msg))])])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},[_c('div',{staticClass:\"div-padding\",domProps:{\"innerHTML\":_vm._s(_vm.nl2br(_vm.blurb))}})])],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-8794aa46\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Privacy.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-8794aa46\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Privacy.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Privacy.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Privacy.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-8794aa46\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Privacy.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-8794aa46\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Privacy.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\nimport Home from '@/components/Home'\r\nimport Done from '@/components/Done'\r\nimport NotFound from '@/components/NotFound'\r\nimport Terms from '@/components/Terms'\r\nimport Privacy from '@/components/Privacy'\r\n\r\n/* eslint-disable */\r\n\r\nVue.use(VueRouter)\r\n\r\n// Put Login routes last since they have URL paramaters\r\n// Base Url is:\r\n// https://site.com/{studentHash}/{classHash}\r\n// eg\r\n// https://site.com/111-22-33/55-asdf-99\r\n\r\nconst router = new VueRouter({\r\n mode: 'history',\r\n // beforeEach: function(to, from, next) {\r\n // console.log(`router`)\r\n // console.log(this)\r\n // if(to.meta.requiresAuth) {\r\n // if (this.isLoggedIn()) { //authUser.access_token\r\n // next();\r\n // }\r\n // else {\r\n // next({ name: 'login' });\r\n // }\r\n // }\r\n // next();\r\n // },\r\n // isLoggedIn: () => { // not used!!\r\n // console.log(`router - NEVER CALLED?`)\r\n // console.log(`ls: ${localStorage.getItem('id_token')}`)\r\n // return (localStorage.getItem('id_token') !== null);\r\n // },\r\n routes: [\r\n {\r\n path: '/terms',\r\n name: 'Terms',\r\n component: Terms,\r\n props: true,\r\n meta: {\r\n title: 'Terms and Conditions | Viva Learning',\r\n requiresAuth: false\r\n },\r\n },\r\n {\r\n path: '/privacy',\r\n name: 'Privacy',\r\n component: Privacy,\r\n props: true,\r\n meta: {\r\n title: 'Privacy | Viva Learning',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/done/:c',\r\n name: 'Done',\r\n component: Done,\r\n props: true,\r\n meta: {\r\n title: 'Free Offer | Viva Learning',\r\n requiresAuth: false\r\n },\r\n },\r\n { // 2nd to last\r\n path: '/home/:c',\r\n name: 'Home',\r\n component: Home,\r\n props: true,\r\n meta: {\r\n title: 'Free Offer | Viva Learning',\r\n requiresAuth: false\r\n },\r\n alias: '/:c'\r\n },\r\n { // 404 page - last\r\n path: '*',\r\n name: 'NotFound',\r\n component: NotFound,\r\n props: true,\r\n meta: {\r\n title: '404 | Viva Learning',\r\n requiresAuth: false\r\n },\r\n alias: '/404'\r\n }\r\n ]\r\n})\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n console.log(`router to`)\r\n console.log(to)\r\n if(to.meta.requiresAuth) {\r\n console.log(`router1a`)\r\n if (!isLoggedIn()) {\r\n // next({ name: 'Login' });\r\n // this.to('/login')\r\n next( {path: '/login', query: {rurl: to.fullPath}})\r\n }\r\n else {\r\n next();\r\n }\r\n }\r\n // console.log(`router1b`)\r\n next();\r\n\r\n function isLoggedIn() { // internal function\r\n console.log(`isLoggedIn internal...`)\r\n // console.log(`ls: ${localStorage.getItem('id_token')}`)\r\n return (localStorage.getItem('id_token') && true);\r\n }\r\n})\r\n\r\nconst DEFAULT_TITLE = 'DEFAULT VIVA TITLE'\r\n\r\n// https://stackoverflow.com/questions/51639850/how-to-change-page-titles-when-using-vue-router\r\nrouter.afterEach((to, from) => {\r\n // Use next tick to handle router history correctly\r\n // see: https://github.com/vuejs/vue-router/issues/914#issuecomment-384477609\r\n Vue.nextTick(() => {\r\n document.title = to.meta.title || DEFAULT_TITLE;\r\n })\r\n})\r\n\r\nexport default router\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","'use strict'\r\n\r\n/* eslint-disable */\r\n\r\n// serve with hot reload at localhost:8080\r\n//#npm run dev\r\n// build for production with minification\r\n//#npm run build\r\n\r\n// The Vue build version to load with the `import` command\r\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\r\n\r\n// polyfill all `core-js` features:\r\nimport \"core-js\";\r\n// import 'babel-polyfill'\r\n// import '@babel/polyfill'\r\n// import 'mutationobserver-shim'\r\n\r\nimport Vue from 'vue'\r\nimport '@/plugins/bootstrap-vue'\r\nimport '@/plugins/globals'\r\nimport App from './App'\r\nimport router from './router'\r\nimport axios from 'axios'\r\nimport { BIconVolumeDown } from \"bootstrap-vue\";\r\nimport constants from \"@/config/constants\"\r\nimport utils from \"@/utils/utils\"\r\n\r\n// console.log(`defined in webpack.[dev,prod].conf.js?`)\r\nconsole.log(`process.env ${process.env} __VERSION__ ${__VERSION__} __BUILD__ ${__BUILD__}` )\r\n\r\n// import '@/plugins/bootstrap-vue'\r\n\r\n// https://bootstrap-vue.js.org/docs/\r\n// https://developer.okta.com/blog/2018/02/15/build-crud-app-vuejs-node\r\n/// import { BootstrapVue, IconsPlugin } from 'bootstrap-vue'\r\n/// import 'bootstrap/dist/css/bootstrap.css'\r\n/// import 'bootstrap-vue/dist/bootstrap-vue.css'\r\n\r\n/// import { library } from '@fortawesome/fontawesome-svg-core'\r\n/// import { faUserSecret, faKey, faMask, faCat, faAngry, faBell } from '@fortawesome/free-solid-svg-icons'\r\n/// import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'\r\n\r\n/* eslint-disable no-new */\r\n\r\n/// Vue.use(BootstrapVue)\r\n// Optionally install the BootstrapVue icon components plugin\r\n/// Vue.use(IconsPlugin)\r\n\r\nVue.config.productionTip = false\r\n\r\n// https://v1.vuejs.org/guide/custom-filter.html\r\n// replace newline with <br>\r\nVue.filter('nl2br', function (value) {\r\n // here `input` === `this.userInput`\r\n return (value) ? value.replace(/\\r\\n/g,'<br>') : value\r\n})\r\n\r\n// Converts seconds to HH:MM:SS\r\nVue.filter('prettyDate', dt => utils.prettyDate(dt))\r\nVue.filter('prettyDateTime', dt => utils.prettyDateTime(dt))\r\nVue.filter('prettySeconds', seconds => utils.prettySeconds(seconds))\r\nVue.filter('prettyNumber', num => utils.prettyNumber(num))\r\nVue.filter('prettyCEType', typeId => {\r\n // Tried to put this into utils. Turbulence.\r\n // console.log(`prettyCEType typeId ${typeId} home ${typeId == constants.CE_TYPEID.HOME_STUDY} live ${constants.CE_TYPEID.PARTICIPATORY}`)\r\n let aout = 'undefined'\r\n if (typeId == constants.CE_TYPEID.HOMESTUDY) {\r\n aout = 'Self-study'\r\n }\r\n else if (typeId == constants.CE_TYPEID.PARTICIPATORY) {\r\n aout = 'Live, Interactive'\r\n }\r\n return aout\r\n})\r\n\r\n// TBD add to config\r\n// https://github.com/axios/axios\r\n// https://blog.jscrambler.com/build-a-task-management-app-using-vue-js-and-a-node-js-backend/\r\n\r\nconst hostMap = {\r\n defaultRunMode: 'prod',\r\n sites: {\r\n local: {\r\n hosts: ['localhost'],\r\n api: 'http://localhost:3000'\r\n },\r\n test: {\r\n hosts: ['ebook.viva9.us','forms.viva9.us','viva-ebook-test.azurewebsites.net'],\r\n api: 'https://appapi.vivalearning.viva9.us'\r\n // api: 'https://vp-mobile-api-test.azurewebsites.net'\r\n },\r\n prod: {\r\n hosts: ['ebook.vivalearning.com','forms.vivalearning.com','viva-ebook.azurewebsites.net'],\r\n api: 'https://appapi.vivalearning.com'\r\n // api: 'https://vp-mobile-api.azurewebsites.net'\r\n }\r\n}}\r\n\r\nconst RUN_MODE_FORCED = '' // set to local, test, prod to force backend choice\r\nconsole.log(Object.keys(hostMap.sites))\r\nlet runMode = utils.getRunMode(location.host, hostMap, RUN_MODE_FORCED)\r\n\r\n// let runMode = 'prod'\r\nlet baseUrl = utils.getApiBaseUrl(runMode, hostMap)\r\nconsole.log(`runMode: ${runMode} baseUrl: ${baseUrl}`)\r\naxios.defaults.baseURL = baseUrl\r\n// if (runMode == 'local') {\r\n// axios.defaults.baseURL = 'http://localhost:3030'\r\n// }\r\n// else if (runMode == 'test') {\r\n// axios.defaults.baseURL = 'https://vp-mobile-api-test.azurewebsites.net'\r\n// }\r\n// else { // default production\r\n// axios.defaults.baseURL = 'https://vp-mobile-api.azurewebsites.net'\r\n// }\r\n\r\n// https://github.com/FortAwesome/vue-fontawesome\r\n// add the \"solid\" icons to the core library\r\n/// library.add(faUserSecret, faKey, faMask, faCat, faAngry, faBell)\r\n/// Vue.component('font-awesome-icon', FontAwesomeIcon)\r\n\r\n// Global Data\r\nvar data = {\r\n token: '', // student token students.hash\r\n studentId: 0,\r\n studentHash: '',\r\n studentName: '',\r\n studentEmail: '',\r\n bookId: 0,\r\n bookHash: '',\r\n testval: 'TESTVAL',\r\n version: __VERSION__,\r\n build: __BUILD__,\r\n}\r\n\r\nvar vm = new Vue({\r\n el: '#app',\r\n data: data,\r\n router,\r\n components: { App },\r\n template: '<App/>',\r\n methods: {\r\n getToken() {\r\n return this.token || localStorage.getItem('id_token') || ''\r\n },\r\n setToken(token) {\r\n this.token = token\r\n localStorage.setItem('id_token', token) // used by router(temporarily) and to provide persistence\r\n },\r\n getVersion() { return this.version },\r\n getBuild() { return this.build },\r\n getStudentHash () { return this.studentHash },\r\n setStudentHash (hash) { this.studentHash = hash }\r\n }\r\n})\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","module.exports = \"data:image/png;base64,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\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/logo.png\n// module id = li2B\n// module chunks = 1","/* eslint-disable */\r\n\r\n'use strict'\r\n\r\n/* Escape newlines with <br> - also a filter*/\r\nfunction nl2br(val) {\r\n let aout = (val) ? val.replace(/\\r\\n/gi, '<br>') : ''\r\n return aout;\r\n}\r\n\r\n// Date object\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse\r\n\r\n// The \"pretty\" functions are used to format date values for display.\r\n// Returns blank if invalid data. Coding originally checked for\r\n// specific data validity, but seemed quicker to wrap in try blocks\r\n// and bail on any errors.\r\nfunction prettyDateTime(dateStr) {\r\n let aout = ''\r\n try {\r\n let d = new Date(dateStr)\r\n aout = `${prettyDate(d)} at ${prettyTime(d)} (local)`\r\n }\r\n catch(e) {}\r\n return aout\r\n}\r\n\r\nfunction prettyDate(arg) {\r\n let aout = ''\r\n try {\r\n let d = (isString(arg)) ? new Date(arg) : arg\r\n aout = `${getDayShort(d.getDay())} ${getMonthShort(d.getMonth())} ${d.getDate()}, ${d.getFullYear()}`\r\n } catch(e) {}\r\n return aout\r\n}\r\n\r\nfunction prettyTime(arg) {\r\n let aout = ''\r\n try {\r\n let d = (isString(arg)) ? new Date(arg) : arg\r\n let hr = parseInt(d.getHours())\r\n let mn = ('0'+d.getMinutes()).slice(-2)\r\n aout = `${(hr > 12) ? hr-12: hr}:${mn} ${(hr >= 12) ? 'PM' : 'AM'}`\r\n }\r\n catch(e) {}\r\n return aout\r\n}\r\n\r\nfunction getDayShort(day) {\r\n let days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']\r\n return days[day]\r\n}\r\n\r\nfunction getMonthShort(month) {\r\n let months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']\r\n return months[month]\r\n}\r\n\r\nfunction isString(arg) {\r\n return (typeof arg === 'string')\r\n}\r\n\r\nconst SECONDS_IN_MINUTE = 60\r\nconst MINUTES_IN_HOUR = 60\r\nconst SECONDS_IN_HOUR = 3600 // 3600 seconds per hour\r\nconst SECONDS_IN_DAY = 24*SECONDS_IN_HOUR\r\n\r\nfunction prettySeconds(durationSeconds) {\r\n // console.log('prettySeconds')\r\n let aout = \"00:00:00\"\r\n try {\r\n let secs = parseInt(durationSeconds)\r\n let hours = Math.floor(secs/SECONDS_IN_HOUR) \r\n let minutes = Math.floor( (secs % SECONDS_IN_HOUR)/MINUTES_IN_HOUR )\r\n let seconds = (secs % SECONDS_IN_HOUR) % SECONDS_IN_MINUTE\r\n aout = (hours > 0) \r\n ? `${twoDigits(hours)}:${twoDigits(minutes)}:${twoDigits(seconds)}`\r\n : `${twoDigits(minutes)}:${twoDigits(seconds)}`\r\n }\r\n catch (e) { console.log(e) }\r\n return aout\r\n}\r\n\r\n/* Converts 1234 to 1,234 in locale-sensitive way. */\r\nfunction prettyNumber(num) {\r\n let aout = 0\r\n try {\r\n aout = num.toLocaleString()\r\n }\r\n catch (e) { console.log(e) }\r\n return aout\r\n}\r\n\r\nfunction prettyCountdown(deltaSeconds) {\r\n let aout = `ERROR: ${deltaSeconds}`\r\n try {\r\n let secs = parseInt(deltaSeconds)\r\n if (secs <= 0) {\r\n aout = 'Webinar in Progress...'\r\n }\r\n else {\r\n // console.log(`prettyCountdown secs ${secs}`)\r\n let days = Math.floor(secs/SECONDS_IN_DAY) // 24*3600 seconds in day\r\n let hours = Math.floor((secs-(days*SECONDS_IN_DAY))/SECONDS_IN_HOUR) // 3600 seconds per hour\r\n let minutes = Math.floor( (secs % SECONDS_IN_HOUR)/SECONDS_IN_MINUTE )\r\n let seconds = (secs % SECONDS_IN_HOUR) % SECONDS_IN_MINUTE\r\n aout = ''\r\n if (days > 0) {\r\n aout = aout.concat(`${days} Day${plural(days,'s')}, `)\r\n }\r\n if (hours > 0) {\r\n aout = aout.concat(`${hours} Hour${plural(hours,'s')}`)\r\n }\r\n if (aout !== '' || minutes > 0) {\r\n if (hours > 0) aout = aout.concat(' and ')\r\n aout = aout.concat(`${minutes} Minute${plural(minutes,'s')}`)\r\n }\r\n // if (aout === '' && seconds > 0) {\r\n if (days === 0 && hours === 0 && minutes < 5 && seconds > 0) {\r\n if (minutes > 0) aout = aout.concat(' and ')\r\n aout = aout.concat(`${seconds} Second${plural(seconds,'s')}`)\r\n }\r\n if (aout === '') {\r\n aout = 'Webinar in Progress...'\r\n }\r\n }\r\n }\r\n catch (e) { console.log(e) }\r\n // console.log(`prettyCountdown: ${aout}`)\r\n return aout\r\n}\r\n\r\n// Given integer val returns 2 digit string. Useful for HH:MM:SS\r\nfunction twoDigits(val) {\r\n return ('00'+val.toString()).slice(-2)\r\n}\r\n\r\n// Returns suffix if integer val is not equal to 1.\r\nfunction plural(val, suffix) {\r\n return (val === 1) ? '' : suffix\r\n}\r\n\r\n// Extracts youtube code from these templates:\r\n// https://www.youtube.com/watch?v=SR4Eec9F89M&list=RDmg7netw1JuM\r\n// https://youtu.be/SR4Eec9F89M?list=RDmg7netw1JuM\r\n// Extracts code: SR4Eec9F89M\r\nfunction getYoutubeCode( url ) {\r\n var arr = url.match(/(?:https?:\\/{2})?(?:w{3}\\.)?youtu(?:be)?\\.(?:com|be)(?:\\/watch\\?v=|\\/)([^\\s&]+)/);\r\n var code = arr[1];\r\n // console.log( `getYoutubeCode: ${code}`);\r\n return code;\r\n}\r\n\r\n// Builds YouTube Url from code.\r\n// Suitable for b-embed\r\nfunction getYoutubeUrl( code, autoplay ) {\r\n var url = `https://www.youtube.com/embed/${code}?rel=0`\r\n url += (autoplay) ? '&autoplay=1' : ''\r\n // console.log( `getYoutubeUrl: ${url}`);\r\n return url;\r\n}\r\n\r\n/* Parses val, returns defaultVal if val cannot be parsed. */\r\nfunction safeParseInt(val, defaultVal) {\r\n const parsed = parseInt(val)\r\n let aout = ((defaultVal) ? defaultVal : 0)\r\n if (!isNaN(parsed)) { aout = parsed }\r\n return aout;\r\n}\r\n\r\n// Processes a search string for safety.\r\nconst MAX_SEARCH_LENGTH = 30\r\nfunction safeSearch(q) {\r\n let aout = ''\r\n if (isString(q) && q.length > 0) {\r\n q = q.replace(\"'\",\"\") \r\n if (q.length > 2) {\r\n aout = q.slice(0,MAX_SEARCH_LENGTH)\r\n }\r\n else {\r\n // safe 2 letter words.\r\n let arr = ['3m']\r\n if (arr.includes(q.toLowerCase())) {\r\n aout = q\r\n }\r\n }\r\n }\r\n return aout\r\n}\r\n\r\n// returns local, test, prod\r\n// forced optional setting overrides hostVal (created using location.host)\r\n// hostVal may have port number; eg domain:port, localhost:8080\r\nfunction getRunMode(hostVal, hostMap, forcedMode) {\r\n let aout = hostMap.defaultRunMode\r\n if (forcedMode && forcedMode.length !== 0) {\r\n aout = forcedMode //\r\n }\r\n else if (hostVal && hostVal.length !== 0) {\r\n let host = hostVal.split(':')[0].toLowerCase()\r\n // Wanted to use Object.keys(hostMap.sites) but got error.\r\n // In array put prod first for faster production search.\r\n for(let siteName of ['prod','test','local'] ) {\r\n if (hostMap.sites[siteName].hosts.includes(host)) {\r\n aout = siteName\r\n break;\r\n }\r\n }\r\n }\r\n return aout\r\n}\r\n\r\n// uses runMode to extract baseUrl from hostMap\r\nfunction getApiBaseUrl(runModeArg, hostMap) {\r\n let runMode = runModeArg || hostMap.defaultRunMode\r\n let baseUrl = hostMap.sites[runMode].api\r\n return baseUrl\r\n}\r\n\r\n/* Define module */\r\nlet utils = {\r\n nl2br: nl2br,\r\n prettyDateTime: prettyDateTime,\r\n prettyDate: prettyDate,\r\n prettyTime: prettyTime,\r\n prettySeconds: prettySeconds,\r\n prettyNumber: prettyNumber,\r\n prettyCountdown: prettyCountdown,\r\n isString: isString,\r\n getYoutubeCode: getYoutubeCode,\r\n getYoutubeUrl: getYoutubeUrl,\r\n safeParseInt: safeParseInt,\r\n safeSearch: safeSearch,\r\n getRunMode: getRunMode,\r\n getApiBaseUrl: getApiBaseUrl \r\n}\r\n\r\nmodule.exports = utils\n\n\n// WEBPACK FOOTER //\n// ./src/utils/utils.js","'use strict'\r\n/* eslint-disable */\r\n\r\nconst NUM_EVAL_QUESTIONS = 10\t// count of required questions.\r\nconst EXAM_MIN_SCORE_TO_PASS = 80 // min score to pass exam\r\n\r\n// Constants used in logEvent()\r\nconst VIVA_EVENT_LOGIN = 1\r\nconst VIVA_EVENT_LOGOUT = 2\r\nconst VIVA_EVENT_VIEW_CLASS = 3\r\nconst VIVA_EVENT_EVALUATION = 4\r\nconst VIVA_EVENT_FAIL_EXAM = 5\r\nconst VIVA_EVENT_PASS_EXAM = 6\r\nconst VIVA_EVENT_VIEW_MOVIE = 19\r\nconst VIVA_EVENT_VIEW_PODCAST = 20\r\n\r\nconst VPAD_LOGIN = 1\r\nconst VPAD_TOP = 2\r\nconst VPAD_SLIDER = 3\t\t// Old home page slides\r\nconst VPAD_HOMESLIDE = 4 \t// New home page slider.\r\nconst VPAD_RIGHT = 5\r\nconst VPAD_LEFT = 6\t\t\t// Left side banner ad.\r\nconst VPAD_CONTENT_TOP = 7\r\nconst VPAD_CONTENT_LIST1 = 8\t// Pos 1 of 4\r\nconst VPAD_CAT_TOP = 9\r\nconst VPAD_CAT_LIST1 = 10\t\t// see 2,3,4 below\r\nconst VPAD_TRENDING = 11\r\nconst VPAD_CE = 12\t\t\t\t// Uses classes.isVpFeatured\r\nconst VPAD_TIP = 13\t\t\t // Uses tips.isVpFeatured\r\nconst VPAD_PRODUCT = 14\t\t\t// Uses classes.isVpFeatured (tutorials)\r\nconst VPAD_PROMOTION = 15\r\nconst VPAD_NEW_PRODUCT = 16\t\t// Used for uploading photo.\r\nconst VPAD_PRESS = 17\r\nconst VPAD_ACTIVITY = 18\t\t// Ad on user activity pages.\r\nconst VPAD_CAT_ALT_TOP = 19\t\t// Alternate small banner ad on classroom page.\r\nconst VPAD_CAT_ALT_LIST = 20\t// Alternate small banner ad on classroom page.\r\nconst VPAD_CESPOTLIGHT = 21\t\t// Left side on home page. Uses classes.isCeSpotlight\r\nconst VPAD_EXAMBLURBLINK = 22\t// Click tracking for exam blurb links\r\nconst VPAD_PODCAST_PROMOTION = 23\t// Click tracking for Podcast Special Offers\r\nconst VPAD_EXAM = 24\t\t\t// Click tracking for exam ads\r\nconst VPAD_EXAMEMAIL = 25\t\t// Tracking for exam emails.\r\nconst VPAD_LEFTCONTENT = 26\t\t// Tracking for left side content\r\nconst VPAD_CONTENT_LIST2 = 27\t// Pos 2 of 4\r\nconst VPAD_CONTENT_LIST3 = 28\t// Pos 3 of 4\r\nconst VPAD_CONTENT_LIST4 = 29\t// Pos 4 of 4\r\nconst VPAD_CAT_LIST2 = 30\t\t// see 1 above\r\nconst VPAD_CAT_LIST3 = 31\r\nconst VPAD_CAT_LIST4 = 32\r\n\r\nconst constants = {\r\n CLASS_TYPE: {\r\n UNDEFINED: 0,\r\n PDF: 10,\r\n LIVE: 20,\r\n ARCHIVE: 30,\r\n PRODUCED: 40,\t\t // regular flash class and produced live classes\r\n PRODUCED_ARCHIVE: 50,\t// produced classes from live classes (old style)\r\n MOVIE: 55,\t\t // WMV, MP3 or MOV\r\n LUNCHLEARN: 60,\r\n PRODUCED_PLAYBACK: 70,\t// playback classes from live classes (kerman style)\r\n SLIDESHOW: 80,\t\t\t// TBD\r\n SEMINAR: 90\t\t\t // Edge Endo Seminar - live CE\r\n },\r\n CE_TYPEID: {\r\n NONCE: 0, // Placeholder for NON-CE tutorials\r\n HOMESTUDY: 1, // Self-Study\r\n PARTICIPATORY: 2 // Live Interactive\r\n },\r\n VP_AD_EVENTID: {\r\n VIEW: 1, // View of VP Ad\r\n CLICK: 2 // Click of VP Ad\r\n },\r\n VP_MEDIATYPE: {\r\n NONE: 0,\r\n PDF: 1,\r\n YOUTUBE: 2,\r\n URL: 3\r\n }\r\n}\r\n\r\nmodule.exports = constants\n\n\n// WEBPACK FOOTER //\n// ./src/config/constants.js"],"sourceRoot":""}