/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/"; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 2); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ module.exports = __webpack_amd_options__; /* WEBPACK VAR INJECTION */}.call(exports, {})) /***/ }), /* 1 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; //download.js v4.2, by dandavis; 2008-2016. [CCBY2] see http://danml.com/download.html for tests/usage // v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime // v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs // v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling. // v4 adds AMD/UMD, commonJS, and plain browser support // v4.1 adds url download capability via solo URL argument (same domain/CORS only) // v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors // https://github.com/rndme/download (function (root, factory) { if (true) { // AMD. Register as an anonymous module. !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object') { // Node. Does not work with strict CommonJS, but // only CommonJS-like environments that support module.exports, // like Node. module.exports = factory(); } else { // Browser globals (root is window) root.download = factory(); } })(undefined, function () { return function download(data, strFileName, strMimeType) { var self = window, // this script is only for browsers anyway... defaultMime = "application/octet-stream", // this default mime also triggers iframe downloads mimeType = strMimeType || defaultMime, payload = data, url = !strFileName && !strMimeType && payload, anchor = document.createElement("a"), toString = function toString(a) { return String(a); }, myBlob = self.Blob || self.MozBlob || self.WebKitBlob || toString, fileName = strFileName || "download", blob, reader; myBlob = myBlob.call ? myBlob.bind(self) : Blob; if (String(this) === "true") { //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback payload = [payload, mimeType]; mimeType = payload[0]; payload = payload[1]; } if (url && url.length < 2048) { // if no filename and no mime, assume a url was passed as the only argument fileName = url.split("/").pop().split("?")[0]; anchor.href = url; // assign href prop to temp anchor if (anchor.href.indexOf(url) !== -1) { // if the browser determines that it's a potentially valid url path: var ajax = new XMLHttpRequest(); ajax.open("GET", url, true); ajax.responseType = 'blob'; ajax.onload = function (e) { download(e.target.response, fileName, defaultMime); }; setTimeout(function () { ajax.send(); }, 0); // allows setting custom ajax headers using the return: return ajax; } // end if valid url? } // end if url? //go ahead and download dataURLs right away if (/^data\:[\w+\-]+\/[\w+\-]+[,;]/.test(payload)) { if (payload.length > 1024 * 1024 * 1.999 && myBlob !== toString) { payload = dataUrlToBlob(payload); mimeType = payload.type || defaultMime; } else { return navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs: navigator.msSaveBlob(dataUrlToBlob(payload), fileName) : saver(payload); // everyone else can save dataURLs un-processed } } //end if dataURL passed? blob = payload instanceof myBlob ? payload : new myBlob([payload], { type: mimeType }); function dataUrlToBlob(strUrl) { var parts = strUrl.split(/[:;,]/), type = parts[1], decoder = parts[2] == "base64" ? atob : decodeURIComponent, binData = decoder(parts.pop()), mx = binData.length, i = 0, uiArr = new Uint8Array(mx); for (i; i < mx; ++i) { uiArr[i] = binData.charCodeAt(i); }return new myBlob([uiArr], { type: type }); } function saver(url, winMode) { if ('download' in anchor) { //html5 A[download] anchor.href = url; anchor.setAttribute("download", fileName); anchor.className = "download-js-link"; anchor.innerHTML = "downloading..."; anchor.style.display = "none"; document.body.appendChild(anchor); setTimeout(function () { anchor.click(); document.body.removeChild(anchor); if (winMode === true) { setTimeout(function () { self.URL.revokeObjectURL(anchor.href); }, 250); } }, 66); return true; } // handle non-a[download] safari as best we can: if (/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent)) { url = url.replace(/^data:([\w\/\-\+]+)/, defaultMime); if (!window.open(url)) { // popup blocked, offer direct download: if (confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")) { location.href = url; } } return true; } //do iframe dataURL download (old ch+FF): var f = document.createElement("iframe"); document.body.appendChild(f); if (!winMode) { // force a mime that will download: url = "data:" + url.replace(/^data:([\w\/\-\+]+)/, defaultMime); } f.src = url; setTimeout(function () { document.body.removeChild(f); }, 333); } //end saver if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL) return navigator.msSaveBlob(blob, fileName); } if (self.URL) { // simple fast and modern way using Blob and URL: saver(self.URL.createObjectURL(blob), true); } else { // handle non-Blob()+non-URL browsers: if (typeof blob === "string" || blob.constructor === toString) { try { return saver("data:" + mimeType + ";base64," + self.btoa(blob)); } catch (y) { return saver("data:" + mimeType + "," + encodeURIComponent(blob)); } } // Blob but not URL support: reader = new FileReader(); reader.onload = function (e) { saver(this.result); }; reader.readAsDataURL(blob); } return true; }; /* end download() */ }); /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(3); /***/ }), /* 3 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _smoothscrollPolyfill = __webpack_require__(4); var _smoothscrollPolyfill2 = _interopRequireDefault(_smoothscrollPolyfill); var _modalLauncher = __webpack_require__(5); var _modalLauncher2 = _interopRequireDefault(_modalLauncher); var _assetLauncher = __webpack_require__(6); var _assetLauncher2 = _interopRequireDefault(_assetLauncher); var _parallax = __webpack_require__(7); var _parallax2 = _interopRequireDefault(_parallax); var _animations = __webpack_require__(8); var _animations2 = _interopRequireDefault(_animations); var _scrollreveal = __webpack_require__(9); var _scrollreveal2 = _interopRequireDefault(_scrollreveal); var _fixedNav = __webpack_require__(10); var _fixedNav2 = _interopRequireDefault(_fixedNav); var _downloadLauncher = __webpack_require__(11); var _downloadLauncher2 = _interopRequireDefault(_downloadLauncher); var _downloadModalLauncher = __webpack_require__(12); var _downloadModalLauncher2 = _interopRequireDefault(_downloadModalLauncher); var _productLauncher = __webpack_require__(14); var _productLauncher2 = _interopRequireDefault(_productLauncher); var _themeGraphTabs = __webpack_require__(15); var _themeGraphTabs2 = _interopRequireDefault(_themeGraphTabs); var _matrices = __webpack_require__(16); var _matrices2 = _interopRequireDefault(_matrices); var _track = __webpack_require__(17); var _track2 = _interopRequireDefault(_track); var _accessibility = __webpack_require__(18); var _accessibility2 = _interopRequireDefault(_accessibility); var _accessibility_screen = __webpack_require__(19); var _accessibility_screen2 = _interopRequireDefault(_accessibility_screen); var _loadMoreProducts = __webpack_require__(20); var _loadMoreProducts2 = _interopRequireDefault(_loadMoreProducts); var _loadMoreThemes = __webpack_require__(21); var _loadMoreThemes2 = _interopRequireDefault(_loadMoreThemes); var _loadMoreAssetClasses = __webpack_require__(22); var _loadMoreAssetClasses2 = _interopRequireDefault(_loadMoreAssetClasses); var _allVideoModal = __webpack_require__(23); var _allVideoModal2 = _interopRequireDefault(_allVideoModal); var _oneYearOutlook = __webpack_require__(26); var _oneYearOutlook2 = _interopRequireDefault(_oneYearOutlook); var _oneYearLoadMoreAssetClasses = __webpack_require__(27); var _oneYearLoadMoreAssetClasses2 = _interopRequireDefault(_oneYearLoadMoreAssetClasses); var _oneYearLoadChart = __webpack_require__(28); var _oneYearLoadChart2 = _interopRequireDefault(_oneYearLoadChart); var _productStickyNav = __webpack_require__(29); var _productStickyNav2 = _interopRequireDefault(_productStickyNav); var _products = __webpack_require__(30); var _products2 = _interopRequireDefault(_products); var _hoverTooltip = __webpack_require__(31); var _hoverTooltip2 = _interopRequireDefault(_hoverTooltip); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _smoothscrollPolyfill2.default.polyfill(); // Import all needed classes // Polyfill for smoothscroll on IE // import FormValidation from './formValidation'; /** NOT USED AT THE MOMENT. WAS CREATED TO SET VIDEO USING JS SO THAT WE COULD CONTROL THE PREVIEW GATING. - **/ //import HomepageVideo from './homepageVideo'; //Product 2018 Page var accessibility, screen_acc; // Instantiate classes on DOM ready document.addEventListener('DOMContentLoaded', function () { window.Velocity = __webpack_require__(32); window.sr = new _scrollreveal2.default({ // Set new defaults origin: 'bottom', distance: '50px', duration: 500, scale: 1, reset: false, easing: 'ease-out' }); var modalLauncher = new _modalLauncher2.default(); var assetLauncher = new _assetLauncher2.default(); var parallax = new _parallax2.default(); var fixedNav = new _fixedNav2.default(); var downloadLauncher = new _downloadLauncher2.default(); var downloadModalLauncher = new _downloadModalLauncher2.default(); var productLauncher = new _productLauncher2.default(); // const formValidation = new FormValidation(); var themeGraphTabs = new _themeGraphTabs2.default(); var matrices = new _matrices2.default(); var animations = new _animations2.default(); var loadMoreThemes = new _loadMoreThemes2.default(); var loadMoreProducts = new _loadMoreProducts2.default(); var loadMoreAssetClasses = new _loadMoreAssetClasses2.default(); var oneYearOutlook = new _oneYearOutlook2.default(); var oneYearLoadMoreAssetClasses = new _oneYearLoadMoreAssetClasses2.default(); var oneYearLoadChart = new _oneYearLoadChart2.default(); //const homepageVideo = new HomepageVideo(); window.productsPage = new _products2.default(); window.track = new _track2.default(); window.accessibility = new _accessibility2.default(); window.screen_acc = new _accessibility_screen2.default(); var productStickyNav = new _productStickyNav2.default(); /* sticky nav depends on track and productsPage */ var allVideoModal = new _allVideoModal2.default(); var hoverTooltip = new _hoverTooltip2.default(); // Preload full download button hover icon var paperIcon = new Image(); paperIcon.src = '/images/icons/paper-white.png'; }); if (document.getElementById('chart-alternatives')) { // Animation waypoints for graphs try { // Comment out because this Chart is no longer an amChart, is now static SVG // new Waypoint({ // element: document.getElementById('chart-real-assets'), // handler: function(direction) { // document.getElementById('chart-real-assets').classList.add('animating'); // }, // offset: '75%' // }); new Waypoint({ element: document.getElementById('chart-alternatives'), handler: function handler(direction) { document.getElementById('chart-alternatives').classList.add('animating'); }, offset: '75%' }); } catch (e) { console.log('error is ' + e); } } /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { /* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */ (function () { 'use strict'; // polyfill function polyfill() { // aliases var w = window; var d = document; // return if scroll behavior is supported and polyfill is not forced if ( 'scrollBehavior' in d.documentElement.style && w.__forceSmoothScrollPolyfill__ !== true ) { return; } // globals var Element = w.HTMLElement || w.Element; var SCROLL_TIME = 468; // object gathering original scroll methods var original = { scroll: w.scroll || w.scrollTo, scrollBy: w.scrollBy, elementScroll: Element.prototype.scroll || scrollElement, scrollIntoView: Element.prototype.scrollIntoView }; // define timing method var now = w.performance && w.performance.now ? w.performance.now.bind(w.performance) : Date.now; /** * indicates if a the current browser is made by Microsoft * @method isMicrosoftBrowser * @param {String} userAgent * @returns {Boolean} */ function isMicrosoftBrowser(userAgent) { var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/']; return new RegExp(userAgentPatterns.join('|')).test(userAgent); } /* * IE has rounding bug rounding down clientHeight and clientWidth and * rounding up scrollHeight and scrollWidth causing false positives * on hasScrollableSpace */ var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0; /** * changes scroll position inside an element * @method scrollElement * @param {Number} x * @param {Number} y * @returns {undefined} */ function scrollElement(x, y) { this.scrollLeft = x; this.scrollTop = y; } /** * returns result of applying ease math function to a number * @method ease * @param {Number} k * @returns {Number} */ function ease(k) { return 0.5 * (1 - Math.cos(Math.PI * k)); } /** * indicates if a smooth behavior should be applied * @method shouldBailOut * @param {Number|Object} firstArg * @returns {Boolean} */ function shouldBailOut(firstArg) { if ( firstArg === null || typeof firstArg !== 'object' || firstArg.behavior === undefined || firstArg.behavior === 'auto' || firstArg.behavior === 'instant' ) { // first argument is not an object/null // or behavior is auto, instant or undefined return true; } if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') { // first argument is an object and behavior is smooth return false; } // throw error when behavior is not supported throw new TypeError( 'behavior member of ScrollOptions ' + firstArg.behavior + ' is not a valid value for enumeration ScrollBehavior.' ); } /** * indicates if an element has scrollable space in the provided axis * @method hasScrollableSpace * @param {Node} el * @param {String} axis * @returns {Boolean} */ function hasScrollableSpace(el, axis) { if (axis === 'Y') { return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight; } if (axis === 'X') { return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth; } } /** * indicates if an element has a scrollable overflow property in the axis * @method canOverflow * @param {Node} el * @param {String} axis * @returns {Boolean} */ function canOverflow(el, axis) { var overflowValue = w.getComputedStyle(el, null)['overflow' + axis]; return overflowValue === 'auto' || overflowValue === 'scroll'; } /** * indicates if an element can be scrolled in either axis * @method isScrollable * @param {Node} el * @param {String} axis * @returns {Boolean} */ function isScrollable(el) { var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y'); var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X'); return isScrollableY || isScrollableX; } /** * finds scrollable parent of an element * @method findScrollableParent * @param {Node} el * @returns {Node} el */ function findScrollableParent(el) { while (el !== d.body && isScrollable(el) === false) { el = el.parentNode || el.host; } return el; } /** * self invoked function that, given a context, steps through scrolling * @method step * @param {Object} context * @returns {undefined} */ function step(context) { var time = now(); var value; var currentX; var currentY; var elapsed = (time - context.startTime) / SCROLL_TIME; // avoid elapsed times higher than one elapsed = elapsed > 1 ? 1 : elapsed; // apply easing to elapsed time value = ease(elapsed); currentX = context.startX + (context.x - context.startX) * value; currentY = context.startY + (context.y - context.startY) * value; context.method.call(context.scrollable, currentX, currentY); // scroll more if we have not reached our destination if (currentX !== context.x || currentY !== context.y) { w.requestAnimationFrame(step.bind(w, context)); } } /** * scrolls window or element with a smooth behavior * @method smoothScroll * @param {Object|Node} el * @param {Number} x * @param {Number} y * @returns {undefined} */ function smoothScroll(el, x, y) { var scrollable; var startX; var startY; var method; var startTime = now(); // define scroll context if (el === d.body) { scrollable = w; startX = w.scrollX || w.pageXOffset; startY = w.scrollY || w.pageYOffset; method = original.scroll; } else { scrollable = el; startX = el.scrollLeft; startY = el.scrollTop; method = scrollElement; } // scroll looping over a frame step({ scrollable: scrollable, method: method, startTime: startTime, startX: startX, startY: startY, x: x, y: y }); } // ORIGINAL METHODS OVERRIDES // w.scroll and w.scrollTo w.scroll = w.scrollTo = function() { // avoid action when no arguments are passed if (arguments[0] === undefined) { return; } // avoid smooth behavior if not required if (shouldBailOut(arguments[0]) === true) { original.scroll.call( w, arguments[0].left !== undefined ? arguments[0].left : typeof arguments[0] !== 'object' ? arguments[0] : w.scrollX || w.pageXOffset, // use top prop, second argument if present or fallback to scrollY arguments[0].top !== undefined ? arguments[0].top : arguments[1] !== undefined ? arguments[1] : w.scrollY || w.pageYOffset ); return; } // LET THE SMOOTHNESS BEGIN! smoothScroll.call( w, d.body, arguments[0].left !== undefined ? ~~arguments[0].left : w.scrollX || w.pageXOffset, arguments[0].top !== undefined ? ~~arguments[0].top : w.scrollY || w.pageYOffset ); }; // w.scrollBy w.scrollBy = function() { // avoid action when no arguments are passed if (arguments[0] === undefined) { return; } // avoid smooth behavior if not required if (shouldBailOut(arguments[0])) { original.scrollBy.call( w, arguments[0].left !== undefined ? arguments[0].left : typeof arguments[0] !== 'object' ? arguments[0] : 0, arguments[0].top !== undefined ? arguments[0].top : arguments[1] !== undefined ? arguments[1] : 0 ); return; } // LET THE SMOOTHNESS BEGIN! smoothScroll.call( w, d.body, ~~arguments[0].left + (w.scrollX || w.pageXOffset), ~~arguments[0].top + (w.scrollY || w.pageYOffset) ); }; // Element.prototype.scroll and Element.prototype.scrollTo Element.prototype.scroll = Element.prototype.scrollTo = function() { // avoid action when no arguments are passed if (arguments[0] === undefined) { return; } // avoid smooth behavior if not required if (shouldBailOut(arguments[0]) === true) { // if one number is passed, throw error to match Firefox implementation if (typeof arguments[0] === 'number' && arguments[1] === undefined) { throw new SyntaxError('Value could not be converted'); } original.elementScroll.call( this, // use left prop, first number argument or fallback to scrollLeft arguments[0].left !== undefined ? ~~arguments[0].left : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft, // use top prop, second argument or fallback to scrollTop arguments[0].top !== undefined ? ~~arguments[0].top : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop ); return; } var left = arguments[0].left; var top = arguments[0].top; // LET THE SMOOTHNESS BEGIN! smoothScroll.call( this, this, typeof left === 'undefined' ? this.scrollLeft : ~~left, typeof top === 'undefined' ? this.scrollTop : ~~top ); }; // Element.prototype.scrollBy Element.prototype.scrollBy = function() { // avoid action when no arguments are passed if (arguments[0] === undefined) { return; } // avoid smooth behavior if not required if (shouldBailOut(arguments[0]) === true) { original.elementScroll.call( this, arguments[0].left !== undefined ? ~~arguments[0].left + this.scrollLeft : ~~arguments[0] + this.scrollLeft, arguments[0].top !== undefined ? ~~arguments[0].top + this.scrollTop : ~~arguments[1] + this.scrollTop ); return; } this.scroll({ left: ~~arguments[0].left + this.scrollLeft, top: ~~arguments[0].top + this.scrollTop, behavior: arguments[0].behavior }); }; // Element.prototype.scrollIntoView Element.prototype.scrollIntoView = function() { // avoid smooth behavior if not required if (shouldBailOut(arguments[0]) === true) { original.scrollIntoView.call( this, arguments[0] === undefined ? true : arguments[0] ); return; } // LET THE SMOOTHNESS BEGIN! var scrollableParent = findScrollableParent(this); var parentRects = scrollableParent.getBoundingClientRect(); var clientRects = this.getBoundingClientRect(); if (scrollableParent !== d.body) { // reveal element inside parent smoothScroll.call( this, scrollableParent, scrollableParent.scrollLeft + clientRects.left - parentRects.left, scrollableParent.scrollTop + clientRects.top - parentRects.top ); // reveal parent in viewport unless is fixed if (w.getComputedStyle(scrollableParent).position !== 'fixed') { w.scrollBy({ left: parentRects.left, top: parentRects.top, behavior: 'smooth' }); } } else { // reveal element in viewport w.scrollBy({ left: clientRects.left, top: clientRects.top, behavior: 'smooth' }); } }; } if (true) { // commonjs module.exports = { polyfill: polyfill }; } else { // global polyfill(); } }()); /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var ModalLauncher = function () { function ModalLauncher() { var _this = this; _classCallCheck(this, ModalLauncher); this.modalData = { "modal_parent": ".themes__modal", "modal_children": ["a.themes__modal__close-button", "a.themes__modal__previous-button", "a.themes__modal__next-button", "div.themes__modal__inner", "div#themes__modal_item__chart_1", "a#findasolution_1"] }; this.modalId = 1; this.modalLinks = document.querySelectorAll('.overlay-link'); this.modalLinks2 = document.querySelectorAll('.overlay-link2'); this.productsLinks = document.querySelectorAll('.productModalLinks'); if (this.modalLinks && !this.modalLinks.length) return; /* no overlays on page */ this.modal = document.querySelector('.themes__modal'); if (!this.modal) { return; } this.closeButton = document.querySelector('.themes__modal__close-button'); this.closeButtonImg = document.querySelector('.themes__modal__close-button'); this.previousButton = document.querySelector('.themes__modal__previous-button'); this.nextButton = document.querySelector('.themes__modal__next-button'); this.killModal = this.killModal.bind(this); this.onClick = this.onClick.bind(this); this.previous = this.previous.bind(this); this.next = this.next.bind(this); this.oneYearThemeLaunchButton = document.querySelector('.button--oneyear-launch-themes-modal'); if (this.oneYearThemeLaunchButton) { this.oneYearThemeLaunchButton.addEventListener('click', function (e) { return _this.display(1, true); }); } if (window.location.hash) { window.addEventListener('DOMContentLoaded', function (e) { return _this.openModalOnHash(window.location.hash); }); } if (this.modalLinks && this.modalLinks.length) { Array.prototype.forEach.call(this.modalLinks, function (link) { var t = _this; link.addEventListener('click', function (e) { return _this.openModalOnHash(e); }); }); document.addEventListener('keydown', this.onKeyDown.bind(this)); this.closeButton.addEventListener('click', this.killModal); this.closeButtonImg.addEventListener('click', this.killModal); if (this.previousButton) { this.previousButton.addEventListener('click', this.previous); } if (this.nextButton) { this.nextButton.addEventListener('click', this.next); } } if (this.modalLinks2 && this.modalLinks2.length) { Array.prototype.forEach.call(this.modalLinks2, function (link) { var t = _this; link.addEventListener('click', function (e) { return t.onClick(e, link); }); }); document.addEventListener('keydown', this.onKeyDown.bind(this)); this.closeButton.addEventListener('click', this.killModal); this.closeButtonImg.addEventListener('click', this.killModal); if (this.previousButton) { this.previousButton.addEventListener('click', this.previous); } if (this.nextButton) { this.nextButton.addEventListener('click', this.next); } } if (this.productsLinks) { Array.prototype.forEach.call(this.productsLinks, function (link) { var t = _this; link.addEventListener('click', function (e) { return t.onClick(e, link); }); }); document.addEventListener('keydown', this.onKeyDown.bind(this)); this.closeButton.addEventListener('click', this.killModal); this.closeButtonImg.addEventListener('click', this.killModal); } } _createClass(ModalLauncher, [{ key: "display", value: function display(modalId, firstLaunch) { var _this2 = this; // console.log("modalId",modalId); if ("qe-factors-quality" == modalId || "qe-factors-value" == modalId || "qe-factors-volatility" == modalId || "qe-factors-yield" == modalId || "qe-factors-momentum" == modalId || "qe-factors-size" == modalId) { this.modalData = { "modal_parent": ".themes__modal", "modal_children": ["a.themes__modal__close-button img"] }; } else if ("equity-us-is1" == modalId || "equity-us-is2" == modalId || "equity-us-is3" == modalId || "equity-ca-is1" == modalId || "equity-ca-is2" == modalId || "equity-ca-is3" == modalId || "equity-us-mf1" == modalId || "equity-us-mf2" == modalId || "equity-us-mf3" == modalId || "equity-ca-mf1" == modalId || "equity-ca-mf2" == modalId || "equity-ca-mf3" == modalId || "equity-me-is1" == modalId || "equity-me-is2" == modalId || "equity-me-is3" == modalId || "equity-eu-is1" == modalId || "equity-eu-is2" == modalId || "equity-eu-is3" == modalId || "equity-asia-is1" == modalId || "equity-asia-is2" == modalId || "equity-asia-is3" == modalId || "equity-au-is1" == modalId || "equity-au-is2" == modalId || "equity-au-is3" == modalId || "ma-us-is1" == modalId || "ma-us-is2" == modalId || "ma-us-is3" == modalId || "ma-us-mf1" == modalId || "ma-ca-is1" == modalId || "ma-ca-is2" == modalId || "ma-ca-is3" == modalId || "ma-ca-mf1" == modalId || "fixedincome-us-is1" == modalId || "fixedincome-us-etf1" == modalId || "fixedincome-ca-is1" == modalId || "fixedincome-ca-etf1" == modalId || "fixedincome-eu-is1" == modalId || "fixedincome-me-is1" == modalId || "fixedincome-asia-is1" == modalId || "fixedincome-au-is1" == modalId || "liquidity-us-is1" == modalId || "liquidity-ca-is1" == modalId || "liquidity-eu-is1" == modalId || "liquidity-eu-is1" == modalId || "liquidity-me-is1" == modalId || "liquidity-au-is1" == modalId || "liquidity-asia-is1" == modalId || "qe-factors-quality" == modalId || "qe-factors-value" == modalId || "qe-factors-volatility" == modalId || "qe-factors-yield" == modalId || "qe-factors-momentum" == modalId || "qe-factors-size" == modalId) { // console.log("div.factor-cta."+modalId+" > div > a"); this.modalData = { "modal_parent": ".themes__modal", "modal_children": ["a.themes__modal__close-button img", "div.factor-cta." + modalId + " > div > a"] }; } else if (modalId > 0 && modalId <= 6) { this.modalData = { "modal_parent": ".themes__modal", "modal_children": ["a.themes__modal__close-button", "a.themes__modal__previous-button", "a.themes__modal__next-button", "div#themes__modal__item__" + modalId, "div#themes__modal_item__chart_" + modalId, "a#findasolution_" + modalId] }; } else { this.modalData = { "modal_parent": ".themes__modal", "modal_children": ["a.themes__modal__close-button", "a.themes__modal__previous-button", "a.themes__modal__next-button", "div#themes__modal__item__" + modalId, "div#themes__modal_item__chart_" + modalId, "a#findasolution_" + modalId] }; } accessibility.modalShown(this.modalData); var modalThemes = document.querySelectorAll("[data-theme-modal]"); var modalTheme = document.querySelector("[data-theme-modal='" + modalId + "']"); // Reset all modal themes to invisible Array.prototype.forEach.call(modalThemes, function (theme) { theme.style.display = 'none'; }); modalTheme.style.display = 'block'; if (firstLaunch) { this.modal.style.display = 'block'; // Set to execute on next call stack, // otherwise transition doesn't happen setTimeout(function () { _this2.modal.style.opacity = '1'; }, 0); var that = this; setTimeout(function () { document.body.classList.add('modal-is-open'); accessibility.modalShown(that.modalData); }, 250); // adds overlow hidden to the body to prevent scrolling } // Keep track of current theme for previous/next this.modalId = modalId; } }, { key: "onClick", value: function onClick(e, link) { console.log("e", e); console.log("link", link); e.preventDefault(); var modalId = link.dataset.modalId; console.log(modalId); return this.display(modalId, true); } }, { key: "openModalOnHash", value: function openModalOnHash(hash) { if (hash === "#fullResearchPaper") { var button = document.getElementById("officialButton"); button.click(); } var urlItem = void 0; if (!hash.target) { urlItem = hash; } else { urlItem = hash.target.id; } if (urlItem.indexOf("#growth-restraints") > -1) { return this.display(1, true); } else if (urlItem.indexOf("#inflation-adaptation") > -1) { return this.display(2, true); } else if (urlItem.indexOf("#central-bank-concessions") > -1) { return this.display(3, true); } else if (urlItem.indexOf("#geopolitical-fault-lines") > -1) { return this.display(4, true); } else if (urlItem.indexOf("#a-sustainable-green-transition") > -1) { return this.display(5, true); } else if (urlItem.indexOf("#private-matters") > -1) { return this.display(6, true); } } }, { key: "killModal", value: function killModal(e) { if (e) { e.preventDefault(); } document.body.classList.remove('modal-is-open'); var t = this; setTimeout(function () { t.modal.style.opacity = '0'; t.modal.style.display = 'none'; accessibility.modalHidden(t.modalData, document.getElementById("Key6ThemesOrder" + t.modalId)); }, 250); // remove class before hiding overlay to hide bounch of scrollbar window.history.pushState('', '', ''); } }, { key: "onKeyDown", value: function onKeyDown(e) { // Hide modal if user presses escape key while it is visible. if (e.keyCode === 27 && this.modal.style.opacity === '1') { this.killModal(); } // Trigger previous/next if user presses arrow keys if (e.keyCode === 37 && this.modal.style.opacity === '1') { this.previous(); } if (e.keyCode === 39 && this.modal.style.opacity === '1') { this.next(); } } }, { key: "previous", value: function previous(e) { if (e) { e.preventDefault(); } var modalId = this.modalId - 1 <= 0 ? this.modalLinks.length : this.modalId - 1; this.lastelement = "findasolution_" + modalId; return this.display(modalId); } }, { key: "next", value: function next(e) { if (e) { e.preventDefault(); } var modalId = this.modalId + 1 > this.modalLinks.length ? 1 : this.modalId + 1; return this.display(modalId); } }]); return ModalLauncher; }(); exports.default = ModalLauncher; /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var AssetLauncher = function () { function AssetLauncher() { var _this = this; _classCallCheck(this, AssetLauncher); this.tabs = document.querySelectorAll('.asset-class__tab'); Array.prototype.forEach.call(this.tabs, function (tab) { tab.addEventListener('click', function (e) { return _this.onClick(e, tab); }); }); } _createClass(AssetLauncher, [{ key: 'onClick', value: function onClick(e, tab) { e.preventDefault(); var tabNumber = tab.dataset.assetClass; var assetContents = document.querySelectorAll('[data-asset-class-content]'); var assetContent = document.querySelector('[data-asset-class-content=\'' + tabNumber + '\']'); // Reset all content blocks to invisible Array.prototype.forEach.call(assetContents, function (asset) { asset.style.display = 'none'; }); // Reset all tabs to inactive Array.prototype.forEach.call(this.tabs, function (tab) { tab.className = 'asset-class__tab'; tab.setAttribute("aria-selected", false); }); // Display selected content and set active tab tab.className = 'asset-class__tab asset-class__tab--active'; tab.setAttribute("aria-selected", true); if (tab.getAttribute("aria-controls") == "panel_4") { setTimeout(function () { PostRenderAlternatives(); }, 700); } assetContent.style.display = 'block'; var children = assetContent.querySelectorAll('.asset-class__copy'); sr.reveal(children); } }]); return AssetLauncher; }(); exports.default = AssetLauncher; /***/ }), /* 7 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Parallax = function Parallax() { _classCallCheck(this, Parallax); var headerBg = document.querySelector('.header__bg'); if (headerBg) { window.onscroll = animateBg; } function animateBg() { if (window.scrollY < window.innerHeight) { requestAnimationFrame(updateTopPosition); } requestAnimationFrame(updateTopPosition); } function updateTopPosition() { headerBg.style.transform = 'translateY(' + window.scrollY * 0.5 + 'px)'; } }; exports.default = Parallax; /***/ }), /* 8 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Animations = function Animations() { _classCallCheck(this, Animations); // Homepage if (document.querySelector('.header--home')) { var items = document.querySelectorAll('.themes__list-item'); var itemCount = 0; // Header // sr.reveal('.header__bg', { // delay: 200, // distance: 0, // afterReveal: function() { // const headerBg = document.querySelector('.header__bg'); // headerBg.removeAttribute('style'); // headerBg.style.visibility = 'visible'; // } // }); sr.reveal('.header__text__title', { delay: 300 }); sr.reveal('.header__text__subtitle', { delay: 400 }); sr.reveal('.header .section-header', { delay: 500 }); sr.reveal('.header .section-header__title', { delay: 500 }); sr.reveal('.header .section-header__description', { delay: 600 }); sr.reveal('.header .button-cma', { delay: 800 }); sr.reveal('.section-header__title2', { delay: 800 }); sr.reveal('.secondary-button', { delay: 800 }); // sr.reveal('.header__video__inner' ); sr.reveal('.header__video__inner', { delay: 900 }); // removed 800s delay when image is used // Themes sr.reveal('.themes .section-header'); sr.reveal('.themes .section-header__title'); sr.reveal('.themes .section-header__description'); sr.reveal('.themes__list-item', { delay: 500, afterReveal: function afterReveal() { items[itemCount].removeAttribute('style'); items[itemCount].style.visibility = 'visible'; itemCount += 1; } }, 200); // sr.reveal('.themes__list-item > *', {delay: 500}, 50); // More Themes sr.reveal('.more-themes .section-header'); sr.reveal('.more-themes .section-header__title'); sr.reveal('.more-themes .section-header__description'); sr.reveal('.more-themes .reusable-article', 200); // Asset Classes sr.reveal('.asset-classes .section-header'); sr.reveal('.asset-classes .section-header__title'); sr.reveal('.asset-classes .section-header__description'); sr.reveal('.asset-class__tab', 200); sr.reveal('.asset-class__outlook__headline'); sr.reveal('.asset-class__outlook__description'); sr.reveal('.asset-class__outlook__video'); sr.reveal('.asset-class__outlook__stat'); sr.reveal('.class__outlook__rationale__header'); sr.reveal('.asset-classes .button-cma'); // More Asset Classes sr.reveal('.more-asset-classes'); sr.reveal('.more-asset-classes .section-header'); // Reusable Article Container sr.reveal('.reusable-article-container .resuable-articles'); sr.reveal('.reusable-article > *', 50); // Product Module sr.reveal('.portfolios-module__header__subtitle'); sr.reveal('.portfolios-module__header__title'); sr.reveal('.portfolios-module__header__description'); sr.reveal('.portfolios-module__product', 200); sr.reveal('.portfolios-module__product *', 50); // Product CTA sr.reveal('.product-cta__copy__headline'); sr.reveal('.product-cta__copy__description'); sr.reveal('.product-cta__button'); // Download CTA sr.reveal('.download-cta .section-header'); sr.reveal('.download-cta .section-header__title'); sr.reveal('.download-cta .section-header__description'); sr.reveal('.download-cta .button-cma'); // Contributors sr.reveal('.contributors__intro'); sr.reveal('.contributors__list__header'); sr.reveal('.contributor', 150); // NT Asset Management sr.reveal('.nt-asset-management__title'); sr.reveal('.nt-asset-management__intro'); sr.reveal('.nt-asset-management__subheadline'); sr.reveal('.nt-asset-management__column', 200); sr.reveal('.nt-asset-management__disclaimer__text'); } // Old Products Page (as of 8/29/18) // Products page if (document.querySelector('.header--products')) { // Header // sr.reveal('.header__bg', { // delay: 200, // distance: 0, // afterReveal: function() { // const headerBg = document.querySelector('.header__bg'); // headerBg.removeAttribute('style'); // headerBg.style.visibility = 'visible'; // } // }); // More on products sr.reveal('.more-themes .section-header'); sr.reveal('.more-themes .section-header__title'); sr.reveal('.more-themes .section-header__description'); sr.reveal('.more-themes .reusable-article', 200); // Product Module sr.reveal('.portfolios-module__header__subtitle'); sr.reveal('.portfolios-module__header__title'); sr.reveal('.portfolios-module__header__description'); sr.reveal('.portfolios-module__product', 200); sr.reveal('.portfolios-module__product *', 50); // Product selector sr.reveal('.product-selector__label'); sr.reveal('.product-selector__dropdown'); sr.reveal('.product-selector__tabs'); sr.reveal('.product-selector__tab', 200); sr.reveal('.product-selector__headline'); sr.reveal('.product-selector__description'); sr.reveal('.product-selector__button', 200); // NT Asset Management sr.reveal('.nt-asset-management__title'); sr.reveal('.nt-asset-management__intro'); sr.reveal('.nt-asset-management__subheadline'); sr.reveal('.nt-asset-management__column', 200); sr.reveal('.nt-asset-management__disclaimer__text'); sr.reveal('.contact__title'); sr.reveal('.contact__description'); sr.reveal('.contact__disclaimer'); sr.reveal('.contact__contacts__item', 200); // Product content is animated in productLauncher.js } // 2018 Outlook Page if (document.querySelector('.header--oneyear')) { // ASSET CLASS FORECASTS AND ALLOCATIONS sr.reveal('.asset-class__outlook__stat', 200); } // New Products Page (as of 8/29/18) if (document.querySelector('.products-page')) { sr.reveal('.product-offerings'); sr.reveal('.product-header-wrapper'); sr.reveal('.product-subheader'); // Quant Equity sr.reveal('.product-strategies-wrap'); sr.reveal('.themes__list--product-page'); sr.reveal('.themes__list-item', 10); sr.reveal('.disclosure'); // // Advantages Section sr.reveal('.advantages'); sr.reveal('.advantages__list'); sr.reveal('.advantages__list--multi-asset'); sr.reveal('.advantages__list-item', 10); // // Liquidity // sr.reveal('.segmentation'); // sr.reveal('.segmentation-item * '); // // Product Component // sr.reveal('.products-list'); // sr.reveal('.product-type-nav'); // sr.reveal('.products-featured-wrapper *'); // // sr.reveal('.products-more-wrapper'); // sr.reveal('.products-more-wrapper *'); sr.reveal('.product-chart'); sr.reveal('.investment-step'); sr.reveal('.footer__logo'); sr.reveal('.footer__social'); sr.reveal('.footer__links'); sr.reveal('.disclaimer'); } }; exports.default = Animations; /***/ }), /* 9 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __WEBPACK_AMD_DEFINE_RESULT__; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; !function () { "use strict"; function e(n) { return "undefined" == typeof this || Object.getPrototypeOf(this) !== e.prototype ? new e(n) : (O = this, O.version = "3.3.6", O.tools = new E(), O.isSupported() ? (O.tools.extend(O.defaults, n || {}), O.defaults.container = t(O.defaults), O.store = { elements: {}, containers: [] }, O.sequences = {}, O.history = [], O.uid = 0, O.initialized = !1) : "undefined" != typeof console && null !== console, O); }function t(e) { if (e && e.container) { if ("string" == typeof e.container) return window.document.documentElement.querySelector(e.container);if (O.tools.isNode(e.container)) return e.container; }return O.defaults.container; }function n(e, t) { return "string" == typeof e ? Array.prototype.slice.call(t.querySelectorAll(e)) : O.tools.isNode(e) ? [e] : O.tools.isNodeList(e) ? Array.prototype.slice.call(e) : []; }function i() { return ++O.uid; }function o(e, t, n) { t.container && (t.container = n), e.config ? e.config = O.tools.extendClone(e.config, t) : e.config = O.tools.extendClone(O.defaults, t), "top" === e.config.origin || "bottom" === e.config.origin ? e.config.axis = "Y" : e.config.axis = "X"; }function r(e) { var t = window.getComputedStyle(e.domEl);e.styles || (e.styles = { transition: {}, transform: {}, computed: {} }, e.styles.inline = e.domEl.getAttribute("style") || "", e.styles.inline += "; visibility: visible; ", e.styles.computed.opacity = t.opacity, t.transition && "all 0s ease 0s" !== t.transition ? e.styles.computed.transition = t.transition + ", " : e.styles.computed.transition = ""), e.styles.transition.instant = s(e, 0), e.styles.transition.delayed = s(e, e.config.delay), e.styles.transform.initial = " -webkit-transform:", e.styles.transform.target = " -webkit-transform:", a(e), e.styles.transform.initial += "transform:", e.styles.transform.target += "transform:", a(e); }function s(e, t) { var n = e.config;return "-webkit-transition: " + e.styles.computed.transition + "-webkit-transform " + n.duration / 1e3 + "s " + n.easing + " " + t / 1e3 + "s, opacity " + n.duration / 1e3 + "s " + n.easing + " " + t / 1e3 + "s; transition: " + e.styles.computed.transition + "transform " + n.duration / 1e3 + "s " + n.easing + " " + t / 1e3 + "s, opacity " + n.duration / 1e3 + "s " + n.easing + " " + t / 1e3 + "s; "; }function a(e) { var t, n = e.config, i = e.styles.transform;t = "top" === n.origin || "left" === n.origin ? /^-/.test(n.distance) ? n.distance.substr(1) : "-" + n.distance : n.distance, parseInt(n.distance) && (i.initial += " translate" + n.axis + "(" + t + ")", i.target += " translate" + n.axis + "(0)"), n.scale && (i.initial += " scale(" + n.scale + ")", i.target += " scale(1)"), n.rotate.x && (i.initial += " rotateX(" + n.rotate.x + "deg)", i.target += " rotateX(0)"), n.rotate.y && (i.initial += " rotateY(" + n.rotate.y + "deg)", i.target += " rotateY(0)"), n.rotate.z && (i.initial += " rotateZ(" + n.rotate.z + "deg)", i.target += " rotateZ(0)"), i.initial += "; opacity: " + n.opacity + ";", i.target += "; opacity: " + e.styles.computed.opacity + ";"; }function l(e) { var t = e.config.container;t && O.store.containers.indexOf(t) === -1 && O.store.containers.push(e.config.container), O.store.elements[e.id] = e; }function c(e, t, n) { var i = { target: e, config: t, interval: n };O.history.push(i); }function f() { if (O.isSupported()) { y();for (var e = 0; e < O.store.containers.length; e++) { O.store.containers[e].addEventListener("scroll", d), O.store.containers[e].addEventListener("resize", d); }O.initialized || (window.addEventListener("scroll", d), window.addEventListener("resize", d), O.initialized = !0); }return O; }function d() { T(y); }function u() { var e, t, n, i;O.tools.forOwn(O.sequences, function (o) { i = O.sequences[o], e = !1;for (var r = 0; r < i.elemIds.length; r++) { n = i.elemIds[r], t = O.store.elements[n], q(t) && !e && (e = !0); }i.active = e; }); }function y() { var e, t;u(), O.tools.forOwn(O.store.elements, function (n) { t = O.store.elements[n], e = w(t), g(t) ? (t.config.beforeReveal(t.domEl), e ? t.domEl.setAttribute("style", t.styles.inline + t.styles.transform.target + t.styles.transition.delayed) : t.domEl.setAttribute("style", t.styles.inline + t.styles.transform.target + t.styles.transition.instant), p("reveal", t, e), t.revealing = !0, t.seen = !0, t.sequence && m(t, e)) : v(t) && (t.config.beforeReset(t.domEl), t.domEl.setAttribute("style", t.styles.inline + t.styles.transform.initial + t.styles.transition.instant), p("reset", t), t.revealing = !1); }); }function m(e, t) { var n = 0, i = 0, o = O.sequences[e.sequence.id];o.blocked = !0, t && "onload" === e.config.useDelay && (i = e.config.delay), e.sequence.timer && (n = Math.abs(e.sequence.timer.started - new Date()), window.clearTimeout(e.sequence.timer)), e.sequence.timer = { started: new Date() }, e.sequence.timer.clock = window.setTimeout(function () { o.blocked = !1, e.sequence.timer = null, d(); }, Math.abs(o.interval) + i - n); }function p(e, t, n) { var i = 0, o = 0, r = "after";switch (e) {case "reveal": o = t.config.duration, n && (o += t.config.delay), r += "Reveal";break;case "reset": o = t.config.duration, r += "Reset";}t.timer && (i = Math.abs(t.timer.started - new Date()), window.clearTimeout(t.timer.clock)), t.timer = { started: new Date() }, t.timer.clock = window.setTimeout(function () { t.config[r](t.domEl), t.timer = null; }, o - i); }function g(e) { if (e.sequence) { var t = O.sequences[e.sequence.id];return t.active && !t.blocked && !e.revealing && !e.disabled; }return q(e) && !e.revealing && !e.disabled; }function w(e) { var t = e.config.useDelay;return "always" === t || "onload" === t && !O.initialized || "once" === t && !e.seen; }function v(e) { if (e.sequence) { var t = O.sequences[e.sequence.id];return !t.active && e.config.reset && e.revealing && !e.disabled; }return !q(e) && e.config.reset && e.revealing && !e.disabled; }function b(e) { return { width: e.clientWidth, height: e.clientHeight }; }function h(e) { if (e && e !== window.document.documentElement) { var t = x(e);return { x: e.scrollLeft + t.left, y: e.scrollTop + t.top }; }return { x: window.pageXOffset, y: window.pageYOffset }; }function x(e) { var t = 0, n = 0, i = e.offsetHeight, o = e.offsetWidth;do { isNaN(e.offsetTop) || (t += e.offsetTop), isNaN(e.offsetLeft) || (n += e.offsetLeft), e = e.offsetParent; } while (e);return { top: t, left: n, height: i, width: o }; }function q(e) { function t() { var t = c + a * s, n = f + l * s, i = d - a * s, y = u - l * s, m = r.y + e.config.viewOffset.top, p = r.x + e.config.viewOffset.left, g = r.y - e.config.viewOffset.bottom + o.height, w = r.x - e.config.viewOffset.right + o.width;return t < g && i > m && n < w && y > p; }function n() { return "fixed" === window.getComputedStyle(e.domEl).position; }var i = x(e.domEl), o = b(e.config.container), r = h(e.config.container), s = e.config.viewFactor, a = i.height, l = i.width, c = i.top, f = i.left, d = c + a, u = f + l;return t() || n(); }function E() {}var O, T;e.prototype.defaults = { origin: "bottom", distance: "20px", duration: 500, delay: 0, rotate: { x: 0, y: 0, z: 0 }, opacity: 0, scale: .9, easing: "cubic-bezier(0.6, 0.2, 0.1, 1)", container: window.document.documentElement, mobile: !0, reset: !1, useDelay: "always", viewFactor: .2, viewOffset: { top: 0, right: 0, bottom: 0, left: 0 }, beforeReveal: function beforeReveal(e) {}, beforeReset: function beforeReset(e) {}, afterReveal: function afterReveal(e) {}, afterReset: function afterReset(e) {} }, e.prototype.isSupported = function () { var e = document.documentElement.style;return "WebkitTransition" in e && "WebkitTransform" in e || "transition" in e && "transform" in e; }, e.prototype.reveal = function (e, s, a, d) { var u, y, m, p, g, w;if (void 0 !== s && "number" == typeof s ? (a = s, s = {}) : void 0 !== s && null !== s || (s = {}), u = t(s), y = n(e, u), !y.length) return O;a && "number" == typeof a && (w = i(), g = O.sequences[w] = { id: w, interval: a, elemIds: [], active: !1 });for (var v = 0; v < y.length; v++) { p = y[v].getAttribute("data-sr-id"), p ? m = O.store.elements[p] : (m = { id: i(), domEl: y[v], seen: !1, revealing: !1 }, m.domEl.setAttribute("data-sr-id", m.id)), g && (m.sequence = { id: g.id, index: g.elemIds.length }, g.elemIds.push(m.id)), o(m, s, u), r(m), l(m), O.tools.isMobile() && !m.config.mobile || !O.isSupported() ? (m.domEl.setAttribute("style", m.styles.inline), m.disabled = !0) : m.revealing || m.domEl.setAttribute("style", m.styles.inline + m.styles.transform.initial); }return !d && O.isSupported() && (c(e, s, a), O.initTimeout && window.clearTimeout(O.initTimeout), O.initTimeout = window.setTimeout(f, 0)), O; }, e.prototype.sync = function () { if (O.history.length && O.isSupported()) { for (var e = 0; e < O.history.length; e++) { var t = O.history[e];O.reveal(t.target, t.config, t.interval, !0); }f(); }return O; }, E.prototype.isObject = function (e) { return null !== e && "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) && e.constructor === Object; }, E.prototype.isNode = function (e) { return "object" == _typeof(window.Node) ? e instanceof window.Node : e && "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) && "number" == typeof e.nodeType && "string" == typeof e.nodeName; }, E.prototype.isNodeList = function (e) { var t = Object.prototype.toString.call(e), n = /^\[object (HTMLCollection|NodeList|Object)\]$/;return "object" == _typeof(window.NodeList) ? e instanceof window.NodeList : e && "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) && n.test(t) && "number" == typeof e.length && (0 === e.length || this.isNode(e[0])); }, E.prototype.forOwn = function (e, t) { if (!this.isObject(e)) throw new TypeError('Expected "object", but received "' + (typeof e === "undefined" ? "undefined" : _typeof(e)) + '".');for (var n in e) { e.hasOwnProperty(n) && t(n); } }, E.prototype.extend = function (e, t) { return this.forOwn(t, function (n) { this.isObject(t[n]) ? (e[n] && this.isObject(e[n]) || (e[n] = {}), this.extend(e[n], t[n])) : e[n] = t[n]; }.bind(this)), e; }, E.prototype.extendClone = function (e, t) { return this.extend(this.extend({}, e), t); }, E.prototype.isMobile = function () { return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ); }, T = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (e) { window.setTimeout(e, 1e3 / 60); }, "function" == "function" && "object" == _typeof(__webpack_require__(0)) && __webpack_require__(0) ? !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () { return e; }).call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : "undefined" != typeof module && module.exports ? module.exports = e : window.ScrollReveal = e; }(); /***/ }), /* 10 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var triggerPoint = 600 - 96; var FixedNav = function () { function FixedNav() { _classCallCheck(this, FixedNav); this.nav = document.querySelector('.fixed-nav'); if (!this.nav) return; this.header = document.querySelector('.header'); if (this.header) { window.requestAnimationFrame(this.loop.bind(this)); } } _createClass(FixedNav, [{ key: 'loop', value: function loop() { var top = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop; var diff = this.header.clientHeight - top; if (diff <= triggerPoint && this.nav.style.opacity == 0) { this.nav.style.opacity = 1; this.nav.style.pointerEvents = 'all'; this.nav.style.display = "block"; this.nav.setAttribute("aria-hidden", false); } if (diff > triggerPoint && this.nav.style.opacity == 1) { this.nav.style.opacity = 0; this.nav.style.pointerEvents = 'none'; this.nav.style.display = "none"; this.nav.setAttribute("aria-hidden", true); } window.requestAnimationFrame(this.loop.bind(this)); } }]); return FixedNav; }(); exports.default = FixedNav; /***/ }), /* 11 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _download = __webpack_require__(1); var _download2 = _interopRequireDefault(_download); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var DownloadLauncher = function () { function DownloadLauncher() { var _this = this; _classCallCheck(this, DownloadLauncher); this.buttons = document.querySelectorAll(".oneYearExec"); this.fiveYear = document.querySelectorAll(".fiveYearExec"); this.onClick = this.onClick.bind(this); Array.prototype.forEach.call(this.buttons, function (button) { button.addEventListener("click", _this.onClick); }); Array.prototype.forEach.call(this.fiveYear, function (button) { button.addEventListener("click", _this.onClickFiveYear); }); } _createClass(DownloadLauncher, [{ key: "onClickFiveYear", value: function onClickFiveYear() { var x = new XMLHttpRequest(); var fileName = "2024-Executive-Summary-CMA"; x.open("GET", "/downloads/" + fileName + ".pdf", true); x.responseType = "blob"; x.onload = function () { (0, _download2.default)(x.response, fileName + ".pdf", "application/pdf"); }; x.send(); } }, { key: "onClick", value: function onClick() { var x = new XMLHttpRequest(); var fileName = "2023_Outlook_Executive_summary"; x.open("GET", "/downloads/" + fileName + ".pdf", true); x.responseType = "blob"; x.onload = function () { (0, _download2.default)(x.response, fileName + ".pdf", "application/pdf"); }; x.send(); } }]); return DownloadLauncher; }(); exports.default = DownloadLauncher; /***/ }), /* 12 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _download = __webpack_require__(1); var _download2 = _interopRequireDefault(_download); var _js = __webpack_require__(13); var _js2 = _interopRequireDefault(_js); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var env = env || "prodution"; var DownloadModalLauncher = function () { function DownloadModalLauncher() { var _this = this; _classCallCheck(this, DownloadModalLauncher); this.modal = document.querySelector(".download-modal"); if (!this.modal) { return false; } this.buttons = document.querySelectorAll(".button--download.full-report"); this.closeButton = document.querySelector(".download-modal__close"); this.onClick = this.onClick.bind(this); this.killModal = this.killModal.bind(this); this.hideModal = this.hideModal.bind(this); this.modalData = { modal_parent: "#downloadFullReport.download-modal", modal_children: ["#downloadButtonClose", "input#FirstName", "input#LastName", "input#Email", "input#Company", "input#Title", "select#investorType", "button.mktoButton"] }; // Cookie track only for prod Marketo form this.modalForm = document.querySelector(".download-modal form"); //Replaced by marketo form 2019 // this.modalForm = document.querySelector('.sg-survey-form'); this.returningUserFiveYear = _js2.default.get("returning_user_fiveyear"); this.returningUserOneYear = _js2.default.get("returning_user_oneyear"); this.oneYear = window.location.pathname.indexOf("1year") >= 0; this.downloadTitleCopy = document.querySelector(".download-title-copy"); this.signupTitleCopy = document.querySelector(".signup-title-copy"); this.downloadBodyCopy = document.querySelector(".download-body-copy"); this.signupBodyCopy = document.querySelector(".signup-body-copy"); this.oneYearBodyCopy = document.querySelector(".oneyear-body-copy"); this.fiveYearBodyCopy = document.querySelector(".fiveyear-body-copy"); this.downloadButton = this.modal.querySelector('button[type="submit"], .button-cma.button--direct-download-full-report'); this.oneYearDirectDownload = document.querySelector(".oneyear-direct-download"); this.fiveYearDirectDownload = document.querySelector(".fiveyear-direct-download"); if (this.modal) { Array.prototype.forEach.call(this.buttons, function (button) { button.addEventListener("click", _this.onClick); }); this.closeButton.addEventListener("click", this.killModal); this.closeButton.addEventListener("keypress", function (e) { var key = e.which || e.keyCode; if (key === 13) { _this.killModal(); } }); document.addEventListener("keydown", this.onKeyDown.bind(this)); if (this.oneYear) { if (this.returningUserOneYear) { if (this.modalForm) this.modalForm.style.display = "none"; this.modal.classList.add("returning-user"); this.signupTitleCopy.style.display = "none"; this.downloadTitleCopy.style.display = "inline"; this.signupBodyCopy.style.display = "none"; this.downloadBodyCopy.style.display = "inline"; this.oneYearDirectDownload.style.display = "inline-block"; } } else { if (this.returningUserFiveYear) { if (this.modalForm) this.modalForm.style.display = "none"; this.modal.classList.add("returning-user"); this.signupTitleCopy.style.display = "none"; this.downloadTitleCopy.style.display = "inline"; this.signupBodyCopy.style.display = "none"; this.downloadBodyCopy.style.display = "inline"; this.fiveYearDirectDownload.style.display = "inline-block"; } else { this.fiveYearDirectDownload.style.display = "none"; } } } } _createClass(DownloadModalLauncher, [{ key: "hideModal", value: function hideModal() { this.modal.style.display = "none"; accessibility.modalHidden(this.modalData); } }, { key: "killModal", value: function killModal(e) { if (e) { e.preventDefault(); } this.modal.addEventListener("transitionend", this.hideModal); this.modal.classList.remove("show"); // window.history.pushState("", "", "/"); } }, { key: "onClick", value: function onClick(e) { var _this2 = this; e.preventDefault(); accessibility.whichButtonClickedToOpenModal = e.target; if (!(this.downloadButton instanceof HTMLElement)) { this.downloadButton = this.modal.querySelector('button[type="submit"], .button-cma.button--direct-download-full-report'); } if (this.downloadButton && this.oneYear) { MktoForms2.whenReady(function (form) { form.onSuccess(function (vals, thanksURL) { document.querySelector(".download-modal__copy.success-message").classList.add("show"); document.querySelector(".download-modal__form").classList.add("complete"); window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "marketo_success", event_label: "marketo", formLocation: "Full Report - Marketo Form - Success One Year" }); document.cookie = "returning_user_oneyear=true; expires=Fri, 31 Dec 9999 23:59:59 GMT"; var modal = document.querySelector('.download-modal'); var modalForm = document.querySelector('.download-modal form'); var downloadTitleCopy = document.querySelector('.download-title-copy'); var signupTitleCopy = document.querySelector('.signup-title-copy'); var downloadBodyCopy = document.querySelector('.download-body-copy'); var signupBodyCopy = document.querySelector('.signup-body-copy'); var oneYearBodyCopy = document.querySelector('.oneyear-body-copy'); if (modalForm) modalForm.style.display = 'none'; modal.classList.add('returning-user'); signupTitleCopy.style.display = 'none'; downloadTitleCopy.style.display = 'inline'; signupBodyCopy.style.display = 'none'; downloadBodyCopy.style.display = 'inline'; return false; }); }); } else if (this.downloadButton) { MktoForms2.whenReady(function (form) { form.onSuccess(function (vals, thanksURL) { document.querySelector(".download-modal__copy.success-message").classList.add("show"); document.querySelector(".download-modal__form").classList.add("complete"); window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "marketo_success", event_label: "marketo", formLocation: "Full Report - Marketo Form - Success" }); document.cookie = "returning_user_fiveyear=true; expires=Fri, 31 Dec 9999 23:59:59 GMT"; return false; }); }); } this.modal.removeEventListener("transitionend", this.hideModal); setTimeout(function () { _this2.modal.classList.add("show"); accessibility.modalShown(_this2.modalData); accessibility.markRequiredFields(["#FirstName", "#LastName", "#Email", "#Country"]); accessibility.markAriaLabel([{ id: "FirstName", label: "First name" }, { id: "LastName", label: "Last name" }, { id: "Email", label: "Email" }, { id: "Country", label: "Country" }, { id: "Company", label: "Company" }, { id: "Title", label: "Job Title" }, { id: "investorType", label: "Investor Type" }]); }, 16); this.modal.style.display = "block"; } }, { key: "onKeyDown", value: function onKeyDown(e) { // Hide modal if user presses enter key or the spacebar on the close button while it is visible. if (e.target.id == "downloadExecutiveSummeryBodyClose" && (13 == e.keyCode || 34 == e.keyCode) && this.modal.classList.contains("show") === "1") { this.killModal(); } // Hide modal if user presses escape key while it is visible. if (e.keyCode === 27 && classList.contains("show")) { this.killModal(); } } }]); return DownloadModalLauncher; }(); exports.default = DownloadModalLauncher; /***/ }), /* 13 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /*! * JavaScript Cookie v2.2.0 * https://github.com/js-cookie/js-cookie * * Copyright 2006, 2015 Klaus Hartl & Fagner Brack * Released under the MIT license */ (function (factory) { var registeredInModuleLoader = false; if (true) { !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); registeredInModuleLoader = true; } if (( false ? 'undefined' : _typeof(exports)) === 'object') { module.exports = factory(); registeredInModuleLoader = true; } if (!registeredInModuleLoader) { var OldCookies = window.Cookies; var api = window.Cookies = factory(); api.noConflict = function () { window.Cookies = OldCookies; return api; }; } })(function () { function extend() { var i = 0; var result = {}; for (; i < arguments.length; i++) { var attributes = arguments[i]; for (var key in attributes) { result[key] = attributes[key]; } } return result; } function init(converter) { function api(key, value, attributes) { var result; if (typeof document === 'undefined') { return; } // Write if (arguments.length > 1) { attributes = extend({ path: '/' }, api.defaults, attributes); if (typeof attributes.expires === 'number') { var expires = new Date(); expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e5); attributes.expires = expires; } // We're using "expires" because "max-age" is not supported by IE attributes.expires = attributes.expires ? attributes.expires.toUTCString() : ''; try { result = JSON.stringify(value); if (/^[\{\[]/.test(result)) { value = result; } } catch (e) {} if (!converter.write) { value = encodeURIComponent(String(value)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); } else { value = converter.write(value, key); } key = encodeURIComponent(String(key)); key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent); key = key.replace(/[\(\)]/g, escape); var stringifiedAttributes = ''; for (var attributeName in attributes) { if (!attributes[attributeName]) { continue; } stringifiedAttributes += '; ' + attributeName; if (attributes[attributeName] === true) { continue; } stringifiedAttributes += '=' + attributes[attributeName]; } return document.cookie = key + '=' + value + stringifiedAttributes; } // Read if (!key) { result = {}; } // To prevent the for loop in the first place assign an empty array // in case there are no cookies at all. Also prevents odd result when // calling "get()" var cookies = document.cookie ? document.cookie.split('; ') : []; var rdecode = /(%[0-9A-Z]{2})+/g; var i = 0; for (; i < cookies.length; i++) { var parts = cookies[i].split('='); var cookie = parts.slice(1).join('='); if (!this.json && cookie.charAt(0) === '"') { cookie = cookie.slice(1, -1); } try { var name = parts[0].replace(rdecode, decodeURIComponent); cookie = converter.read ? converter.read(cookie, name) : converter(cookie, name) || cookie.replace(rdecode, decodeURIComponent); if (this.json) { try { cookie = JSON.parse(cookie); } catch (e) {} } if (key === name) { result = cookie; break; } if (!key) { result[name] = cookie; } } catch (e) {} } return result; } api.set = api; api.get = function (key) { return api.call(api, key); }; api.getJSON = function () { return api.apply({ json: true }, [].slice.call(arguments)); }; api.defaults = {}; api.remove = function (key, attributes) { api(key, '', extend(attributes, { expires: -1 })); }; api.withConverter = init; return api; } return init(function () {}); }); /***/ }), /* 14 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var assetClasses = { asia: ['individual'], australia: ['individual'], canada: ['individual', 'multi'], europe: ['individual'], middleEast: ['individual'], us: ['individual', 'multi'] }; var categories = { 'asia-individual': ['strategies'], 'australia-individual': ['strategies'], 'europe-individual': ['strategies', 'pooled'], 'middleEast-individual': ['strategies'], 'us-individual': ['institutional', 'mutual', 'exchange'], 'canada-individual': ['institutional', 'mutual', 'exchange'], 'us-multi': ['institutional', 'mutual'], 'canada-multi': ['institutional', 'mutual'] }; var ProductLauncher = function () { function ProductLauncher() { var _this = this; _classCallCheck(this, ProductLauncher); this.state = { location: 'us', assetClass: 'individual', category: 'institutional' }; this.locationSelect = document.querySelector('.product-selector__dropdown__select'); this.productButtons = document.querySelectorAll('.product-selector__button'); this.assetClassTabs = document.querySelectorAll('.product-selector__tab'); if (!this.locationSelect) return; this.contentContainer = document.querySelector('.product-content'); // this.disclaimerContentContainer = document.querySelector( // '.disclaimer__copy' // ); Array.prototype.forEach.call(this.productButtons, function (productButton) { productButton.addEventListener('click', function (e) { e.preventDefault(); _this.selectCategory(productButton.dataset.productCategory); window.track.page('products/' + _this.state['location'] + '/' + _this.state['assetClass'] + '/' + _this.state['category']); }); }); Array.prototype.forEach.call(this.assetClassTabs, function (assetClassTab) { assetClassTab.addEventListener('click', function (e) { e.preventDefault(); _this.selectAssetClass(assetClassTab.dataset.assetClass); window.track.page('products/' + _this.state['location'] + '/' + _this.state['assetClass']); }); }); this.locationSelect.addEventListener('change', this.onChangeLocation.bind(this)); // Kick off first render this.updateContent(); } _createClass(ProductLauncher, [{ key: 'onChangeLocation', value: function onChangeLocation(e) { var newLocation = e.target.value; this.selectLocation(newLocation); } }, { key: 'selectLocation', value: function selectLocation(newLocation) { if (this.state.location != newLocation) { this.state.location = newLocation; this.pruneAssetClasses(); this.selectAssetClass(assetClasses[this.state.location][0]); window.track.page('products/' + this.state.location); } } }, { key: 'pruneAssetClasses', value: function pruneAssetClasses() { // Based on the current location, iterate asset tabs // and display only those applicable var availableAssetClasses = assetClasses[this.state.location]; var allTabs = document.querySelectorAll('.product-selector__tab'); Array.prototype.forEach.call(this.assetClassTabs, function (assetClassTab) { if (availableAssetClasses.indexOf(assetClassTab.dataset.assetClass) >= 0) { assetClassTab.className = 'product-selector__tab'; } else { assetClassTab.className = 'product-selector__tab is-hidden'; } }); } }, { key: 'highlightAssetClassTab', value: function highlightAssetClassTab(assetClass) { // Based on a given assetClass, find and highlight the appropriate tab Array.prototype.forEach.call(this.assetClassTabs, function (assetClassTab) { if (assetClassTab.dataset.assetClass == assetClass) { assetClassTab.className = 'product-selector__tab is-selected'; } else if (assetClassTab.className != 'product-selector__tab is-hidden') { assetClassTab.className = 'product-selector__tab'; } }); } }, { key: 'selectAssetClass', value: function selectAssetClass(newAssetClass) { this.state.assetClass = newAssetClass; this.highlightAssetClassTab(newAssetClass); this.pruneCategories(); this.selectCategory(categories[this.state.location + '-' + this.state.assetClass][0]); } }, { key: 'pruneCategories', value: function pruneCategories() { // Based on the current asset class, iterate category buttons // and display only those applicable var availableCategories = categories[this.state.location + '-' + this.state.assetClass]; Array.prototype.forEach.call(this.productButtons, function (productButton) { if (availableCategories.indexOf(productButton.dataset.productCategory) >= 0) { productButton.className = 'product-selector__button'; } else { productButton.className = 'product-selector__button is-hidden'; } }); } }, { key: 'highlightProductButton', value: function highlightProductButton(productCategory) { Array.prototype.forEach.call(this.productButtons, function (productButton) { if (productButton.dataset.productCategory == productCategory) { productButton.className = 'product-selector__button is-selected'; } else if (productButton.className != 'product-selector__button is-hidden') { productButton.className = 'product-selector__button'; } }); } }, { key: 'selectCategory', value: function selectCategory(newCategory) { this.state.category = newCategory; this.highlightProductButton(newCategory); window.requestAnimationFrame(this.updateContent.bind(this)); } }, { key: 'updateContent', value: function updateContent() { var _this2 = this; var productCode = this.state.location + '-' + this.state.assetClass + '-' + this.state.category; var contentNodes = document.querySelectorAll('.product-templates > [data-product-code=' + productCode + ']'); var disclaimerNodes = document.querySelectorAll('.disclaimer-templates > [data-product-code=' + productCode + ']'); if (!disclaimerNodes.length) { disclaimerNodes = document.querySelectorAll('.disclaimer-templates > [data-product-code=' + this.state.location + ']'); } this.contentContainer.innerHTML = ''; Array.prototype.forEach.call(contentNodes, function (node) { var clone = node.cloneNode(true); _this2.contentContainer.appendChild(clone); }); // this.disclaimerContentContainer.innerHTML = ''; // Array.prototype.forEach.call(disclaimerNodes, node => { // const clone = node.cloneNode(true); // this.disclaimerContentContainer.appendChild(clone); // }); // Product content animations sr.reveal('.product-content .product-header__title'); sr.reveal('.product-content .product-header__description'); sr.reveal('.product-content .featured-strategies__column', 200); sr.reveal('.product-content .equity__management-styles'); sr.reveal('.product-content .equity__footnote'); sr.reveal('.product-content .product-table'); sr.reveal('.product-content .fixed-income__chart__management-styles'); sr.reveal('.product-content .fixed-income__chart__fixed-income-capabilities', { delay: 200 }); sr.reveal('.product-content .cash-liquidity-solutions__column', 200); sr.reveal('.product-content .real-assets__column', 200); sr.reveal('.product-content .product__more-link'); } }]); return ProductLauncher; }(); exports.default = ProductLauncher; /***/ }), /* 15 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var ThemeGraphTabs = function () { function ThemeGraphTabs() { var _this = this; _classCallCheck(this, ThemeGraphTabs); this.tabs = document.querySelectorAll('.themes__modal-item__chart__tab'); Array.prototype.forEach.call(this.tabs, function (tab) { tab.addEventListener('click', function (e) { return _this.onClick(e, tab); }); }); } _createClass(ThemeGraphTabs, [{ key: 'onClick', value: function onClick(e, tab) { e.preventDefault(); var tabNumber = tab.dataset.chartTab; var chartContents = document.querySelectorAll('[data-theme-chart-content]'); var chartContent = document.querySelector('[data-theme-chart-content=\'' + tabNumber + '\']'); // Reset all content blocks to invisible Array.prototype.forEach.call(chartContents, function (chart) { chart.style.display = 'none'; }); // Reset all tabs to inactive Array.prototype.forEach.call(this.tabs, function (tab) { tab.className = 'themes__modal-item__chart__tab'; }); // Display selected content and set active tab tab.className = 'themes__modal-item__chart__tab themes__modal-item__chart__tab--active'; chartContent.style.display = 'block'; } }]); return ThemeGraphTabs; }(); exports.default = ThemeGraphTabs; /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Matrices = function () { function Matrices() { _classCallCheck(this, Matrices); if (typeof $ == "undefined" || !document.querySelector(".matrices-page")) { return; } var fixedColumns = 7; var defaultTooltipTitle = "CORRELATING ASSET TYPE:"; var table = $("#table-matrices").DataTable({ paging: false, ordering: false, searching: false, scrollX: true, info: false, autoWidth: false, initComplete: function initComplete(settings, json) { mergeColSpan(); fixColumns(this); setTableOffset(); scrollTableBody(); $("#table-matrices").delay(500).css({ opacity: "1" }); $(".DTFC_ScrollWrapper").delay(500).css({ opacity: "1" }); $(".matrices__loading").delay(500).css({ opacity: "0" }); } }); function safari() { var isSafari = navigator.vendor && navigator.vendor.indexOf("Apple") > -1 && navigator.userAgent && navigator.userAgent.indexOf("CriOS") == -1 && navigator.userAgent.indexOf("FxiOS") == -1; return isSafari; } function scrollTableBody() { var paginateBtnWrapper = document.createElement("div"); var tableScollBody = document.querySelector(".dataTables_scrollBody"); var tableBody = document.querySelector(".dataTables_wrapper"); // Create Scroll buttons var paginateBtnRight = document.createElement("button"); var paginateBtnLeft = document.createElement("button"); // Append pagination wrapper to table body paginateBtnWrapper.classList.add("scroll-table-button--wrapper"); tableBody.appendChild(paginateBtnWrapper); var browserDimensions = 150; if (safari()) { browserDimensions = 70; } var matrixTable = document.querySelector(".DTFC_ScrollWrapper"); var matrixTableRect = matrixTable.getBoundingClientRect(); var matrixTableScrollBottomPosition = matrixTableRect.top + matrixTableRect.height + window.pageYOffset - window.innerHeight + browserDimensions; window.addEventListener("resize", function () { matrixTableRect = matrixTable.getBoundingClientRect(); matrixTableScrollBottomPosition = matrixTableRect.top + matrixTableRect.height + window.pageYOffset - window.innerHeight + browserDimensions; }); window.addEventListener("scroll", function () { if (window.pageYOffset >= matrixTableScrollBottomPosition) { paginateBtnWrapper.classList.add("scroll-table-button--wrapper-stick"); } else if (window.pageYOffset < matrixTableScrollBottomPosition) { paginateBtnWrapper.classList.remove("scroll-table-button--wrapper-stick"); } }); // Add some button style paginateBtnRight.innerText = "Scroll table right"; paginateBtnRight.classList.add("scroll-table-button--right"); paginateBtnWrapper.appendChild(paginateBtnRight); paginateBtnLeft.innerText = "Scroll table left"; paginateBtnLeft.classList.add("scroll-table-button--left", "inactive"); paginateBtnLeft.setAttribute("aria-disabled", true); paginateBtnWrapper.appendChild(paginateBtnLeft); paginateBtnRight.addEventListener("click", function (e) { tableScollBody.scrollLeft += 250; paginateBtnLeft.classList.remove("inactive"); paginateBtnLeft.setAttribute("aria-disabled", false); // substract the length of the container. Like this we have the actual max scroll width. // if the actual max scroll of the container equals the scroll position, we can disable the button. if (tableScollBody.scrollWidth - tableScollBody.offsetWidth === tableScollBody.scrollLeft) { e.target.classList.add("inactive"); e.target.setAttribute("aria-disabled", true); } }); paginateBtnLeft.addEventListener("click", function (e) { tableScollBody.scrollLeft -= 250; paginateBtnRight.classList.remove("inactive"); paginateBtnRight.setAttribute("aria-disabled", false); if (tableScollBody.scrollLeft === 0) { // if we are all on the left e.target.classList.add("inactive"); e.target.setAttribute("aria-disabled", true); } }); } function mergeColSpan() { $("td[data-colspan]").each(function () { $(this).attr("colspan", $(this).data("colspan")); }); $("td[data-rowspan]").each(function () { $(this).attr("rowspan", $(this).data("rowspan")); }); } function fixColumns(table) { new $.fn.dataTable.FixedColumns(table, { leftColumns: fixedColumns, heightMatch: "none" }); } function setTableOffset() { return; var offset = $(".content--matrices:first").offset().left; $("#table-matrices_wrapper").css("width", "calc(100% - " + offset + "px)"); $("#table-matrices_wrapper").css("margin-left", offset + "px"); } $(window).resize(function () { setTableOffset(); }); $("table").on("mouseenter", "td", function () { $("table .highlight").removeClass("highlight"); if (!$(this).hasClass("no-highlight") && !$(this).parents().hasClass("no-highlight")) { var rowIndex = $(this).parents("tr").index() + 2; var totalRows = $(".DTFC_LeftBodyLiner table tr").length; var totalColumns = $("#table-matrices tr:last-child td").length; var colIdx = table.cell(this).index().column + 1; if (colIdx > 4) { var td = $("tr td:nth-child(" + colIdx + ").numbers"); var tooltipTitle = defaultTooltipTitle; if (td.data("tooltip-title")) { tooltipTitle = td.data("tooltip-title"); } $(".tablecell-tooltip").removeClass("hidden"); $(".tablecell-tooltip strong").html(tooltipTitle); $(".tablecell-tooltip span").html(td[0].innerText); // shorten width of tooltip on very last bottom right row // so that it stays in screen if (rowIndex === totalRows) { $(".tablecell-tooltip").css({ width: "120px" }); } else { $(".tablecell-tooltip").css({ width: "189px" }); } } else { $(".tablecell-tooltip").addClass("hidden"); } var colIndex = $(this).index(); if (colIdx > 3) { highlightItems($("table tr").find("td:eq(" + colIndex + ")")); } highlightItems($("table tr:eq(" + rowIndex + ") td")); highlightItems($(".DTFC_Cloned tr:eq(" + rowIndex + ") td")); } }); $("table").on("mouseleave", "td", function () { $(".tablecell-tooltip").addClass("hidden"); }); function highlightItems(items) { items.each(function () { if (!$(this).hasClass("no-highlight") && !$(this).parents().hasClass("no-highlight")) { $(this).addClass("highlight"); } }); } function checkZoomToggles() { var zoom = parseInt($("table").attr("data-zoom")); if (zoom == 3) { $(".zoom-toggle-in").addClass("disabled"); } else if (zoom == -2) { $(".zoom-toggle-out").addClass("disabled"); } else { $(".matrices-toggles .disabled").removeClass("disabled"); } } $(document).on("click", ".matrices-checkbox", function () { $(this).toggleClass("active"); $(this).attr("aria-checked", $(this).hasClass("active")); /* $("#errormsgs").html(""); if(!$(this).hasClass("active")) { $("#errormsgs").html("not checked"); } else { $("#errormsgs").html("checked"); }*/ if ($(this).data("type") == "fixed-income") { $("table tbody tr").slice(3, 26).toggleClass("filter-hidden"); $(".DTFC_Cloned tbody tr").slice(3, 26).toggleClass("filter-hidden"); $([8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]).each(function () { $("table tr td:nth-child(" + this + ")").toggleClass("filter-hidden"); }); } if ($(this).data("type") == "equity") { $("table tbody tr").slice(26, 38).toggleClass("filter-hidden"); $(".DTFC_Cloned tbody tr").slice(26, 38).toggleClass("filter-hidden"); $([31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42]).each(function () { $("table tr td:nth-child(" + this + ")").toggleClass("filter-hidden"); }); } if ($(this).data("type") == "real-assets") { $("table tbody tr").slice(38, 41).toggleClass("filter-hidden"); $(".DTFC_Cloned tbody tr").slice(38, 41).toggleClass("filter-hidden"); $([43, 44, 45]).each(function () { $("table tr td:nth-child(" + this + ")").toggleClass("filter-hidden"); }); } if ($(this).data("type") == "alternatives") { $("table tbody tr").slice(41, 43).toggleClass("filter-hidden"); $(".DTFC_Cloned tbody tr").slice(41, 43).toggleClass("filter-hidden"); $([46, 47]).each(function () { $("table tr td:nth-child(" + this + ")").toggleClass("filter-hidden"); }); } if ($(this).data("type") == "geometric-return") { $("table tr td:nth-child(5)").toggleClass("filter-hidden"); } if ($(this).data("type") == "arithmetic-return") { $("table tr td:nth-child(6)").toggleClass("filter-hidden"); } if ($(this).data("type") == "risk") { $("table tr td:nth-child(7)").toggleClass("filter-hidden"); } checkGlobalRow(); checkGlobalCol(); checkFiveYearCol(); }); function checkGlobalRow() { var equityHidden = $("table tr td:nth-child(31)").hasClass("filter-hidden"); var realAssetsHidden = $("table tr td:nth-child(43)").hasClass("filter-hidden"); var alternativesHidden = $("table tr td:nth-child(46)").hasClass("filter-hidden"); var equityGlobalRow = $(".equity-global-row"); var realAssetsGlobalRow = $(".real-assets-global-row"); var alternativesGlobalRow = $(".alternatives-global-row"); equityGlobalRow.addClass("hidden"); realAssetsGlobalRow.addClass("hidden"); alternativesGlobalRow.addClass("hidden"); if (equityHidden && realAssetsHidden && alternativesHidden) { // Do Nothing } else if (equityHidden && realAssetsHidden) { alternativesGlobalRow.attr("colspan", 2).removeClass("hidden"); } else if (equityHidden && alternativesHidden) { realAssetsGlobalRow.attr("colspan", 3).removeClass("hidden"); } else if (realAssetsHidden && alternativesHidden) { equityGlobalRow.attr("colspan", 1).removeClass("hidden"); } else if (equityHidden) { realAssetsGlobalRow.attr("colspan", 5).removeClass("hidden"); } else if (realAssetsHidden) { equityGlobalRow.attr("colspan", 3).removeClass("hidden"); } else if (alternativesHidden) { equityGlobalRow.attr("colspan", 4).removeClass("hidden"); } else { equityGlobalRow.attr("colspan", 6).removeClass("hidden"); } } function checkGlobalCol() { var equityHidden = $("table tr:nth-child(27)").hasClass("filter-hidden"); var realAssetsHidden = $("table tr:nth-child(39)").hasClass("filter-hidden"); var alternativesHidden = $("table tr:nth-child(42)").hasClass("filter-hidden"); var equityGlobalCol = $(".equity-global-col"); var realAssetsGlobalCol = $(".real-assets-global-col"); var alternativesGlobalCol = $(".alternatives-global-col"); equityGlobalCol.addClass("hidden"); realAssetsGlobalCol.addClass("hidden"); alternativesGlobalCol.addClass("hidden"); if (equityHidden && realAssetsHidden && alternativesHidden) { // Do Nothing } else if (equityHidden && realAssetsHidden) { alternativesGlobalCol.attr("rowspan", 2).removeClass("hidden"); } else if (equityHidden && alternativesHidden) { realAssetsGlobalCol.attr("rowspan", 3).removeClass("hidden"); } else if (realAssetsHidden && alternativesHidden) { equityGlobalCol.attr("rowspan", 1).removeClass("hidden"); } else if (equityHidden) { realAssetsGlobalCol.attr("rowspan", 5).removeClass("hidden"); } else if (realAssetsHidden) { equityGlobalCol.attr("rowspan", 3).removeClass("hidden"); } else if (alternativesHidden) { equityGlobalCol.attr("rowspan", 4).removeClass("hidden"); } else { equityGlobalCol.attr("rowspan", 6).removeClass("hidden"); } } function checkFiveYearCol() { var geometricReturnHidden = $("table tr td:nth-child(5)").hasClass("filter-hidden"); var arithmeticReturnHidden = $("table tr td:nth-child(6)").hasClass("filter-hidden"); var riskHidden = $("table tr td:nth-child(7)").hasClass("filter-hidden"); var geometricReturnCol = $(".geometric-return-five-year-col"); var arithmeticReturnCol = $(".arithmetic-return-five-year-col"); var riskCol = $(".risk-five-year-col"); geometricReturnCol.addClass("hidden"); arithmeticReturnCol.addClass("hidden"); riskCol.addClass("hidden"); if (geometricReturnHidden && arithmeticReturnHidden && riskHidden) { // Do Nothing } else if (geometricReturnHidden && arithmeticReturnHidden) { riskCol.attr("colspan", 1).removeClass("hidden"); } else if (geometricReturnHidden && riskHidden) { arithmeticReturnCol.attr("colspan", 1).removeClass("hidden"); } else if (arithmeticReturnHidden && riskHidden) { geometricReturnCol.attr("colspan", 1).removeClass("hidden"); } else if (geometricReturnHidden) { arithmeticReturnCol.attr("colspan", 2).removeClass("hidden"); } else if (arithmeticReturnHidden) { geometricReturnCol.attr("colspan", 2).removeClass("hidden"); } else if (riskHidden) { geometricReturnCol.attr("colspan", 2).removeClass("hidden"); } else { geometricReturnCol.attr("colspan", 3).removeClass("hidden"); } } this._bindEvents(); } _createClass(Matrices, [{ key: "_bindEvents", value: function _bindEvents() { $(document).on("click", ".selections-toggle-reset", function () { $(".matrices-checkbox:not(.active)").click(); }); $(".matrices-selections .control").on("click", function () { $(this).parent().toggleClass("collapsed"); }); $("table").on("click", "td", function () { if (!$(this).hasClass("no-highlight") && !$(this).parents().hasClass("no-highlight")) { $(this).toggleClass("clicked"); } }); $(document).bind("mousemove", function (e) { $(".tablecell-tooltip").css({ left: e.pageX - 94, top: e.pageY + 25 }); }); $(document).on("click", ".zoom-toggle-in", function () { var zoom = parseInt($("table").attr("data-zoom")); if (zoom < 3) { $("table").attr("data-zoom", zoom + 1); } }); $(document).on("click", ".zoom-toggle-out", function () { var zoom = parseInt($("table").attr("data-zoom")); if (zoom > -2) { $("table").attr("data-zoom", zoom - 1); } }); $(document).on("click", ".zoom-toggle-reset", function () { $("table").attr("data-zoom", 0); }); $(document).on("click", ".matrices-toggles a", function () { checkZoomToggles(); }); } }]); return Matrices; }(); exports.default = Matrices; /***/ }), /* 17 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Track = function () { function Track() { _classCallCheck(this, Track); this.internal = this.internal.bind(this); this.external = this.external.bind(this); this.page = this.page.bind(this); this.appendParametersAndGo = this.appendParametersAndGo.bind(this); this.hiddenDLVElement = document.querySelector('.hidden-dlv-element'); } _createClass(Track, [{ key: 'internal', value: function internal(category, action, label) { var trackerName = ga.getAll()[0].get('name'); if (trackerName) { ga(trackerName + '.send', 'event', { 'eventCategory': category, 'eventAction': action, 'eventLabel': label, 'eventValue': 1, 'transport': 'beacon', 'hitCallback': function hitCallback() {} }); } if (category == 'PDF Downloads') { window.uetq = window.uetq || []; window.uetq.push({ 'ec': 'PDF Downloads', 'ea': 'Click', 'el': label, 'ev': '1' }); } } }, { key: 'external', value: function external(category, action, label, url) { var newWindow = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; if (url) { var trackerName = ga.getAll()[0].get('name'); var eventLabel = label || url; if (trackerName) { ga(trackerName + '.send', 'event', { 'eventCategory': category, 'eventAction': action, 'eventLabel': eventLabel, 'eventValue': 1, 'transport': 'beacon', 'hitCallback': function hitCallback() { if (newWindow) { window.open(url + document.location.search); } else { document.location = url + document.location.search; } } }); } window.uetq = window.uetq || []; window.uetq.push({ 'ec': 'External Link', 'ea': 'Click', 'el': eventLabel, 'ev': '1' }); } } }, { key: 'clickDLVElement', value: function clickDLVElement(cat, label) { /** use this method to send custom click events though an invisible element **/ if (!this.hiddenDLVElement || !this.hiddenDLVElement.length) { this.hiddenDLVElement = document.createElement('a'); this.hiddenDLVElement.style.position = "absolute"; this.hiddenDLVElement.style.top = "-1000px"; document.body.appendChild(this.hiddenDLVElement); } this.hiddenDLVElement.setAttribute('data-uacategory', cat); this.hiddenDLVElement.setAttribute('data-ualabel', label); this.hiddenDLVElement.click(); } }, { key: 'page', value: function page(path) { var trackerName = ga.getAll()[0].get('name'); if (trackerName && path) { ga(trackerName + '.send', 'pageview', path); } } }, { key: 'appendParametersAndGo', value: function appendParametersAndGo(url) { var newWindow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; if (newWindow) { window.open(url + document.location.search); } else { document.location = url + document.location.search; } } }]); return Track; }(); exports.default = Track; /***/ }), /* 18 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /* Accessibility additional script */ /* Product page variables */ var opensAnewWindow = " Opens a new window"; var opensAModal = " Opens a modal"; var productsVariables = { byclassname: [{ name: "footer-social__link", type: "sr-only", textvalue: opensAnewWindow }, { name: "KeyEquityFactor", type: "aria-label", textvalue: "key equity factors" }, { name: "Decorative", type: "alt", textvalue: "" }, { name: "LearnMoreqe-factors-quality", type: "aria-label", textvalue: "Learn more about Q E Factors Quality Opens a modal popup" }, { name: "LearnMoreqe-factors-value", type: "aria-label", textvalue: "Learn more about Q E Factors Value Opens a modal popup" }, { name: "LearnMoreqe-factors-volatility", type: "aria-label", textvalue: "Learn more about Q E Factors velocity Opens a modal popup" }, { name: "LearnMoreqe-factors-yield", type: "aria-label", textvalue: "Learn more about Q E Factors yield Opens a modal popup" }, { name: "LearnMoreqe-factors-momentum", type: "aria-label", textvalue: "Learn more about Q E Factors momentum Opens a modal popup" }, { name: "LearnMoreqe-factors-size", type: "aria-label", textvalue: "Learn more about Q E Factors size Opens a modal popup" }, { name: "OpensANewBlankWindow", type: "sr-only", textvalue: "Opens a new window" }, { name: "MoreOnProductsModal", type: "sr-only", textvalue: "Opens a modal popup" }, { name: "MoreOnProductsLink", type: "sr-only", textvalue: "Opens a new window" }, { name: "GraphFixedIncome", type: "innerText", textvalue: "\n\t\t\t\t
Starting on the left side bottom of the graph continuing to the right go the top side of the graph
\n\t\t\t\tHigh quality securities structured to preserve principle, generate income and provide daily liquidity.
\n\t\t\t\t\tTotal Return Portfolio invested in high quality instruments overnight to five years.
\n\t\t\t\t\tTotal Return Portfolio focusing on sector allocation, security selection and duration/yield curve management.
\n\t\t\t\t\tTotal Return Portfolio focusing on high yield bonds.
\n\t\t\t\t\tConstructive fundamentals and stable valuations should result in mid-to-upper-single digit total return.\n\t\t\t\t
\n\t\t\t\tGraph depicting coupon interest rate from different countries
\n\t\t\t\tCountry\n\t\t\t\t\t\t\t | Revenue Percentage | \n\t\t\t\t\t\t\tProfit Translation Percentage | \n\t\t\t\t\t\t\tValue Percentage | \n\t\t\t\t\t\t\tDividend Percentage | \n\t\t\t\t\t\t\tTotal Return Percentage | \n\t\t\t\t\t\t
---|---|---|---|---|---|
United States | \n\t\t\t\t\t\t\t4.2 | \n\t\t\t\t\t\t\t0.7 | \n\t\t\t\t\t\t\t1.9 | \n\t\t\t\t\t\t\t-1 | \n\t\t\t\t\t\t\t5.8 | \n\t\t\t\t\t\t
Europe | \n\t\t\t\t\t\t\t4.3 | \n\t\t\t\t\t\t\t3.2 | \n\t\t\t\t\t\t\t-0.8 | \n\t\t\t\t\t\t\t-0.5 | \n\t\t\t\t\t\t\t6.3 | \n\t\t\t\t\t\t
Japan | \n\t\t\t\t\t\t\t2.9 | \n\t\t\t\t\t\t\t0.2 | \n\t\t\t\t\t\t\t0.6 | \n\t\t\t\t\t\t\t2.1 | \n\t\t\t\t\t\t\t6 | \n\t\t\t\t\t\t
United Kingdome | \n\t\t\t\t\t\t\t4.2 | \n\t\t\t\t\t\t\t4.2 | \n\t\t\t\t\t\t\t-1.2 | \n\t\t\t\t\t\t\t-1 | \n\t\t\t\t\t\t\t6.3 | \n\t\t\t\t\t\t
Emerging Markets | \n\t\t\t\t\t\t\t6.9 | \n\t\t\t\t\t\t\t1.1 | \n\t\t\t\t\t\t\t2.4 | \n\t\t\t\t\t\t\t-2.2 | \n\t\t\t\t\t\t\t8.3 | \n\t\t\t\t\t\t
Cumulative growth percentage at 75% in November 1982
\n\t\t\t\tCumulative growth percentage at 74% in March 1991
\n\t\t\t\tCumulative growth percentage at 38% in November 2001
\n\t\t\t\tCumulative growth percentage at 41% in June 2009 adding cumulative growth for the 5 years after June 2009 at 3.8% adds 29% to the cumulative growth making the cumulative growth from June 2009 to June 2014 at 70%.
\n\t\t\t" }, { name: "GraphThemes2", type: "innerText", textvalue: "\n\t\t\tJapan Cumulative inflation -20.4%
\n\t\t\tEurope Cumulative inflation -10.2%
\n\t\t\tU.S. Cumulative inflation -5.8%
\n\t\t\tCanada Cumulative inflation -4%
\n\t\t\tU.K. Cumulative inflation .7%
\n\t\t\tAustralia Cumulative inflation 3.1%
" }, { name: "GraphThemes3", type: "innerText", textvalue: "\n\t\t\tChart showing federal funds rate percentage at a little over 8% as of December 1989
\n\t\t\tdropping to about 3% in December 1993 going up to just under 6% as of December 1997
\n\t\t\tdropping to just over 1% in December 2001 raising to just under 6% as of December 2005
\n\t\t\tdropping to just over 0% from December 2009 through December 2013 and raising to 2% as of June 2018
" }, { name: "GraphThemes4", type: "innerText", textvalue: "\n\t\t\tNYC | \n\t\t\t\t\t\tSydney | \n\t\t\t\t\t\tTokyo | \n\t\t\t\t\t\tLondon | \n\t\t\t\t\t\tToronto | \n\t\t\t\t\t\tParis | \n\t\t\t\t\t\tMoscow | \n\t\t\t\t\t\tBerlin | \n\t\t\t\t\t
---|---|---|---|---|---|---|---|
306 | \n\t\t\t\t\t\t240 | \n\t\t\t\t\t\t220 | \n\t\t\t\t\t\t217 | \n\t\t\t\t\t\t193 | \n\t\t\t\t\t\t167 | \n\t\t\t\t\t\t118 | \n\t\t\t\t\t\t114 | \n\t\t\t\t\t
187 | \n\t\t\t\t\t\t191 | \n\t\t\t\t\t\t93 | \n\t\t\t\t\t\t179 | \n\t\t\t\t\t\t114 | \n\t\t\t\t\t\t110 | \n\t\t\t\t\t\t65 | \n\t\t\t\t\t\t92 | \n\t\t\t\t\t
Year | \n\t\t\t\t\t\t\tGlobal Trade (% of Gross Domestic Product) | \n\t\t\t\t\t\t
---|---|
1960 | \n\t\t\t\t\t\t\t24% | \n\t\t\t\t\t\t
1970 | \n\t\t\t\t\t\t\tAbout 30% | \n\t\t\t\t\t\t
1980 | \n\t\t\t\t\t\t\tAbout 35% | \n\t\t\t\t\t\t
1990 | \n\t\t\t\t\t\t\tAbout 40% | \n\t\t\t\t\t\t
2000 | \n\t\t\t\t\t\t\tAbout 48% | \n\t\t\t\t\t\t
2010 | \n\t\t\t\t\t\t\tAbout 55% | \n\t\t\t\t\t\t
2017 | \n\t\t\t\t\t\t\t57% | \n\t\t\t\t\t\t
Leader/Country | \n\t\t\t\t\t\t\tGlobal Trade (% of Gross Domestic Product) | \n\t\t\t\t\t\t
---|---|
Putin- Russia | \n\t\t\t\t\t\t\t72% | \n\t\t\t\t\t\t
Orban-Hungary | \n\t\t\t\t\t\t\t59% | \n\t\t\t\t\t\t
Abe-Japan | \n\t\t\t\t\t\t\t52% | \n\t\t\t\t\t\t
Merkel-Germany | \n\t\t\t\t\t\t\t50% | \n\t\t\t\t\t\t
Trudeau - Canada | \n\t\t\t\t\t\t\t50% | \n\t\t\t\t\t\t
Erdogan - Turkey | \n\t\t\t\t\t\t\t46% | \n\t\t\t\t\t\t
Turnbull-Australia | \n\t\t\t\t\t\t\t46% | \n\t\t\t\t\t\t
Trump - U.S. | \n\t\t\t\t\t\t\t42% | \n\t\t\t\t\t\t
Macron - France | \n\t\t\t\t\t\t\t40% | \n\t\t\t\t\t\t
May - U.K. | \n\t\t\t\t\t\t\t34% | \n\t\t\t\t\t\t
Higher interest rates will occur gradually and have been priced in across most regions
\n\t\t\t\tGraph depicting coupon interest rate from different countries
\n\t\t\t\tCountry | \n\t\t\t\t\t\t\tCoupon Return Percentage | \n\t\t\t\t\t\t\tPrice/reinvestment return percentage | \n\t\t\t\t\t\t\tTotal Return Percentage | \n\t\t\t\t\t\t
---|---|---|---|
United States | \n\t\t\t\t\t\t\t3.3 | \n\t\t\t\t\t\t\t0.3 | \n\t\t\t\t\t\t\t3.6 | \n\t\t\t\t\t\t
Europe | \n\t\t\t\t\t\t\t0.7 | \n\t\t\t\t\t\t\t1.1 | \n\t\t\t\t\t\t\t1.8 | \n\t\t\t\t\t\t
Japan | \n\t\t\t\t\t\t\t0.2 | \n\t\t\t\t\t\t\t0.3 | \n\t\t\t\t\t\t\t0.5 | \n\t\t\t\t\t\t
United Kingdome | \n\t\t\t\t\t\t\t1.7 | \n\t\t\t\t\t\t\t0.8 | \n\t\t\t\t\t\t\t2.5 | \n\t\t\t\t\t\t
Canada | \n\t\t\t\t\t\t\t2.5 | \n\t\t\t\t\t\t\t0.4 | \n\t\t\t\t\t\t\t2.9 | \n\t\t\t\t\t\t
Australia | \n\t\t\t\t\t\t\t2.5 | \n\t\t\t\t\t\t\t1 | \n\t\t\t\t\t\t\t3.5 | \n\t\t\t\t\t\t
Global HY | \n\t\t\t\t\t\t\t-0.9 | \n\t\t\t\t\t\t\t6.5 | \n\t\t\t\t\t\t\t4.6 | \n\t\t\t\t\t\t
Graph depicting Natural resources and Global listed Infrastructure do a better job of outpacing high inflation over fixed income, global equities, TIPS, Future-based Commodities and Global Real Estate.
" }, { name: "HomepageDynamicGraph", type: "innerText", textvalue: "\n\t\t\t\tThe detail of the graph
\n\t\t\t" }, { name: "MoreThemesModal", type: "sr-only", textvalue: "This button opens a new Modal" }, { name: "MoreThemesLink", type: "sr-only", textvalue: "This button opens a new window" }, { name: "MoreAssetsClassLink", type: "sr-only", textvalue: "Opens a new window" }, { name: "MoreAssetsClassModal", type: "sr-only", textvalue: "Opens a new modal window" }, /* { name : "themes__list-item__learn-more", type : "sr-only", textvalue : "opens a new modal window" },*/ { name: "learnmore1", type: "sr-only", textvalue: "opens a new modal window for Mild Growth Myopia" }, { name: "learnmore2", type: "sr-only", textvalue: "opens a new modal window for Stuckflation" }, { name: "learnmore3", type: "sr-only", textvalue: "opens a new modal window for Pass/Fail Monetarism" }, { name: "learnmore4", type: "sr-only", textvalue: "opens a new modal window for Technology Slowzone" }, { name: "learnmore5", type: "sr-only", textvalue: "opens a new modal window for Global (Re)Positioning System" }, { name: "learnmore6", type: "sr-only", textvalue: "opens a new modal window for Executive Power Drive" }, { name: "Key6ThemesOrder1", type: "aria-label", textvalue: "Mild Growth Myopia" }, { name: "Key6ThemesOrder2", type: "aria-label", textvalue: "Stuckflation" }, { name: "Key6ThemesOrder3", type: "aria-label", textvalue: "Pass/Fail Monetarism" }, { name: "Key6ThemesOrder4", type: "aria-label", textvalue: "Technology Slowzone" }, { name: "Key6ThemesOrder5", type: "aria-label", textvalue: "Global (Re)Positioning System" }, { name: "Key6ThemesOrder6", type: "aria-label", textvalue: "Executive Power Drive" }, { name: "themes__modal__previous-button", type: "aria-label", textvalue: "Previous Theme" }, { name: "themes__modal__next-button", type: "aria-label", textvalue: "Next Theme" }, { name: "FindASolution", type: "sr-only", textvalue: "This link will open a new page in the same window" }, { name: "MatricesFooterLinkGroup", type: "sr-only", textvalue: "Link opens a new window" }, { name: "FooterUCITS", type: "title", textvalue: "Undertakings for Collective Investments in Transferable Securities" }] }; /* Year page variables */ var yearVariables = { byclassname: [{ name: "footer-social__link", type: "sr-only", textvalue: opensAnewWindow }, { name: "Decorative", type: "alt", textvalue: "" }, { name: "AllocationRecomendationsButton", type: "sr-only", textvalue: "This button opens a modal window and dowenloads a P D F document related to Allocation remommendations" }, { name: "1YearDownloadLatestPerspective", type: "sr-only", textvalue: "This button opens a modal window and dowenloads a P D F document related to our latest perspective" }, { name: "1YearMarketscapeVideoIFrame", type: "alt", textvalue: "This is an iframe holding a video for the fourth quarter sell-off in financial markets." }, { name: "view2018Edition5YearOutlookLink", type: "sr-only", textvalue: "This link will open a new page in the same window" }, { name: "MoreAssetClassInsightsLink", type: "sr-only", textvalue: "This link will open a new page in the next tab" }, { name: "BondsHeldUpOKWileRiskAssetsOutsideTheUSDidNot", type: "innerText", textvalue: "\n\t\t\t\tThis is a symantic chart description.
\n\t\t\t\tActual description awaited from client.
\n\t\t\t" }, /* { name : "Key6ThemesOrder1", type : "alt", textvalue : "MILD GROWTH MYOPIA" }, { name : "Key6ThemesOrder2", type : "alt", textvalue : "STUCKFLATION" }, { name : "Key6ThemesOrder3", type : "alt", textvalue : "PASS/FAIL MONETARISM" }, { name : "Key6ThemesOrder4", type : "alt", textvalue : "TECHNOLOGY SLOWZONE" }, { name : "Key6ThemesOrder5", type : "alt", textvalue : "GLOBAL (RE)POSITIONING SYSTEM" }, { name : "Key6ThemesOrder6", type : "alt", textvalue : "EXECUTIVE POWER DRIVE" },*/ { name: "MoreOnOurAssetClassInsights", type: "", textvalue: "" }, { name: "ViewThe2018Edition5-YearOutlook", type: "sr-only", textvalue: "This button will open a new page in the same window" }, { name: "FindASolution", type: "sr-only", textvalue: "This button will open a new page in the same window" }, { name: "WhatShouldInvestorsExpectin2019", type: "sr-only", textvalue: "This link will open a new page in the same window" }, { name: "1YearDownloadLatestPerspectiveLink", type: "sr-only", textvalue: "This link opens a modal window and dowenloads a P D F document related our latest perspective" }, { name: "MoreAssetsClassLink", type: "sr-only", textvalue: "Opens a new window" }, { name: "MatricesFooterLinkGroup", type: "sr-only", textvalue: "Link opens a new window" }, { name: "FooterUCITS", type: "title", textvalue: "Undertakings for Collective Investments in Transferable Securities" }] }; /* Matrices page variables */ var matricesVariables = { byclassname: [{ name: "footer-social__link", type: "sr-only", textvalue: opensAnewWindow }, { name: "DownloadExcelMatrices", type: "sr-only", textvalue: "This button downloads an excel file to your system" }, { name: "ZoomResetMatrices", type: "aria-label", textvalue: "Reset zoom" }, { name: "ZoomOutMatrices", type: "aria-label", textvalue: "Zoom out, zooms out the table" }, { name: "ZoomInMatrices", type: "aria-label", textvalue: "Zoom in, zooms in the table" }, { name: "ResetMatrices", type: "aria-label", textvalue: "Reset selections, resets to the default view" }, { name: "ToggleForcastFilters", type: "sr-only", textvalue: "Toggle Forcast Filters" }, { name: "ToggleAssetClassFilters", type: "sr-only", textvalue: "Toggle Asset Class Filters" }, { name: "MatricesFooterLinkGroup", type: "sr-only", textvalue: "Link opens a new window" }, { name: "FooterUCITS", type: "title", textvalue: "Undertakings for Collective Investments in Transferable Securities" }] }; var prodVidClicked; /* Accessibility class provides the functionalities for focus, arialabels as well as restricted taborder */ var Accessibility = function () { function Accessibility() { _classCallCheck(this, Accessibility); this.whichButtonClickedToOpenModal = undefined; this.lang = "en"; this.screenReaderVariables = {}; } _createClass(Accessibility, [{ key: "setInvisible", value: function setInvisible(elementsel) { try { var ariaAlreadyHidden = elementsel.getAttribute("aria-hidden"); var elementTabIndex = elementsel.getAttribute("tabindex"); var tabIndexAlreadyNeg = false; if (0 == parseInt(elementTabIndex) || -1 == parseInt(elementTabIndex)) { tabIndexAlreadyNeg = -1 == parseInt(elementTabIndex); var elemClasslist = elementsel.classList; var havetabindex = false; if (null != elemClasslist) { havetabindex = elemClasslist.contains("tabindex"); } else { havetabindex = false; } if (havetabindex) { elementsel.setAttribute("data-tabindex", elementTabIndex); } } if (!ariaAlreadyHidden && !tabIndexAlreadyNeg) { elementsel.setAttribute("tabindex", -111); elementsel.setAttribute("aria-hidden", true); elementsel.setAttribute("data-hidden", true); } } catch (e) { console.warn(e); } } }, { key: "setVisible", value: function setVisible(elementsel) { try { var dataHidden = elementsel.getAttribute("data-hidden"); var elementTabIndex = elementsel.getAttribute("data-tabindex"); if (dataHidden) { if (null != elementTabIndex) { elementsel.setAttribute("tabindex", elementTabIndex); elementsel.removeAttribute("data-tabindex"); } else { elementsel.removeAttribute("tabindex"); } elementsel.removeAttribute("aria-hidden"); elementsel.removeAttribute("data-hidden"); } } catch (e) { console.warn(e); } } }, { key: "getAllElements", value: function getAllElements() { var tabindexes = document.getElementsByClassName("tabindex"); var inputs = document.getElementsByTagName("input"); var links = document.getElementsByTagName("a"); var buttons = document.getElementsByTagName("button"); var iframes = document.getElementsByTagName("iframe"); return { "tabindexes": tabindexes, "inputs": inputs, "links": links, "buttons": buttons, "iframes": iframes }; } }, { key: "allAccessable", value: function allAccessable(focusCallBackFn) { var elmn = this.getAllElements(); var tabindexes = elmn.tabindexes; var inputs = elmn.inputs; var links = elmn.links; var buttons = elmn.buttons; var iframes = elmn.iframes; for (var find in iframes) { if ("object" == _typeof(iframes[find])) { this.setVisible(iframes[find]); } } for (var bind in buttons) { if ("object" == _typeof(buttons[bind])) { this.setVisible(buttons[bind]); } } for (var lind in links) { if ("object" == _typeof(links[lind])) { this.setVisible(links[lind]); } } for (var iind in inputs) { if ("object" == _typeof(inputs[iind])) { this.setVisible(inputs[iind]); } } for (var tind in tabindexes) { if ("object" == _typeof(tabindexes[tind])) { this.setVisible(tabindexes[tind]); } } focusCallBackFn(); } }, { key: "allInaccessable", value: function allInaccessable(callbackFn) { var elmn = this.getAllElements(); var tabindexes = elmn.tabindexes; var inputs = elmn.inputs; var links = elmn.links; var buttons = elmn.buttons; var iframes = elmn.iframes; for (var find in iframes) { if ("object" == _typeof(iframes[find])) { this.setInvisible(iframes[find]); } } for (var bind in buttons) { if ("object" == _typeof(buttons[bind])) { this.setInvisible(buttons[bind]); } } for (var lind in links) { if ("object" == _typeof(links[lind])) { this.setInvisible(links[lind]); } } for (var iind in inputs) { if ("object" == _typeof(inputs[iind])) { this.setInvisible(inputs[iind]); } } for (var tind in tabindexes) { if ("object" == _typeof(tabindexes[tind])) { this.setInvisible(tabindexes[tind]); } } callbackFn(); } }, { key: "modalShown", value: function modalShown(modalData) { var moData = modalData; // console.log("In the big: modal is open and the focus should still go to ", this.whichButtonClickedToOpenModal); // console.log("moData.modal_parent ", moData.modal_parent); this.allInaccessable(function () { document.querySelector(moData.modal_parent).focus(); document.querySelector(moData.modal_parent).removeAttribute("aria-hidden"); /* if there is no children provided then */ if (moData.modal_children.length > 0) { var firstElement = moData.modal_children[0]; var lastElement = moData.modal_children[moData.modal_children.length - 1]; for (var ind in moData.modal_children) { var child = document.querySelector(moData.modal_parent + " " + moData.modal_children[ind]); if (null != child) { var childClassList = child.classList; var childTabbable = true; if (null != childClassList) { childTabbable = !childClassList.contains("notab"); } if (childTabbable) { child.setAttribute("tabindex", 0); } else { child.removeAttribute("tabindex"); } child.removeAttribute("aria-hidden"); child.removeAttribute("data-hidden"); } } if (null != document.querySelector(moData.modal_parent + " " + firstElement)) { document.querySelector(moData.modal_parent + " " + firstElement).addEventListener("keydown", function (e) { if (e.shiftKey && 9 == e.keyCode) { e.preventDefault(); e.stopPropagation(); // console.log(moData.modal_parent+" "+lastElement); document.querySelector(moData.modal_parent + " " + lastElement).focus(); } if (moData.modal_children.length == 2 && !e.shiftKey && 9 == e.keyCode) { e.preventDefault(); e.stopPropagation(); document.querySelector(moData.modal_parent + " " + lastElement).focus(); } }); } if (null != document.querySelector(moData.modal_parent + " " + lastElement)) { document.querySelector(moData.modal_parent + " " + lastElement).addEventListener("keydown", function (e) { if (!e.shiftKey && 9 == e.keyCode) { e.preventDefault(); e.stopPropagation(); document.querySelector(moData.modal_parent + " " + firstElement).focus(); } }); } } }); // console.log("modal is open and the focus should still go to ", this.whichButtonClickedToOpenModal); this.formvalidationAria(); } }, { key: "formvalidationAria", value: function formvalidationAria() { var submitButton = document.getElementsByClassName("mktoButton")[0]; var astrix = document.getElementsByClassName("mktoAsterix"); if (document.getElementById("errormsgs")) { document.getElementById("errormsgs").innerHTML = ""; } try { var that = this; submitButton.addEventListener("keydown", function (event) { setTimeout(function () { that.bindEventWithSubmit(); }, 100); }); if (!!astrix && astrix.length > 0) { for (var ax = 0; ax < astrix.length; ax++) { astrix[ax].setAttribute("aria-hidden", true); } } submitButton.addEventListener("click", function (event) { setTimeout(function () { that.bindEventWithSubmit(); }, 100); }); } catch (e) {} } }, { key: "bindEventWithSubmit", value: function bindEventWithSubmit() { try { var errMsgElem = document.getElementsByClassName("mktoErrorMsg")[0]; var elementHavingError = errMsgElem.parentElement.parentElement.children[2].getAttribute("aria-label"); var msgs = elementHavingError + ": " + errMsgElem.innerHTML; document.getElementById("errormsgs").innerHTML = msgs; } catch (e) { // console.log("WARN: the form is submitted!"); document.getElementById("errormsgs").innerHTML = ""; } } }, { key: "modalHidden", value: function modalHidden(modalData, toFocus) { var moData = modalData; var firstElement = moData.modal_children[0]; var lastElement = moData.modal_children[moData.modal_children.length - 1]; // console.log("modal is closing now", this.whichButtonClickedToOpenModal); if (undefined != toFocus) { // console.log("moving focus to ", toFocus); toFocus.focus(); } else if (undefined !== this.whichButtonClickedToOpenModal) { this.whichButtonClickedToOpenModal.focus(); this.whichButtonClickedToOpenModal = undefined; screen.currentselectedElement = undefined; } else { if (prodVidClicked) { prodVidClicked.focus(); } } this.allAccessable(function () { document.querySelector(moData.modal_parent + " " + firstElement).removeEventListener("keydown", function (e) {}); document.querySelector(moData.modal_parent + " " + lastElement).removeEventListener("keydown", function (e) {}); document.getElementById("errormsgs").innerHTML = ""; // console.log("cleaning done!!"); }); } }, { key: "markAriaLabel", value: function markAriaLabel(fieldList) { for (var i = 0; i < fieldList.length; i++) { try { document.querySelector("#" + fieldList[i].id).setAttribute("aria-label", fieldList[i].label); } catch (e) { // console.warn("The form elements are not loaded or the form is already submitted once.", e); } } } }, { key: "markRequiredFields", value: function markRequiredFields(fieldList) { setTimeout(function () { for (var i = 0; i < fieldList.length; i++) { try { document.querySelector(fieldList[i]).setAttribute("aria-required", true); } catch (e) { // console.warn("The form elements are not loaded or the form is already submitted once.", e); } } }, 100); } }, { key: "toggelVisibility", value: function toggelVisibility(elmt, children, value) { elmt.setAttribute("aria-hidden", !value); for (var i = 0; i < children.length; i++) { var allchildren = document.querySelectorAll(children[i]); for (var a = 0; a < allchildren.length; a++) { var child = allchildren[a]; child.setAttribute("tabindex", value ? 0 : -1); } } } }, { key: "onDOMContentLoaded", value: function onDOMContentLoaded(lang) { this.lang = lang; var br = document.getElementsByTagName("br"); for (var i = 0; i < br.length; i++) { br[i].setAttribute("aria-hidden", true); br[i].setAttribute("tabindex", -1); br[i].classList.add("tabindex"); } this.ariaHiddenAllBlankPs(); this.productsPageClickableList("overlay-link"); this.elementsClickNFocus(); this.pageTitles(); this.removeTitlesFromLinks(); this.screenReaderTextVariables(); this.addAriaLiveHiddenDiv(); this.provideAltToImg(); window.onresize = function () { setTimeout(function () { PostRenderAlternatives(); }, 700); }; } }, { key: "tabControlSetup", value: function tabControlSetup(ProdutTabs, tabPanelId) { for (var i = 0; i < ProdutTabs.length; i++) { var tabpanelElem = document.querySelectorAll(ProdutTabs[i]); for (var t = 0; t < tabpanelElem.length; t++) { var tabpanelNode = tabpanelElem[t]; var tabpanelParent = tabpanelNode.parentNode; var tabParentChildren = tabpanelParent.children; var ulChildren = tabParentChildren[1].children; tabpanelNode.setAttribute("id", tabPanelId[i] + "_" + t); ulChildren[i].classList.add("tabindex"); ulChildren[i].setAttribute("tabindex", "0"); var aofli = ulChildren[i].children[0]; aofli.classList.add("tabindex"); aofli.setAttribute("tabindex", "-1"); aofli.setAttribute("aria-controls", tabPanelId[i] + "_" + t); /* Transferring the click event of li to the child link */ ulChildren[i].addEventListener("keydown", function (event) { if (event.keyCode == 13) { event.target.children[0].click(); } }); } } } }, { key: "provideAltToImg", value: function provideAltToImg(delay) { if (undefined == delay) { delay = 0; } setTimeout(function () { var images = document.getElementsByTagName("img"); for (var imagei = 0; imagei < images.length; imagei++) { var imageElem = images[imagei]; if (!imageElem.hasAttribute("alt")) { imageElem.setAttribute("alt", ""); } } }, delay); } }, { key: "ariaHiddenAllBlankPs", value: function ariaHiddenAllBlankPs() { var allPs = document.getElementsByTagName("p"); for (var pind = 0; pind < allPs.length; pind++) { var pElem = allPs[pind]; var textValue = pElem.innerHTML; if ("" == textValue) { pElem.setAttribute("aria-hidden", true); } } } }, { key: "AUMSuperscript", value: function AUMSuperscript(referanceLinkValue) { var supElem = document.getElementById("AUMSuperscript"); var supElemBck = document.getElementById("AUMback"); supElem.href = referanceLinkValue + "#AUMDescription"; supElemBck.href = referanceLinkValue + "#AUMSuperscript"; } }, { key: "addAriaLiveHiddenDiv", value: function addAriaLiveHiddenDiv() { var span = this.createSrOnlySpan([{ "name": "data-tabindex", "value": -1 }, { "name": "tabindex", "value": -1 }, { "name": "id", "value": "errormsgs" }, { "name": "aria-atomic", "value": true }, { "name": "aria-live", "value": "polite" }], ""); document.body.appendChild(span); } }, { key: "dynamicCommonSrOnly", value: function dynamicCommonSrOnly(classname, nodeText, removeExistingAlt) { var classContains = document.getElementsByClassName(classname); for (var i = 0; i < classContains.length; i++) { var parentElem = classContains[i]; if (removeExistingAlt) { parentElem.removeAttribute("alt"); } var span = this.createSrOnlySpan([], nodeText); parentElem.appendChild(span); } } }, { key: "addDescr", value: function addDescr(nodeSelector, nodeText) { document.querySelector(nodeSelector).setAttribute("aria-label", nodeText); } }, { key: "addlongdescr", value: function addlongdescr(nodeSelector, describedby, nodeText) { if (!describedby) { console.warn("Long description could not be added for " + nodeSelector + " as describedby id was not given. The description is added in the aria-label instead"); this.addDescr(nodeSelector, nodeText); } else { var parentElem = document.querySelector(nodeSelector); var span = this.createSrOnlySpan([{ "name": "id", "value": describedby }], nodeText); parentElem.prepend(span); } } }, { key: "addlongdescrClass", value: function addlongdescrClass(nodeSelector, describedby, nodeText) { if (!describedby) { console.warn("Long description could not be added for " + nodeSelector + " as describedby id was not given. The description is added in the aria-label instead"); this.addDescr(nodeSelector, nodeText); } else { var parentElem = document.getElementsByClassName(nodeSelector); console.log("Node selector >>> ", typeof parentElem === "undefined" ? "undefined" : _typeof(parentElem)); var span = this.createSrOnlySpan([{ "name": "id", "value": describedby }], nodeText); if ("object" == (typeof parentElem === "undefined" ? "undefined" : _typeof(parentElem))) { parentElem[0].prepend(span); } else { for (var pe = 0; pe < parentElem.length; pe++) { var child = parentElem[pe]; child.prepend(span); } } } } }, { key: "createSrOnlySpan", value: function createSrOnlySpan(attrs, nodeText) { var span = this.createNewSpan(attrs, nodeText, "sr-only"); return span; } }, { key: "createNewSpan", value: function createNewSpan(attrs, nodeText, classlist) { var span = document.createElement("span"); if (undefined != classlist && "" != classlist) { span.classList.add(classlist); } for (var i = 0; i < attrs.length; i++) { span.setAttribute(attrs[i].name, attrs[i].value); } span.textContent = nodeText; return span; } }, { key: "addAlt", value: function addAlt(nodeSelector, nodeText) { document.querySelector(nodeSelector).setAttribute("alt", nodeText); } }, { key: "addAltToClasses", value: function addAltToClasses(className, nodeText) { var nodes = document.getElementsByClassName(className); for (var i = 0; i < nodes.length; i++) { var currentClassObj = nodes[i]; currentClassObj.setAttribute("alt", nodeText); } } }, { key: "addTitleToClasses", value: function addTitleToClasses(className, nodeText) { var nodes = document.getElementsByClassName(className); for (var i = 0; i < nodes.length; i++) { var currentClassObj = nodes[i]; currentClassObj.setAttribute("title", nodeText); } } }, { key: "addAriaLabelToClasses", value: function addAriaLabelToClasses(className, nodeText) { var nodes = document.getElementsByClassName(className); for (var i = 0; i < nodes.length; i++) { var currentClassObj = nodes[i]; currentClassObj.setAttribute("aria-label", nodeText); } } }, { key: "addAbbrToClasses", value: function addAbbrToClasses(className, nodeText, replacement, attrib) { var attribute = "title"; if (undefined != attrib) { attribute = attrib; } var nodes = document.getElementsByClassName(className); for (var i = 0; i < nodes.length; i++) { var currentClassObj = nodes[i]; var replacementTxt = "" + nodeText + ""; var currentNodeTextValue = currentClassObj.innerHTML.replace(nodeText, replacementTxt); currentClassObj.innerHTML = currentNodeTextValue; } } }, { key: "remediateCapsIssueToClasses", value: function remediateCapsIssueToClasses(className, nodeText) { var nodes = document.getElementsByClassName(className); for (var i = 0; i < nodes.length; i++) { var currentClassObj = nodes[i]; var currentNodeTextValueSR = ""; var currentNodeTextValue = currentClassObj.innerHTML; if ("" != nodeText) { currentNodeTextValueSR = nodeText; } else { currentNodeTextValueSR = currentClassObj.innerHTML; } currentClassObj.innerHTML = ""; var spanSrOnly = this.createSrOnlySpan([], currentNodeTextValueSR.toLowerCase()); var spanAriaHidden = this.createNewSpan([{ "name": "aria-hidden", "value": true }], currentNodeTextValue); currentClassObj.appendChild(spanSrOnly); currentClassObj.appendChild(spanAriaHidden); } } }, { key: "addInnerHTMLToClasses", value: function addInnerHTMLToClasses(className, nodeText) { var nodes = document.getElementsByClassName(className); for (var i = 0; i < nodes.length; i++) { var currentClassObj = nodes[i]; currentClassObj.innerHTML = nodeText; } } }, { key: "productsPageClickableList", value: function productsPageClickableList(classname) { var overlay_link = document.getElementsByClassName(classname); for (var i in overlay_link) { if ("object" == _typeof(overlay_link[i])) { overlay_link[i].addEventListener("keydown", function (event) { if (event.keyCode == 13 || event.keyCode == 34) { event.target.click(); } }); } } } }, { key: "elementsClickNFocus", value: function elementsClickNFocus() { try { document.querySelector("#multiasset-products div.reusable-article-container div.reusable-article.reusable-article__is-video.video-type__products-multiasset.tabindex").addEventListener("keydown", function (event) { if (event.keyCode == 13 || event.keyCode == 34) { this.whichButtonClickedToOpenModal = event.target; prodVidClicked = this.whichButtonClickedToOpenModal; this.whichButtonClickedToOpenModal.click(); console.log("selected element", this.whichButtonClickedToOpenModal); } }); var OpensAModalPopUpClasses = document.querySelector("OpensAModalPopUp"); for (var cind = 0; cind < OpensAModalPopUpClasses.length; cind++) { OpensAModalPopUpClasses[cind].addEventListener("keydown", function (event) { if (event.keyCode == 13 || event.keyCode == 34) { this.whichButtonClickedToOpenModal = event.target; console.log("Targetted element", this.whichButtonClickedToOpenModal); } }); } } catch (e) { console.warn("WARN: selector not available in the function elementsClickNFocus. ", e); } } }, { key: "screenReaderTextVariables", value: function screenReaderTextVariables() { this.screenReaderVariables = {}; switch (window.location.pathname) { case "/": this.screenReaderVariables = homeVariables; var changeHeadings = document.getElementsByClassName("changeHeadingLevelForHome"); for (var i = 0; i < changeHeadings.length; i++) { changeHeadings[i].setAttribute("aria-level", 4); } break; case "/products/": this.screenReaderVariables = productsVariables; var that = this; setTimeout(function () { var common1 = "#equity-products > div.region-wrapper.region-united-states > div.background-overlap.background-overlap--equity > div > div > ul > li"; var common2 = "#multiasset-products > div.region-wrapper.region-united-states > div.background-overlap.background-overlap--multi-asset > div > div.products-list > ul > li"; var common3 = "#fixedincome-products > div.region-wrapper.region-united-states > div.background-overlap.background-overlap--fixed-income > div > div > ul > li"; var common4 = "#liquidity-products > div.region-wrapper.region-united-states > div.background-overlap.background-overlap--liquidity > div > div > ul > li"; var probTabList1 = [common1 + ".tab-is.quantitative_active_equity_products_tab_1", common1 + ".tab-mf.quantitative_active_equity_products_tab_2", common1 + ".tab-etf.quantitative_active_equity_products_tab_3"]; var probTabList2 = [common2 + ".tab-is.quantitative_active_equity_products_tab_1", common2 + ".tab-mf.quantitative_active_equity_products_tab_2", common2 + ".tab-etf.quantitative_active_equity_products_tab_3"]; var probTabList3 = [common3 + ".tab-is.quantitative_active_equity_products_tab_1", common3 + ".tab-mf.quantitative_active_equity_products_tab_2", common3 + ".tab-etf.quantitative_active_equity_products_tab_3"]; var probTabList4 = [common4 + ".tab-is.quantitative_active_equity_products_tab_1", common4 + ".tab-mf.quantitative_active_equity_products_tab_2", common4 + ".tab-etf.quantitative_active_equity_products_tab_3"]; that.ProductTabs(probTabList1); that.ProductTabs(probTabList2); that.ProductTabs(probTabList3); that.ProductTabs(probTabList4); }, 700); break; case "/1year/": this.screenReaderVariables = yearVariables; break; case "/matrices/": this.screenReaderVariables = matricesVariables; this.clickOnEnter(); break; } this.attachText(); } }, { key: "ProductTabs", value: function ProductTabs(probTabList1) { this.productsTabCoreFunction(probTabList1, 0); this.productsTabCoreFunction(probTabList1, 1); this.productsTabCoreFunction(probTabList1, 2); } }, { key: "productsTabCoreFunction", value: function productsTabCoreFunction(probTabList1, ptabindex) { try { document.querySelector(probTabList1[ptabindex]).addEventListener("keydown", function (event) { if (event.keyCode == 13 || event.keyCode == 34) { for (var i = 0; i < probTabList1.length; i++) { document.querySelector(probTabList1[i]).setAttribute("aria-selected", false); } document.querySelector(probTabList1[ptabindex]).setAttribute("aria-selected", true); } }); document.querySelector(probTabList1[ptabindex]).addEventListener("click", function () { for (var i = 0; i < probTabList1.length; i++) { document.querySelector(probTabList1[i]).setAttribute("aria-selected", false); } document.querySelector(probTabList1[ptabindex]).setAttribute("aria-selected", true); }); } catch (e) { console.log(e); } } }, { key: "clickOnEnter", value: function clickOnEnter() { var classesToClickOnEnter = document.getElementsByClassName("clickonenter"); for (var i = 0; i < classesToClickOnEnter.length; i++) { try { classesToClickOnEnter[i].addEventListener("keydown", function (event) { if (event.keyCode == 13 || event.keyCode == 34) { event.target.click(); } }); } catch (e) { console.warn("WARN:", e); } } } }, { key: "attachText", value: function attachText() { for (var i in this.screenReaderVariables.byclassname) { var arrNode = this.screenReaderVariables.byclassname[i]; var className = arrNode.name; var type = arrNode.type; var textValue = arrNode.textvalue; if ("sr-only" == type) { this.dynamicCommonSrOnly(className, textValue, true); } if ("alt" == type) { this.addAltToClasses(className, textValue); } if ("title" == type) { this.addTitleToClasses(className, textValue); } if ("aria-label" == type) { this.addAriaLabelToClasses(className, textValue); } if ("capsreading" == type) { this.remediateCapsIssueToClasses(className, textValue); } if ("abbr" == type) { var replacement = arrNode.replacement; var attribute = arrNode.attrib; this.addAbbrToClasses(className, textValue, replacement, attribute); } if ("innerText" == type) { this.addInnerHTMLToClasses(className, textValue); } if ("longdescr" == type) { this.addlongdescrClass(className, className, textValue); } } } }, { key: "pageTitles", value: function pageTitles() { var titleElem = document.getElementsByTagName("title")[0]; var d = new Date(); var n = d.getFullYear(); switch (window.location.pathname) { case "/": titleElem.innerText = "Northern Trust Capital Market Assumptions 10 Year Outlook: 2024 Edition"; this.AUMSuperscript(""); break; case "/products/": titleElem.innerText = "Northern Trust Capital Market Assumptions 10 Year Outlook: 2024 Edition"; this.AUMSuperscript("/products/"); var ProdutTabs = [".products-list-content.content-is", ".products-list-content.content-mf", ".products-list-content.content-etf", ".products-list-content.content-pf", ".products-list-content.content-uc"], tabPanelId = ["content_is", "content_mf", "content_etf", "content_pf", "content_uc"]; this.tabControlSetup(ProdutTabs, tabPanelId); this.productModalCloseClick(".themes__modal__close-button img"); break; case "/1year/": titleElem.innerText = "2023 Market Outlook | Northern Trust"; this.AUMSuperscript("/1year/"); break; case "/matrices/": titleElem.innerText = "Northern Trust 2023 Asset Class Forecasts"; break; } } }, { key: "productModalCloseClick", value: function productModalCloseClick(elementSelector) { document.querySelector(elementSelector).addEventListener("keydown", function (event) { if (event.keyCode == 13) { var parentEle = event.target.parentNode; parentEle.click(); } }); } }, { key: "removeTitlesFromLinks", value: function removeTitlesFromLinks() { var anchorLinks = document.getElementsByTagName("a"); for (var i = 0; i < anchorLinks.length; i++) { anchorLinks[i].removeAttribute("title"); } } }]); return Accessibility; }(); exports.default = Accessibility; /***/ }), /* 19 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Screen = function () { function Screen() { _classCallCheck(this, Screen); this.currentselectedElement = undefined; } _createClass(Screen, [{ key: "opening", value: function opening(e) { this.currentselectedElement = e.target; if ("click" != e.type) { var x = e.which || e.keyCode; if (13 == x || 34 == x) { e.target.click(); } } } }]); return Screen; }(); exports.default = Screen; /***/ }), /* 20 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var LoadMoreProducts = function () { function LoadMoreProducts() { _classCallCheck(this, LoadMoreProducts); this.loadMoreButtons = document.querySelectorAll('.products-page .more-on a'); if (!this.loadMoreButtons || !this.loadMoreButtons.length) { return false; } var t = this; Array.prototype.slice.call(this.loadMoreButtons).forEach(function (el, i) { el.addEventListener('click', function (e) { t._onClick(e, t); }); }); } _createClass(LoadMoreProducts, [{ key: 'toggleOpen', value: function toggleOpen(el) { el.classList.toggle('is-active'); el.classList.toggle('is-closed'); // should only be used to toggle text el.previousElementSibling.classList.toggle('is-visible'); var value = true; if (!el.previousElementSibling.classList.contains("is-visible")) { value = false; } else { value = true; } var children = ["section.more-themes.more-on-products div.tabindex.reusable-article", "section.more-themes.more-on-products a.tabindex.reusable-article"]; accessibility.toggelVisibility(el.previousElementSibling, children, value); document.querySelector("#multiasset-products > div.region-wrapper.region-united-states > div.background-overlap.background-overlap--multi-asset > div > section > div > div.section-header.section-header-- > div.section-header__title.uppercase.tracked.section-header__title--").focus(); } }, { key: '_onClick', value: function _onClick(e, t) { e.preventDefault(); t.toggleOpen(e.target.parentNode); } }]); return LoadMoreProducts; }(); exports.default = LoadMoreProducts; /***/ }), /* 21 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var LoadMoreThemes = function () { function LoadMoreThemes() { var _this = this; _classCallCheck(this, LoadMoreThemes); this.loadMoreButton = document.querySelector('.button--load-more-themes'); this.additionalContent = document.querySelector('.more-themes'); if (!this.loadMoreButton) { return; } this.loadMoreButton.addEventListener('click', function (e) { return _this._onClick(e); }); } _createClass(LoadMoreThemes, [{ key: '_onClick', value: function _onClick(event) { event.preventDefault(); this._isOpen = !this._isOpen; } }, { key: '_isOpen', get: function get() { return this.additionalContent.classList.contains('is-visible'); }, set: function set(value) { this.loadMoreButton.classList.toggle('is-active', value); this.loadMoreButton.innerText = value ? 'Show less' : 'More on our themes'; this.additionalContent.classList.toggle('is-visible', value); var children = [".more-themes .tabindex.reusable-article"]; accessibility.toggelVisibility(this.additionalContent, children, value); this.loadMoreButton.setAttribute("aria-expanded", value); } }]); return LoadMoreThemes; }(); exports.default = LoadMoreThemes; /***/ }), /* 22 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var LoadMoreAssetClasses = function () { function LoadMoreAssetClasses() { var _this = this; _classCallCheck(this, LoadMoreAssetClasses); this.loadMoreButton = document.querySelector('.button--load-more-asset-classes'); this.additionalContent = document.querySelector('.more-asset-classes'); if (!this.loadMoreButton) { return; } this.loadMoreButton.addEventListener('click', function (e) { return _this._onClick(e); }); } _createClass(LoadMoreAssetClasses, [{ key: '_onClick', value: function _onClick(event) { event.preventDefault(); this._isOpen = !this._isOpen; } }, { key: '_isOpen', get: function get() { return this.additionalContent.classList.contains('is-visible'); }, set: function set(value) { this.loadMoreButton.classList.toggle('is-active', value); this.loadMoreButton.innerText = value ? 'Show less' : 'More on our asset class insights'; this.additionalContent.classList.toggle('is-visible', value); var children = [".more-asset-classes .tabindex.reusable-article"]; accessibility.toggelVisibility(this.additionalContent, children, value); this.loadMoreButton.setAttribute("aria-expanded", value); } }]); return LoadMoreAssetClasses; }(); exports.default = LoadMoreAssetClasses; /***/ }), /* 23 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _modal = __webpack_require__(24); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var allVideoModal = function () { function allVideoModal() { _classCallCheck(this, allVideoModal); //videos for More Asset Classes on homepage section this.moreAssetPlayerData = [{ accountId: '2862659545001', playerId: 'adc0c982-3300-496e-a729-20dc5babb15f', videoId: '5843868333001', selector: '.modal__content', header: 'Global Tactical Asset Allocation Update', aspectRatio: '16:9' }]; //videos for More Themes section this.themePlayerData = [{ accountId: '2862659545001', playerId: 'adc0c982-3300-496e-a729-20dc5babb15f', videoId: '5977693646001', selector: '.modal__content', header: 'Mixed messages from the Fed', aspectRatio: '16:9' }, { accountId: '2862659545001', playerId: 'adc0c982-3300-496e-a729-20dc5babb15f', videoId: '5843868313001', selector: '.modal__content', header: '6 Themes for the Next 5 Years', aspectRatio: '16:9' }, { accountId: '2862659545001', playerId: 'adc0c982-3300-496e-a729-20dc5babb15f', videoId: '5844536371001', selector: '.modal__content', header: 'What Investors Can Expect in the Years to Come', aspectRatio: '16:9' }]; //videos for More Asset Classes section on products page this.assetPlayersData = [{ accountId: '2862659545001', playerId: 'adc0c982-3300-496e-a729-20dc5babb15f', videoId: '5853910986001', selector: '.modal__content', header: '6 Pillars', aspectRatio: '16:9' }, { accountId: '2862659545001', playerId: 'adc0c982-3300-496e-a729-20dc5babb15f', videoId: '6052586369001', selector: '.modal__content', header: 'How Multi-Asset Strategies Deliver', aspectRatio: '16:9' }]; // One Year Page - Global Momentum Video this.oneYearGlobalMomentumData = [{ accountId: '2862659545001', playerId: 'adc0c982-3300-496e-a729-20dc5babb15f', videoId: '5989369144001', selector: '.modal__content', header: '2020 Outlook: What to Expect in the Year Ahead', aspectRatio: '16:9' }]; // One Year Page - More Asset Class Insights section this.oneYearMoreAssetClasses = [{ accountId: '2862659545001', playerId: 'adc0c982-3300-496e-a729-20dc5babb15f', videoId: '5713023090001', selector: '.modal__content', header: 'Video: Expecting Global Momentum to Continue in 2018', aspectRatio: '16:9' }, { accountId: '2862659545001', playerId: 'adc0c982-3300-496e-a729-20dc5babb15f', videoId: '5722708701001', selector: '.modal__content', header: 'Webinar Replay: Find Out What Investors Should Expect in the Year Ahead', aspectRatio: '16:9' }, { accountId: '2862659545001', playerId: 'adc0c982-3300-496e-a729-20dc5babb15f', videoId: '5642088296001', selector: '.modal__content', header: 'Video: Tackling Low Rates and Modest Growth', aspectRatio: '16:9' }]; // One Year Page - More On Our Themes section this.oneYearMoreThemes = [{ accountId: '2862659545001', playerId: 'adc0c982-3300-496e-a729-20dc5babb15f', videoId: '5688468142001', selector: '.modal__content', header: 'Video: 6 Key Themes for the Next 5 Years', aspectRatio: '16:9' }, { accountId: '2862659545001', playerId: 'adc0c982-3300-496e-a729-20dc5babb15f', videoId: '5722801911001', selector: '.modal__content', header: 'Video: Three Investment Themes that Remain Front and Center in 2018', aspectRatio: '16:9' }]; this.modal = new _modal.Modal(); try { this._bindAllEvents(); this._createModal(); } catch (error) {} } _createClass(allVideoModal, [{ key: '_bindAllEvents', value: function _bindAllEvents() { var _this = this; //grab all of the elements which will be video links var themeArticleElements = document.getElementsByClassName('video-type__theme'); //loop through array-like Node list of elements and add click event listener var _loop = function _loop(i) { var element = themeArticleElements[i]; element.addEventListener('click', function () { _this.modal.open(); _this.modal.closeButton.setAttribute("data-video-id", _this.themePlayerData[i].videoId); _this.modal.addVideo(_this.themePlayerData[i]); }); }; for (var i = 0; i < themeArticleElements.length; i++) { _loop(i); } var moreAssetVideoElements = document.getElementsByClassName('video-type__asset'); var _loop2 = function _loop2(i) { moreAssetVideoElements[i].addEventListener('click', function () { _this.modal.open(); _this.modal.closeButton.setAttribute("data-video-id", _this.moreAssetPlayerData[i].videoId); _this.modal.addVideo(_this.moreAssetPlayerData[i]); }); }; for (var i = 0; i < moreAssetVideoElements.length; i++) { _loop2(i); } var assetVideoElements = document.getElementsByClassName('video-type__products-multiasset'); var _loop3 = function _loop3(i) { assetVideoElements[i].addEventListener('click', function () { _this.modal.open(); _this.modal.addVideo(_this.assetPlayersData[i]); }); }; for (var i = 0; i < assetVideoElements.length; i++) { _loop3(i); } var momentumElements = document.getElementsByClassName('video-type__global-momentum'); var _loop4 = function _loop4(i) { momentumElements[i].addEventListener('click', function () { _this.modal.open(); _this.modal.addVideo(_this.oneYearGlobalMomentumData[i]); }); }; for (var i = 0; i < momentumElements.length; i++) { _loop4(i); } var oneYearAssetClassElements = document.getElementsByClassName('video-type__one-year-asset-class'); var _loop5 = function _loop5(i) { oneYearAssetClassElements[i].addEventListener('click', function () { _this.modal.open(); _this.modal.addVideo(_this.oneYearMoreAssetClasses[i]); }); }; for (var i = 0; i < oneYearAssetClassElements.length; i++) { _loop5(i); } var oneYearThemeElements = document.getElementsByClassName('video-type__one-year-theme'); var _loop6 = function _loop6(i) { oneYearThemeElements[i].addEventListener('click', function () { _this.modal.open(); _this.modal.addVideo(_this.oneYearMoreThemes[i]); }); }; for (var i = 0; i < oneYearThemeElements.length; i++) { _loop6(i); } } }, { key: '_createModal', value: function _createModal() { // note - The selector for createModal() has to be an element that is shared amongst all pages // ie: home page, and One Year page both have .themes therefore modal will work on both this.modal.createModal(document.getElementsByClassName('reusable-article__is-video').length ? '.products-page' : '.themes'); // this.modal.createModal('.content') //this.modal.createModal('.more-themes'); } }]); return allVideoModal; }(); exports.default = allVideoModal; /***/ }), /* 24 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Modal = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _videoPlayer = __webpack_require__(25); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Modal = exports.Modal = function () { function Modal() { _classCallCheck(this, Modal); this.videoplayer; this.closeButton; this.body = document.querySelector('body'); this.modal = document.querySelector('.modal-wrapper'); this.modalData = { "modal_parent": ".modal-wrapper", "modal_children": ["button.vjs-play-control", "div.vjs-volume-panel", "div.vjs-current-time", "div.vjs-duration", "div.vjs-progress-control", "button.vjs-share-control", "div.vjs-subs-caps-button", "button.vjs-fullscreen-control", "button.modal__close"] }; if (!this.modal) return; // clone it. So that we have seperate modals. // TODO: Ideally we should create the modal here! Instead of cloning it //this.modal = wrapper.cloneNode(true); DO NOT CLONE - THIS IS NOT WORKING CORRECTLY. GM } _createClass(Modal, [{ key: '_bindEvents', value: function _bindEvents() { var _this = this; this.closeButton.addEventListener('click', function () { _this.close(); }); this.modalBg.addEventListener('click', function (e) { console.log(e); // e.stopPropagation(); _this.close(); }); this.modalContent.addEventListener('click', function (e) { e.stopPropagation(); }); document.addEventListener('keydown', this.onKeyDown.bind(this)); } }, { key: 'createModal', value: function createModal(selector) { //reuse already existing modal. Not needed. -- GM // create a modal and append it to a selector //document.querySelector(selector).appendChild(this.modal); // put the modal in the container of the corresponding DOM element this.modalBg = this.modal.querySelector('.modal__bg'); this.modalContent = this.modal.querySelector('.modal__content'); this.closeButton = this.modal.querySelector('.modal__close'); this.selector = selector; this.modalBg.style.opacity = '0'; this.modalContent.style.opacity = '0'; this._bindEvents(); } }, { key: 'open', value: function open() { this.modal.style.display = 'block'; accessibility.whichButtonClickedToOpenModal = screen_acc.currentselectedElement; Velocity(this.modalBg, { opacity: '1' }); Velocity(this.modalContent, { opacity: '1', translateY: ['0px', '50px'] }); var that = this; setTimeout(function () { document.body.classList.add('modal-is-open'); }, 1000); // adds overlow hidden to the body to prevent scrolling setTimeout(function () { accessibility.modalShown(that.modalData); }, 1000); } }, { key: 'close', value: function close() { var _this2 = this; this.body.classList.remove('modal-is-open'); // removes overflow hidden from body if (!!this.videoplayer) { // only if a videoplayer has been initialized. Stop all this.videoplayer.stopAllVideos(); } Velocity(this.modalBg, { opacity: '0' }); Velocity(this.modalContent, { opacity: '0', translateY: ['-50px', '0px'] }, { complete: function complete() { _this2.modal.style.display = 'none'; var path = window.location.pathname; var video_id = _this2.closeButton.getAttribute("data-video-id"); if ("/products/" == path) { accessibility.modalHidden(_this2.modalData, document.getElementsByClassName("MoreOnProductsModal")[0]); } else { var focusBackMap = { '5977693646001': document.querySelector("#moreThemesModalId1"), '5843868313001': document.querySelector("#moreThemesModalId2"), '5844536371001': document.querySelector("#moreThemesModalId3"), '5843868333001': document.querySelector("body > section:nth-child(5) > section.more-asset-classes.is-visible > div > div.reusable-article-container > div > div") }; if (!!video_id) { accessibility.modalHidden(_this2.modalData, focusBackMap[video_id]); } else { accessibility.modalHidden(_this2.modalData); } } } }); } }, { key: 'onKeyDown', value: function onKeyDown(e) { // Hide modal if user presses escape key while it is visible. if (e.keyCode === 27) { this.close(); } } }, { key: 'addVideo', value: function addVideo(playerData) { // we are expecting an Object here. VideoPlayer will take care of that and will create instances this.videoplayer = new _videoPlayer.VideoPlayer(); //do different things depending on if user passed in array of videos, or just one video if ((typeof playerData === 'undefined' ? 'undefined' : _typeof(playerData)) === 'object') { this.videoplayer._createVideo(playerData); } else { this.videoplayer.add(playerData); } } }]); return Modal; }(); /***/ }), /* 25 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var VideoPlayer = exports.VideoPlayer = function () { function VideoPlayer() { _classCallCheck(this, VideoPlayer); } _createClass(VideoPlayer, [{ key: 'add', value: function add(playerData) { var _this = this; //playerData is an array of objects if (playerData.length > 0) { playerData.forEach(function (data) { _this._createVideo(data); }, this); } } }, { key: '_createVideo', value: function _createVideo(videoData) { var videoWrapper = document.querySelector(videoData.selector); if (!!videoWrapper) { console.log(videoWrapper); // Dynamically build the player video element // also create the video's header, and wrap both video and header in a container div var aspectRatio = videoData.aspectRatio === '4:3' ? 'is-4x3vid' : null; var playerHTML = '