{"version":3,"file":"factory.config.js","sources":["../../src/types/template.ts","../../../../node_modules/lodash-es/_freeGlobal.js","../../../../node_modules/lodash-es/_root.js","../../../../node_modules/lodash-es/_Symbol.js","../../../../node_modules/lodash-es/_getRawTag.js","../../../../node_modules/lodash-es/_objectToString.js","../../../../node_modules/lodash-es/_baseGetTag.js","../../../../node_modules/lodash-es/isObjectLike.js","../../../../node_modules/lodash-es/isSymbol.js","../../../../node_modules/lodash-es/_arrayMap.js","../../../../node_modules/lodash-es/isArray.js","../../../../node_modules/lodash-es/_baseToString.js","../../../../node_modules/lodash-es/isObject.js","../../../../node_modules/lodash-es/identity.js","../../../../node_modules/lodash-es/isFunction.js","../../../../node_modules/lodash-es/_coreJsData.js","../../../../node_modules/lodash-es/_isMasked.js","../../../../node_modules/lodash-es/_toSource.js","../../../../node_modules/lodash-es/_baseIsNative.js","../../../../node_modules/lodash-es/_getValue.js","../../../../node_modules/lodash-es/_getNative.js","../../../../node_modules/lodash-es/_baseCreate.js","../../../../node_modules/lodash-es/_apply.js","../../../../node_modules/lodash-es/_copyArray.js","../../../../node_modules/lodash-es/_shortOut.js","../../../../node_modules/lodash-es/constant.js","../../../../node_modules/lodash-es/_defineProperty.js","../../../../node_modules/lodash-es/_baseSetToString.js","../../../../node_modules/lodash-es/_setToString.js","../../../../node_modules/lodash-es/_isIndex.js","../../../../node_modules/lodash-es/_baseAssignValue.js","../../../../node_modules/lodash-es/eq.js","../../../../node_modules/lodash-es/_assignValue.js","../../../../node_modules/lodash-es/_copyObject.js","../../../../node_modules/lodash-es/_overRest.js","../../../../node_modules/lodash-es/_baseRest.js","../../../../node_modules/lodash-es/isLength.js","../../../../node_modules/lodash-es/isArrayLike.js","../../../../node_modules/lodash-es/_isIterateeCall.js","../../../../node_modules/lodash-es/_createAssigner.js","../../../../node_modules/lodash-es/_isPrototype.js","../../../../node_modules/lodash-es/_baseTimes.js","../../../../node_modules/lodash-es/_baseIsArguments.js","../../../../node_modules/lodash-es/isArguments.js","../../../../node_modules/lodash-es/stubFalse.js","../../../../node_modules/lodash-es/isBuffer.js","../../../../node_modules/lodash-es/_baseIsTypedArray.js","../../../../node_modules/lodash-es/_baseUnary.js","../../../../node_modules/lodash-es/_nodeUtil.js","../../../../node_modules/lodash-es/isTypedArray.js","../../../../node_modules/lodash-es/_arrayLikeKeys.js","../../../../node_modules/lodash-es/_overArg.js","../../../../node_modules/lodash-es/_nativeKeysIn.js","../../../../node_modules/lodash-es/_baseKeysIn.js","../../../../node_modules/lodash-es/keysIn.js","../../../../node_modules/lodash-es/_nativeCreate.js","../../../../node_modules/lodash-es/_hashClear.js","../../../../node_modules/lodash-es/_hashDelete.js","../../../../node_modules/lodash-es/_hashGet.js","../../../../node_modules/lodash-es/_hashHas.js","../../../../node_modules/lodash-es/_hashSet.js","../../../../node_modules/lodash-es/_Hash.js","../../../../node_modules/lodash-es/_listCacheClear.js","../../../../node_modules/lodash-es/_assocIndexOf.js","../../../../node_modules/lodash-es/_listCacheDelete.js","../../../../node_modules/lodash-es/_listCacheGet.js","../../../../node_modules/lodash-es/_listCacheHas.js","../../../../node_modules/lodash-es/_listCacheSet.js","../../../../node_modules/lodash-es/_ListCache.js","../../../../node_modules/lodash-es/_Map.js","../../../../node_modules/lodash-es/_mapCacheClear.js","../../../../node_modules/lodash-es/_isKeyable.js","../../../../node_modules/lodash-es/_getMapData.js","../../../../node_modules/lodash-es/_mapCacheDelete.js","../../../../node_modules/lodash-es/_mapCacheGet.js","../../../../node_modules/lodash-es/_mapCacheHas.js","../../../../node_modules/lodash-es/_mapCacheSet.js","../../../../node_modules/lodash-es/_MapCache.js","../../../../node_modules/lodash-es/toString.js","../../../../node_modules/lodash-es/_getPrototype.js","../../../../node_modules/lodash-es/isPlainObject.js","../../../../node_modules/lodash-es/_basePropertyOf.js","../../../../node_modules/lodash-es/_stackClear.js","../../../../node_modules/lodash-es/_stackDelete.js","../../../../node_modules/lodash-es/_stackGet.js","../../../../node_modules/lodash-es/_stackHas.js","../../../../node_modules/lodash-es/_stackSet.js","../../../../node_modules/lodash-es/_Stack.js","../../../../node_modules/lodash-es/_cloneBuffer.js","../../../../node_modules/lodash-es/_Uint8Array.js","../../../../node_modules/lodash-es/_cloneArrayBuffer.js","../../../../node_modules/lodash-es/_cloneTypedArray.js","../../../../node_modules/lodash-es/_initCloneObject.js","../../../../node_modules/lodash-es/_createBaseFor.js","../../../../node_modules/lodash-es/_baseFor.js","../../../../node_modules/lodash-es/_assignMergeValue.js","../../../../node_modules/lodash-es/isArrayLikeObject.js","../../../../node_modules/lodash-es/_safeGet.js","../../../../node_modules/lodash-es/toPlainObject.js","../../../../node_modules/lodash-es/_baseMergeDeep.js","../../../../node_modules/lodash-es/_baseMerge.js","../../../../node_modules/lodash-es/_escapeHtmlChar.js","../../../../node_modules/lodash-es/escape.js","../../../../node_modules/lodash-es/merge.js","../../src/modules/Module.ts","../../src/modules/adobeAnalytics.ts","../../src/types/config.ts","../../src/config/cdts.config.ts","../../src/modules/redirect.ts","../../src/modules/previewUtil.ts","../../src/modules/site.ts","../../src/config/404.config.ts","../../src/config/base.config.ts","../../src/i18n/locales/en/fallback.ts","../../src/i18n/locales/en/ns1.ts","../../src/i18n/locales/fr/ns1.ts","../../src/i18n/resources.ts","../../src/i18n/i18n.ts","../../src/config/eiboard/eiboard.generic.en.config.ts","../../src/config/eiboard/eiboard.generic.fr.config.ts","../../src/config/eiboard/eiboard.splashPage.config.ts","../../src/config/eiboard/eiboard.config.ts","../../src/modules/leftNavMenu.ts","../../src/WhenReady.ts","../../src/config/ellis-chart/ellis-chart.generic.en.config.ts","../../src/config/ellis-chart/ellis-chart.generic.fr.config.ts","../../src/config/ellis-chart/ellis-chart.splashPage.config.ts","../../src/config/ellis-chart/elllis-chart.config.ts","../../src/modules/breadcrumbs.ts","../../src/modules/esdc-prv/articles.ts","../../src/modules/esdc-prv/blogs.ts","../../src/modules/esdc-prv/caroussel.ts","../../src/modules/esdc-prv/catquery.ts","../../src/types/newsfeed.ts","../../src/modules/esdc-prv/moreNewsfeed.ts","../../src/modules/esdc-prv/newsfeed.ts","../../src/modules/esdc-prv/randomSurvey.ts","../../src/modules/esdc-prv/ShareThisPage.ts","../../src/types/content.ts","../../src/config/esdc-prv/esdc-prv-assist.fr.config.ts","../../src/config/esdc-prv/esdc-prv-splashPage.config.ts","../../src/config/esdc-prv/esdc-prv.assist.en.config.ts","../../src/config/esdc-prv/esdc-prv.generic.en.config.ts","../../src/config/esdc-prv/esdc-prv.generic.fr.config.ts","../../src/config/esdc-prv/esdc-prv.config.ts","../../src/config/horizons/horizons.generic.en.config.ts","../../src/config/horizons/horizons.generic.fr.config.ts","../../src/config/horizons/horizons.splashPage.config.ts","../../src/config/horizons/horizons.article.en.config.ts","../../src/config/horizons/horizons.article.fr.config.ts","../../src/config/horizons/horizons.index.en.config.ts","../../src/config/horizons/horizons.index.fr.config.ts","../../src/modules/horizons/horizons.ts","../../src/modules/horizons/list.ts","../../src/modules/horizons/ourwork.ts","../../src/modules/horizons/index.ts","../../src/modules/horizons/author.ts","../../src/modules/horizons/toplist.ts","../../src/config/horizons/horizons.config.ts","../../src/modules/iservice-prv/nsd.ts","../../src/modules/iservice-prv/send.ts","../../src/modules/iservice-prv/watsonChatBot.ts","../../src/config/iservice-prv/iservice-prv-splashPage.config.ts","../../src/config/iservice-prv/iservice-prv.generic.en.config.ts","../../src/config/iservice-prv/iservice-prv.generic.fr.config.ts","../../src/modules/iservice-prv/AlertMessage.ts","../../src/config/iservice-prv/iservice-prv.config.ts","../../src/config/rdsp/rdsp.generic.en.config.ts","../../src/config/rdsp/rdsp.generic.fr.config.ts","../../src/config/rdsp/rdsp.splashPage.config.ts","../../src/config/rdsp/rdsp.config.ts","../../src/config/red-seal/red-seal.generic.en.config.ts","../../src/config/red-seal/red-seal.generic.fr.config.ts","../../src/config/red-seal/red-seal.splashPage.config.ts","../../src/config/red-seal/red-seal.config.ts","../../src/config/resp/resp.generic.en.config.ts","../../src/config/resp/resp.generic.fr.config.ts","../../src/config/resp/resp.splashPage.config.ts","../../src/config/resp/resp.config.ts","../../src/config/factory.config.ts"],"sourcesContent":["import type { ConfigModule } from './config.js';\r\nimport type { TemplateFrontEndGlobals } from './script.js';\r\n\r\nexport interface CustomWindow extends Window {\r\n [key: string]: unknown;\r\n showNextPage: () => void;\r\n showPage: (arg: number) => void;\r\n showPreviousPage: () => void;\r\n export2word: unknown; // Turn off type checking\r\n wet: {\r\n builder: {\r\n refTop: (arg: object) => unknown;\r\n refFooter: (arg: object) => unknown;\r\n appFooter: (arg: object) => unknown;\r\n preFooter: (arg: object) => unknown;\r\n };\r\n };\r\n wb: { isReady: boolean }; // WET Toolkit global\r\n templateFrontEnd: TemplateFrontEndGlobals;\r\n onCDTSPageFinalized: (\r\n lang: LanguageType,\r\n template: TemplateType,\r\n config: ConfigModule\r\n ) => Promise;\r\n}\r\n\r\nexport type Callback = (cb?: Callback, arg?: unknown) => void;\r\n\r\nexport const Language = {\r\n ENGLISH: 'en',\r\n FRENCH: 'fr'\r\n} as const;\r\n\r\nexport type LanguageType = (typeof Language)[keyof typeof Language];\r\n\r\nexport interface CdtsTemplateConfig {\r\n cdtsVersion: string;\r\n cdtsBaseURL: string;\r\n}\r\n\r\nexport interface CdtsSriInfo {\r\n cdtsPath: string;\r\n 'cdts-eccc-styles.css': string;\r\n 'cdts-esdc-styles.css': string;\r\n 'cdts-labour-styles.css': string;\r\n 'compiled/wet-en.js': string;\r\n 'compiled/wet-fr.js': string;\r\n 'cdts-styles.css': string;\r\n 'cdts-app-styles.css': string;\r\n 'cdts-splash-styles.css': string;\r\n}\r\n\r\nexport const WetAsset = {\r\n CSS_THEME: ['theme.min.css', '/wet-boew/css'],\r\n CSS_MESSAGES: ['messages.min.css', '/wet-boew/css'],\r\n CSS_FAVICON: ['favicon.ico', '/wet-boew/assets'],\r\n ASSET_CANADA_LOGO: ['sig-blk-fr.png', '/wet-boew/assets'],\r\n IMG_SPLASH_SP_BG_2: ['sp-bg-2.jpg', '/wet-boew/img/splash']\r\n} as const;\r\nexport type WetAssetType = (typeof WetAsset)[keyof typeof WetAsset];\r\n\r\nexport interface SiteAsset {\r\n asset: unknown;\r\n rel?: string;\r\n type?: string;\r\n sri?: string;\r\n isInjectable?: () => boolean;\r\n}\r\n\r\nexport const Template = {\r\n INDEX: 'index',\r\n ARTICLE: 'article',\r\n NEWSFEED: 'newsfeed',\r\n QOW: 'qow',\r\n ASSIST: 'assist',\r\n DEFAULT: 'generic',\r\n '404': '404',\r\n SPLASH: 'splash'\r\n} as const;\r\nexport type TemplateType = (typeof Template)[keyof typeof Template];\r\n\r\nexport const Site = {\r\n ESDC_PRV: 'esdc-prv',\r\n ISERVICE_PRV: 'iservice-prv',\r\n RED_SEAL: 'red-seal',\r\n ELLIS_CHART: 'ellis-chart',\r\n EIBOARD: 'eiboard',\r\n RDSP: 'rdsp',\r\n RESP: 'resp',\r\n HORIZONS: 'horizons'\r\n} as const;\r\nexport type SiteType = (typeof Site)[keyof typeof Site];\r\n\r\nexport const SitePreviewDomain = {\r\n domains: {\r\n dev: [\r\n 'dev.cms-sgc.esdc-edsc.canada.ca',\r\n 'dev.cms-sgc.service.cloud-nuage.canada.ca'\r\n ],\r\n test: [\r\n 'test.cms-sgc.esdc-edsc.canada.ca',\r\n 'test.cms-sgc.service.cloud-nuage.canada.ca'\r\n ],\r\n staging: ['staging'],\r\n prod: [\r\n 'cms-sgc.esdc-edsc.canada.ca',\r\n 'cms-sgc.service.cloud-nuage.canada.ca'\r\n ],\r\n e2e: ['app-ewcms-e2e-canadacentral.azurewebsites.net']\r\n }\r\n} as SiteDomainObject;\r\nexport type SitePreviewDomainType =\r\n (typeof SitePreviewDomain)[keyof typeof SitePreviewDomain];\r\n\r\nexport const SitePublishedDomain = {\r\n HORIZONS: {\r\n name: 'horizons',\r\n domains: {\r\n dev: [\r\n 'dev.horizons.service.canada.ca',\r\n 'dev.horizons.service.cloud-nuage.canada.ca'\r\n ],\r\n test: [\r\n 'test.horizons.service.canada.ca',\r\n 'test.horizons.service.cloud-nuage.canada.ca'\r\n ],\r\n staging: ['staging'],\r\n prod: ['horizons.service.canada.ca'],\r\n e2e: ['ste2ehorizons.z9.web.core.windows.net']\r\n }\r\n },\r\n RDSP: {\r\n name: 'rdsp',\r\n domains: {\r\n dev: [\r\n 'dev.reei-rdsp.service.canada.ca',\r\n 'dev.reei-rdsp.service.cloud-nuage.canada.ca'\r\n ],\r\n test: [\r\n 'test.reei-rdsp.service.canada.ca',\r\n 'test.reei-rdsp.service.cloud-nuage.canada.ca'\r\n ],\r\n staging: ['staging'],\r\n prod: ['reei-rdsp.service.canada.ca'],\r\n e2e: ['ste2erdsp.z9.web.core.windows.net']\r\n }\r\n },\r\n RESP: {\r\n name: 'resp',\r\n domains: {\r\n dev: [\r\n 'dev.reee-resp.service.canada.ca',\r\n 'dev.reee-resp.service.cloud-nuage.canada.ca'\r\n ],\r\n test: [\r\n 'test.reee-resp.service.canada.ca',\r\n 'test.reee-resp.service.cloud-nuage.canada.ca'\r\n ],\r\n staging: ['staging'],\r\n prod: ['reee-resp.service.canada.ca'],\r\n e2e: ['ste2eresp.z9.web.core.windows.net']\r\n }\r\n },\r\n ESDC_PRV: {\r\n name: 'esdc-prv',\r\n domains: {\r\n dev: [\r\n 'dev.prv.esdc-edsc.canada.ca',\r\n 'dev.prv.service.cloud-nuage.canada.ca'\r\n ],\r\n test: [\r\n 'test.prv.esdc-edsc.canada.ca',\r\n 'test.prv.service.cloud-nuage.canada.ca'\r\n ],\r\n staging: ['staging'],\r\n prod: ['esdc.prv', 'edsc.prv', 'edsc-esdc.prv'],\r\n e2e: ['ste2eesdc.z9.web.core.windows.net']\r\n }\r\n },\r\n ISERVICE_PRV: {\r\n name: 'iservice-prv',\r\n domains: {\r\n dev: [\r\n 'dev.iservice.esdc-edsc.canada.ca',\r\n 'dev.iservice.service.cloud-nuage.canada.ca'\r\n ],\r\n test: [\r\n 'test.iservice.esdc-edsc.canada.ca',\r\n 'dev.iservice.service.cloud-nuage.canada.ca'\r\n ],\r\n staging: ['staging'],\r\n prod: ['iservice.prv'],\r\n e2e: ['ste2eiservice.z9.web.core.windows.net']\r\n }\r\n },\r\n RED_SEAL: {\r\n name: 'red-seal',\r\n domains: {\r\n dev: ['dev.red-seal.ca', 'dev.red-seal.service.cloud-nuage.canada.ca'],\r\n test: ['test.red-seal.ca', 'test.red-seal.service.cloud-nuage.canada.ca'],\r\n staging: ['staging'],\r\n prod: [\r\n 'red-seal.ca',\r\n 'sceau-rouge.ca',\r\n 'www.red-seal.ca',\r\n 'www.sceau-rouge.ca'\r\n ],\r\n e2e: ['ste2eredseal.z9.web.core.windows.net']\r\n }\r\n },\r\n ELLIS_CHART: {\r\n name: 'ellis-chart',\r\n domains: {\r\n dev: [\r\n 'dev.ellischart.ca',\r\n 'dev.ellischart.service.cloud-nuage.canada.ca'\r\n ],\r\n test: [\r\n 'test.ellischart.ca',\r\n 'test.ellischart.service.cloud-nuage.canada.ca'\r\n ],\r\n staging: ['staging'],\r\n prod: [\r\n 'ellischart.ca',\r\n 'tableauellis.ca',\r\n 'www.ellischart.ca',\r\n 'www.tableauellis.ca'\r\n ],\r\n e2e: ['ste2eellischart.z9.web.core.windows.net']\r\n }\r\n },\r\n EIBOARD: {\r\n name: 'eiboard',\r\n domains: {\r\n dev: ['dev.eiboa-caae.service.cloud-nuage.canada.ca'],\r\n test: ['test.eiboa-caae.service.cloud-nuage.canada.ca'],\r\n staging: ['staging'],\r\n prod: ['eiboard'],\r\n e2e: ['ste2eeiboard.z9.web.core.windows.net']\r\n }\r\n }\r\n} as const;\r\nexport type SitePublishedDomainType =\r\n (typeof SitePublishedDomain)[keyof typeof SitePublishedDomain];\r\n\r\ninterface SiteDomainObject {\r\n name: SiteType;\r\n domains: {\r\n dev: Array;\r\n test: Array;\r\n staging: Array;\r\n prod: Array;\r\n e2e: Array;\r\n };\r\n}\r\n\r\nexport const SiteFR = {\r\n ESDC_PRV: 'prv.esdc'\r\n} as const;\r\nexport type SiteFRType = (typeof SiteFR)[keyof typeof SiteFR];\r\n\r\nexport const SectionIdentifiers = {\r\n PREFOOTER: 'cdts-def-preFooter',\r\n FOOTER: 'cdts-def-footer',\r\n TOP: 'cdts-def-top',\r\n CUSTOM_TOP: 'cdts-def-top-custom',\r\n CUSTOM_FOOTER: 'cdts-def-footer-custom'\r\n};\r\nexport type SectionIdentifiers =\r\n (typeof SectionIdentifiers)[keyof typeof SectionIdentifiers];\r\n\r\nexport interface RedirectJson {\r\n redirect: Array;\r\n}\r\n\r\nexport interface RedirectJsonEntry {\r\n code: number;\r\n to: string;\r\n from: string;\r\n date?: string;\r\n}\r\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\nexport default escapeHtmlChar;\n","import escapeHtmlChar from './_escapeHtmlChar.js';\nimport toString from './toString.js';\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n}\n\nexport default escape;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import type { TemplateModules } from '../types/script.js';\r\nimport type { CustomWindow } from '../types/template.js';\r\ndeclare let window: CustomWindow;\r\n\r\n/**\r\n * Base module class\r\n */\r\nexport default abstract class Module {\r\n abstract moduleReady: boolean;\r\n abstract getModuleName(): string;\r\n /**\r\n * Modules main logic can be inserted into this method. This will be called by 'run'\r\n * @param args - Arguments passed from 'run'\r\n */\r\n abstract doLogic(args: unknown[]): Promise;\r\n\r\n markReady(scriptName: string): void {\r\n Module.whenScriptIsDoneMarkReady(scriptName);\r\n }\r\n /**\r\n * Executes the logic for the module and marks the module as ready when it is\r\n * completed ( providing that the module sets the flag to true ).\r\n * @param args Any number of arguments required by the module\r\n * @returns The ready flag\r\n */\r\n async run(...args: unknown[]): Promise {\r\n await this.doLogic(args);\r\n if (this.moduleReady) this.markReady(this.getModuleName());\r\n\r\n return Promise.resolve(this.moduleReady);\r\n }\r\n /**\r\n * Returns an object that represents the finish status of a module. Every module\r\n * should be defined here so that it can be set as ready\r\n *\r\n * @returns\r\n */\r\n static getModuleReadyObject(): TemplateModules {\r\n return {\r\n template: {\r\n adobeAnalytics: false,\r\n breadcrumbs: false,\r\n exportToWord: false,\r\n onCDTSPageFinalized: false,\r\n leftNavMenu: false\r\n },\r\n 'esdc-prv': {\r\n articles: false,\r\n blogs: false,\r\n caroussel: false,\r\n catquery: false,\r\n moreNewsfeed: false,\r\n newsfeed: false,\r\n randomSurvey: false,\r\n shareThisPageBtn: false\r\n },\r\n 'iservice-prv': {\r\n nsd: false,\r\n send: false,\r\n watsonChatbot: false,\r\n alertMessage: false,\r\n shareThisPageBtn: false,\r\n feedbackBtn: false\r\n },\r\n horizons: {\r\n articles: false,\r\n toplist: false,\r\n author: false,\r\n list: false,\r\n index: false,\r\n ourwork: false\r\n }\r\n };\r\n }\r\n static whenScriptIsDoneMarkReady(scriptName: string) {\r\n const globals = window.templateFrontEnd;\r\n Object.keys(globals.modules).forEach((moduleType) => {\r\n if (moduleType === 'template' || moduleType === globals.site) {\r\n const flags = globals.modules[moduleType as keyof TemplateModules];\r\n Object.keys(flags).forEach((module) => {\r\n if (module === scriptName) {\r\n flags[module] = true;\r\n return true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","import type { AdobeConfig } from '../types/adobeConfig.js';\r\nimport { SitePublishedDomain, type Site } from '../types/template.js';\r\nimport Module from './Module.js';\r\n\r\nexport default class AdobeModule extends Module {\r\n moduleReady: boolean = false;\r\n private readonly SCRIPT_URL_STAGING =\r\n '//assets.adobedtm.com/be5dfd287373/0127575cd23a/launch-913b1beddf7a-staging.min.js';\r\n private readonly SCRIPT_URL_PROD =\r\n '//assets.adobedtm.com/be5dfd287373/8cdb3d539c44/launch-6df9e9b447f9.min.js';\r\n\r\n adobeConfig: AdobeConfig;\r\n\r\n constructor(adobeConfig: AdobeConfig) {\r\n super();\r\n this.adobeConfig = adobeConfig;\r\n }\r\n\r\n getStagingScriptUrl(): string {\r\n return this.SCRIPT_URL_STAGING;\r\n }\r\n\r\n getProductionScriptUrl() {\r\n return this.SCRIPT_URL_PROD;\r\n }\r\n\r\n getModuleName(): string {\r\n return 'adobeAnalytics';\r\n }\r\n\r\n doLogic(): Promise {\r\n if (this.adobeConfig) {\r\n const head = document.head;\r\n this.getAdobeMetaTags().forEach((metaTag) => head.appendChild(metaTag));\r\n head.appendChild(this.getAdobeScript());\r\n this.moduleReady = true;\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n getAdobeMetaTags() {\r\n const tags = [];\r\n\r\n // TODO: dcterms.service is being deprecated. Once we update the adobe analytics script version we can start using this\r\n if (this.adobeConfig.sitename) {\r\n const tag = !this.isProdServer\r\n ? this.upsertMetaTag('gcaaterms.sitename', this.adobeConfig.sitename)\r\n : this.upsertMetaTag('dcterms.service', this.adobeConfig.sitename);\r\n tags.push(tag);\r\n }\r\n\r\n tags.push(\r\n this.upsertMetaTag('dcterms.accessRights', this.adobeConfig.accessRights)\r\n );\r\n\r\n if (this.adobeConfig.creator)\r\n tags.push(\r\n this.upsertMetaTag('dcterms.creator', this.adobeConfig.creator)\r\n );\r\n\r\n return tags;\r\n }\r\n /**\r\n * Helper method to either insert or update a meta tag into the content page\r\n * @param tagName\r\n * @param value\r\n * @returns\r\n */\r\n private upsertMetaTag(tagName: string, value: string): HTMLMetaElement {\r\n let metaTag = document.querySelector(\r\n `meta[name=\"${tagName}\"`\r\n ) as HTMLMetaElement;\r\n if (metaTag) {\r\n metaTag.content = value;\r\n } else {\r\n metaTag = document.createElement('meta');\r\n metaTag.name = tagName;\r\n metaTag.content = value;\r\n }\r\n\r\n return metaTag;\r\n }\r\n\r\n /**\r\n * Returns the adobe script as a tag\r\n * \r\n * NOTE: Using 'integrity' on the tag causes issues with loading the script. See below:\r\n * \r\n * Access to script at '\r\n https://assets.adobedtm.com/be5dfd287373/8cdb3d539c44/launch-6df9e9b447f9.min.js'\r\n from origin '\r\n https://localhost:8443'\r\n has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header has a value '\r\n https://localhost'\r\n that is not equal to the supplied origin.\r\n \r\n * @returns \r\n */\r\n getAdobeScript() {\r\n const script = document.createElement('script');\r\n script.src = this.isProdServer()\r\n ? this.SCRIPT_URL_PROD\r\n : this.SCRIPT_URL_STAGING;\r\n\r\n return script;\r\n }\r\n\r\n isProdServer() {\r\n const prodDomains: string[] = this.getProductionServerList();\r\n return prodDomains.some((domain) => {\r\n const pattern = new RegExp(`${window.location.hostname}`);\r\n return pattern.exec(domain) != null;\r\n });\r\n }\r\n\r\n getProductionServerList() {\r\n const prodDomains: string[] = [];\r\n\r\n Object.keys(SitePublishedDomain).forEach((domain) => {\r\n for (const d of SitePublishedDomain[domain as keyof typeof Site].domains\r\n .prod) {\r\n prodDomains.push(d);\r\n }\r\n });\r\n\r\n return prodDomains;\r\n }\r\n}\r\n","import type { LanguageType, SiteAsset, SiteType, TemplateType } from './template.js';\n\nexport interface ConfigProperties {\n lang: LanguageType;\n wcmsTemplate: TemplateType;\n}\n\nexport interface ConfigModule {\n dataCDTSSetup(lang: LanguageType, wcmsTemplate: TemplateType): Promise;\n getConfig: (lang: LanguageType, wcmsTemplate: TemplateType) => Partial;\n is404Page(): boolean;\n hasSplashPage(): boolean;\n getSplashPageConfigs(): SiteConfig | undefined;\n hasCustomCDTSSetup(): boolean;\n customCDTSSetup: (lang: LanguageType, wcmsTemplate: TemplateType) => Promise;\n appendCustomSiteScripts(lang: LanguageType, wcmsTemplate: TemplateType): void;\n getFooterAssets(): Array;\n}\n\nexport interface CustomConfig {\n htmlTop: string;\n htmlBottom: string;\n}\n\n// REF: https://github.com/wet-boew/cdts-sgdc/blob/19ad28780ce4a3a0b5565e7791ac77b3afce99a9/src/common/cdts-setup.js#L299\nexport interface Config {\n mode: 'common' | 'app' | 'server' | 'splash';\n siteName: string;\n theme: CdtsThemeType;\n siteCssLinks: Array;\n siteJsLinks: Array;\n cdnEnv: string;\n GCToolsModal: boolean;\n onCDTSPageFinalized: string[];\n base: {\n subTheme: string;\n exitSecureSite: {\n exitScript: boolean;\n displayModal: boolean;\n };\n };\n serverBottom: {\n cdnEnv: string;\n };\n footer: {\n cdnEnv: string;\n subTheme: string;\n footerPath: string;\n showFeatures: boolean;\n showFooter?: boolean;\n contextualFooter: {\n title: string;\n links: [\n {\n text: string;\n href: string;\n }\n ];\n };\n };\n splashTop: {\n cdnEnv: string;\n };\n serverRefTop: {\n cdnEnv: string;\n };\n serverTop: {\n cdnEnv: string;\n };\n top: {\n cdnEnv: string;\n topSecMenu: boolean;\n appName: [\n {\n text: string;\n href: string;\n }\n ];\n subTheme: string;\n hidePlaceholderMenu: boolean;\n siteMenu: boolean;\n menuPath: string;\n menuLinks: Array;\n intranetTitle: [\n {\n href: string;\n text: string;\n boldText: string;\n acronym: string;\n }\n ];\n lngLinks: [\n {\n lang: LanguageType;\n href?: string;\n text: string;\n }\n ];\n GCToolsModal: boolean;\n breadcrumbs: [\n {\n title: string;\n acronym: string;\n href: string;\n }\n ];\n customSearch: [\n {\n action: string; // TODO: confirm if this is right\n placeholder: string;\n method: 'get' | 'post' | 'GET' | 'POST';\n hiddenInput: [\n {\n name: string;\n value: string;\n }\n ];\n }\n ];\n };\n preFooter: {\n cdnEnv: string;\n showPostContent: boolean;\n showShare: boolean;\n dateModified: string | Date;\n };\n}\n\ninterface ConfigMenuLink {\n href: string;\n text: string;\n subLinks?: Array;\n}\n\ninterface ConfigMenuSubLinks {\n subhref: string;\n subtext: string;\n}\n\nexport interface SiteConfig {\n getSiteName?: () => SiteType;\n getTemplateType?: () => TemplateType;\n getLanguageType?: () => LanguageType;\n getConfig: () => Partial;\n getCdtsThemeType?: () => CdtsThemeType;\n}\n\nexport const Versions = {\n CDTS: __CDTS_VERSION__,\n FONT_AWESOME: __FONT_AWESOME_VERSION__\n} as const;\nexport type Versions = (typeof Versions)[keyof typeof Versions];\n\nexport const CdtsTheme = {\n GC_WEB: 'gcweb',\n GC_INTRANET: 'gcintranet'\n} as Record;\nexport type CdtsThemeType = (typeof CdtsTheme)[keyof typeof CdtsTheme];\n","import { Versions, type CdtsThemeType, type Config } from '../types/config.js';\nimport type {\n CdtsSriInfo,\n CdtsTemplateConfig,\n LanguageType,\n WetAssetType\n} from '../types/template.js';\n\nexport default class CdtsConfigurator {\n private static readonly _templateFrontEndConfig = {\n cdtsVersion: Versions.CDTS.toString(),\n cdtsBaseURL: 'https://cdts.service.canada.ca/app/cls/WET'\n };\n private static _cdtsSriInfo: CdtsSriInfo | undefined;\n private static _themeType: string;\n\n constructor(themeType: CdtsThemeType) {\n CdtsConfigurator._themeType = themeType;\n\n this._getSriInfo()\n ?.then((sriInfo) => {\n CdtsConfigurator._cdtsSriInfo = sriInfo;\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n appendCdtsSetupScript(lang: LanguageType, cdtsConfiguration?: Partial) {\n const cdtslib = document.createElement('script');\n cdtslib.setAttribute(\n 'src',\n CdtsConfigurator._templateFrontEndConfig.cdtsBaseURL +\n `/${CdtsConfigurator._themeType}/${CdtsConfigurator._templateFrontEndConfig.cdtsVersion}/cdts/compiled/wet-${lang}.js`\n );\n cdtslib.setAttribute('data-cdts-setup', JSON.stringify(cdtsConfiguration));\n console.debug(cdtsConfiguration);\n if (CdtsConfigurator._cdtsSriInfo)\n cdtslib.setAttribute('integrity', CdtsConfigurator._cdtsSriInfo[`compiled/wet-${lang}.js`]);\n if (CdtsConfigurator._cdtsSriInfo) cdtslib.setAttribute('crossorigin', 'anonymous');\n document.head.appendChild(cdtslib);\n }\n\n /**\n * Retrieves the SRI INFO for scripts injected from CDTS\n */\n async _getSriInfo(): Promise {\n let json;\n\n if (!CdtsConfigurator._cdtsSriInfo) {\n const response = await fetch(`${CdtsConfigurator.getUrl()}/cdts/SRI-INFO.json`);\n json = response.json() as Promise;\n }\n\n return json || CdtsConfigurator._cdtsSriInfo;\n }\n\n static getDateModified() {\n const date = new Date();\n const dateStr: string = date.toISOString().split('T')[0];\n const metaTag = document.querySelector('meta[name=\"dcterms.modified\"]');\n const modifiedDate = metaTag?.getAttribute('content');\n return modifiedDate ?? dateStr;\n }\n\n static getCDTSTemplateConfigs(): CdtsTemplateConfig {\n return CdtsConfigurator._templateFrontEndConfig as CdtsTemplateConfig;\n }\n\n getCdtsSriInfo() {\n return CdtsConfigurator._cdtsSriInfo;\n }\n /**\n * The formatted CDTS url that includes the theme type and version\n *\n * @returns string\n */\n static getUrl(): string {\n return `${CdtsConfigurator.getCDTSTemplateConfigs().cdtsBaseURL}/${CdtsConfigurator._themeType}/${CdtsConfigurator.getCDTSTemplateConfigs().cdtsVersion}`;\n }\n\n static getWetAssetUrl(asset: WetAssetType): string {\n const ASSET_NAME = 0;\n const ASSET_PATH = 1;\n return `${CdtsConfigurator.getUrl() + asset[ASSET_PATH]}/${asset[ASSET_NAME]}`;\n }\n}\n","import type { RedirectJson, RedirectJsonEntry } from '../types/template.js';\n\nexport function redirect(path: string) {\n let urlpath = window.location.href\n .replace(window.location.protocol + '//', '')\n .replace(window.location.host, '');\n\n if (urlpath.match(/@-(eng|fra)\\.jsp/)) {\n urlpath = urlpath.replace(/(.*)@-(eng|fra)\\.jsp$/, '/$2$1.shtml');\n window.location.replace(urlpath);\n }\n\n fetch(path)\n .then((response) => response.json())\n .then((json: RedirectJson) => {\n let notfound = true;\n\n json.redirect.forEach((val: RedirectJsonEntry) => {\n if (urlpath.startsWith(val.from)) {\n const httpcode_en = document.getElementById('httpcode_en') as HTMLElement;\n const httpcode_fr = document.getElementById('httpcode_fr') as HTMLElement;\n const three_zero_two = document.getElementById('302') as HTMLElement;\n const redirect_to_en = document.getElementById('redirect_to_en') as HTMLElement;\n const redirect_to_fr = document.getElementById('redirect_to_fr') as HTMLElement;\n const page = document.getElementById('page') as HTMLElement;\n const countdown_en = document.getElementById('countdown_en') as HTMLElement;\n const countdown_fr = document.getElementById('countdown_fr') as HTMLElement;\n\n if (httpcode_en) httpcode_en.textContent = `${val.code}`;\n if (httpcode_fr) httpcode_fr.textContent = `${val.code}`;\n document.title = `HTTP redirect ${val.code} - redirect / Redirection HTTP ${val.code} - redirection trouvé`;\n if (three_zero_two) three_zero_two.classList.remove('hidden');\n if (three_zero_two) three_zero_two.setAttribute('aria-hidden', 'false');\n\n if (val.to.charAt(val.to.length - 1) == '/') {\n val.to = urlpath.replace(val.from, val.to);\n }\n if (redirect_to_en) redirect_to_en.setAttribute('href', val.to);\n if (redirect_to_fr) redirect_to_fr.setAttribute('href', val.to);\n if (redirect_to_en) redirect_to_en.textContent = val.to;\n if (redirect_to_fr) redirect_to_fr.textContent = val.to;\n\n if (val.code == 301) {\n window.location.href = val.to;\n } else {\n if (page) page.classList.remove('hidden');\n if (page) page.setAttribute('aria-hidden', 'false');\n\n let timeleft = 5;\n const downloadTimer = setInterval(function () {\n if (countdown_en) countdown_en.classList.remove('hidden');\n if (countdown_fr) countdown_fr.classList.remove('hidden');\n\n if (timeleft <= 0) {\n clearInterval(downloadTimer);\n if (countdown_en) countdown_en.textContent = '';\n if (countdown_fr) countdown_fr.textContent = '';\n if (countdown_en) countdown_en.classList.add('hidden');\n if (countdown_fr) countdown_fr.classList.add('hidden');\n\n window.location.href = val.to;\n } else {\n if (timeleft == 1) {\n if (countdown_en) countdown_en.textContent = `Redirecting in ${timeleft} second.`;\n if (countdown_fr)\n countdown_fr.textContent = `Redirection dans ${timeleft} seconde.`;\n } else {\n if (countdown_en)\n countdown_en.textContent = `Redirecting in ${timeleft} seconds.`;\n if (countdown_fr)\n countdown_fr.textContent = `Redirection dans ${timeleft} secondes.`;\n }\n }\n timeleft -= 1;\n }, 1000);\n }\n\n notfound = false;\n }\n });\n\n if (notfound) {\n const four_zero_four = document.getElementById('404') as HTMLElement;\n const page = document.getElementById('page') as HTMLElement;\n\n if (page) page.classList.remove('hidden');\n if (four_zero_four) four_zero_four.setAttribute('aria-hidden', 'false');\n if (four_zero_four) four_zero_four.classList.remove('hidden');\n }\n })\n .catch((error) => {\n console.error(error);\n });\n}\n","/**\n Determines whether there is a live preview page in the DOM or not\n */\n\nexport const EDIT_PREVIEWPAGE_UPDATE = 'Edit.PreviewPage.Update';\nexport const NO_PREVIEWPAGE = 'No.PreviewPage';\n\n/**\n * Determines if the page is in preview mode or not\n * @param url\n * @returns\n */\nexport function isInPreviewMode(url: string) {\n return (\n url.includes('cms-sgc.esdc-edsc.canada.ca') ||\n url.includes('cms-sgc.service.cloud-nuage.canada.ca') ||\n url.includes('app-ewcms-e2e-canadacentral.azurewebsites.net')\n );\n}\n\nexport function isLocalDev(url: string) {\n return url.includes('localhost');\n}\n\nexport function hasPreviewPage() {\n return window.parent.document.querySelector('iframe#previewPage') != null;\n}\nexport function isPreviewPageDocked() {\n return window.parent.opener === null;\n}\nexport function getUndockedParentPage(): Document {\n return (window.parent.opener as Window).parent.document;\n}\nexport function getDockedParentPage(): Document {\n return parent.parent.document;\n}\nexport function getParentPage() {\n if (hasPreviewPage()) {\n return isPreviewPageDocked() ? getDockedParentPage() : getUndockedParentPage();\n } else {\n return document;\n }\n}\n","import {\r\n Language,\r\n SitePublishedDomain,\r\n Template,\r\n type LanguageType,\r\n type Site,\r\n type SiteType,\r\n type TemplateType\r\n} from '../types/template.js';\r\nimport { hasPreviewPage, isInPreviewMode, isLocalDev } from './previewUtil.js';\r\n\r\nexport function isProdSite() {\r\n const hostName = window.location.hostname;\r\n return !(\r\n hostName.includes('cms-sgc.esdc-edsc.canada.ca') ||\r\n hostName.includes('cms-sgc.service.cloud-nuage.canada.ca') ||\r\n hostName.includes('localhost')\r\n );\r\n}\r\n\r\n// TODO: double check getPathName is okay with null return\r\nexport function getPathName() {\r\n let ret: string | null = window.location.pathname;\r\n\r\n if (ret.startsWith('/_conf/form_template/')) {\r\n ret = sessionStorage.getItem('enFilename');\r\n }\r\n return ret;\r\n}\r\n\r\nexport function getTemplate(): TemplateType {\r\n // Check for template type...\r\n let template = (\r\n document.querySelector('meta[name=\"wcms.template\"]') as HTMLMetaElement\r\n )?.content;\r\n if (template == null) {\r\n template = (\r\n document.querySelector('meta[name=\"template\"]') as HTMLMetaElement\r\n )?.content;\r\n }\r\n\r\n // Check for 404 page...\r\n if (!template) {\r\n if (document.querySelector('title')?.innerHTML.includes('HTTP Error 404'))\r\n template = Template['404'];\r\n }\r\n\r\n // Check for splash page...\r\n if (!template) {\r\n if (\r\n document.querySelector('body')?.classList.contains('splash') &&\r\n document.querySelector('div.splash-wrapper') &&\r\n document.querySelector('div.splash-content')\r\n ) {\r\n template = Template.SPLASH;\r\n }\r\n }\r\n\r\n return template as TemplateType;\r\n}\r\n\r\nexport function isContentFromSite(siteName: string) {\r\n let site;\r\n let containsSiteName;\r\n\r\n if (hasPreviewPage() || isInPreviewMode(window.location.href)) {\r\n site = readCookie('azure.blob.storage');\r\n } else {\r\n containsSiteName = window.location.href.includes('siteName');\r\n }\r\n\r\n return site === siteName || containsSiteName;\r\n}\r\n\r\nexport function buildSiteList() {\r\n const siteList: Record> = {};\r\n Object.keys(SitePublishedDomain).forEach((site) => {\r\n siteList[SitePublishedDomain[site as keyof typeof Site].name] = [];\r\n siteList[SitePublishedDomain[site as keyof typeof Site].name].push(\r\n ...[\r\n ...SitePublishedDomain[site as keyof typeof Site].domains.dev,\r\n ...SitePublishedDomain[site as keyof typeof Site].domains.test,\r\n ...SitePublishedDomain[site as keyof typeof Site].domains.staging,\r\n ...SitePublishedDomain[site as keyof typeof Site].domains.prod,\r\n ...SitePublishedDomain[site as keyof typeof Site].domains.e2e\r\n ]\r\n );\r\n });\r\n\r\n console.debug(`Site List Build: ${JSON.stringify(siteList)}`);\r\n return siteList;\r\n}\r\n\r\nexport function getSiteForConfig(url: string): SiteType {\r\n let site: string | null = 'esdc-prv'; // Default\r\n buildSiteList();\r\n if (isLocalDev(url) || isInPreviewMode(url)) {\r\n site = readCookie('azure.blob.storage');\r\n } else {\r\n let matchFound = false;\r\n const sites = buildSiteList();\r\n for (const name in sites) {\r\n sites[name].forEach((entry) => {\r\n if (url.includes(entry)) {\r\n site = name;\r\n matchFound = true;\r\n }\r\n });\r\n if (matchFound) break;\r\n }\r\n }\r\n\r\n console.debug('Target Site: ' + site);\r\n return site as SiteType;\r\n}\r\n\r\nexport function readCookie(name: string): string | null {\r\n const nameEQ = name + '=';\r\n const ca = document.cookie.split(';');\r\n let returnValue = null;\r\n\r\n ca.forEach((cookie) => {\r\n while (cookie.startsWith(' ')) {\r\n cookie = cookie.substring(1, cookie.length);\r\n }\r\n if (cookie.startsWith(nameEQ)) {\r\n returnValue = cookie.substring(nameEQ.length, cookie.length);\r\n }\r\n });\r\n\r\n return returnValue;\r\n}\r\n\r\nexport function getUrlSearchString(lang: LanguageType) {\r\n const originalSearchString = window.location.search;\r\n if (originalSearchString) {\r\n if (lang === Language.ENGLISH) {\r\n return originalSearchString.replace(/en/g, 'fr');\r\n } else {\r\n return originalSearchString.replace(/fr/g, 'en');\r\n }\r\n }\r\n\r\n // TODO: what happens when this is empty?\r\n return '';\r\n}\r\n","import { redirect } from '../modules/redirect.js';\nimport { buildSiteList } from '../modules/site.js';\nimport type { SiteConfig, Config } from '../types/config';\nimport type { TemplateFrontEndGlobals } from '../types/script.js';\nimport { Site, type CustomWindow } from '../types/template.js';\ndeclare let window: CustomWindow;\n\nexport default class FourZeroFourConfig implements SiteConfig {\n getConfig() {\n let boundRedirect;\n switch ((window.templateFrontEnd as TemplateFrontEndGlobals).site) {\n case Site.ESDC_PRV:\n boundRedirect = redirect.bind(this, '/js/redirect/esdc-edsc.json');\n break;\n case Site.RED_SEAL:\n boundRedirect = redirect.bind(this, '/js/redirect/redseal_redirects.json');\n break;\n case Site.ELLIS_CHART:\n boundRedirect = redirect.bind(this, '/js/redirect/redseal_redirects.json');\n break;\n case Site.ISERVICE_PRV:\n boundRedirect = redirect.bind(this, '/js/redirect/iservice.json');\n break;\n case Site.EIBOARD:\n boundRedirect = redirect.bind(this, '/js/redirect/eiboard.json');\n break;\n case Site.RDSP:\n boundRedirect = redirect.bind(this, '/js/redirect/reei-rdsp.json');\n break;\n case Site.RESP:\n boundRedirect = redirect.bind(this, '/js/redirect/reee-resp.json');\n break;\n case Site.HORIZONS:\n boundRedirect = redirect.bind(this, '/js/redirect/horizons.json');\n break;\n default:\n break;\n }\n\n return {\n mode: 'server',\n siteJsLinks: [\n {\n asset: boundRedirect,\n isInjectable: () => {\n const sites = buildSiteList();\n return sites[(window.templateFrontEnd as TemplateFrontEndGlobals).site].some(\n (entry) => {\n return window.location.href.includes(entry);\n }\n );\n }\n }\n ]\n } as Partial;\n }\n}\n","import { merge } from 'lodash-es';\nimport AdobeModule from '../modules/adobeAnalytics.js';\nimport {\n type ConfigModule,\n type SiteConfig,\n type Config,\n type CdtsThemeType,\n CdtsTheme\n} from '../types/config';\nimport type { TemplateType, SiteAsset, LanguageType } from '../types/template';\nimport CdtsConfigurator from './cdts.config.js';\nimport FourZeroFourConfig from './404.config.js';\nimport type { AdobeConfig } from '../types/adobeConfig.js';\n\n/**\n * Base class for configuration modules.\n */\nexport default abstract class BaseConfig implements ConfigModule {\n async dataCDTSSetup(lang: LanguageType, wcmsTemplate: TemplateType): Promise {\n if (!this.is404Page() && !this.hasSplashPage()) {\n await new AdobeModule(this.getAdobeConfig()).run();\n }\n\n const cdtsConfiguration = this.getConfig(lang, wcmsTemplate);\n\n const cdtsConfigurator = new CdtsConfigurator(cdtsConfiguration.theme as CdtsThemeType);\n\n cdtsConfigurator.appendCdtsSetupScript(lang, cdtsConfiguration);\n\n return Promise.resolve();\n }\n\n appendCustomSiteScripts(lang: LanguageType, template: TemplateType) {\n const cdtsConfiguration = this.getConfig(lang, template);\n\n // Check site 'css' and 'js' conditionals if any\n cdtsConfiguration.siteJsLinks?.forEach((js, i) => {\n if (js.isInjectable) {\n if (!js.isInjectable()) cdtsConfiguration.siteJsLinks?.splice(i, 1);\n }\n });\n cdtsConfiguration.siteCssLinks?.forEach((css, i) => {\n if (css.isInjectable) {\n if (!css.isInjectable()) cdtsConfiguration.siteCssLinks?.splice(i, 1);\n }\n });\n\n // Append custom site scripts\n const body = document.querySelector('body');\n cdtsConfiguration.siteJsLinks?.forEach((script) => {\n if (typeof script.asset === 'string') {\n const scriptElement = document.createElement('script');\n scriptElement.setAttribute('src', script.asset);\n if (body) {\n // Insert the script before the closing tag\n body.appendChild(scriptElement);\n } else {\n console.error('Body element not found');\n }\n } else {\n (script.asset as () => void)();\n }\n });\n\n cdtsConfiguration.siteCssLinks?.forEach((cssLink) => {\n const link = this.createLinkCSSElement(cssLink);\n if (cssLink.sri) link.setAttribute('integrity', cssLink.sri);\n if (cssLink.sri) link.setAttribute('crossorigin', 'anonymous');\n document.head.appendChild(link);\n });\n }\n\n createLinkCSSElement(siteAsset: SiteAsset) {\n const css = document.createElement('link');\n css.setAttribute('href', siteAsset.asset as string);\n css.setAttribute('type', siteAsset.type ? siteAsset.type : 'text/css');\n css.setAttribute('rel', siteAsset.rel ? siteAsset.rel : 'stylesheet');\n return css;\n }\n\n abstract getChildConfigs(): Array;\n abstract getAdobeConfig(): AdobeConfig;\n\n hasSplashPage(): boolean {\n return false;\n }\n\n is404Page(): boolean {\n const titles: Array = Array.from(\n document.querySelectorAll('meta[name=\"dcterms.title\"]')\n );\n return titles.some((title) => {\n return (\n title.content === `We couldn't find that Web page (Error 404)` ||\n title.content === 'Nous ne pouvons trouver cette page Web (Erreur 404)'\n );\n });\n }\n\n getSplashPageConfigs(): SiteConfig | undefined {\n return undefined;\n }\n\n hasCustomCDTSSetup(): boolean {\n return false;\n }\n\n customCDTSSetup(lang: LanguageType, wcmsTemplate: TemplateType): Promise {\n console.debug(`Lanuage set to ${lang}`);\n console.debug(`Template type set to ${wcmsTemplate}`);\n console.debug('No custom CDTS configuration present for this site');\n\n return Promise.resolve();\n }\n\n getFooterAssets(): Array {\n return [];\n }\n\n getDefaultChildConfig(lang: LanguageType): SiteConfig | undefined {\n console.debug(`Default Child Config Language: ${lang}`);\n return undefined;\n }\n\n getConfig(lang: LanguageType, wcmsTemplate: TemplateType): Partial {\n console.debug(`Lanuage set to ${lang}`);\n console.debug(`Template type set to ${wcmsTemplate}`);\n let siteConfig: SiteConfig | undefined = undefined;\n\n // In this order we grab the site configuration for the page\n if (this.hasSplashPage()) siteConfig = this.getSplashPageConfigs();\n if (!siteConfig && this.is404Page()) siteConfig = new FourZeroFourConfig();\n if (!siteConfig)\n siteConfig = this.getChildConfigs().find((config) => {\n if (config.getLanguageType && config.getTemplateType)\n return config.getLanguageType() === lang && config.getTemplateType() === wcmsTemplate;\n });\n if (!siteConfig) siteConfig = this.getDefaultChildConfig(lang);\n if (!siteConfig)\n throw new Error(\n 'Failed to find the site configuration! Please check to make sure you have the correct settings in place.'\n );\n\n const siteConfigs = siteConfig.getConfig();\n const defaultConfigs = {\n theme: CdtsTheme.GC_INTRANET,\n cdnEnv: 'prod',\n onCDTSPageFinalized: [''],\n footer: {\n cdnEnv: 'prod'\n },\n top: {\n cdnEnv: 'prod'\n },\n preFooter: {\n cdnEnv: 'prod'\n }\n };\n\n return merge(defaultConfigs, siteConfigs) as Partial;\n }\n}\n","export const fallback = {\n title: 'Welcome!',\n inter: 'interpolated {{val}}'\n};\n","export const ns1 = {\r\n sites: {\r\n ['red-seal']: {\r\n adobeAnalytics: {\r\n sitename: 'ESDC-EDSC_RedSeal-Sceaurouge',\r\n creator: 'Employment and Social Development Canada'\r\n }\r\n },\r\n ['ellis-chart']: {\r\n adobeAnalytics: {\r\n sitename: 'ESDC-EDSC_EllisChart-TableauEllis',\r\n creator: 'Employment and Social Development Canada'\r\n }\r\n },\r\n horizons: {\r\n adobeAnalytics: {\r\n sitename: 'ESDC-EDSC_HORIZONS-HORIZONS',\r\n creator: 'Employment and Social Development Canada'\r\n },\r\n config: {\r\n top: {\r\n appName: {\r\n text: 'Policy Horizons Canada'\r\n },\r\n lngLinks: {\r\n text: 'Français'\r\n },\r\n breadcrumbs: {\r\n title: 'Home',\r\n acronym: 'Home'\r\n },\r\n customSearch: {\r\n placeholder: 'Search Policy Horizons'\r\n }\r\n }\r\n },\r\n pages: {\r\n splashPage: {\r\n title: 'Policy Horizons Canada'\r\n }\r\n },\r\n components: {}\r\n },\r\n ['esdc-prv']: {\r\n config: {\r\n top: {\r\n customSearch: {\r\n placeholder: 'Search the Intranet'\r\n }\r\n }\r\n },\r\n modules: {\r\n moreNewsfeed: {\r\n pleaseWait:\r\n 'Please wait while the content is loading. It may take some time, thank you for your patience.',\r\n noContent:\r\n 'No content available for this year, sorry for the inconvenience.'\r\n },\r\n newsfeed: {\r\n dm: 'DM messages',\r\n champions: 'ADMs/Champions messages',\r\n corporate: 'Corporate messages',\r\n noArticles: 'No articles currently available',\r\n regionalNews: 'Regional newsletters',\r\n atlantic: 'Atlantic',\r\n portrait: 'Atlantic Portraits home',\r\n surfaceBlog: 'Surfaces – Assistant Deputy Minister (ADM) Blog',\r\n quebec: 'Quebec',\r\n infoExpress: 'Info-Express - Archives',\r\n ontario: 'Ontario',\r\n agora: 'Agora Blog',\r\n wt: 'WT'\r\n },\r\n articles: {\r\n intersection: 'Intersection',\r\n findArticle: 'Find an Article',\r\n search: 'Search',\r\n enterKeywords: 'Enter keywords',\r\n searchIntersection: 'Search Intersection',\r\n categories: 'Categories',\r\n categoryTypes: {\r\n news: 'News',\r\n community: 'Your Community',\r\n tipsTricks: 'Tips and Tricks',\r\n events: 'Learning and Events',\r\n didYouKnow: 'Did You Know?',\r\n trending: 'Trending',\r\n working: 'Working',\r\n living: 'Living',\r\n learning: 'Learning'\r\n }\r\n }\r\n }\r\n },\r\n rdsp: {\r\n config: {\r\n top: {\r\n lngLinks: {\r\n text: 'Français'\r\n }\r\n }\r\n },\r\n pages: {\r\n splashPage: {\r\n title:\r\n 'Welcome to Registered Disability Savings Plans (RDSP) training'\r\n }\r\n }\r\n },\r\n resp: {\r\n config: {\r\n top: {\r\n lngLinks: {\r\n text: 'Français'\r\n }\r\n }\r\n },\r\n pages: {\r\n splashPage: {\r\n title: 'Welcome to Registered Education Savings Plan (RESP) training'\r\n }\r\n }\r\n },\r\n ['iservice-prv']: {\r\n config: {\r\n top: {\r\n intranetTitle: {\r\n text: 'Intranet',\r\n boldText: 'ESDC/SC',\r\n acronym: 'Employment and Social Development Canada / Service Canada'\r\n },\r\n lngLinks: {\r\n text: 'Français'\r\n },\r\n breadcrumbs: {\r\n title: 'Home',\r\n acronym: 'Home'\r\n },\r\n customSearch: {\r\n placeholder: 'Search the Intranet'\r\n }\r\n }\r\n },\r\n pages: {\r\n splashPage: {\r\n title: 'Welcome to iService'\r\n }\r\n },\r\n components: {\r\n buttons: {\r\n lookingFor: {\r\n text: 'Feedback Form'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","export const ns1 = {\r\n sites: {\r\n ['red-seal']: {\r\n adobeAnalytics: {\r\n sitename: 'ESDC-EDSC_RedSeal-Sceaurouge',\r\n creator: 'Emploi et Développement social Canada'\r\n }\r\n },\r\n ['ellis-chart']: {\r\n adobeAnalytics: {\r\n sitename: 'ESDC-EDSC_EllisChart-TableauEllis',\r\n creator: 'Emploi et Développement social Canada'\r\n }\r\n },\r\n horizons: {\r\n adobeAnalytics: {\r\n sitename: 'ESDC-EDSC_HORIZONS-HORIZONS',\r\n creator: 'Emploi et Développement social Canada'\r\n },\r\n config: {\r\n top: {\r\n appName: {\r\n text: 'Horizons de politiques Canada'\r\n },\r\n lngLinks: {\r\n text: 'English'\r\n },\r\n breadcrumbs: {\r\n title: 'Home',\r\n acronym: 'Home'\r\n },\r\n customSearch: {\r\n placeholder: 'Rechercher Policy Horizons'\r\n }\r\n }\r\n },\r\n pages: {\r\n splashPage: {\r\n title: 'Horizons de politiques Canada'\r\n }\r\n },\r\n components: {}\r\n },\r\n ['esdc-prv']: {\r\n config: {\r\n top: {\r\n customSearch: {\r\n placeholder: `Rechercher sur l'intranet`\r\n }\r\n }\r\n },\r\n modules: {\r\n moreNewsfeed: {\r\n pleaseWait:\r\n 'Veuillez patienter pendant le chargement du contenu. Ça peut prendre du temps, merci de votre patience.',\r\n noContent:\r\n 'Aucun contenu disponible pour cette année, désolé pour la gêne occasionnée.'\r\n },\r\n newsfeed: {\r\n dm: 'Messages des SM',\r\n champions: 'Messages des SMA/Champions',\r\n corporate: 'Messages ministériels',\r\n noArticles: 'Aucun article actuellement disponible',\r\n regionalNews: 'Infolettres régionales',\r\n atlantic: 'Atlantique',\r\n portrait: \"Portraits de l'Atlantique\",\r\n surfaceBlog:\r\n 'Surfaces – Le blogue de la sous-ministre adjointe (SMA)',\r\n quebec: 'Québec',\r\n infoExpress: 'Info-Express - Archives',\r\n ontario: 'Ontario',\r\n agora: \"Blogue d'Agora\",\r\n wt: 'Ouest du Canada et des Territoires'\r\n },\r\n articles: {\r\n intersection: 'Intersection',\r\n findArticle: 'Trouver un article',\r\n search: 'Recherche',\r\n enterKeywords: 'Entrez les mots clefs',\r\n searchIntersection: 'Recherchez l’Intersection',\r\n categories: 'Catégories',\r\n categoryTypes: {\r\n news: 'Nouvelles',\r\n community: 'Votre communauté',\r\n tipsTricks: 'Trucs et astuces',\r\n events: 'Apprentissage et événements',\r\n didYouKnow: 'Le saviez-vous?',\r\n trending: \"Sujet de l'heure\",\r\n working: 'Travail',\r\n living: 'Vivre',\r\n learning: 'Apprentissage'\r\n }\r\n }\r\n }\r\n },\r\n rdsp: {\r\n config: {\r\n top: {\r\n lngLinks: {\r\n text: 'English'\r\n }\r\n }\r\n },\r\n pages: {\r\n splashPage: {\r\n title:\r\n 'Bienvenue à Formation sur le régime enregistré d’épargne-invalidité (REEI)'\r\n }\r\n }\r\n },\r\n resp: {\r\n config: {\r\n top: {\r\n lngLinks: {\r\n text: 'English'\r\n }\r\n }\r\n },\r\n pages: {\r\n splashPage: {\r\n title: `Bienvenue à Formation sur le régime enregistré d'épargne-études (REEE)`\r\n }\r\n }\r\n },\r\n ['iservice-prv']: {\r\n config: {\r\n top: {\r\n intranetTitle: {\r\n text: 'Intranet',\r\n boldText: 'EDSC/SC',\r\n acronym: 'Emploi et Développement social Canada / Service Canada'\r\n },\r\n lngLinks: {\r\n text: 'English'\r\n },\r\n breadcrumbs: {\r\n title: 'Accueil',\r\n acronym: 'Accueil'\r\n },\r\n customSearch: {\r\n placeholder: `Rechercher sur l'intranet`\r\n }\r\n }\r\n },\r\n pages: {\r\n splashPage: {\r\n title: 'Bienvenue à iService'\r\n }\r\n },\r\n components: {\r\n buttons: {\r\n lookingFor: {\r\n text: 'Formulaire de rétroaction'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","import { fallback } from './locales/en/fallback';\nimport { ns1 as enNs1 } from './locales/en/ns1';\nimport { ns1 as frNs1 } from './locales/fr/ns1';\n\nconst resources = {\n fallback,\n enNs1,\n frNs1\n} as const;\n\nexport default resources;\n","import i18next from 'i18next';\nimport resources from './resources.js';\nimport { Language } from '../types/template.js';\n\ni18next\n .init({\n debug: process.env.NODE_ENV !== 'production',\n lng: getLanguage(),\n fallbackLng: 'en',\n defaultNS: 'ns1',\n fallbackNS: 'fallback',\n resources: {\n en: {\n ns1: resources.enNs1,\n fallback: resources.fallback\n },\n fr: {\n ns1: resources.frNs1\n }\n }\n })\n .catch((error) => {\n console.error(error);\n });\n\n/**\n * Retrieves text from i18n configuration files that is appropriate for the detected language\n *\n * REF:// https://github.com/i18next/i18next/blob/master/examples/typescript/index.ts\n *\n * NOTE: Error in TS with this library. TS(2589): Type instantiation is excessively deep and possibly infinite.\n *\n * @param key\n * @param option\n * @returns\n */\nexport default function text(key: string, option: object = {}): string {\n // @ts-expect-error TS(2589). Throws only with ts v5\n return i18next.t(key, option) as string;\n}\n\nexport function getOtherLang(): string {\n let otherLang = Language.ENGLISH.toString(); // Default to 'en'\n\n const metaTagFr = document.querySelector('meta[name=\"wcms.fr_url\"]') as HTMLMetaElement;\n const metaTagEn = document.querySelector('meta[name=\"wcms.en_url\"]') as HTMLMetaElement;\n if (metaTagFr != null) {\n otherLang = metaTagFr.content;\n }\n if (metaTagEn != null) {\n otherLang = metaTagEn.content;\n }\n\n return otherLang;\n}\n/**\n * Retrieves the language property set for the page. By default if there is no\n * matching language found, we will default to 'en'\n * @returns\n */\nfunction getLanguage() {\n const DEFAULT_LANGUAGE = Language.ENGLISH;\n\n let lang = document.documentElement.lang;\n if (lang !== Language.ENGLISH && lang !== Language.FRENCH) {\n const metaTag = document.querySelector('meta[name=\"dcterms.language\"]') as HTMLMetaElement;\n lang = metaTag ? metaTag.content : DEFAULT_LANGUAGE;\n }\n\n if (lang.includes('eng')) lang = Language.ENGLISH;\n if (lang.includes('fra')) lang = Language.FRENCH;\n\n return lang;\n}\n","import { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template';\r\n\r\nexport default class EiBoardGenericConfigEN implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.EIBOARD;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.DEFAULT;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.ENGLISH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_INTRANET;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n siteJsLinks: [{ asset: '/js/eiboard_custom.js' }],\r\n footer: {\r\n footerPath: '/_conf/assets/en/footer/footer.html',\r\n showFeatures: false,\r\n showFooter: false,\r\n contextualFooter: {\r\n title: 'Title',\r\n links: [\r\n {\r\n text: 'title',\r\n href: '#'\r\n }\r\n ]\r\n }\r\n },\r\n top: {\r\n appName: [\r\n {\r\n text: 'Employment Insurance (EI) appeals',\r\n href: `/en/index.shtml`\r\n }\r\n ],\r\n siteMenu: false,\r\n menuPath: '/_conf/assets/en/menu/menu.html',\r\n lngLinks: [\r\n {\r\n lang: Language.FRENCH,\r\n href: getOtherLang(),\r\n text: 'Français'\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: '/en/search/index.html',\r\n placeholder: 'Employment Insurance (EI) appeals',\r\n method: 'get',\r\n hiddenInput: [\r\n {\r\n name: 'src',\r\n value: '1'\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showPostContent: false\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template';\r\n\r\nexport default class EiBoardGenericConfigFR implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.EIBOARD;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.DEFAULT;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.FRENCH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_INTRANET;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n siteJsLinks: [{ asset: '/js/eiboard_custom.js' }],\r\n footer: {\r\n footerPath: '/_conf/assets/fr/footer/footer.html',\r\n showFeatures: false,\r\n showFooter: false\r\n },\r\n top: {\r\n siteMenu: false,\r\n menuPath: '/_conf/assets/fr/menu/menu.html',\r\n lngLinks: [\r\n {\r\n lang: Language.ENGLISH,\r\n href: getOtherLang(),\r\n text: 'English'\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: '/fr/search/index.html',\r\n placeholder: 'Appels en assurance-emploi (AE)',\r\n method: 'get',\r\n hiddenInput: [\r\n {\r\n name: 'src',\r\n value: '1'\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showPostContent: false\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import type { SiteConfig, Config } from '../../types/config';\nimport { WetAsset } from '../../types/template.js';\nimport CdtsConfigurator from '../cdts.config.js';\n\nexport default class EiboardSplashPageConfig implements SiteConfig {\n getConfig() {\n return {\n siteCssLinks: [\n {\n asset: CdtsConfigurator.getWetAssetUrl(WetAsset.CSS_MESSAGES),\n sri: 'sha512-utHIWB+pwhbqgoAaf4clvQ6s7i9YpDgjtQsXwd88N0ivH3oV3CNvypCTw/67EWv54Ra4QXDsjc9Pv3UBtGsEvQ=='\n },\n {\n asset: CdtsConfigurator.getWetAssetUrl(WetAsset.CSS_FAVICON),\n rel: 'icon',\n type: 'image/x-icon',\n sri: 'sha512-K5sY7P1HeSsL9CWCrDbDjF28nBQpu7PPW4hKI6e5k7+Y6MJZVJvWP36tEiHfrzOU8jJWNNOgKG72utwJr0DJ6Q=='\n }\n ]\n } as Partial;\n }\n}\n","import type { AdobeConfig } from '../../types/adobeConfig.js';\r\nimport type { SiteConfig } from '../../types/config';\r\nimport {\r\n Language,\r\n SectionIdentifiers,\r\n type LanguageType,\r\n type TemplateType\r\n} from '../../types/template';\r\nimport BaseConfig from '../base.config';\r\nimport EiBoardGenericConfigEN from './eiboard.generic.en.config';\r\nimport EiBoardGenericConfigFR from './eiboard.generic.fr.config';\r\nimport EiboardSplashPageConfig from './eiboard.splashPage.config.js';\r\n\r\nexport default class EiBoardConfig extends BaseConfig {\r\n private readonly _configs: Array = [\r\n new EiBoardGenericConfigEN(),\r\n new EiBoardGenericConfigFR()\r\n ];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n getChildConfigs() {\r\n return this._configs;\r\n }\r\n\r\n getAdobeConfig() {\r\n const config: AdobeConfig = {\r\n sitename: 'ESDC-EDSC_EIBOARD-EDSCPRV',\r\n accessRights: '2'\r\n };\r\n return config;\r\n }\r\n\r\n hasSplashPage(): boolean {\r\n let titles: Array = Array.from(\r\n document.querySelectorAll('meta[name=\"dc.title\"]')\r\n );\r\n if (titles.length === 0)\r\n titles = Array.from(\r\n document.querySelectorAll('meta[name=\"dcterms.title\"]')\r\n );\r\n return titles.some((title) => {\r\n return (\r\n title.content === 'Appels en assurance-emploi (AE)' ||\r\n title.content === 'Employment Insurance (EI) appeals'\r\n );\r\n });\r\n }\r\n\r\n getSplashPageConfigs(): SiteConfig | undefined {\r\n return new EiboardSplashPageConfig();\r\n }\r\n\r\n getDefaultChildConfig(lang: LanguageType): SiteConfig | undefined {\r\n return lang === Language.ENGLISH\r\n ? new EiBoardGenericConfigEN()\r\n : new EiBoardGenericConfigFR();\r\n }\r\n\r\n hasCustomCDTSSetup(): boolean {\r\n return true;\r\n }\r\n async customCDTSSetup(\r\n lang: LanguageType,\r\n wcmsTemplate: TemplateType\r\n ): Promise {\r\n const config = this.getConfig(lang, wcmsTemplate);\r\n\r\n // // HEADER\r\n const defTop = document.getElementById(SectionIdentifiers.CUSTOM_TOP);\r\n const responseHeader = await fetch(config.top?.menuPath as string);\r\n const menuHtmlHeader = await responseHeader.text();\r\n if (defTop) defTop.outerHTML = menuHtmlHeader;\r\n\r\n // LANGUAGE SELECT\r\n const lngSection = document\r\n .getElementById('wb-lng')\r\n ?.querySelector('a') as HTMLAnchorElement;\r\n if (lngSection) {\r\n lngSection.href = config.top?.lngLinks[0].href as string;\r\n lngSection.innerHTML = config.top?.lngLinks[0].text as string;\r\n lngSection.setAttribute('lang', config.top?.lngLinks[0].lang as string);\r\n }\r\n\r\n // FOOTER\r\n const defFooter = document.getElementById(SectionIdentifiers.CUSTOM_FOOTER);\r\n const responseFooter = await fetch(config.footer?.footerPath as string);\r\n const menuHtmlFooter = await responseFooter.text();\r\n if (defFooter) defFooter.outerHTML = menuHtmlFooter;\r\n\r\n return Promise.resolve();\r\n }\r\n}\r\n","import i18next from 'i18next';\r\nimport { Language } from '../types/template.js';\r\nimport Module from './Module.js';\r\n\r\nexport default class LeftNavigationMenuModule extends Module {\r\n moduleReady: boolean = false;\r\n\r\n getModuleName(): string {\r\n return 'leftNavMenu';\r\n }\r\n\r\n doLogic(): Promise {\r\n this.waitUntilTvarLeftNavReady(() => {\r\n this.update();\r\n this.moduleReady = true;\r\n }).catch((err) => console.log(err));\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n update() {\r\n const tvarLeftNav = document.querySelector('tvar[data-tvar=\"left_nav\"]');\r\n const dataAjaxDiv =\r\n document.querySelector('div[data-ajax-append*=\"left_nav\"]') ||\r\n document.querySelector('div[data-ajax-append*=\"nav_gauche\"]');\r\n // Some content hasn't been updated and won't contain a tvar tag so check for div with data tag as well\r\n const leftNavElement = tvarLeftNav ?? dataAjaxDiv;\r\n this.setActiveLink(\r\n Array.from(\r\n leftNavElement?.querySelectorAll('li') as NodeListOf\r\n )\r\n );\r\n\r\n const main = document.querySelector('main');\r\n let nav = document.querySelector('nav#wb-sec');\r\n\r\n if (main && leftNavElement && leftNavElement.innerHTML.length > 0) {\r\n const containerDiv = document.createElement('div');\r\n containerDiv.classList.add('container');\r\n containerDiv.id = 'left_nav_container';\r\n const rowDiv = document.createElement('div');\r\n rowDiv.classList.add('row');\r\n main.classList.add('col-md-9', 'col-md-push-3');\r\n main.classList.remove('container');\r\n\r\n if (!nav) {\r\n leftNavElement.outerHTML = `\r\n `;\r\n\r\n nav = document.querySelector('nav#wb-sec') as HTMLElement;\r\n }\r\n\r\n nav.classList.add('col-md-3', 'col-md-pull-9');\r\n nav.setAttribute('aria-labelledby', 'wb-sec-h');\r\n nav.removeAttribute('role');\r\n rowDiv.appendChild(main);\r\n rowDiv.appendChild(nav);\r\n containerDiv.appendChild(rowDiv);\r\n const header = document.querySelector('header[role=\"banner\"]');\r\n header?.after(containerDiv);\r\n\r\n /* FIXES: \r\n - Update french text in content pages if loading english page instead of replacing all existing content\r\n */\r\n const h2 = document.querySelector('h2#wb-sec-h') as HTMLElement;\r\n if (h2)\r\n h2.innerHTML =\r\n i18next.language === Language.ENGLISH\r\n ? 'subsequent menu'\r\n : 'menu ultérieur';\r\n }\r\n }\r\n /**\r\n * Waits until there is something in the left navigation tvar element. If nothing exists will timeout\r\n *\r\n * Author: cjsigouin @ 07272023\r\n */\r\n waitUntilTvarLeftNavReady(\r\n callback = () => {},\r\n intervalInMilliseconds = 1000,\r\n timeoutInMilliseconds = 10000\r\n ) {\r\n console.debug(`waitUntilTvarLeftNavReady Executed`);\r\n let hasTimedOut = false;\r\n\r\n const untilReady = new Promise((resolve) => {\r\n const check = () => {\r\n const dataAjaxDiv =\r\n document.querySelector('div[data-ajax-append*=\"left_nav\"]') ||\r\n document.querySelector('div[data-ajax-append*=\"nav_gauche\"]');\r\n if (\r\n dataAjaxDiv &&\r\n (dataAjaxDiv as HTMLElement).innerHTML.trim().length > 0\r\n ) {\r\n console.debug(\r\n 'Left Navigation Ready: ' +\r\n (dataAjaxDiv as HTMLElement).innerHTML.length\r\n );\r\n resolve(callback.call(this));\r\n } else {\r\n console.debug('Left Navigation Not Ready');\r\n if (!hasTimedOut) window.setTimeout(check, intervalInMilliseconds);\r\n }\r\n };\r\n check();\r\n });\r\n\r\n const timeout = new Promise(function (_resolve, reject) {\r\n setTimeout(() => {\r\n hasTimedOut = true;\r\n reject(\r\n new Error(\r\n `Time out! Waited for left navigation content and stopped after ${timeoutInMilliseconds / 1000} second(s)`\r\n )\r\n );\r\n }, timeoutInMilliseconds);\r\n });\r\n\r\n return Promise.race([untilReady, timeout])\r\n .then((data) => {\r\n return data;\r\n })\r\n .catch((e) => {\r\n console.debug(e);\r\n });\r\n }\r\n\r\n setActiveLink(listItems: Array) {\r\n console.debug(listItems);\r\n\r\n const listItem = listItems\r\n .map((listItem: HTMLLIElement) => {\r\n if (listItem.classList.contains('active'))\r\n listItem.classList.remove('active');\r\n return listItem;\r\n })\r\n .find((listItem: HTMLLIElement) => {\r\n return window.location.href.includes(\r\n (listItem.firstChild as HTMLAnchorElement).href\r\n );\r\n });\r\n\r\n if (listItem) {\r\n listItem.classList.add('active');\r\n (listItem.firstChild as HTMLAnchorElement).setAttribute(\r\n 'href',\r\n 'javascript:void(0)'\r\n ); // Disables the link\r\n (listItem.firstChild as HTMLAnchorElement).setAttribute(\r\n 'aria-current',\r\n 'page'\r\n );\r\n (listItem.firstChild as HTMLAnchorElement).classList.add(\r\n 'wb-navcurr',\r\n 'active'\r\n );\r\n }\r\n }\r\n}\r\n","import type { Callback, CustomWindow } from './types/template.js';\ndeclare let window: CustomWindow;\n\n/**\n * Utility to verify when things are ready on the page\n */\nexport default class WhenReady {\n static whenWetIsReady(cb: Callback) {\n const interval = setInterval(() => {\n if (window?.wb.isReady) {\n console.debug('WET Toolkit is now ready');\n cb();\n clearInterval(interval);\n } else {\n console.debug('whenWetIsReady - not ready yet');\n }\n }, 500);\n }\n /**\n * Will verify that the toolkit is ready and execute a callback function at that point\n * @param cb\n */\n static whenTemplateReady(cb: Callback) {\n WhenReady.whenJqueryReady(() => {\n const interval = setInterval(() => {\n if ((window.templateFrontEnd).ready) {\n console.debug('CDTS/WET Toolkit is now ready');\n clearInterval(interval);\n cb();\n } else {\n console.debug('whenTemplateReady - not ready yet');\n }\n }, 500);\n });\n }\n /**\n * Will verify that jQuery is ready and execute a callback function at that point\n * @param cb\n */\n static whenJqueryReady(cb: Callback) {\n const interval = setInterval(() => {\n try {\n if ($() || jQuery()) {\n console.debug('jQuery is now ready');\n cb();\n clearInterval(interval);\n }\n } catch (e) {\n console.debug('whenJqueryReady - not ready yet', e);\n }\n }, 500);\n }\n /**\n * Will verify that the left navigation is ready and execute a callback function at that point\n * @param {*} cb\n */\n static whenLeftNavReady(cb: Callback) {\n const interval = setInterval(() => {\n const tvarLeftNav = document.querySelector('tvar[data-tvar=\"left_nav\"]');\n const divDataAjax = tvarLeftNav?.querySelector('div[data-ajax-append]');\n if (divDataAjax) {\n if (Array.from(divDataAjax.children).length > 0) {\n console.debug('Left Navigation Menu is now ready');\n cb();\n clearInterval(interval);\n }\n } else {\n console.debug('No Left Navigation Menu implemented so considered ready');\n clearInterval(interval); // No left nav menu implemented\n }\n });\n }\n /**\n * Will verify that the DOM is ready and execute a callback function at that point\n * @param {*} cb\n */\n static whenDOMIsReady(cb: Callback) {\n WhenReady.whenJqueryReady(() => {\n $(() => {\n cb();\n });\n });\n }\n}\n","import { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class EllisChartGenericConfigEN implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.ELLIS_CHART;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.DEFAULT;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.ENGLISH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_INTRANET;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n GCToolsModal: true,\r\n siteJsLinks: [\r\n { asset: '/js/search.js' },\r\n {\r\n asset: '/js/sampleExam_2.js',\r\n isInjectable: () => {\r\n function getPathName() {\r\n let ret = window.location.pathname;\r\n\r\n if (ret.startsWith('/esdc-prv/_conf/form_template/')) {\r\n ret = localStorage.getItem('enFilename') as string;\r\n }\r\n return ret;\r\n }\r\n\r\n return getPathName() === '/eng/s.1mpl.2.2x.1mQ.5.2st.3.4ns.shtml';\r\n }\r\n }\r\n ],\r\n footer: {\r\n footerPath: '/_conf/assets/en/footer/ellischartfooter-eng.html',\r\n showFeatures: false,\r\n showFooter: false\r\n },\r\n top: {\r\n siteMenu: false,\r\n GCToolsModal: true,\r\n menuPath: '/_conf/assets/en/mega_menu/ellischartmenu-eng.html',\r\n lngLinks: [\r\n {\r\n lang: Language.FRENCH,\r\n href: getOtherLang(),\r\n text: 'Français'\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class EllisChartGenericConfigFR implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.ELLIS_CHART;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.DEFAULT;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.FRENCH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_INTRANET;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n GCToolsModal: true,\r\n siteJsLinks: [\r\n { asset: '/js/search.js' },\r\n {\r\n asset: '/js/sampleExam_2.js',\r\n isInjectable: () => {\r\n function getPathName() {\r\n let ret = window.location.pathname;\r\n\r\n if (ret.startsWith('/esdc-prv/_conf/form_template/')) {\r\n ret = localStorage.getItem('frFilename') as string;\r\n }\r\n return ret;\r\n }\r\n\r\n return getPathName() === '/fra/s.1mpl.2.2x.1mQ.5.2st.3.4ns.shtml';\r\n }\r\n }\r\n ],\r\n footer: {\r\n footerPath: '/_conf/assets/fr/footer/ellischartfooter-fra.html',\r\n showFeatures: false,\r\n showFooter: false\r\n },\r\n top: {\r\n siteMenu: false,\r\n GCToolsModal: true,\r\n menuPath: '/_conf/assets/fr/mega_menu/ellischartmenu-fra.html',\r\n lngLinks: [\r\n {\r\n lang: Language.ENGLISH,\r\n href: getOtherLang(),\r\n text: 'English'\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import type { SiteConfig, Config } from '../../types/config';\n\nexport default class EllisChartSplashPageConfig implements SiteConfig {\n getConfig() {\n return {\n siteCssLinks: [\n { asset: '/_conf/assets/custom/ec-te-custom/ec-te-custom.css' },\n { asset: '/_conf/assets/custom/css/theme.css' },\n { asset: '/_conf/assets/custom/css/messages.css' },\n { asset: '/_conf/assets/custom/css/noscript.css' }\n ]\n } as Partial;\n }\n}\n","import text from '../../i18n/i18n.js';\r\nimport LeftNavigationMenuModule from '../../modules/leftNavMenu.js';\r\nimport type { AdobeConfig } from '../../types/adobeConfig.js';\r\nimport type { SiteConfig } from '../../types/config';\r\nimport {\r\n type LanguageType,\r\n type TemplateType,\r\n Language,\r\n SectionIdentifiers\r\n} from '../../types/template.js';\r\nimport WhenReady from '../../WhenReady.js';\r\nimport BaseConfig from '../base.config';\r\nimport EllisChartGenericConfigEN from './ellis-chart.generic.en.config';\r\nimport EllisChartGenericConfigFR from './ellis-chart.generic.fr.config';\r\nimport EllisChartSplashPageConfig from './ellis-chart.splashPage.config.js';\r\n\r\nexport default class EllisChartConfig extends BaseConfig {\r\n private readonly _configs: Array = [\r\n new EllisChartGenericConfigEN(),\r\n new EllisChartGenericConfigFR()\r\n ];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n getChildConfigs() {\r\n return this._configs;\r\n }\r\n\r\n getAdobeConfig() {\r\n const config: AdobeConfig = {\r\n sitename: text('sites.ellis-chart.adobeAnalytics.sitename'),\r\n accessRights: '2',\r\n creator: text('sites.ellis-chart.adobeAnalytics.creator')\r\n };\r\n return config;\r\n }\r\n\r\n hasSplashPage(): boolean {\r\n const titles: Array = Array.from(\r\n document.querySelectorAll('meta[name=\"dc.title\"]')\r\n );\r\n return titles.some((title) => {\r\n return (\r\n title.content === 'Interprovincial Standards Red Seal Program' ||\r\n title.content === 'Programme des normes interprovinciales Sceau rouge'\r\n );\r\n });\r\n }\r\n\r\n getSplashPageConfigs(): SiteConfig | undefined {\r\n return new EllisChartSplashPageConfig();\r\n }\r\n\r\n getDefaultChildConfig(lang: LanguageType): SiteConfig | undefined {\r\n return lang === Language.ENGLISH\r\n ? new EllisChartGenericConfigEN()\r\n : new EllisChartGenericConfigFR();\r\n }\r\n\r\n hasCustomCDTSSetup(): boolean {\r\n return true;\r\n }\r\n async customCDTSSetup(\r\n lang: LanguageType,\r\n wcmsTemplate: TemplateType\r\n ): Promise {\r\n console.debug(`Lanuage set to ${lang}`);\r\n console.debug(`Template type set to ${wcmsTemplate}`);\r\n\r\n const config = this.getConfig(lang, wcmsTemplate);\r\n\r\n // HEADER\r\n const defTop = document.getElementById(SectionIdentifiers.CUSTOM_TOP);\r\n const responseHeader = await fetch(config.top?.menuPath as string);\r\n const menuHtmlHeader = await responseHeader.text();\r\n if (defTop) defTop.outerHTML = menuHtmlHeader;\r\n\r\n // LANGUAGE SELECT\r\n const lngSection = document\r\n .getElementById('wb-lng')\r\n ?.querySelector('a') as HTMLAnchorElement;\r\n if (lngSection) {\r\n lngSection.href = config.top?.lngLinks[0].href as string;\r\n lngSection.innerHTML = config.top?.lngLinks[0].text as string;\r\n lngSection.setAttribute('lang', config.top?.lngLinks[0].lang as string);\r\n }\r\n\r\n // FOOTER\r\n const defFooter = document.getElementById(SectionIdentifiers.CUSTOM_FOOTER);\r\n const responseFooter = await fetch(config.footer?.footerPath as string);\r\n const menuHtmlFooter = await responseFooter.text();\r\n if (defFooter) defFooter.outerHTML = menuHtmlFooter;\r\n\r\n // This is to ensure that the inline ajax calls get executed for pulling in menu markup\r\n WhenReady.whenWetIsReady(() => {\r\n $(\r\n '[data-ajax-after], [data-ajax-append], [data-ajax-before], [data-ajax-prepend], [data-ajax-replace]'\r\n ).trigger('wb-init.wb-data-ajax');\r\n });\r\n\r\n await new LeftNavigationMenuModule().run();\r\n\r\n return Promise.resolve();\r\n }\r\n}\r\n","import Module from './Module.js';\n\nexport default class BreadCrumbModule extends Module {\n moduleReady: boolean = false;\n\n constructor() {\n super();\n console.debug('BreadCrumb Component Created!');\n }\n\n getModuleName(): string {\n return 'breadcrumbs';\n }\n async doLogic(): Promise {\n const response = await fetch('/_conf/assets/bc.xml').catch((e) => {\n console.error('Failed to load breadcrumbs!', e);\n });\n\n if (response) {\n const text = await response.text();\n\n let path = this.getPathName();\n\n const xml = this.parseXml(text);\n path = path.replace(/\\/[^/]+\\.shtml/, '');\n path = path.replace(/\\/_auth/, '');\n path = path.replace(/^\\//, '');\n const pathArray = path.split('/');\n let bc = '';\n const paths: Array = [];\n pathArray.forEach((path) => {\n bc = bc + '/' + path;\n paths.push(bc);\n });\n\n const elements = document.getElementsByClassName('breadcrumb');\n elements[0].innerHTML = this.getBC(xml, paths);\n this.moduleReady = true;\n }\n\n return Promise.resolve();\n }\n\n getBC(xml: Document, paths: Array) {\n let out = '';\n const bc = xml.getElementsByTagName('bc');\n Array.from(bc).forEach((breadcrumb) => {\n const xmlPath = breadcrumb.getElementsByTagName('path')[0].childNodes[0].textContent;\n const xmlTitle = breadcrumb.getElementsByTagName('title')[0].childNodes[0].textContent;\n const xmlHREF = breadcrumb.getElementsByTagName('href')[0].childNodes[0].textContent ?? '';\n const xmlIgnoreMatchingHref =\n breadcrumb.getElementsByTagName('ignoreMatchingHref')[0]?.childNodes[0].textContent ??\n 'false';\n\n paths.forEach((path) => {\n if (\n path.toLowerCase() === xmlPath?.toLowerCase() &&\n !this.ignoreMatchingHref(xmlIgnoreMatchingHref, xmlHREF)\n ) {\n out = out + '
  • ' + xmlTitle + '
  • ';\n }\n });\n });\n\n return out;\n }\n\n ignoreMatchingHref(flag: string, path: string): boolean {\n const currentHref = window.location.pathname;\n return flag === 'true' && currentHref === path;\n }\n\n getPathName() {\n let ret = window.location.pathname;\n\n if (ret.startsWith('/_conf/form_template/')) {\n ret = sessionStorage.getItem('enFilename') ?? '';\n }\n return ret;\n }\n\n parseXml(xmlStr: string | undefined) {\n return new window.DOMParser().parseFromString(xmlStr ?? '', 'text/xml');\n }\n}\n","import i18next from 'i18next';\r\nimport type { ArticleContent, Articles } from '../../types/articles.js';\r\nimport Module from '../Module.js';\r\nimport { getPathName } from '../site';\r\nimport text from '../../i18n/i18n.js';\r\n\r\ntype Category = {\r\n id: number;\r\n text: string;\r\n};\r\n\r\nexport default class ArticlesModule extends Module {\r\n moduleReady: boolean = false;\r\n readonly lng = i18next.language;\r\n readonly MAX_ARTICLES = 10; // Maximum possible entries retrieved. Not used with config\r\n readonly category: Array = [\r\n {\r\n id: 1,\r\n text: text('sites.esdc-prv.modules.articles.categoryTypes.news')\r\n },\r\n {\r\n id: 2,\r\n text: text('sites.esdc-prv.modules.articles.categoryTypes.community')\r\n },\r\n {\r\n id: 3,\r\n text: text('sites.esdc-prv.modules.articles.categoryTypes.tipsTricks')\r\n },\r\n {\r\n id: 4,\r\n text: text('sites.esdc-prv.modules.articles.categoryTypes.events')\r\n },\r\n {\r\n id: 5,\r\n text: text('sites.esdc-prv.modules.articles.categoryTypes.didYouKnow')\r\n },\r\n {\r\n id: 11,\r\n text: text('sites.esdc-prv.modules.articles.categoryTypes.trending')\r\n },\r\n {\r\n id: 12,\r\n text: text('sites.esdc-prv.modules.articles.categoryTypes.working')\r\n },\r\n {\r\n id: 13,\r\n text: text('sites.esdc-prv.modules.articles.categoryTypes.living')\r\n },\r\n {\r\n id: 14,\r\n text: text('sites.esdc-prv.modules.articles.categoryTypes.learning')\r\n }\r\n ];\r\n readonly pageProps = {\r\n section: 'Intersection',\r\n sectionID: 3,\r\n categoryID: 1,\r\n category: 'News',\r\n likabilityEnabled: '1',\r\n commentsEnabled: '1',\r\n language: 'fr',\r\n view: 'full'\r\n };\r\n\r\n getModuleName(): string {\r\n return 'articles';\r\n }\r\n async doLogic(): Promise {\r\n await this.articles();\r\n return Promise.resolve();\r\n }\r\n\r\n static async getYearlyEntries(\r\n getUrl: (year: number) => string,\r\n predicate: (entries: T[]) => boolean\r\n ): Promise {\r\n let year = new Date().getFullYear();\r\n const entries: T[] = [];\r\n while (predicate(entries)) {\r\n const url = getUrl(year);\r\n const response = await fetch(url).catch((err) => console.error(err));\r\n if (response && response.ok) entries.push((await response.json()) as T);\r\n if (response && response.status === 404)\r\n console.warn(`${url} wasn't found!`);\r\n year -= 1;\r\n }\r\n return entries;\r\n }\r\n\r\n async articles() {\r\n const el = document.querySelector('tvar > img');\r\n if (el != null)\r\n if (this.lng == 'en')\r\n el.setAttribute(\r\n 'alt',\r\n (\r\n document.querySelector(\r\n 'meta[name=\"en_content_img_alt\"]'\r\n ) as HTMLMetaElement\r\n )?.content\r\n );\r\n else\r\n el.setAttribute(\r\n 'alt',\r\n (\r\n document.querySelector(\r\n 'meta[name=\"fr_content_img_alt\"]'\r\n ) as HTMLMetaElement\r\n )?.content\r\n );\r\n\r\n let is_preview = false;\r\n //check if preview or prod\r\n if (location.host.indexOf('cms-sgc') != -1) is_preview = true;\r\n\r\n /**\r\n * We want at least 2 years worth and at least 10 articles total\r\n */\r\n const entries = await ArticlesModule.getYearlyEntries(\r\n (year) =>\r\n `/js/data/${is_preview ? 'preview' : 'production'}/${year}_index.json`,\r\n (entries: Articles[]) => {\r\n const filtered = entries.filter((entry) => {\r\n return entry.articles.article.length >= 1;\r\n });\r\n return (\r\n filtered.length < 2 &&\r\n filtered.reduce(\r\n (acc, entry) => acc + entry.articles.article.length,\r\n 0\r\n ) < this.MAX_ARTICLES\r\n );\r\n }\r\n );\r\n\r\n console.debug(entries);\r\n\r\n const json: Articles = { articles: { article: [] } };\r\n entries.forEach((entry) => {\r\n json.articles.article.push(...entry.articles.article);\r\n });\r\n\r\n this.display(json);\r\n this.moduleReady = true;\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n isOdd(num: number) {\r\n return num % 2;\r\n }\r\n\r\n getUrlParameter(sParam: string) {\r\n const sPageURL = decodeURIComponent(window.location.search.substring(1));\r\n const sURLVariables = sPageURL.split('&');\r\n let sParameterName, i;\r\n\r\n for (i = 0; i < sURLVariables.length; i++) {\r\n sParameterName = sURLVariables[i].split('=');\r\n\r\n if (sParameterName[0] === sParam) {\r\n if (sParameterName[1] === undefined) {\r\n return true;\r\n } else {\r\n return sParameterName[1];\r\n }\r\n }\r\n }\r\n }\r\n\r\n sortResults(result: Articles, prop: string, asc: boolean) {\r\n result.articles.article = result.articles.article.toSorted(function (\r\n a: Record,\r\n b: Record\r\n ) {\r\n const ascSortValue = a[prop] < b[prop] ? -1 : 0;\r\n const descSortValue = b[prop] < a[prop] ? -1 : 0;\r\n const ascSort = a[prop] > b[prop] ? 1 : ascSortValue;\r\n const descSort = b[prop] > a[prop] ? 1 : descSortValue;\r\n return asc ? ascSort : descSort;\r\n });\r\n }\r\n\r\n display(result: Articles) {\r\n let header = `

    ${text('sites.esdc-prv.modules.articles.intersection')} - ${this.category[0].text}

    `;\r\n\r\n if (this.pageProps.view === 'full') {\r\n if (this.getUrlParameter('cat') !== undefined) {\r\n this.pageProps.categoryID = Number(\r\n this.getUrlParameter('cat')!.toString()\r\n );\r\n }\r\n\r\n this.category.forEach((entry) => {\r\n if (Number(entry.id.toString()) === this.pageProps.categoryID) {\r\n header = entry.text;\r\n }\r\n });\r\n\r\n header = `${text('sites.esdc-prv.modules.articles.intersection')} - ${header}`;\r\n }\r\n\r\n this.sortResults(result, 'publishedDate', false);\r\n\r\n if (this.getUrlParameter('cat') === undefined) {\r\n console.debug('No match for url parameter \"cat\"');\r\n } else {\r\n const filtered = result.articles.article.filter(\r\n (entry: ArticleContent) => {\r\n let categoryTypesMatch = false;\r\n let intcategorysMatch = false;\r\n\r\n categoryTypesMatch =\r\n entry.categoryTypes === this.pageProps.sectionID.toString() ||\r\n !entry.categoryTypes;\r\n intcategorysMatch =\r\n entry.intcategorys === this.pageProps.categoryID.toString();\r\n\r\n return categoryTypesMatch && intcategorysMatch;\r\n }\r\n );\r\n\r\n result.articles.article = filtered;\r\n }\r\n\r\n if (this.getArticlesConfig().view === 'full') {\r\n this.full(header, result.articles.article);\r\n } else {\r\n this.small(result.articles.article);\r\n }\r\n }\r\n /**\r\n * Articles 'FULL' view\r\n * @param articles\r\n */\r\n private full(header: string, articles: ArticleContent[]) {\r\n function createArticleEntryMarkup(): HTMLDivElement {\r\n const div = document.createElement('div');\r\n div.classList.add('row', 'wb-eqht-grd');\r\n return div;\r\n }\r\n\r\n let html = '';\r\n const articleEntry: HTMLDivElement = createArticleEntryMarkup();\r\n\r\n articles.forEach((field: ArticleContent, i) => {\r\n if (i < this.getArticlesConfig().max) {\r\n field.filename = field.filename.replace(\r\n /.*templatedata\\/edsc-esdc\\/article\\/data/,\r\n `/${this.lng}/intersection`\r\n );\r\n field.filename = `/${field.filename.replace(/\\.xml/, '.shtml')}`;\r\n field.filename =\r\n this.lng === 'fr'\r\n ? field.filename.replace('/en/', '/fr/')\r\n : field.filename;\r\n\r\n articleEntry.innerHTML += `\r\n
    \r\n
    \r\n ${this.lng === 'fr' ? field.fr_title : field.en_title}\r\n

    ${this.lng === 'fr' ? field.fr_teaser : field.en_teaser}

    \r\n
    \r\n
    \r\n `;\r\n\r\n // For every second entry or the last entry, add the markup to the html\r\n if ((i !== 0 && i % 2 !== 0) || articles.length === i + 1) {\r\n html = html + articleEntry.outerHTML;\r\n articleEntry.innerHTML = '';\r\n }\r\n }\r\n });\r\n\r\n html += `

    ${text('sites.esdc-prv.modules.articles.categories')}

    `;\r\n html += '
      ';\r\n this.category.forEach((field) => {\r\n if (field.id > 6) {\r\n html +=\r\n '
    • ' +\r\n field.text +\r\n '
    • ';\r\n }\r\n });\r\n html += '
    ';\r\n html += `

    ${text('sites.esdc-prv.modules.articles.findArticle')}

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    `;\r\n\r\n const checkExist = setInterval(function () {\r\n const articles = document.querySelector('#articles');\r\n if (articles) {\r\n const h1 = document.querySelector('h1');\r\n if (h1) h1.textContent = header;\r\n articles.insertAdjacentHTML('beforeend', html + '');\r\n clearInterval(checkExist);\r\n }\r\n }, 100);\r\n }\r\n /**\r\n * Articles 'SMALL' view\r\n * @param articles\r\n */\r\n private small(articles: ArticleContent[]) {\r\n let html = '';\r\n\r\n articles.forEach((field: ArticleContent, i) => {\r\n if (i < this.getArticlesConfig().max) {\r\n field.filename = field.filename.replace(\r\n /.*templatedata\\/edsc-esdc\\/article\\/data/,\r\n `/${this.lng}/intersection`\r\n );\r\n field.filename = `/${field.filename.replace(/\\.xml/, '.shtml')}`;\r\n field.filename =\r\n this.lng === 'fr'\r\n ? field.filename.replace('/en/', '/fr/')\r\n : field.filename;\r\n\r\n // small\r\n html += `\r\n
  • \r\n ${this.lng === 'fr' ? field.fr_title : field.en_title}\r\n
  • \r\n `;\r\n }\r\n });\r\n\r\n const checkExist = setInterval(function () {\r\n const el = document.querySelector('aside > ul.list-group.list-unstyled');\r\n if (el) {\r\n el.insertAdjacentHTML('afterbegin', html);\r\n clearInterval(checkExist);\r\n }\r\n }, 100);\r\n }\r\n /**\r\n * Retrieves the configuration for articles\r\n * @returns\r\n */\r\n private getArticlesConfig() {\r\n const isArticlesPage =\r\n getPathName() == '/en/intersection/articles.shtml' ||\r\n getPathName() == '/fr/intersection/articles.shtml';\r\n return {\r\n max: isArticlesPage ? 10 : 8,\r\n view: isArticlesPage ? 'full' : 'small'\r\n };\r\n }\r\n}\r\n","import i18next from 'i18next';\nimport type { BlogItem, Blogs } from '../../types/blogs.js';\nimport Module from '../Module.js';\nimport ArticlesModule from './articles.js';\n\nexport default class BlogsModule extends Module {\n moduleReady: boolean = false;\n private readonly MAX_BLOGS = 10; // Maximum possible entries retrieved. Not used with config\n private readonly ENVIRONMENT = location.pathname.includes('preview') ? 'preview' : 'production';\n private readonly language = i18next.language;\n private readonly blogs_config = {\n max: 5,\n view: 'full'\n };\n\n getModuleName(): string {\n return 'blogs';\n }\n\n async doLogic(): Promise {\n await this.blogs();\n this.moduleReady = true;\n return Promise.resolve();\n }\n\n async blogs() {\n const entries = await ArticlesModule.getYearlyEntries(\n (year) => `/js/data/${this.ENVIRONMENT}/${year}_blogs.json`,\n (entries: Blogs[]) => {\n const filtered = entries.filter((entry) => {\n return entry.articles.article.length >= 1;\n });\n return (\n filtered.length < 2 &&\n filtered.reduce((acc, entry) => acc + entry.articles.article.length, 0) < this.MAX_BLOGS\n );\n }\n );\n\n console.debug(entries);\n\n const json: Blogs = { articles: { article: [] } };\n entries.forEach((entry) => {\n json.articles.article.push(...entry.articles.article);\n });\n\n this.display(json.articles.article);\n\n return Promise.resolve();\n }\n\n sortResults(results: BlogItem[], prop: string, asc: boolean) {\n if (results !== null) {\n results.sort(function (a, b) {\n const ascResult = a[prop] < b[prop] ? -1 : 0;\n const descResult = b[prop] < a[prop] ? -1 : 0;\n if (asc) return a[prop] > b[prop] ? 1 : ascResult;\n else return b[prop] > a[prop] ? 1 : descResult;\n });\n }\n }\n\n display(results: BlogItem[]) {\n this.blogs_config.view = 'full';\n this.blogs_config.max = 10;\n\n this.sortResults(results, 'publishedDate', false);\n\n const tableConfig = {\n ordering: false,\n filter: false,\n pageLength: 5,\n info: false,\n lengthChange: false,\n columnDefs: [\n { width: '20%', targets: 0 },\n { width: '20%', targets: 1 }\n ]\n };\n let html: string = `\n \n \n \n \n \n \n `;\n\n html += '';\n\n // Will split up results into pairs\n const pairs: BlogItem[][] = results.reduce((acc: Array, value, index, src) => {\n if (index % 2 === 0) {\n acc.push([value, src[index + 1]]);\n }\n return acc;\n }, []);\n\n // Process pairs of blogs\n pairs.forEach((pair) => {\n html += `\n \n ${this.getRowData(pair[0])}\n ${this.getRowData(pair[1])}\n \n `;\n });\n\n html += '
    ';\n\n const blogs = document.querySelector('#blogs');\n if (blogs) blogs.innerHTML = html;\n $('.wb-tables').trigger('wb-init.wb-tables');\n }\n\n private getRowData(field: BlogItem) {\n const match = new RegExp(/^templatedata/).exec(field.filename);\n if (match) {\n field.filename = field.filename\n .replace('templatedata/edsc-esdc/blogs/data/', this.language + '/blogs/')\n .replace('.xml', '.shtml');\n } else {\n field.filename = field.filename.replace(/^en\\//, '/' + this.language + '/');\n }\n\n return ` \n \n
    \n ${this.language === 'fr' ? field.fr_title : field.en_title}\n

    \n \"\"\n

    \n

    \n ${this.language === 'fr' ? field.fr_teaser : field.en_teaser}\n

    \n
    \n \n `;\n }\n}\n","import i18next from 'i18next';\nimport type { ArticleContent, Articles } from '../../types/articles.js';\nimport Module from '../Module.js';\nimport ArticlesModule from './articles.js';\n\nexport default class CarousselModule extends Module {\n moduleReady: boolean = false;\n private readonly language = i18next.language;\n private readonly MAX_ARTICLES = 3;\n private readonly ENVIRONMENT = location.host.includes('cms-sgc') ? 'preview' : 'production';\n\n getModuleName(): string {\n return 'caroussel';\n }\n\n async doLogic(): Promise {\n await this.caroussel();\n this.moduleReady = true;\n return Promise.resolve();\n }\n\n async caroussel() {\n const entries = await ArticlesModule.getYearlyEntries(\n (year) => `/js/data/${this.ENVIRONMENT}/${year}_index.json`,\n (entries: Articles[]) => {\n const filtered = entries.filter((entry) => {\n return entry.articles.article.length >= 1;\n });\n return (\n filtered.length < 1 &&\n filtered.reduce((acc, entry) => acc + entry.articles.article.length, 0) <\n this.MAX_ARTICLES\n );\n }\n );\n\n console.debug(entries);\n\n const json: Articles = { articles: { article: [] } };\n entries.forEach((entry) => {\n json.articles.article.push(...entry.articles.article);\n });\n\n this.display(json);\n }\n\n sortByProperty(property1: string, property2: string) {\n return function (a: Record, b: Record) {\n let sortStatus = 0;\n\n if (a[property2] > b[property2]) {\n sortStatus = 1;\n } else if (a[property2] < b[property2]) {\n sortStatus = -1;\n }\n\n if (a[property1] < b[property1]) {\n sortStatus = 1;\n } else if (a[property1] > b[property1]) {\n sortStatus = -1;\n }\n\n return sortStatus;\n };\n }\n\n display(json: Articles) {\n const sortedArticles = json.articles.article.toSorted(\n this.sortByProperty('publishedDate', 'intcategorys')\n );\n let id: number = 0;\n let sectionHtml: string;\n sectionHtml = '
      ';\n\n sortedArticles.every((article) => {\n sectionHtml += this.printUl(article, id);\n id += 1;\n if (id > 2) {\n sectionHtml += '
    ';\n id = 0;\n return false;\n }\n\n return true;\n });\n sectionHtml += '
    ';\n\n sortedArticles.every((article) => {\n sectionHtml += this.printTabPanels(article, id);\n id += 1;\n\n if (id > 2) {\n sectionHtml += '
    ';\n return false;\n }\n\n return true;\n });\n\n const cat11 = document.querySelector('#cat11');\n if (cat11) cat11.outerHTML = sectionHtml;\n window.setTimeout(this.reinitializeCarousel.bind(this), 320);\n }\n\n printUl(articleData: ArticleContent, id: number) {\n return `\n
  • \n \n \"${this.language\n \n
  • \n `;\n }\n\n reinitializeCarousel() {\n $('.wb-tabs').trigger('wb-init.wb-tabs');\n $('.wb-tabs').addClass('wb-init');\n }\n\n printTabPanels(articleData: ArticleContent, id: number) {\n let en_articleURL;\n let fr_articleURL;\n if (articleData.filename.startsWith('templatedata/')) {\n en_articleURL = articleData.filename\n .replace(/templatedata\\/edsc-esdc\\/article\\/data\\//, '/en/intersection/')\n .replace('.xml', '.shtml');\n fr_articleURL = articleData.filename\n .replace(/templatedata\\/edsc-esdc\\/article\\/data\\//, '/fr/intersection/')\n .replace('.xml', '.shtml');\n } else {\n en_articleURL = '/' + articleData.filename;\n fr_articleURL = en_articleURL.replace('/en/', '/fr/');\n }\n\n if (articleData.en_external_url != '' && articleData.en_external_url != undefined) {\n en_articleURL = articleData.en_external_url;\n }\n\n if (articleData.fr_external_url != '' && articleData.fr_external_url != undefined) {\n fr_articleURL = articleData.fr_external_url;\n }\n\n return `\n \n `;\n }\n}\n","import type { ArticleContent, Articles } from '../../types/articles.js';\r\nimport Module from '../Module.js';\r\nimport ArticlesModule from './articles.js';\r\n\r\nexport default class CategoryModule extends Module {\r\n moduleReady: boolean = false;\r\n readonly MAX_ARTICLES = 8; // Maximum possible entries retrieved. Not used with config\r\n readonly categories = [\r\n { id: 11, section: 'trending', max: 2 },\r\n { id: 12, section: 'working', max: 2 },\r\n { id: 13, section: 'living', max: 2 },\r\n { id: 14, section: 'learning', max: 2 }\r\n ];\r\n\r\n getModuleName(): string {\r\n return 'catquery';\r\n }\r\n\r\n async doLogic(): Promise {\r\n await this.catquery();\r\n this.moduleReady = true;\r\n return Promise.resolve();\r\n }\r\n\r\n async catquery() {\r\n let is_preview = false;\r\n //check if preview or prod\r\n if (location.host.includes('cms-sgc')) {\r\n is_preview = true;\r\n }\r\n\r\n const entries = await ArticlesModule.getYearlyEntries(\r\n (year) =>\r\n `/js/data/${is_preview ? 'preview' : 'production'}/${year}_index.json`,\r\n (entries: Articles[]) => {\r\n const filtered = entries.filter((entry) => {\r\n return entry.articles.article.length >= 1;\r\n });\r\n return (\r\n filtered.length < 2 &&\r\n filtered.reduce(\r\n (acc, entry) => acc + entry.articles.article.length,\r\n 0\r\n ) < this.MAX_ARTICLES\r\n );\r\n }\r\n );\r\n\r\n console.debug(entries);\r\n\r\n const json: Articles = { articles: { article: [] } };\r\n entries.forEach((entry) => {\r\n json.articles.article.push(...entry.articles.article);\r\n });\r\n\r\n this.processJSON(json);\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n sortByProperty(property: string) {\r\n return function (a: Record, b: Record) {\r\n let sortStatus = 0;\r\n if (a[property] < b[property]) {\r\n sortStatus = 1;\r\n } else if (a[property] > b[property]) {\r\n sortStatus = -1;\r\n }\r\n\r\n return sortStatus;\r\n };\r\n }\r\n\r\n processJSON(json: Articles) {\r\n const sortedArticles = json.articles.article.toSorted(\r\n this.sortByProperty('publishedDate')\r\n );\r\n\r\n this.categories.forEach((field) => {\r\n let sectionHtml = '
    ';\r\n const catArticles: ArticleContent[] = $.grep(\r\n sortedArticles,\r\n function (n: ArticleContent) {\r\n return n.intcategorys === field.id.toString();\r\n }\r\n );\r\n catArticles.every((article, index) => {\r\n sectionHtml += this.printArticleHTML(\r\n article,\r\n document.documentElement.lang\r\n );\r\n\r\n if ((2 % index) + 1 === 0 || index + 1 === field.max) {\r\n sectionHtml += '
    ';\r\n }\r\n // get out if we reach configured max articles to display\r\n return index + 1 < field.max;\r\n });\r\n\r\n sectionHtml += '
    ';\r\n\r\n $('#cat' + field.id).replaceWith(sectionHtml);\r\n });\r\n }\r\n\r\n printArticleHTML(articleData: ArticleContent, lang: string) {\r\n if (document.documentElement.lang == 'fr') {\r\n articleData.filename = articleData.filename.replace(/^en\\//, 'fr/');\r\n }\r\n articleData.filename = '/' + articleData.filename;\r\n\r\n return `\r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n

    \r\n \r\n ${lang === 'en' ? articleData.en_title : articleData.fr_title}\r\n ${lang === 'en' ? 'about ' + articleData.en_title : '� propos de ' + articleData.fr_title}\r\n \r\n \r\n \r\n
    \r\n ${lang === 'en' ? articleData.en_teaser : articleData.fr_teaser}\r\n

    \r\n
    \r\n
    \r\n `;\r\n }\r\n}\r\n","export interface NewsfeedObject {\n [key: string]: unknown;\n fr_id: string;\n text: string;\n c: number;\n}\n\nexport interface NewsfeedTabItem {\n [key: string]: unknown;\n filename: string;\n frFilename: string;\n en_content_link?: string;\n fr_content_link?: string;\n en_title: string;\n fr_title: string;\n newsfeedTab: string;\n fr_newsfeedTab: string;\n publishedDate: string;\n expireDate: string;\n}\n\nexport interface NewsfeedTab {\n article: NewsfeedTabItem[];\n}\nexport interface NewsfeedTabs {\n articles: NewsfeedTab;\n}\n\nexport const NewsfeedTypes = {\n DM: ['dm', 'sm'],\n CORPORATE: ['corporate', 'ministeriels'],\n ['ADMS-CHAMPIONS']: ['adms-champions', 'sma-champions']\n} as Record>;\nexport type NewsfeedType = (typeof NewsfeedTypes)[keyof typeof NewsfeedTypes];\n\nexport interface NewsfeedProperties {\n [key: string]: string;\n sm: string;\n ministeriels: string;\n 'sma-champions': string;\n}\n\nexport interface NewsfeedArticles {\n [key: string]: NewsfeedArticle;\n articles: NewsfeedArticle;\n}\n\nexport interface NewsfeedArticle {\n [key: string]: [NewsfeedArticleItem];\n article: [NewsfeedArticleItem];\n}\n\nexport interface NewsfeedArticleItem {\n [key: string]: string;\n filename: string;\n frFilename: string;\n en_title: string;\n fr_title: string;\n newsfeedTab: string;\n fr_newsfeedTab: string;\n publishedDate: string;\n expireDate: string;\n}\n\nexport interface Months {\n [key: string]: Array;\n en: Array;\n fr: Array;\n}\n","import i18next from 'i18next';\nimport Module from '../Module.js';\nimport {\n NewsfeedTypes,\n type NewsfeedArticleItem,\n type NewsfeedArticles\n} from '../../types/newsfeed.js';\nimport text from '../../i18n/i18n.js';\ntype YearType = number | RegExpMatchArray | null;\n\nexport default class MoreNewsFeedModule extends Module {\n moduleReady: boolean = false;\n private readonly language = i18next.language;\n private readonly ENVIRONMENT: string = window.location.href.includes('preview')\n ? 'preview'\n : 'production';\n private readonly OLDEST_TARGET_YEAR = 2016;\n\n constructor() {\n super();\n }\n\n getModuleName(): string {\n return 'moreNewsfeed';\n }\n\n async doLogic(): Promise {\n await this.moreNewsfeed();\n this.moduleReady = true;\n return Promise.resolve();\n }\n\n async moreNewsfeed() {\n await this.loadPanels();\n $('.wb-tabs').on('wb-updated.wb-tabs', (event, $newPanel: JQuery) => {\n console.debug(event);\n const year = $newPanel[0].id.substring(4) as unknown as YearType;\n if (!document.getElementById(`year${year?.toString()}`)?.innerHTML.includes('
  • '))\n this.getDisplay(year)\n .then((response) => response)\n .catch((error) => console.error(error));\n });\n\n return Promise.resolve();\n }\n /**\n * Retrieves the current newsfeed type whether it's on the 'en' or 'fr' page\n * @returns\n */\n getNewsfeedType() {\n const path = this.language === 'en' ? '/en/news/' : '/fr/nouvelles/';\n const target = location.pathname\n .substring(0, location.pathname.lastIndexOf('index') - 1)\n .replace(path, '');\n\n const key = Object.keys(NewsfeedTypes).find((type) => {\n return NewsfeedTypes[type].includes(target);\n });\n\n return key?.toString()?.toLowerCase();\n }\n\n async loadPanels() {\n const year = new Date().getFullYear();\n\n const div = document.createElement('div');\n div.className = 'tabpanels';\n const newsDiv = document.getElementById('newsDiv');\n div.innerHTML += `
    \n ${year}\n

    ${text('sites.esdc-prv.modules.moreNewsfeed.pleaseWait')}

    \n
    `;\n\n for (let j = year - 1; j >= this.OLDEST_TARGET_YEAR; j--) {\n div.innerHTML += `
    \n ${j}\n

    ${text('sites.esdc-prv.modules.moreNewsfeed.pleaseWait')}

    \n
    `;\n }\n if (newsDiv) {\n newsDiv.innerHTML += div.innerHTML;\n newsDiv.className = 'wb-tabs';\n }\n\n const id = sessionStorage.getItem(location.pathname + '#newsDiv-activePanel');\n await this.getDisplay(id != null ? /\\d{4}/.exec(id) : year);\n }\n\n async getDisplay(year: YearType) {\n const response = await fetch(\n `/js/data/${this.ENVIRONMENT}/${year?.toString()}_esdc_newsfeed.json`\n ).catch((error) => {\n console.error(error);\n });\n this.setDisplay(year, (await response?.json()) as NewsfeedArticles);\n $('.wb-tabs').trigger('wb-init.wb-tabs');\n }\n\n setDisplay(year: YearType, newsfeed: NewsfeedArticles) {\n const yearDiv = document.getElementById(`year${year?.toString()}`);\n //remove stub loading message\n yearDiv?.querySelector('p')?.remove();\n\n newsfeed.articles.article.forEach((article: NewsfeedArticleItem) => {\n if (article.newsfeedTab === this.getNewsfeedType()) {\n let date;\n const match = new RegExp(/\\d{4}[/-]\\d{2}[/-]\\d{1,2}/).exec(article.filename);\n if (match) {\n date = new Date(match[0]);\n } else {\n console.debug(`No match for ${article.filename}`);\n throw new Error('Failed to parse a path into a date. Please check the file path!');\n }\n\n this.setMonth(year, date);\n\n const yearDivList = yearDiv?.querySelector(\n `ul[data-month=\"${this.getMonth(date)}-list\"]`\n ) as HTMLUListElement;\n\n if (article.en_content_link == undefined || article.en_content_link == '') {\n this.setDisplayContentUndefined(article, date, yearDivList);\n } else if (article.en_content_link != undefined || article.en_content_link != '') {\n this.setDisplayContentDefined(article, date, yearDivList);\n }\n }\n });\n\n if (!yearDiv?.innerHTML.includes('
  • ') && yearDiv)\n yearDiv.innerHTML += `
  • ${text('sites.esdc-prv.modules.moreNewsfeed.noContent')}
  • `;\n }\n\n setDisplayContentUndefined(\n article: NewsfeedArticleItem,\n date: Date,\n yearDivList: HTMLUListElement\n ) {\n const filename = this.language === 'en' ? article.filename : article.frFilename;\n yearDivList.innerHTML += `
  • \n \n ${this.getTitle(article, date)}\n \n
  • `;\n }\n\n setDisplayContentDefined(\n article: NewsfeedArticleItem,\n date: Date,\n yearDivList: HTMLUListElement\n ) {\n if (article[`${this.language}_content_link`].includes('https://')) {\n yearDivList.innerHTML += `
  • \n \n ${this.getTitle(article, date)}\n \n \n \n
  • `;\n } else {\n yearDivList.innerHTML += `
  • \n \n ${this.getTitle(article, date)}\n \n
  • `;\n }\n }\n\n getYearElement(y: YearType) {\n return document.getElementById(`year${y?.toString()}`);\n }\n getHeader(d: Date) {\n return `

    ${this.getMonth(d)}

    `;\n }\n setMonth(y: YearType, d: Date) {\n const yearElement = this.getYearElement(y);\n if (yearElement && !yearElement.innerHTML.includes(this.getHeader(d)))\n yearElement.innerHTML += `${this.getHeader(d)}\n
      \n `;\n }\n\n getTitle(val: NewsfeedArticleItem, d: Date) {\n const dd = d?.getDate();\n const mm = this.getMonth(d);\n let str = this.getDateFormat(d);\n const day = (dd < 10 ? '0' : '') + dd;\n\n try {\n //refactor to use regex\n if (this.language == 'en') {\n const enTitle = val.en_title.toLowerCase() || val.en_title;\n const mmLowerCaseWithSpace = mm.toLowerCase() + ' ';\n if (\n enTitle.startsWith(mm + ' ' + day) ||\n enTitle.startsWith(mm.toLowerCase() + ' ' + dd) ||\n enTitle.startsWith(mm.toLowerCase() + ' ' + dd + 'st') ||\n (enTitle.startsWith(mm.toLowerCase() + ' ') &&\n !isNaN(enTitle.charAt(mmLowerCaseWithSpace.length) as unknown as number)) ||\n (enTitle.startsWith(mm.toLowerCase() + ' ') &&\n !isNaN(enTitle.charAt(mmLowerCaseWithSpace.length + 1) as unknown as number))\n ) {\n str = '';\n }\n str += val.en_title;\n } else if (this.language == 'fr') {\n const frTitle = val.fr_title.toLowerCase() || val.fr_title;\n if (\n (frTitle.startsWith('le ') && !isNaN(frTitle.charAt(3) as unknown as number)) ||\n (frTitle.startsWith('le ') && !isNaN(frTitle.charAt(4) as unknown as number)) ||\n (frTitle.startsWith('le') &&\n /\\s/.test(frTitle) &&\n frTitle.substring(3).startsWith(day + ' ' + mm.toLowerCase())) ||\n (frTitle.startsWith('le') &&\n /\\s/.test(frTitle) &&\n frTitle.substring(3).startsWith(dd + ' ' + mm.toLowerCase())) ||\n frTitle.startsWith('le ' + dd + 'er ' + mm.toLowerCase()) ||\n frTitle.startsWith('le ' + dd + 'ième ' + mm.toLowerCase())\n ) {\n str = '';\n }\n str += val.fr_title;\n }\n } catch (e) {\n console.error(e);\n if (this.language == 'en') str += val.en_title;\n else if (this.language == 'fr') str += val.fr_title;\n }\n return str;\n }\n\n getDateFormat(d: Date): string {\n let formatted = '';\n\n //Month dd, year\n if (!isNaN(d?.getTime())) {\n if (this.language == 'en')\n formatted = `${this.getMonth(d)} ${d.getDate()}, ${d.getFullYear()} – `;\n else formatted = `Le ${d.getDate()} ${this.getMonth(d)} ${d.getFullYear()} – `;\n }\n\n return formatted;\n }\n\n getMonth(d: Date) {\n return Intl.DateTimeFormat(this.language, { month: 'long' }).format(d);\n }\n}\n","import i18next from 'i18next';\r\nimport type {\r\n NewsfeedObject,\r\n NewsfeedTabs,\r\n NewsfeedTabItem\r\n} from '../../types/newsfeed.js';\r\nimport Module from '../Module.js';\r\nimport ArticlesModule from './articles.js';\r\nimport text from '../../i18n/i18n.js';\r\n\r\nexport default class NewsfeedModule extends Module {\r\n /*\r\n Maximum possible entries retrieved. Not used with config\r\n Large number of articles so that the 3 tabs should be populated with something\r\n */\r\n readonly MAX_ARTICLES = 100;\r\n moduleReady: boolean = false;\r\n language: string = i18next.language;\r\n newsfeedObject: Record = {\r\n dm: {\r\n fr_id: 'sm',\r\n text: text('sites.esdc-prv.modules.newsfeed.dm'),\r\n c: 0\r\n },\r\n corporate: {\r\n fr_id: 'ministeriels',\r\n text: text('sites.esdc-prv.modules.newsfeed.corporate'),\r\n c: 0\r\n },\r\n 'adms-champions': {\r\n fr_id: 'sma-champions',\r\n text: text('sites.esdc-prv.modules.newsfeed.champions'),\r\n c: 0\r\n }\r\n };\r\n\r\n readonly ENVIRONMENT: string = window.location.href.includes('preview')\r\n ? 'preview'\r\n : 'production';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n getModuleName(): string {\r\n return 'newsfeed';\r\n }\r\n async doLogic(): Promise {\r\n await this.newsfeed();\r\n this.moduleReady = true;\r\n return Promise.resolve();\r\n }\r\n\r\n display(val: NewsfeedTabItem) {\r\n const filename = this.language === 'en' ? val.filename : val.frFilename;\r\n const href = val[`${this.language}_content_link`] as string;\r\n const html =\r\n val.en_content_link == undefined || val.en_content_link == ''\r\n ? `
    • ${this.getTitle(val)}
    • `\r\n : `
    • ${this.getTitle(val)}
    • `;\r\n\r\n document.getElementById(val.newsfeedTab)!.innerHTML += html;\r\n }\r\n\r\n getTitle(val: NewsfeedTabItem) {\r\n let str = this.getDateFormat(val.filename);\r\n if (val.en_title.startsWith(str)) {\r\n str = '';\r\n }\r\n\r\n str += val[`${this.language}_title`] as string;\r\n return str;\r\n }\r\n\r\n getDateFormat(date: string): string {\r\n //Month dd, year\r\n const d = new Date(\r\n date.substring(date.search(/20..\\//), date.search(/20..\\//) + 10)\r\n );\r\n // @ts-expect-error: is d NaN is not a valid check\r\n if (!isNaN(d)) {\r\n if (this.language == 'en')\r\n return (\r\n Intl.DateTimeFormat('en', { month: 'long' }).format(d) +\r\n ' ' +\r\n d.getDate() +\r\n ', ' +\r\n d.getFullYear() +\r\n ' – '\r\n );\r\n else if (this.language == 'fr')\r\n return (\r\n 'Le ' +\r\n d.getDate() +\r\n ' ' +\r\n Intl.DateTimeFormat('fr', { month: 'long' }).format(d) +\r\n ' ' +\r\n d.getFullYear() +\r\n ' – '\r\n );\r\n }\r\n\r\n return '';\r\n }\r\n\r\n async newsfeed(): Promise {\r\n const wbTabs = document.getElementById('wb-tabs');\r\n\r\n if (wbTabs) {\r\n wbTabs.classList.add('wb-tabs');\r\n //remove message for when newsfeed does not load\r\n wbTabs.innerHTML = '';\r\n wbTabs.innerHTML += '
      ';\r\n\r\n let c = 1;\r\n for (const x in this.newsfeedObject) {\r\n const title = this.newsfeedObject[x].text;\r\n let id = x;\r\n c++;\r\n if (this.language == 'fr') id = this.newsfeedObject[x]['fr_id'];\r\n document.getElementById('newsfeedtabpanels')!.innerHTML +=\r\n this.getNewsPanelHtml(title, x, c, id);\r\n }\r\n c++;\r\n document.getElementById('newsfeedtabpanels')!.innerHTML +=\r\n this.getRegionalPanelHtml(c);\r\n\r\n const entries = await ArticlesModule.getYearlyEntries(\r\n (year) => `/js/data/${this.ENVIRONMENT}/${year}_esdc_newsfeed.json`,\r\n (entries: NewsfeedTabs[]) => {\r\n const filtered = entries.filter((entry) => {\r\n return entry.articles.article.length >= 1;\r\n });\r\n\r\n return (\r\n filtered.length < 1 &&\r\n filtered.reduce(\r\n (acc, entry) => acc + entry.articles.article.length,\r\n 0\r\n ) < this.MAX_ARTICLES\r\n );\r\n }\r\n );\r\n\r\n console.debug(entries);\r\n\r\n const json: NewsfeedTabs = { articles: { article: [] } };\r\n entries.forEach((entry) => {\r\n json.articles.article.push(...entry.articles.article);\r\n });\r\n\r\n json.articles.article.every((val: NewsfeedTabItem) => {\r\n if (this.newsfeedObject[val.newsfeedTab]['c'] < 5) {\r\n this.display(val);\r\n this.newsfeedObject[val.newsfeedTab]['c']++;\r\n }\r\n if (\r\n this.newsfeedObject['dm']['c'] == 5 &&\r\n this.newsfeedObject['corporate']['c'] == 5 &&\r\n this.newsfeedObject['adms-champions']['c'] == 5\r\n )\r\n return false;\r\n\r\n return true;\r\n });\r\n\r\n for (const k in this.newsfeedObject) {\r\n if (\r\n this.newsfeedObject[k]['c'] == 0 &&\r\n document.getElementById(k) != null\r\n )\r\n document.getElementById(k)!.innerHTML +=\r\n `${text('sites.esdc-prv.modules.newsfeed.noArticles')}`;\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n }\r\n\r\n private getNewsPanelHtml(\r\n title: string,\r\n x: string,\r\n panelNumber: number,\r\n id: string\r\n ) {\r\n return `
      \r\n ${title}\r\n
        \r\n

        \r\n ... ${this.language == 'fr' ? 'Plus ' : 'More'}\r\n \r\n ${title}\r\n \r\n

        \r\n
        \r\n `;\r\n }\r\n private getRegionalPanelHtml(panelNumber: number) {\r\n return `
        \r\n ${text('sites.esdc-prv.modules.newsfeed.regionalNews')}\r\n
        \r\n
        ${text('sites.esdc-prv.modules.newsfeed.atlantic')}:
        \r\n
        \r\n \r\n ${text('sites.esdc-prv.modules.newsfeed.portrait')}\r\n \r\n
        \r\n \r\n ${text('sites.esdc-prv.modules.newsfeed.surfaceBlog')}\r\n \r\n
        \r\n
        \r\n ${text('sites.esdc-prv.modules.newsfeed.quebec')}:\r\n
        \r\n
        \r\n \r\n ${text('sites.esdc-prv.modules.newsfeed.infoExpress')}\r\n \r\n
        \r\n
        \r\n ${text('sites.esdc-prv.modules.newsfeed.ontario')}:\r\n
        \r\n
        \r\n \r\n ${text('sites.esdc-prv.modules.newsfeed.agora')}\r\n \r\n
        \r\n
        \r\n ${text('sites.esdc-prv.modules.newsfeed.wt')}:\r\n
        \r\n
        \r\n \r\n ${\r\n this.language === 'en'\r\n ? 'Strategic Services Branch - It’s All About You!'\r\n : 'Strategic Services Branch - \\'It’s All About You!\\' Disponible en anglais seulement'\r\n }\r\n \r\n
        \r\n
        \r\n
        \r\n
        `;\r\n }\r\n}\r\n","import type { CustomWindow } from '../../types/template.js';\nimport Module from '../Module.js';\ndeclare let window: CustomWindow;\n\nexport default class RandomSurveyModule extends Module {\n moduleReady: boolean = false;\n\n private static readonly localStorageId: string = 'sondage';\n private static readonly noRandomSurvey: string = 'noRandomSurvey';\n\n getModuleName(): string {\n return 'randomSurvey';\n }\n\n async doLogic(): Promise {\n await this.randomSurvey();\n this.moduleReady = true;\n return Promise.resolve();\n }\n\n static getRandomSurveyConfig() {\n return {\n localStorageId: RandomSurveyModule.localStorageId,\n noRandomSurvey: RandomSurveyModule.noRandomSurvey\n };\n }\n\n initializeSurveyModal(): void {\n console.debug('initializeSurveyModal');\n const survey: string | null = localStorage.getItem(\n RandomSurveyModule.getRandomSurveyConfig().localStorageId\n );\n\n // Si aucun sondage n'a encore été répondu\n if (survey === null) {\n console.debug('GO Pour le survey');\n const lang: 'fr' | 'en' = document.documentElement.lang as 'fr' | 'en'; // Type explicite\n\n // Texte conditionnel basé sur la langue\n const modalText = {\n fr: {\n title: 'Sondage',\n body: `Merci de prendre quelques minutes à la fin de votre visite pour nous faire part anonymement de votre expérience avec l'intranet. En choisissant « Oui », une nouvelle fenêtre s'ouvrira à laquelle vous pourrez revenir une fois votre visite sur l'intranet terminée.`,\n yes: 'Oui',\n no: 'Non'\n },\n en: {\n title: 'Survey',\n body: `Please take a few minutes at the end of your visit to anonymously tell us about your experience with the intranet. Choosing “Yes” will open a new window that you can return to once you complete your visit to the intranet.`,\n yes: 'Yes',\n no: 'No'\n }\n };\n\n const modalHTML: string = `\n
        \n
        \n

        ${modalText[lang].title}

        \n
        \n
        \n

        ${modalText[lang].body}

        \n
        \n
        \n \n \n
        \n
        `;\n\n // Ajouter le modal à l'élément body\n document.body.insertAdjacentHTML('beforeend', modalHTML);\n console.debug('Modal ajouté au DOM');\n\n // Attacher des événements aux boutons Oui et Non\n document.getElementById('popup-yes')?.addEventListener('click', this.go.bind(this));\n document.getElementById('popup-no')?.addEventListener('click', this.never.bind(this));\n\n $('.wb-overlay').trigger('wb-init.wb-overlay');\n }\n }\n\n async randomSurvey() {\n // Fonction pour initialiser le modal de sondage\n\n this.initializeSurveyModal();\n\n if (!window[RandomSurveyModule.getRandomSurveyConfig().noRandomSurvey])\n this.initializeSurveyModal(); // Window property will prevent survey from initializing for tests\n if (document.getElementById('centred-popup-modal')) {\n console.debug(\"Tentative d'afficher le modal manuellement\");\n $(document).trigger('open.wb-lbx', [\n [\n {\n src: '#centred-popup-modal',\n type: 'inline'\n }\n ]\n ]);\n }\n\n return Promise.resolve();\n }\n\n // Fonction appelée lorsque l'utilisateur clique sur \"Oui\"\n go() {\n console.debug('Sondage accepté');\n window.open(\n 'https://forms.office.com/Pages/ResponsePage.aspx?id=RljVnoGKRkKs2LGgGr_A0enJlFBmWPNFqKQJT6iqJwdURTYxUEdXSlZONzNXVkkxNk1HVE9WUEdLUSQlQCN0PWcu'\n );\n localStorage.setItem(RandomSurveyModule.getRandomSurveyConfig().localStorageId, 'yes');\n this.closeModal();\n }\n\n // Fonction appelée lorsque l'utilisateur clique sur \"Non\"\n never() {\n console.debug('Sondage refusé');\n localStorage.setItem(RandomSurveyModule.getRandomSurveyConfig().localStorageId, 'no');\n this.closeModal();\n }\n\n // Fonction pour fermer le modal\n closeModal() {\n document.getElementById('centred-popup-modal')?.remove();\n }\n}\n","import escape from 'lodash-es/escape.js';\nimport WhenReady from '../../WhenReady.js';\nimport Module from '../Module.js';\nimport i18next from 'i18next';\nimport type { Callback, CustomWindow } from '../../types/template.js';\ndeclare let window: CustomWindow;\n\n/**\n * 'Share this page' component that initializes the logic and functionality.\n *\n * Example Usage:\n *\n * new ShareThisPageModule('ort').init();\n *\n * ...or if you want multiple you can provide different IDs for each...\n *\n * new ShareThisPageModule('esdc-prv').init('share-widget-1');\n * new ShareThisPageModule('esdc-prv').init('share-widget-2');\n */\n\nexport default class ShareThisPageModule extends Module {\n moduleReady: boolean = false;\n\n static readonly placementElementSelector: string = 'div.row.pagedetails';\n static readonly rootElementId: string = 'share-widget';\n\n rootElementType: string = 'div';\n rootSelector: string = `${this.rootElementType}#${ShareThisPageModule.rootElementId}`;\n copyUrlBtnSelector: string = 'button#copy-url';\n alertMessageSelector: string = 'p#alert-message';\n\n rootElement: HTMLElement | undefined;\n placementElement: HTMLElement | undefined;\n copyUrlBtn: HTMLElement | undefined;\n alertMessage: HTMLElement | undefined;\n site: string;\n emailBodyText: string = ''; // For future use. Not used currently @ 04/02/2024\n lang: string;\n\n text: ShareThisPageI18N = {\n en: {\n sharePage: 'Share this page',\n email: 'Email',\n emailAlt: 'launches outlook application',\n copyLink: 'Copy Link',\n teamsLogoAlt: 'Teams logo',\n teams: 'Teams',\n ariaLabelTeams: 'Microsoft Teams (Opens new window)',\n copiedClipboard: 'Content copied to clipboard',\n ariaTitleTeamsAlt: 'Opens new window',\n closeBtnText: 'Close'\n },\n fr: {\n sharePage: 'Partagez cette page',\n email: 'Courriel',\n emailAlt: `lance l'application outlook`,\n copyLink: 'Copier le lien',\n teamsLogoAlt: 'Logo des équipes',\n teams: 'Teams',\n ariaLabelTeams: 'Microsoft Teams (Ouvre une nouvelle fenêtre)',\n copiedClipboard: 'Contenu copié dans le presse-papiers',\n ariaTitleTeamsAlt: 'Ouvre une nouvelle fenêtre',\n closeBtnText: 'Fermer'\n }\n };\n\n constructor(site: string) {\n super();\n this.site = site;\n this.lang = i18next.language;\n }\n\n getModuleName(): string {\n return 'shareThisPageBtn';\n }\n\n async doLogic(): Promise {\n console.debug(`[${ShareThisPageModule.name} - DEBUG] - ${this.doLogic.name} Executed`);\n\n const isReady = await ShareThisPageModule._whenPlacementElementReady(() => {\n this._injectRootElement(this._createRootElement());\n this._injectHtml();\n this._getElements();\n this._registerEvents();\n });\n this.moduleReady = isReady;\n return Promise.resolve();\n }\n /**\n * Checks to see if the placement element exists. Will execute a callback\n * function when it's ready.\n *\n * @param {*} cb - Callback function to execute\n * @return A boolean flag stating whether the placement element was ready and functionality completed\n */\n static _whenPlacementElementReady(cb: Callback): Promise {\n console.debug(\n `[${ShareThisPageModule.name} - DEBUG] - ${this._whenPlacementElementReady.name} Executed`\n );\n\n const promise = new Promise((resolve) => {\n const interval = setInterval(() => {\n if (\n document.querySelector(ShareThisPageModule.placementElementSelector) &&\n (window.templateFrontEnd).ready\n ) {\n clearInterval(interval);\n cb();\n resolve(true);\n }\n }, 1000);\n });\n\n return promise;\n }\n /**\n * Makes sure that the lightbox plugin has been initiated\n *\n * @param {*} cb - Callback function to execute\n */\n _initiateToolkitLightbox(cb?: Callback) {\n $('.wb-lbx').trigger('wb-init.wb-lbx');\n\n const interval = setInterval(() => {\n $('.wb-lbx').trigger('wb-init.wb-lbx');\n\n if (\n document.querySelector('a[href=\"#share-this-link\"]')?.classList.contains('wb-lbx-inited')\n ) {\n clearInterval(interval);\n if (cb) cb();\n }\n }, 1000);\n }\n /**\n * Retrieves any necessary elements for the component\n */\n _getElements() {\n console.debug(`[${ShareThisPageModule.name} - DEBUG] - ${this._getElements.name} Executed`);\n\n this.copyUrlBtn = (document.querySelector(this.copyUrlBtnSelector) as HTMLElement) || undefined;\n this.placementElement =\n (document.querySelector(ShareThisPageModule.placementElementSelector) as HTMLElement) ||\n undefined;\n this.alertMessage =\n (document.querySelector(this.alertMessageSelector) as HTMLElement) || undefined;\n }\n /**\n * Returns the correct path based on the defined site\n * @returns\n */\n _getTeamsImagePath() {\n let path;\n switch (this.site) {\n case 'ort':\n path = `/resources/ort/images/teams.png`;\n break;\n case 'iservice-prv':\n path = `/eng/imgs/teams.png`;\n break;\n case 'esdc-prv':\n path = `/${this.lang}/images/links/teams.png`;\n break;\n default:\n console.error('No site match for locating Teams link image');\n break;\n }\n return path;\n }\n /**\n * Registers any event listeners necessary for the component\n */\n _registerEvents() {\n console.debug(`[${ShareThisPageModule.name} - DEBUG] - ${this._registerEvents.name} Executed`);\n\n this.copyUrlBtn?.addEventListener('click', () => {\n navigator.clipboard.writeText(window.location.href).then(\n () => {\n if (this.alertMessage) {\n this.alertMessage.innerHTML = `${this.text[this.lang].copiedClipboard}`;\n // Toggle the 'aria-pressed' attribute for screen readers\n this.copyUrlBtn?.setAttribute('aria-pressed', 'true');\n const interval = setInterval(() => {\n if (this.alertMessage) this.alertMessage.innerHTML = '';\n this.copyUrlBtn?.setAttribute('aria-pressed', 'false');\n clearInterval(interval);\n }, 4000);\n }\n },\n () => {\n /* Failed to copy */\n }\n );\n });\n\n this._updateModalCloseBtn();\n\n WhenReady.whenJqueryReady(this._initiateToolkitLightbox.bind(this)); // Initializes the WET plugin\n }\n /**\n * The 'Close' button for the light box occasionally has 'undefined'.\n * This ensures that the button is updated with the text on load\n *\n */\n _updateModalCloseBtn() {\n // Select the node that will be observed for mutations\n const lightbox: HTMLElement = document.querySelector('section#share-this-link') as HTMLElement;\n\n // Options for the observer (which mutations to observe)\n const config = { attributes: false, childList: true, subtree: true };\n\n // Callback function\n const cb = (mutationList: MutationRecord[], observer: MutationObserver) => {\n for (const mutation of mutationList) {\n if (mutation.type === 'childList') {\n const footer = lightbox.querySelector('div.modal-footer');\n if (footer) {\n const footerBtn = footer.querySelector('button');\n if (footerBtn) footerBtn.innerHTML = this.text[this.lang].closeBtnText;\n observer.disconnect();\n break;\n }\n }\n }\n };\n\n // Create an observer instance linked to the callback function\n const observer = new MutationObserver(cb);\n\n // Start observing the target node for configured mutations\n observer.observe(lightbox, config);\n }\n /**\n * Injects the HTML markup into the target element for the component\n */\n _injectHtml() {\n console.debug(`[${ShareThisPageModule.name} - DEBUG] - ${this._injectHtml.name} Executed`);\n\n if (this.rootElement)\n this.rootElement.getElementsByTagName('div')[1].innerHTML = this._getHtml();\n }\n /**\n * Creates the root element for the component\n *\n * @returns\n */\n _createRootElement() {\n console.debug(\n `[${ShareThisPageModule.name} - DEBUG] - ${this._createRootElement.name} Executed`\n );\n\n const div = document.createElement(this.rootElementType);\n div.id = ShareThisPageModule.rootElementId;\n div.classList.add('row');\n const column1 = document.createElement('div');\n column1.classList.add('col-xs-6');\n const column2 = document.createElement('div');\n column2.classList.add('col-xs-6', 'text-right');\n div.appendChild(column1);\n div.appendChild(column2);\n return div;\n }\n /**\n * Injects the root element into the main element\n *\n * @param element - The root element\n */\n _injectRootElement(element: HTMLElement) {\n console.debug(\n `[${ShareThisPageModule.name} - DEBUG] - ${this._injectRootElement.name} Executed`\n );\n\n this.placementElement = document.querySelector(\n ShareThisPageModule.placementElementSelector\n ) as HTMLElement;\n this.placementElement.before(element);\n this.rootElement = document.querySelector(this.rootSelector) as HTMLElement;\n\n // Place a clearfix to fix link positioning\n const clearfix = document.createElement('div');\n clearfix.classList.add('clearfix');\n this.rootElement.before(clearfix);\n }\n /**\n * Retrieves the markup used for the component\n */\n _getHtml() {\n console.debug(`[${ShareThisPageModule.name} - DEBUG] - ${this._getHtml.name} Executed`);\n\n return `\n \n ${this.text[this.lang].sharePage}\n \n\n \n `;\n }\n}\n\ninterface ShareThisPageI18N {\n [key: string]: ShareThisPageI18NProperties;\n en: ShareThisPageI18NProperties;\n fr: ShareThisPageI18NProperties;\n}\n\ninterface ShareThisPageI18NProperties {\n sharePage: string;\n email: string;\n emailAlt: string;\n copyLink: string;\n teamsLogoAlt: string;\n teams: string;\n ariaLabelTeams: string;\n copiedClipboard: string;\n ariaTitleTeamsAlt: string;\n closeBtnText: string;\n}\n","export const Content = {\n ARTICLE: 'article',\n GENERIC: 'generic',\n NEWSFEED: 'newsfeed',\n ALT_ARTICLE: 'alt-article'\n};\n\nexport type ContentType = (typeof Content)[keyof typeof Content];\n","import { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class EsdcPrvAssistConfigFR implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.ESDC_PRV;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.ASSIST;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.FRENCH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_INTRANET;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n siteJsLinks: [{ asset: '/_conf/assets/custom.js' }],\r\n GCToolsModal: true,\r\n footer: {\r\n subTheme: 'esdc',\r\n footerPath: '/_conf/assets/fr/footer/esdcfooter-fra.html',\r\n showFeatures: false,\r\n showFooter: true\r\n },\r\n top: {\r\n subTheme: 'esdc',\r\n siteMenu: false,\r\n menuPath: '/_conf/assets/fr/mega_menu/esdcmenu-fra.html',\r\n GCToolsModal: true,\r\n intranetTitle: [\r\n {\r\n href: '/fr/service-canada/prestation-services/assistance-aps/index.shtml',\r\n text: '',\r\n boldText: 'Assistance APS',\r\n acronym: \"Assistance à l'agent de prestation de services\"\r\n }\r\n ],\r\n lngLinks: [\r\n {\r\n lang: Language.ENGLISH,\r\n href: getOtherLang(),\r\n text: 'English'\r\n }\r\n ],\r\n breadcrumbs: [\r\n {\r\n title: 'Accueil',\r\n acronym: 'Accueil',\r\n href: '/fr/index.shtml'\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: 'https://esdc.prv/fr/recherche/index.html',\r\n placeholder: \"Recherche sur l'Assistance APS\",\r\n method: 'get'\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import { type SiteConfig, type Config } from '../../types/config';\nimport { WetAsset } from '../../types/template.js';\nimport CdtsConfigurator from '../cdts.config.js';\n\nexport default class EsdcPrvSplashPageConfig implements SiteConfig {\n getConfig() {\n return {\n siteCssLinks: [\n {\n asset: CdtsConfigurator.getWetAssetUrl(WetAsset.CSS_MESSAGES),\n sri: 'sha512-utHIWB+pwhbqgoAaf4clvQ6s7i9YpDgjtQsXwd88N0ivH3oV3CNvypCTw/67EWv54Ra4QXDsjc9Pv3UBtGsEvQ=='\n },\n {\n asset: CdtsConfigurator.getWetAssetUrl(WetAsset.CSS_FAVICON),\n rel: 'icon',\n type: 'image/x-icon',\n sri: 'sha512-K5sY7P1HeSsL9CWCrDbDjF28nBQpu7PPW4hKI6e5k7+Y6MJZVJvWP36tEiHfrzOU8jJWNNOgKG72utwJr0DJ6Q=='\n }\n ]\n } as Partial;\n }\n}\n","import { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class EsdcPrvAssistConfigEN implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.ESDC_PRV;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.ASSIST;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.ENGLISH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_INTRANET;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n siteJsLinks: [{ asset: '/_conf/assets/custom.js' }],\r\n GCToolsModal: true,\r\n footer: {\r\n subTheme: 'esdc',\r\n footerPath: '/_conf/assets/en/footer/esdcfooter-eng.html',\r\n showFeatures: false,\r\n showFooter: true\r\n },\r\n top: {\r\n subTheme: 'esdc',\r\n siteMenu: false,\r\n menuPath: '/_conf/assets/en/mega_menu/esdcmenu-eng.html',\r\n GCToolsModal: true,\r\n intranetTitle: [\r\n {\r\n href: '/en/service-canada/service-delivery/sda-assist/index.shtml',\r\n text: '',\r\n boldText: 'SDA Assist',\r\n acronym: 'Service Delivery Agent Assist'\r\n }\r\n ],\r\n lngLinks: [\r\n {\r\n lang: Language.FRENCH,\r\n href: getOtherLang(),\r\n text: 'Français'\r\n }\r\n ],\r\n breadcrumbs: [\r\n {\r\n title: 'Home',\r\n acronym: 'Home',\r\n href: '/en/index.shtml'\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: 'https://esdc.prv/en/search/index.html',\r\n placeholder: 'Search SDA Assist',\r\n method: 'get'\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import i18next from 'i18next';\r\nimport { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class EsdcPrvGenericConfigEN implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.ESDC_PRV;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.DEFAULT;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.ENGLISH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_INTRANET;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n siteJsLinks: [{ asset: '/_conf/assets/custom.js' }],\r\n GCToolsModal: true,\r\n footer: {\r\n subTheme: 'esdc',\r\n footerPath: '/_conf/assets/en/footer/esdcfooter-eng.html',\r\n showFeatures: false,\r\n showFooter: true\r\n },\r\n top: {\r\n subTheme: 'esdc',\r\n siteMenu: true,\r\n menuPath: '/_conf/assets/en/mega_menu/esdcmenu-eng.html',\r\n GCToolsModal: true,\r\n intranetTitle: [\r\n {\r\n href: 'http://esdc.prv/en/index.shtml',\r\n text: ' Intranet',\r\n boldText: 'ESDC/SC',\r\n acronym: 'Employment and Social Development Canada / Service Canada'\r\n }\r\n ],\r\n lngLinks: [\r\n {\r\n lang: Language.FRENCH,\r\n href: getOtherLang(),\r\n text: 'Français'\r\n }\r\n ],\r\n breadcrumbs: [\r\n {\r\n title: 'Home',\r\n acronym: 'Home',\r\n href: '/en/index.shtml'\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: 'https://esdc.prv/en/search/index.html',\r\n placeholder: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.customSearch.placeholder'\r\n ) as string,\r\n method: 'get'\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import i18next from 'i18next';\r\nimport { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class EsdcPrvGenericConfigFR implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.ESDC_PRV;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.DEFAULT;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.FRENCH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_INTRANET;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n siteJsLinks: [{ asset: '/_conf/assets/custom.js' }],\r\n GCToolsModal: true,\r\n footer: {\r\n footerPath: '/_conf/assets/fr/footer/esdcfooter-fra.html',\r\n showFeatures: false,\r\n showFooter: true\r\n },\r\n top: {\r\n subTheme: 'esdc',\r\n siteMenu: true,\r\n menuPath: '/_conf/assets/fr/mega_menu/esdcmenu-fra.html',\r\n GCToolsModal: true,\r\n intranetTitle: [\r\n {\r\n href: 'http://esdc.prv/fr/index.shtml',\r\n text: ' Intranet',\r\n boldText: 'EDSC/SC',\r\n acronym: 'Emploi et Développement social Canada / Service Canada'\r\n }\r\n ],\r\n lngLinks: [\r\n {\r\n lang: Language.ENGLISH,\r\n href: getOtherLang(),\r\n text: 'English'\r\n }\r\n ],\r\n breadcrumbs: [\r\n {\r\n title: 'Accueil',\r\n acronym: 'Accueil',\r\n href: '/fr/index.shtml'\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: 'https://esdc.prv/fr/recherche/index.html',\r\n placeholder: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.customSearch.placeholder'\r\n ) as string,\r\n method: 'get'\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import BreadCrumbModule from '../../modules/breadcrumbs.js';\r\nimport ArticlesModule from '../../modules/esdc-prv/articles.js';\r\nimport BlogsModule from '../../modules/esdc-prv/blogs.js';\r\nimport CarousselModule from '../../modules/esdc-prv/caroussel.js';\r\nimport CategoryModule from '../../modules/esdc-prv/catquery.js';\r\nimport MoreNewsFeedModule from '../../modules/esdc-prv/moreNewsfeed.js';\r\nimport NewsfeedModule from '../../modules/esdc-prv/newsfeed.js';\r\nimport RandomSurveyModule from '../../modules/esdc-prv/randomSurvey.js';\r\nimport ShareThisPageModule from '../../modules/esdc-prv/ShareThisPage.js';\r\nimport LeftNavigationMenuModule from '../../modules/leftNavMenu.js';\r\nimport { hasPreviewPage } from '../../modules/previewUtil.js';\r\nimport type { AdobeConfig } from '../../types/adobeConfig.js';\r\nimport type { SiteConfig } from '../../types/config';\r\nimport { Content } from '../../types/content.js';\r\nimport {\r\n Language,\r\n Template,\r\n type LanguageType,\r\n type SiteAsset,\r\n type TemplateType\r\n} from '../../types/template.js';\r\nimport BaseConfig from '../base.config';\r\nimport EsdcPrvAssistConfigFR from './esdc-prv-assist.fr.config';\r\nimport EsdcPrvSplashPageConfig from './esdc-prv-splashPage.config.js';\r\nimport EsdcPrvAssistConfigEN from './esdc-prv.assist.en.config';\r\nimport EsdcPrvGenericConfigEN from './esdc-prv.generic.en.config';\r\nimport EsdcPrvGenericConfigFR from './esdc-prv.generic.fr.config';\r\n\r\nexport default class EsdcPrvConfig extends BaseConfig {\r\n private readonly _configs: Array = [\r\n new EsdcPrvGenericConfigEN(),\r\n new EsdcPrvGenericConfigFR(),\r\n new EsdcPrvAssistConfigEN(),\r\n new EsdcPrvAssistConfigFR()\r\n ];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n getChildConfigs() {\r\n return this._configs;\r\n }\r\n\r\n /**\r\n * REF: Site names for ESDC-PRV are located in service_no_check.json and selected by users via CMS\r\n * @returns\r\n */\r\n getAdobeConfig() {\r\n const config: AdobeConfig = {\r\n accessRights: '3'\r\n };\r\n return config;\r\n }\r\n\r\n hasSplashPage(): boolean {\r\n let titles: Array = Array.from(\r\n document.querySelectorAll('meta[name=\"dc.title\"]')\r\n );\r\n if (titles.length === 0)\r\n titles = Array.from(\r\n document.querySelectorAll('meta[name=\"dcterms.title\"]')\r\n );\r\n return titles.some((title) => {\r\n return (\r\n title.content ===\r\n 'Welcome to Employment and Social Development Canada' ||\r\n title.content === 'Bienvenue à Emploi et Développement social Canada'\r\n );\r\n });\r\n }\r\n\r\n getSplashPageConfigs(): SiteConfig | undefined {\r\n return new EsdcPrvSplashPageConfig();\r\n }\r\n\r\n getDefaultChildConfig(lang: LanguageType): SiteConfig | undefined {\r\n return lang === Language.ENGLISH\r\n ? new EsdcPrvGenericConfigEN()\r\n : new EsdcPrvGenericConfigFR();\r\n }\r\n\r\n hasCustomCDTSSetup(): boolean {\r\n return true;\r\n }\r\n async customCDTSSetup(\r\n lang: LanguageType,\r\n template: TemplateType\r\n ): Promise {\r\n if (!this.hasSplashPage()) {\r\n this.loadArticleSideMenu(lang, template);\r\n\r\n if (template === Template.ASSIST) {\r\n document.querySelector('footer')?.classList.add('wb-inv');\r\n }\r\n\r\n await new ShareThisPageModule('esdc-prv').run();\r\n await new BreadCrumbModule().run();\r\n await new LeftNavigationMenuModule().run();\r\n }\r\n }\r\n\r\n loadArticleSideMenu(lang: LanguageType, template: TemplateType) {\r\n const ATL_ARTICLE_IDENTIFIER = 'atl-article';\r\n const BLOGS_IDENTIFIER = 'blogs';\r\n let isAtlArticle;\r\n let isBlogs;\r\n\r\n if (template === Content.ARTICLE) {\r\n if (hasPreviewPage()) {\r\n isAtlArticle = new URLSearchParams(window.parent.parent.location.search)\r\n .toString()\r\n .includes(ATL_ARTICLE_IDENTIFIER);\r\n isBlogs = new URLSearchParams(window.parent.parent.location.search)\r\n .toString()\r\n .includes(BLOGS_IDENTIFIER);\r\n } else {\r\n isAtlArticle = window.location.pathname.includes(\r\n ATL_ARTICLE_IDENTIFIER\r\n );\r\n isBlogs = window.location.pathname.includes(BLOGS_IDENTIFIER);\r\n }\r\n\r\n if (isAtlArticle) {\r\n this.loadHTML(\r\n 'articleLeftMenu',\r\n `/_conf/assets/${lang}/ATL_Menu_${lang}.html`\r\n );\r\n return;\r\n }\r\n if (isBlogs) {\r\n this.loadHTML(\r\n 'articleLeftMenu',\r\n `/_conf/assets/${lang}/blogsMenu_${lang}.html`\r\n );\r\n return;\r\n }\r\n this.loadHTML(\r\n 'articleLeftMenu',\r\n `/_conf/assets/${lang}/articlesMenu_${lang}.html`\r\n );\r\n }\r\n }\r\n\r\n loadHTML(myDivId: string, url: string) {\r\n const xmlhttp = new XMLHttpRequest();\r\n\r\n xmlhttp.onreadystatechange = function () {\r\n if (xmlhttp.readyState === XMLHttpRequest.DONE) {\r\n if (xmlhttp.status === 200) {\r\n const el = document.getElementById(myDivId);\r\n if (el != null) {\r\n const markup = document\r\n .createRange()\r\n .createContextualFragment(xmlhttp.responseText);\r\n el.append(markup);\r\n }\r\n } else {\r\n console.debug('Error - Problem with loading scripts');\r\n }\r\n }\r\n };\r\n\r\n xmlhttp.open('GET', url, true);\r\n xmlhttp.send();\r\n }\r\n\r\n getFooterAssets(): Array {\r\n const pathName = window.location.pathname;\r\n const articles = new ArticlesModule();\r\n const newsfeed = new NewsfeedModule();\r\n const catquery = new CategoryModule();\r\n const moreNewsfeed = new MoreNewsFeedModule();\r\n const caroussel = new CarousselModule();\r\n const blogs = new BlogsModule();\r\n const randomSurvey = new RandomSurveyModule();\r\n\r\n return [\r\n {\r\n asset: caroussel.run.bind(caroussel),\r\n isInjectable: () => {\r\n return (\r\n pathName === '/en/index.shtml' || pathName === '/fr/index.shtml'\r\n );\r\n }\r\n },\r\n {\r\n asset: articles.run.bind(articles),\r\n isInjectable: () => {\r\n return (\r\n (pathName.includes('/en/intersection') ||\r\n pathName.includes('/fr/intersection')) &&\r\n !(\r\n pathName === '/en/intersection/index.shtml' ||\r\n pathName === '/fr/intersection/index.shtml'\r\n )\r\n );\r\n }\r\n },\r\n {\r\n asset: catquery.run.bind(catquery),\r\n isInjectable: () => {\r\n return (\r\n pathName === '/en/intersection/index.shtml' ||\r\n pathName === '/fr/intersection/index.shtml'\r\n );\r\n }\r\n },\r\n {\r\n asset: blogs.run.bind(blogs),\r\n isInjectable: () => {\r\n /* DISABLED: 01/27/2025 - Page is not using the script any longer */\r\n // return pathName === '/en/blogs/index.shtml' || pathName === '/fr/blogs/index.shtml';\r\n return false;\r\n }\r\n },\r\n {\r\n asset: '/js/ewcms-contact-forms-dropdown.js',\r\n isInjectable: () => {\r\n return (\r\n pathName == '/en/feedback/index.shtml' ||\r\n pathName == '/fr/retroaction/index.shtml'\r\n );\r\n }\r\n },\r\n {\r\n asset: '/js/ewcms-social.js',\r\n isInjectable: () => {\r\n const commentsMetaContent = (\r\n document.querySelector(\r\n `meta[name=\"intersection.commentsEnabled\"]`\r\n ) as HTMLMetaElement\r\n )?.content;\r\n const likabilityMetaContent = (\r\n document.querySelector(\r\n `meta[name=\"intersection.likabilityEnabled\"]`\r\n ) as HTMLMetaElement\r\n )?.content;\r\n const feedbackMetaContent = (\r\n document.querySelector(\r\n `meta[name=\"iservice.feedbackEnabled\"]`\r\n ) as HTMLMetaElement\r\n )?.content;\r\n\r\n // TODO: this seems brittle to be using class selectors?\r\n const hasQowDivs = document.querySelectorAll('.qow').length > 0;\r\n const hasQowMultipleDivs =\r\n document.querySelectorAll('.qow-multiple').length > 0;\r\n\r\n const commentsEnabled = commentsMetaContent === '1';\r\n const likabilityEnabled = likabilityMetaContent === '1';\r\n const feedbackEnabled = feedbackMetaContent === '1';\r\n\r\n return (\r\n likabilityEnabled ||\r\n commentsEnabled ||\r\n feedbackEnabled ||\r\n hasQowDivs ||\r\n hasQowMultipleDivs\r\n );\r\n }\r\n },\r\n {\r\n asset: newsfeed.run.bind(newsfeed),\r\n isInjectable: () => {\r\n return (\r\n pathName === '/en/news/index.shtml' ||\r\n pathName === '/en/index.shtml' ||\r\n pathName === '/fr/nouvelles/index.shtml' ||\r\n pathName === '/fr/index.shtml'\r\n );\r\n }\r\n },\r\n {\r\n asset: moreNewsfeed.run.bind(moreNewsfeed),\r\n isInjectable: () => {\r\n return (\r\n new RegExp(/\\/en\\/news\\/[A-Za-z-_]+\\/index/).test(pathName) ||\r\n new RegExp(/\\/fr\\/nouvelles\\/[A-Za-z-_]+\\/index/).test(pathName)\r\n );\r\n }\r\n },\r\n {\r\n asset: randomSurvey.run.bind(randomSurvey),\r\n isInjectable: () => {\r\n // const probability = (window['randomSurveyProbabilityOverride'] as number) || Math.random(); // Génère un nombre aléatoire entre 0 et 1\r\n // console.debug(`Random Survey Probability: ${probability}`);\r\n // return (probability <= 0.2) // 20 % de chances\r\n return false;\r\n }\r\n }\r\n ];\r\n }\r\n}\r\n","import i18next from 'i18next';\r\nimport { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config.js';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template.js';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class HorizonsGenericConfigEN implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.HORIZONS;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.DEFAULT;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.ENGLISH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_WEB;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n mode: 'app',\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n base: {\r\n exitSecureSite: {\r\n exitScript: false,\r\n displayModal: false\r\n }\r\n },\r\n footer: {\r\n showFeatures: false,\r\n showFooter: false,\r\n footerPath: `/${this.getLanguageType().toString()}/footer/footer.html`,\r\n contextualFooter: {\r\n title: 'Title',\r\n links: [\r\n {\r\n text: 'text',\r\n href: '#'\r\n }\r\n ]\r\n }\r\n },\r\n top: {\r\n appName: [\r\n {\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.appName.text'\r\n ) as string,\r\n href: `/${this.getLanguageType().toString()}/home/index.shtml`\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: '/en/search/index.html',\r\n placeholder: 'Policy Horizons',\r\n method: 'get',\r\n hiddenInput: [\r\n {\r\n name: 'src',\r\n value: '1'\r\n }\r\n ]\r\n }\r\n ],\r\n breadcrumbs: [\r\n {\r\n title: 'Canada.ca',\r\n acronym: 'Canada.ca',\r\n href: `https://www.canada.ca/${this.getLanguageType().toString()}.html`\r\n }\r\n ],\r\n siteMenu: true,\r\n menuPath: `/${this.getLanguageType().toString()}/menu/menu.html`,\r\n lngLinks: [\r\n {\r\n lang: Language.FRENCH,\r\n href: getOtherLang(),\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.lngLinks.text'\r\n ) as string\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showShare: false,\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import i18next from 'i18next';\r\nimport { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config.js';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template.js';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class HorizonsGenericConfigFR implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.HORIZONS;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.DEFAULT;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.FRENCH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_WEB;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n mode: 'app',\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n base: {\r\n exitSecureSite: {\r\n exitScript: false,\r\n displayModal: false\r\n }\r\n },\r\n footer: {\r\n showFeatures: false,\r\n showFooter: false,\r\n footerPath: `/${this.getLanguageType().toString()}/footer/footer.html`,\r\n contextualFooter: {\r\n title: 'Title',\r\n links: [\r\n {\r\n text: 'text',\r\n href: '#'\r\n }\r\n ]\r\n }\r\n },\r\n top: {\r\n appName: [\r\n {\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.appName.text'\r\n ) as string,\r\n href: `/${this.getLanguageType().toString()}/accueil/index.shtml`\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: '/fr/recherche/index.html',\r\n placeholder: 'Policy Horizons',\r\n method: 'get',\r\n hiddenInput: [\r\n {\r\n name: 'src',\r\n value: '1'\r\n }\r\n ]\r\n }\r\n ],\r\n breadcrumbs: [\r\n {\r\n title: 'Canada.ca',\r\n acronym: 'Canada.ca',\r\n href: `https://www.canada.ca/${this.getLanguageType().toString()}.html`\r\n }\r\n ],\r\n siteMenu: true,\r\n menuPath: `/${this.getLanguageType().toString()}/menu/menu.html`,\r\n lngLinks: [\r\n {\r\n lang: Language.ENGLISH,\r\n href: getOtherLang(),\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.lngLinks.text'\r\n ) as string\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showShare: false,\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import type { SiteConfig, Config } from '../../types/config';\nimport { WetAsset } from '../../types/template.js';\nimport CdtsConfigurator from '../cdts.config.js';\n\nexport default class HorizonsSplashPageConfig implements SiteConfig {\n getConfig() {\n return {\n siteCssLinks: [\n {\n asset: CdtsConfigurator.getWetAssetUrl(WetAsset.CSS_MESSAGES),\n sri: 'sha512-utHIWB+pwhbqgoAaf4clvQ6s7i9YpDgjtQsXwd88N0ivH3oV3CNvypCTw/67EWv54Ra4QXDsjc9Pv3UBtGsEvQ=='\n },\n {\n asset: CdtsConfigurator.getWetAssetUrl(WetAsset.CSS_FAVICON),\n rel: 'icon',\n type: 'image/x-icon',\n sri: 'sha512-K5sY7P1HeSsL9CWCrDbDjF28nBQpu7PPW4hKI6e5k7+Y6MJZVJvWP36tEiHfrzOU8jJWNNOgKG72utwJr0DJ6Q=='\n }\n ]\n } as Partial;\n }\n}\n","import i18next from 'i18next';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config.js';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template.js';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\nimport { getOtherLang } from '../../i18n/i18n.js';\r\n\r\nexport default class HorizonsArticleConfigEN implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.HORIZONS;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.ARTICLE;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.ENGLISH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_WEB;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n mode: 'app',\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n base: {\r\n exitSecureSite: {\r\n exitScript: false,\r\n displayModal: false\r\n }\r\n },\r\n footer: {\r\n showFeatures: false,\r\n showFooter: false,\r\n footerPath: `/${this.getLanguageType().toString()}/footer/footer.html`,\r\n contextualFooter: {\r\n title: 'Title',\r\n links: [\r\n {\r\n text: 'text',\r\n href: '#'\r\n }\r\n ]\r\n }\r\n },\r\n top: {\r\n appName: [\r\n {\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.appName.text'\r\n ) as string,\r\n href: `/${this.getLanguageType().toString()}/home/index.shtml`\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: '/en/search/index.html',\r\n placeholder: 'Policy Horizons',\r\n method: 'get',\r\n hiddenInput: [\r\n {\r\n name: 'src',\r\n value: '1'\r\n }\r\n ]\r\n }\r\n ],\r\n breadcrumbs: [\r\n {\r\n title: 'Canada.ca',\r\n acronym: 'Canada.ca',\r\n href: `https://www.canada.ca/${this.getLanguageType().toString()}.html`\r\n }\r\n ],\r\n siteMenu: true,\r\n menuPath: `/${this.getLanguageType().toString()}/menu/menu.html`,\r\n lngLinks: [\r\n {\r\n lang: Language.FRENCH,\r\n href: getOtherLang(),\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.lngLinks.text'\r\n ) as string\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showShare: false,\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import i18next from 'i18next';\r\nimport { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config.js';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template.js';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class HorizonsArticleConfigFR implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.HORIZONS;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.ARTICLE;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.FRENCH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_WEB;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n mode: 'app',\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n base: {\r\n exitSecureSite: {\r\n exitScript: false,\r\n displayModal: false\r\n }\r\n },\r\n footer: {\r\n showFeatures: false,\r\n showFooter: false,\r\n footerPath: `/${this.getLanguageType().toString()}/footer/footer.html`,\r\n contextualFooter: {\r\n title: 'Title',\r\n links: [\r\n {\r\n text: 'text',\r\n href: '#'\r\n }\r\n ]\r\n }\r\n },\r\n top: {\r\n appName: [\r\n {\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.appName.text'\r\n ) as string,\r\n href: `/${this.getLanguageType().toString()}/accueil/index.shtml`\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: '/fr/recherche/index.html',\r\n placeholder: 'Policy Horizons',\r\n method: 'get',\r\n hiddenInput: [\r\n {\r\n name: 'src',\r\n value: '1'\r\n }\r\n ]\r\n }\r\n ],\r\n breadcrumbs: [\r\n {\r\n title: 'Canada.ca',\r\n acronym: 'Canada.ca',\r\n href: `https://www.canada.ca/${this.getLanguageType().toString()}.html`\r\n }\r\n ],\r\n siteMenu: true,\r\n menuPath: `/${this.getLanguageType().toString()}/menu/menu.html`,\r\n lngLinks: [\r\n {\r\n lang: Language.ENGLISH,\r\n href: getOtherLang(),\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.lngLinks.text'\r\n ) as string\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showShare: false,\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import i18next from 'i18next';\r\nimport { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config.js';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template.js';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class HorizonsIndexConfigEN implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.HORIZONS;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.INDEX;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.ENGLISH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_WEB;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n mode: 'app',\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n base: {\r\n exitSecureSite: {\r\n exitScript: false,\r\n displayModal: false\r\n }\r\n },\r\n footer: {\r\n showFeatures: false,\r\n showFooter: false,\r\n footerPath: `/${this.getLanguageType().toString()}/footer/footer.html`,\r\n contextualFooter: {\r\n title: 'Title',\r\n links: [\r\n {\r\n text: 'text',\r\n href: '#'\r\n }\r\n ]\r\n }\r\n },\r\n top: {\r\n appName: [\r\n {\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.appName.text'\r\n ) as string,\r\n href: `/${this.getLanguageType().toString()}/home/index.shtml`\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: '/en/search/index.html',\r\n placeholder: 'Policy Horizons',\r\n method: 'get',\r\n hiddenInput: [\r\n {\r\n name: 'src',\r\n value: '1'\r\n }\r\n ]\r\n }\r\n ],\r\n breadcrumbs: [\r\n {\r\n title: 'Canada.ca',\r\n acronym: 'Canada.ca',\r\n href: `https://www.canada.ca/${this.getLanguageType().toString()}.html`\r\n }\r\n ],\r\n siteMenu: true,\r\n menuPath: `/${this.getLanguageType().toString()}/menu/menu.html`,\r\n lngLinks: [\r\n {\r\n lang: Language.FRENCH,\r\n href: getOtherLang(),\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.lngLinks.text'\r\n ) as string\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showShare: false,\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import i18next from 'i18next';\r\nimport { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config.js';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template.js';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class HorizonsIndexConfigFR implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.HORIZONS;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.INDEX;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.FRENCH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_WEB;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n mode: 'app',\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n base: {\r\n exitSecureSite: {\r\n exitScript: false,\r\n displayModal: false\r\n }\r\n },\r\n footer: {\r\n showFeatures: false,\r\n showFooter: false,\r\n footerPath: `/${this.getLanguageType().toString()}/footer/footer.html`,\r\n contextualFooter: {\r\n title: 'Title',\r\n links: [\r\n {\r\n text: 'text',\r\n href: '#'\r\n }\r\n ]\r\n }\r\n },\r\n top: {\r\n appName: [\r\n {\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.appName.text'\r\n ) as string,\r\n href: `/${this.getLanguageType().toString()}/accueil/index.shtml`\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: '/fr/recherche/index.html',\r\n placeholder: 'Policy Horizons',\r\n method: 'get',\r\n hiddenInput: [\r\n {\r\n name: 'src',\r\n value: '1'\r\n }\r\n ]\r\n }\r\n ],\r\n breadcrumbs: [\r\n {\r\n title: 'Canada.ca',\r\n acronym: 'Canada.ca',\r\n href: `https://www.canada.ca/${this.getLanguageType().toString()}.html`\r\n }\r\n ],\r\n siteMenu: true,\r\n menuPath: `/${this.getLanguageType().toString()}/menu/menu.html`,\r\n lngLinks: [\r\n {\r\n lang: Language.ENGLISH,\r\n href: getOtherLang(),\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.lngLinks.text'\r\n ) as string\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showShare: false,\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import i18next from 'i18next';\r\nimport Module from '../Module.js';\r\nimport { hasPreviewPage } from '../previewUtil.js';\r\nimport type { Index } from '../../types/horizons.js';\r\n\r\nexport default class HorizonsModule extends Module {\r\n moduleReady: boolean = false;\r\n\r\n getModuleName(): string {\r\n return '';\r\n }\r\n\r\n doLogic(args: unknown[]): Promise {\r\n return Promise.resolve(args);\r\n }\r\n\r\n /**\r\n * Horizon Site Specific\r\n * @returns\r\n */\r\n isLoaderDisplayed() {\r\n return document.getElementById('loader');\r\n }\r\n /**\r\n * Horizon Site Specific\r\n * @returns\r\n */\r\n getThumbnailImageUrl(indexItem: Index) {\r\n let thumbnailUrl = indexItem.thumbnailUrl;\r\n if (!thumbnailUrl) {\r\n thumbnailUrl =\r\n '/resources/wp-content/plugins/js_composer/assets/vc/vc_gitem_image.png';\r\n }\r\n\r\n return thumbnailUrl;\r\n }\r\n /**\r\n * Horizon Site Specific\r\n * @returns\r\n */\r\n isEng() {\r\n return i18next.language === 'en';\r\n }\r\n /**\r\n * Horizon Site Specific\r\n * @returns\r\n */\r\n displayLoader() {\r\n document.getElementById('main-content')!.style.display = 'none';\r\n\r\n const loaderWrapper = document.createElement('div');\r\n loaderWrapper.id = 'loader';\r\n\r\n const loader = document.createElement('div');\r\n loader.classList.add('loader');\r\n loader.classList.add('center-block');\r\n loader.classList.add('mrgn-tp-xl');\r\n loader.classList.add('mrgn-bttm-lg');\r\n loaderWrapper.appendChild(loader);\r\n\r\n const loaderText = document.createElement('p');\r\n loaderText.classList.add('text-center');\r\n loaderText.classList.add('h3');\r\n loaderText.textContent = this.isEng()\r\n ? 'LOADING'\r\n : 'TÉLÉCHARGEMENT EN COURS';\r\n loaderWrapper.appendChild(loaderText);\r\n\r\n document\r\n .getElementById('main-content')!\r\n .parentElement!.prepend(loaderWrapper);\r\n }\r\n /**\r\n * Horizon Site Specific\r\n * @returns\r\n */\r\n getLocation(): string {\r\n let location: string | null = '';\r\n if (hasPreviewPage()) {\r\n location = parent.parent.document\r\n .getElementById('enFilename')!\r\n .getAttribute('href');\r\n } else {\r\n location = window.location.href;\r\n }\r\n\r\n return location as string;\r\n }\r\n /**\r\n * Horizon Site Specific\r\n * @returns\r\n */\r\n isPath(path: string) {\r\n const location = this.getLocation();\r\n\r\n return location?.includes(path);\r\n }\r\n /**\r\n * Horizon Site Specific\r\n * @returns\r\n */\r\n isArticlePath() {\r\n const location = this.getLocation();\r\n const dateRegex = new RegExp(/(en|fr)\\/[\\d]{4}\\//);\r\n return dateRegex.test(location);\r\n }\r\n\r\n async getIndexItems() {\r\n const indexResponse = await fetch('/data/index.json');\r\n const indexResponseJson = (await indexResponse.json()) as Array;\r\n const indexItems = indexResponseJson.filter(function (i: Index) {\r\n return i.isPublished != false;\r\n });\r\n indexItems.sort((a: Index, b: Index) => {\r\n // Display newest entries at top of list.\r\n return b.dateIssued.localeCompare(a.dateIssued);\r\n });\r\n\r\n return indexItems;\r\n }\r\n}\r\n","import type { Index } from '../../types/horizons.js';\nimport HorizonsModule from './horizons.js';\n\nexport default class BuildTopListModule extends HorizonsModule {\n moduleReady: boolean = false;\n\n getModuleName(): string {\n return 'list';\n }\n\n async doLogic(args: unknown[]): Promise {\n const sectionItems = args[0] as Index[];\n const enSectionHeader = args[1] as string;\n const frSectionHeader = args[2] as string;\n const allItemsLink = args[3] as string;\n const toplistDiv = args[4] as HTMLElement;\n const displayShowAllButton = args[5] as boolean;\n\n this.buildTopList(\n sectionItems,\n enSectionHeader,\n frSectionHeader,\n allItemsLink,\n toplistDiv,\n displayShowAllButton\n );\n this.moduleReady = true;\n return Promise.resolve();\n }\n\n buildTopList(\n sectionItems: Index[],\n enSectionHeader: string,\n frSectionHeader: string,\n allItemsLink: string,\n toplistDiv: HTMLElement,\n displayShowAllButton = true\n ) {\n // Header\n //\n const sectionHeader = document.createElement('h3');\n sectionHeader.innerHTML = this.isEng() ? enSectionHeader : frSectionHeader;\n\n toplistDiv.appendChild(sectionHeader);\n\n // Row\n //\n const listRow = document.createElement('div');\n listRow.classList.add('row');\n\n toplistDiv.appendChild(listRow);\n\n // Left Column\n //\n const leftColumn = document.createElement('div');\n leftColumn.classList.add('col-md-8');\n listRow.appendChild(leftColumn);\n\n const indexOfFirstItem = 0;\n const firstItem = sectionItems[indexOfFirstItem];\n\n // Thumbnail\n const thumbnailUrl = this.getThumbnailImageUrl(firstItem);\n\n const itemThumbnail = document.createElement('img');\n itemThumbnail.classList.add('index-thumbnail');\n itemThumbnail.classList.add('image-responsive');\n itemThumbnail.src = thumbnailUrl;\n itemThumbnail.alt = '';\n\n const thumbnailDiv = document.createElement('div');\n thumbnailDiv.classList.add('index-thumbnail-div');\n thumbnailDiv.appendChild(itemThumbnail);\n leftColumn.appendChild(thumbnailDiv);\n\n const firstItemTitle = this.isEng() ? firstItem.enTitle : firstItem.frTitle;\n const firstItemLink = this.isEng() ? firstItem.enUrl : firstItem.frUrl;\n\n const firstItemH4 = document.createElement('h4');\n const firstItemA = document.createElement('a');\n\n firstItemH4.appendChild(firstItemA);\n\n firstItemA.href = firstItemLink;\n firstItemA.innerHTML = firstItemTitle;\n\n leftColumn.appendChild(firstItemH4);\n\n const dividerTitleHr = document.createElement('hr');\n dividerTitleHr.classList.add('brdr-bttm');\n leftColumn.appendChild(dividerTitleHr);\n\n // Description\n const descriptionP = document.createElement('p');\n const desc = this.isEng()\n ? firstItem.enDescription\n : firstItem.frDescription;\n descriptionP.innerHTML = desc ? desc : '';\n\n leftColumn.append(descriptionP);\n\n const readMoreButtonDiv = document.createElement('div');\n const readMoreButton = document.createElement('a');\n readMoreButton.type = 'button';\n readMoreButton.classList.add('btn');\n readMoreButton.classList.add('btn-default');\n readMoreButton.role = 'button';\n readMoreButton.href = firstItemLink;\n readMoreButton.innerHTML = this.isEng() ? 'Read more' : 'Afficher la suite';\n readMoreButton.classList.add('mrgn-tp-md');\n readMoreButton.classList.add('mrgn-bttm-md');\n readMoreButtonDiv.appendChild(readMoreButton);\n leftColumn.appendChild(readMoreButtonDiv);\n\n // Right Column\n //\n const rightColumn = document.createElement('div');\n rightColumn.classList.add('col-md-4');\n listRow.appendChild(rightColumn);\n\n const dividerTopHr = document.createElement('hr');\n dividerTopHr.classList.add('brdr-bttm');\n dividerTopHr.classList.add('mrgn-tp-0');\n rightColumn.appendChild(dividerTopHr);\n\n const indexOfSecondItem = 1;\n const indexOfLastItem = 5;\n for (let i = indexOfSecondItem; i < indexOfLastItem; i++) {\n const item = sectionItems[i];\n\n if (item) {\n const itemH4 = document.createElement('h4');\n const itemA = document.createElement('a');\n\n itemA.href = this.isEng() ? item.enUrl : item.frUrl;\n itemA.innerHTML = this.isEng() ? item.enTitle : item.frTitle;\n\n itemH4.appendChild(itemA);\n\n rightColumn.appendChild(itemH4);\n\n const dividerHr = document.createElement('hr');\n dividerHr.classList.add('brdr-bttm');\n rightColumn.appendChild(dividerHr);\n rightColumn.appendChild(dividerHr);\n }\n }\n\n if (displayShowAllButton) {\n const allButtonDiv = document.createElement('div');\n const allButton = document.createElement('a');\n allButton.type = 'button';\n allButton.classList.add('btn');\n allButton.classList.add('btn-default');\n allButton.role = 'button';\n allButton.href = allItemsLink;\n\n allButton.innerHTML = this.isEng()\n ? 'All ' + enSectionHeader\n : 'Tous les ' + frSectionHeader;\n allButtonDiv.appendChild(allButton);\n rightColumn.appendChild(allButtonDiv);\n }\n }\n}\n","import BuildTopListModule from './list.js';\r\nimport { hasPreviewPage, EDIT_PREVIEWPAGE_UPDATE } from '../previewUtil.js';\r\nimport HorizonsModule from './horizons.js';\r\nimport type { Index } from '../../types/horizons.js';\r\n\r\nexport default class OurWorkModule extends HorizonsModule {\r\n moduleReady: boolean = false;\r\n\r\n private readonly buildTopListModule: BuildTopListModule;\r\n\r\n constructor() {\r\n super();\r\n this.buildTopListModule = new BuildTopListModule();\r\n }\r\n\r\n getModuleName(): string {\r\n return 'ourwork';\r\n }\r\n\r\n doLogic(): Promise {\r\n const buildLists = () => {\r\n this.buildLists()\r\n .then((response) => response)\r\n .catch((error) => console.error(error));\r\n };\r\n\r\n if (!hasPreviewPage()) {\r\n buildLists();\r\n } else {\r\n document.addEventListener(EDIT_PREVIEWPAGE_UPDATE, buildLists);\r\n }\r\n\r\n this.moduleReady = true;\r\n return Promise.resolve();\r\n }\r\n\r\n clearLoadingIcon() {\r\n if (this.isLoaderDisplayed()) {\r\n let images: HTMLElement[] = [].slice.call(\r\n document.getElementsByClassName('index-thumbnail')\r\n );\r\n if (images.length === 0) {\r\n images = [].slice.call(\r\n document.getElementsByClassName('top-list-thumbnail')\r\n );\r\n }\r\n const numImages = images.length;\r\n\r\n let numImagesLoaded = 0;\r\n images.forEach((img) => {\r\n ['load', 'error'].forEach((evt) =>\r\n img.addEventListener(evt, () => {\r\n numImagesLoaded++;\r\n if (numImagesLoaded === numImages) {\r\n document.getElementById('loader')!.style.display = 'none';\r\n document.getElementById('main-content')!.style.display = 'block';\r\n document\r\n .getElementById('page-wrapper')!\r\n .classList.remove('wb-inv');\r\n }\r\n })\r\n );\r\n });\r\n }\r\n }\r\n\r\n async buildLists() {\r\n const ourWorkDiv = document.getElementById('our-work');\r\n const economicFuturesDiv = document.getElementById('economic-futures');\r\n const socialFuturesDiv = document.getElementById('social-futures');\r\n const governanceFuturesDiv = document.getElementById('governance-futures');\r\n const covid19Div = document.getElementById('covid19');\r\n\r\n const indexItems = await this.getIndexItems();\r\n\r\n if (ourWorkDiv) {\r\n await this.buildOurWorkPage(indexItems, ourWorkDiv);\r\n }\r\n\r\n if (economicFuturesDiv) {\r\n this.buildEconomicFuturePage(indexItems, economicFuturesDiv);\r\n }\r\n\r\n if (socialFuturesDiv) {\r\n this.buildSocialFuturesPage(indexItems, socialFuturesDiv);\r\n }\r\n\r\n if (governanceFuturesDiv) {\r\n this.buildGovernanceFuturesPage(indexItems, governanceFuturesDiv);\r\n }\r\n\r\n if (covid19Div) {\r\n this.buildCovid19Foresight(indexItems, covid19Div);\r\n }\r\n }\r\n\r\n buildFirstRow(\r\n sectionId: string,\r\n sectionItems: Index[],\r\n enSectionHeader: string,\r\n frSectionHeader: string,\r\n toplistDiv: HTMLElement\r\n ) {\r\n const sectionDiv = document.createElement('div');\r\n sectionDiv.id = sectionId;\r\n\r\n toplistDiv.appendChild(sectionDiv);\r\n\r\n // Header\r\n //\r\n const sectionHeader = document.createElement('h2');\r\n sectionHeader.innerHTML = this.isEng() ? enSectionHeader : frSectionHeader;\r\n\r\n sectionDiv.appendChild(sectionHeader);\r\n\r\n // Row\r\n //\r\n const listRow = document.createElement('div');\r\n listRow.classList.add('row');\r\n\r\n sectionDiv.appendChild(listRow);\r\n\r\n // Left Column\r\n //\r\n const leftColumn = document.createElement('div');\r\n leftColumn.classList.add('col-md-6');\r\n listRow.appendChild(leftColumn);\r\n\r\n const indexOfFirstItem = 0;\r\n const firstItem = sectionItems[indexOfFirstItem];\r\n\r\n // Thumbnail\r\n const thumbnailUrl = this.getThumbnailImageUrl(firstItem);\r\n\r\n const itemThumbnail = document.createElement('img');\r\n itemThumbnail.classList.add('top-list-thumbnail');\r\n itemThumbnail.src = thumbnailUrl;\r\n\r\n itemThumbnail.alt = '';\r\n\r\n const thumbnailDiv = document.createElement('div');\r\n thumbnailDiv.appendChild(itemThumbnail);\r\n leftColumn.appendChild(thumbnailDiv);\r\n\r\n const firstItemTitle = this.isEng() ? firstItem.enTitle : firstItem.frTitle;\r\n const firstItemLink = this.isEng() ? firstItem.enUrl : firstItem.frUrl;\r\n\r\n const firstItemH4 = document.createElement('h4');\r\n const firstItemA = document.createElement('a');\r\n\r\n firstItemH4.appendChild(firstItemA);\r\n\r\n firstItemA.href = firstItemLink;\r\n firstItemA.innerHTML = firstItemTitle;\r\n\r\n leftColumn.appendChild(firstItemH4);\r\n\r\n const date = document.createElement('p');\r\n date.innerText = firstItem.dateModified;\r\n leftColumn.appendChild(date);\r\n\r\n const dividerTitleHr = document.createElement('hr');\r\n dividerTitleHr.classList.add('brdr-bttm');\r\n leftColumn.appendChild(dividerTitleHr);\r\n\r\n sectionItems.shift();\r\n\r\n // Right Column\r\n //\r\n const rightColumn = document.createElement('div');\r\n rightColumn.classList.add('col-md-6');\r\n listRow.appendChild(rightColumn);\r\n\r\n while (sectionItems.length) {\r\n const itemsForRow = sectionItems.splice(0, 2);\r\n const row = document.createElement('div');\r\n row.setAttribute('class', 'row');\r\n rightColumn.appendChild(row);\r\n\r\n itemsForRow.forEach((article) => {\r\n const col = document.createElement('div');\r\n col.setAttribute('class', 'col-md-6');\r\n const figure = document.createElement('figure');\r\n figure.setAttribute('class', 'thumbnail');\r\n col.appendChild(figure);\r\n\r\n const imageLink = document.createElement('a');\r\n imageLink.setAttribute(\r\n 'href',\r\n this.isEng() ? article.enUrl : article.frUrl\r\n );\r\n imageLink.setAttribute(\r\n 'aria-label',\r\n this.isEng() ? article.enTitle : article.frTitle\r\n );\r\n const image = document.createElement('img');\r\n image.classList.add('index-thumbnail');\r\n image.classList.add('index-image');\r\n image.alt = '';\r\n\r\n const imageDiv = document.createElement('div');\r\n imageDiv.classList.add('article-thumbnail-div');\r\n imageDiv.appendChild(image);\r\n\r\n const imageUrl = this.getThumbnailImageUrl(article);\r\n image.setAttribute('src', imageUrl);\r\n imageLink.appendChild(imageDiv);\r\n figure.appendChild(imageLink);\r\n\r\n const figcaption = document.createElement('figcaption');\r\n figcaption.setAttribute('class', 'caption');\r\n const articleCaptionLink = document.createElement('a');\r\n articleCaptionLink.classList.add('h4');\r\n articleCaptionLink.classList.add('mrgn-bttm-0');\r\n articleCaptionLink.setAttribute(\r\n 'href',\r\n this.isEng() ? article.enUrl : article.frUrl\r\n );\r\n articleCaptionLink.setAttribute(\r\n 'title',\r\n this.isEng() ? article.enTitle : article.frTitle\r\n );\r\n articleCaptionLink.innerHTML = this.isEng()\r\n ? article.enTitle\r\n : article.frTitle;\r\n figcaption.appendChild(articleCaptionLink);\r\n\r\n const date = document.createElement('p');\r\n date.innerText = article.dateModified;\r\n figcaption.appendChild(date);\r\n\r\n figure.appendChild(figcaption);\r\n\r\n row.appendChild(col);\r\n });\r\n }\r\n }\r\n\r\n buildOtherRow(\r\n sectionId: string,\r\n sectionItems: Index[],\r\n enSectionHeader: string,\r\n frSectionHeader: string,\r\n toplistDiv: HTMLElement\r\n ) {\r\n const sectionDiv = document.createElement('div');\r\n sectionDiv.id = sectionId;\r\n\r\n toplistDiv.appendChild(sectionDiv);\r\n\r\n const dividerTopHr = document.createElement('hr');\r\n dividerTopHr.classList.add('brdr-bttm');\r\n dividerTopHr.classList.add('mrgn-bttm-lg');\r\n dividerTopHr.classList.add('mrgn-tp-lg');\r\n sectionDiv.appendChild(dividerTopHr);\r\n\r\n // Header\r\n //\r\n const headerDiv = document.createElement('div');\r\n\r\n const sectionHeader = document.createElement('h2');\r\n sectionHeader.innerHTML = this.isEng() ? enSectionHeader : frSectionHeader;\r\n\r\n const topButton = document.createElement('a');\r\n topButton.classList.add('btn');\r\n topButton.classList.add('btn-default');\r\n topButton.classList.add('text-right');\r\n topButton.href = 'javascript:window.scrollTo(0,0);';\r\n topButton.innerText = this.isEng() ? 'Back to top' : 'Haut de la page';\r\n\r\n const headerRow = document.createElement('div');\r\n headerRow.classList.add('row');\r\n const h2Col = document.createElement('div');\r\n h2Col.classList.add('col-md-6');\r\n h2Col.appendChild(sectionHeader);\r\n headerRow.appendChild(h2Col);\r\n\r\n const buttonCol = document.createElement('div');\r\n buttonCol.classList.add('col-md-6');\r\n buttonCol.classList.add('text-right');\r\n buttonCol.appendChild(topButton);\r\n headerRow.appendChild(buttonCol);\r\n\r\n headerDiv.appendChild(headerRow);\r\n\r\n sectionDiv.appendChild(headerDiv);\r\n const listRow = document.createElement('div');\r\n listRow.classList.add('row');\r\n\r\n sectionDiv.appendChild(listRow);\r\n\r\n while (sectionItems.length) {\r\n const itemsForRow = sectionItems.splice(0, 3);\r\n const row = document.createElement('div');\r\n row.setAttribute('class', 'row');\r\n listRow.appendChild(row);\r\n\r\n itemsForRow.forEach((article) => {\r\n const col = document.createElement('div');\r\n col.setAttribute('class', 'col-md-4');\r\n const figure = document.createElement('figure');\r\n figure.setAttribute('class', 'thumbnail');\r\n col.appendChild(figure);\r\n const imageLink = document.createElement('a');\r\n imageLink.setAttribute(\r\n 'href',\r\n this.isEng() ? article.enUrl : article.frUrl\r\n );\r\n imageLink.setAttribute(\r\n 'aria-label',\r\n this.isEng() ? article.enTitle : article.frTitle\r\n );\r\n const image = document.createElement('img');\r\n image.setAttribute('class', 'index-thumbnail');\r\n image.alt = '';\r\n\r\n const imageDiv = document.createElement('div');\r\n imageDiv.classList.add('article-thumbnail-div');\r\n imageDiv.appendChild(image);\r\n\r\n const imageUrl = this.getThumbnailImageUrl(article);\r\n image.setAttribute('src', imageUrl);\r\n imageLink.appendChild(imageDiv);\r\n figure.appendChild(imageLink);\r\n\r\n const figcaption = document.createElement('figcaption');\r\n figcaption.setAttribute('class', 'caption');\r\n const articleCaptionLink = document.createElement('a');\r\n articleCaptionLink.classList.add('h4');\r\n articleCaptionLink.classList.add('mrgn-bttm-0');\r\n articleCaptionLink.setAttribute(\r\n 'href',\r\n this.isEng() ? article.enUrl : article.frUrl\r\n );\r\n articleCaptionLink.setAttribute(\r\n 'title',\r\n this.isEng() ? article.enTitle : article.frTitle\r\n );\r\n articleCaptionLink.innerHTML = this.isEng()\r\n ? article.enTitle\r\n : article.frTitle;\r\n figcaption.appendChild(articleCaptionLink);\r\n\r\n const date = document.createElement('p');\r\n date.innerText = article.dateModified;\r\n figcaption.appendChild(date);\r\n\r\n figure.appendChild(figcaption);\r\n row.appendChild(col);\r\n });\r\n }\r\n }\r\n\r\n buildCovid19Foresight(indexItems: Index[], toplistDiv: HTMLElement) {\r\n const categoryId = 21;\r\n\r\n const reportItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const reportsId = 0;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(reportsId)\r\n );\r\n });\r\n this.buildFirstRow(\r\n 'reports',\r\n reportItems,\r\n 'Reports',\r\n 'Rapports',\r\n toplistDiv\r\n );\r\n\r\n const videoItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const foresightId = 16;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(foresightId)\r\n );\r\n });\r\n this.buildOtherRow('videos', videoItems, 'Videos', 'Vidéos', toplistDiv);\r\n\r\n this.clearLoadingIcon();\r\n }\r\n\r\n buildGovernanceFuturesPage(indexItems: Index[], toplistDiv: HTMLElement) {\r\n const categoryId = 13;\r\n\r\n const videoItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const videosId = 16;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(videosId)\r\n );\r\n });\r\n this.buildFirstRow('videos', videoItems, 'Videos', 'Vidéos', toplistDiv);\r\n\r\n const blogItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const foresightId = 7;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(foresightId)\r\n );\r\n });\r\n this.buildOtherRow(\r\n 'blogs',\r\n blogItems,\r\n 'Blog posts',\r\n 'Billets de blogue',\r\n toplistDiv\r\n );\r\n\r\n const presentationItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const presentationsId = 16;\r\n const speechesId = 18;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(presentationsId) &&\r\n categories.includes(speechesId)\r\n );\r\n });\r\n this.buildOtherRow(\r\n 'presentations',\r\n presentationItems,\r\n 'Presentations and speeches',\r\n 'Présentations et discours',\r\n toplistDiv\r\n );\r\n\r\n this.clearLoadingIcon();\r\n }\r\n\r\n buildSocialFuturesPage(indexItems: Index[], toplistDiv: HTMLElement) {\r\n const categoryId = 19;\r\n\r\n /////////////////////////////////////////////////////////////////////////////////////////\r\n // build first row\r\n /////////////////////////////////////////////////////////////////////////////////////////\r\n const reportItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const reportsId = 0;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(reportsId)\r\n );\r\n });\r\n this.buildFirstRow(\r\n 'reports',\r\n reportItems,\r\n 'Reports',\r\n 'Rapports',\r\n toplistDiv\r\n );\r\n\r\n const videoItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const videosId = 16;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(videosId)\r\n );\r\n });\r\n this.buildOtherRow('videos', videoItems, 'Videos', 'Vidéos', toplistDiv);\r\n\r\n const blogItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const foresightId = 7;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(foresightId)\r\n );\r\n });\r\n this.buildOtherRow(\r\n 'blogs',\r\n blogItems,\r\n 'Blog posts',\r\n 'Billets de blogue',\r\n toplistDiv\r\n );\r\n\r\n const weakSignalsItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const foresightId = 11;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(foresightId)\r\n );\r\n });\r\n this.buildOtherRow(\r\n 'weak-signals',\r\n weakSignalsItems,\r\n 'Weak Signals',\r\n 'Signaux faibles',\r\n toplistDiv\r\n );\r\n\r\n this.clearLoadingIcon();\r\n }\r\n\r\n buildEconomicFuturePage(indexItems: Index[], toplistDiv: HTMLElement) {\r\n const categoryId = 15;\r\n\r\n /////////////////////////////////////////////////////////////////////////////////////////\r\n // build first row\r\n /////////////////////////////////////////////////////////////////////////////////////////\r\n const reportItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const reportsId = 0;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(reportsId)\r\n );\r\n });\r\n this.buildFirstRow(\r\n 'reports',\r\n reportItems,\r\n 'Reports',\r\n 'Rapports',\r\n toplistDiv\r\n );\r\n\r\n const videoItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const videosId = 16;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(videosId)\r\n );\r\n });\r\n this.buildOtherRow('videos', videoItems, 'Videos', 'Vidéos', toplistDiv);\r\n\r\n const foresightItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const foresightId = 22;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(foresightId)\r\n );\r\n });\r\n this.buildOtherRow(\r\n 'foresight',\r\n foresightItems,\r\n 'Foresight Briefs',\r\n 'Note de prospective',\r\n toplistDiv\r\n );\r\n\r\n const blogItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const foresightId = 7;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(foresightId)\r\n );\r\n });\r\n this.buildOtherRow(\r\n 'blogs',\r\n blogItems,\r\n 'Blog posts',\r\n 'Billets de blogue',\r\n toplistDiv\r\n );\r\n\r\n const weakSignalsItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const foresightId = 11;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(foresightId)\r\n );\r\n });\r\n this.buildOtherRow(\r\n 'weak-signals',\r\n weakSignalsItems,\r\n 'Weak Signals',\r\n 'Signaux faibles',\r\n toplistDiv\r\n );\r\n\r\n const presentationItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const presentationsId = 17;\r\n const speechesId = 18;\r\n return (\r\n categories &&\r\n categories.includes(categoryId) &&\r\n categories.includes(presentationsId) &&\r\n categories.includes(speechesId)\r\n );\r\n });\r\n this.buildOtherRow(\r\n 'presentations',\r\n presentationItems,\r\n 'Presentations and speeches',\r\n 'Présentations et discours',\r\n toplistDiv\r\n );\r\n\r\n this.clearLoadingIcon();\r\n }\r\n\r\n async buildOurWorkPage(indexItems: Index[], toplistDiv: HTMLElement) {\r\n const sectionItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const categoryId = 15;\r\n return categories?.includes(categoryId);\r\n });\r\n await this.buildTopListModule.run(\r\n sectionItems,\r\n 'Economic Futures',\r\n 'Avenirs économiques',\r\n this.isEng()\r\n ? '/en/our-work/economic-futures/index.shtml'\r\n : '/fr/notre-travail/avenirs-economiques/index.shtml',\r\n toplistDiv\r\n );\r\n\r\n const dividerEconomicFuturesHr = document.createElement('hr');\r\n dividerEconomicFuturesHr.classList.add('brdr-bttm');\r\n toplistDiv.appendChild(dividerEconomicFuturesHr);\r\n\r\n const sectionSocialFuturesItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const categoryId = 19;\r\n const hasThumbnail = entry.thumbnailUrl;\r\n return categories && categories.includes(categoryId) && hasThumbnail;\r\n });\r\n await this.buildTopListModule.run(\r\n sectionSocialFuturesItems,\r\n 'Social Futures',\r\n 'Avenirs sociaux',\r\n this.isEng()\r\n ? '/en/our-work/social-futures/index.shtml'\r\n : '/fr/notre-travail/avenirs-sociaux/index.shtml',\r\n toplistDiv\r\n );\r\n\r\n const dividerSocialFuturesHr = document.createElement('hr');\r\n dividerSocialFuturesHr.classList.add('brdr-bttm');\r\n toplistDiv.appendChild(dividerSocialFuturesHr);\r\n\r\n const sectionGovernanceFuturesItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const categoryId = 13;\r\n const hasThumbnail = entry.thumbnailUrl;\r\n return categories && categories.includes(categoryId) && hasThumbnail;\r\n });\r\n await this.buildTopListModule.run(\r\n sectionGovernanceFuturesItems,\r\n 'Governance Futures',\r\n 'Avenirs de gouvernance',\r\n this.isEng()\r\n ? '/en/our-work/governance-futures/index.shtml'\r\n : '/fr/notre-travail/avenirs-de-gouvernance/index.shtml',\r\n toplistDiv\r\n );\r\n\r\n const dividerGovernanceFuturesHr = document.createElement('hr');\r\n dividerGovernanceFuturesHr.classList.add('brdr-bttm');\r\n toplistDiv.appendChild(dividerGovernanceFuturesHr);\r\n\r\n const sectionCovidItems = indexItems.filter((entry) => {\r\n const categories = entry.categories;\r\n const categoryId = 21;\r\n const hasThumbnail = entry.thumbnailUrl;\r\n return categories && categories.includes(categoryId) && hasThumbnail;\r\n });\r\n await this.buildTopListModule.run(\r\n sectionCovidItems,\r\n 'Covid-19 Foresight',\r\n 'Prospective COVID-19',\r\n this.isEng()\r\n ? '/en/our-work/covid-19-foresight/index.shtml'\r\n : '/fr/notre-travail/prospective-covid-19/index.shtml',\r\n toplistDiv\r\n );\r\n\r\n this.clearLoadingIcon();\r\n }\r\n}\r\n","import i18next from 'i18next';\r\nimport { hasPreviewPage, EDIT_PREVIEWPAGE_UPDATE } from '../previewUtil.js';\r\nimport HorizonsModule from './horizons.js';\r\nimport type { Author, Index } from '../../types/horizons.js';\r\n\r\ntype Category = {\r\n id: number;\r\n enLink: string;\r\n frLink: string;\r\n enText: string;\r\n frText: string;\r\n};\r\n\r\ntype CategoryInfo = {\r\n link: string;\r\n name: string;\r\n};\r\n\r\nexport default class IndexModule extends HorizonsModule {\r\n moduleReady: boolean = false;\r\n private readonly lang = i18next.language;\r\n private categories: Category[] = [];\r\n private authors: Author[] = [];\r\n private indexItems: Index[] = [];\r\n private readonly indexDiv = document.getElementById('index-listing');\r\n private readonly learningCategoryId = 6;\r\n private readonly blogCategoryId = 7;\r\n private readonly weakSignalsCategoryId = 11;\r\n private readonly foresightBriefsCategoryId = 22;\r\n private readonly articleCategoryId = 23;\r\n private readonly allCategories: Array = [];\r\n\r\n constructor() {\r\n super();\r\n\r\n this.allCategories.push(\r\n ...[\r\n this.learningCategoryId,\r\n this.blogCategoryId,\r\n this.weakSignalsCategoryId,\r\n this.foresightBriefsCategoryId,\r\n this.articleCategoryId\r\n ]\r\n );\r\n }\r\n getModuleName(): string {\r\n return 'index';\r\n }\r\n\r\n async doLogic(): Promise {\r\n const buildIndex = (lang: string) => {\r\n this.buildIndex(lang)\r\n .then((response) => response)\r\n .catch((error) => console.error(error));\r\n };\r\n\r\n if (!hasPreviewPage()) {\r\n this.displayLoader();\r\n buildIndex(this.lang);\r\n } else {\r\n document.addEventListener(EDIT_PREVIEWPAGE_UPDATE, () => {\r\n buildIndex(this.lang);\r\n this.configureEventListener(this.lang);\r\n });\r\n }\r\n\r\n this.moduleReady = true;\r\n return Promise.resolve();\r\n }\r\n\r\n clearLoadingIcon() {\r\n const images = [].slice.call(\r\n document.getElementsByClassName('index-thumbnail')\r\n );\r\n\r\n const numImages = images.length;\r\n\r\n let numImageLoadsAttempted = 0;\r\n images.forEach((img: Element) => {\r\n ['load', 'error'].forEach((evt) =>\r\n img.addEventListener(evt, () => {\r\n numImageLoadsAttempted++;\r\n if (numImageLoadsAttempted === numImages) {\r\n document.getElementById('loader')!.style.display = 'none';\r\n document.getElementById('main-content')!.style.display = 'block';\r\n }\r\n })\r\n );\r\n });\r\n }\r\n\r\n showPage(pageNum: number) {\r\n const itemsToDisplay = document.querySelectorAll('[id^=\"article-index-\"]');\r\n\r\n itemsToDisplay.forEach((item) => {\r\n item.classList.add('wb-inv');\r\n });\r\n\r\n const records_per_page = 10;\r\n for (\r\n let i = (pageNum - 1) * records_per_page;\r\n i < pageNum * records_per_page;\r\n i++\r\n ) {\r\n if (itemsToDisplay[i]) {\r\n itemsToDisplay[i].classList.remove('wb-inv');\r\n }\r\n }\r\n\r\n const buttons = this.getPaginationButtons();\r\n buttons.forEach((button) => {\r\n button.classList.remove('active');\r\n });\r\n document.getElementById('button-' + pageNum)!.classList.add('active');\r\n\r\n const firstPageNum = 1;\r\n const previousButton = document.getElementById('button-prev');\r\n if (pageNum === firstPageNum) {\r\n previousButton!.classList.add('wb-inv');\r\n } else {\r\n previousButton!.classList.remove('wb-inv');\r\n }\r\n\r\n const nextButton = document.getElementById('button-next');\r\n\r\n const numberOFNaviationButtons = 2;\r\n if (pageNum === buttons.length - numberOFNaviationButtons) {\r\n nextButton!.classList.add('wb-inv');\r\n } else {\r\n nextButton!.classList.remove('wb-inv');\r\n }\r\n\r\n (document.activeElement as HTMLElement).blur();\r\n // window.scrollTo(0, 0);\r\n document.getElementById('index-listing')!.scrollIntoView();\r\n }\r\n\r\n showPreviousPage() {\r\n const currentPage = this.getCurrentPageNumber();\r\n this.showPage(currentPage - 1);\r\n }\r\n\r\n showNextPage() {\r\n const currentPage = this.getCurrentPageNumber();\r\n this.showPage(currentPage + 1);\r\n }\r\n\r\n getCurrentPageNumber() {\r\n let activeButton = 1;\r\n const buttons = this.getPaginationButtons();\r\n buttons.forEach((b) => {\r\n if (b.classList.contains('active')) {\r\n activeButton = Number(b.id.split('-')[1]);\r\n }\r\n });\r\n\r\n return activeButton;\r\n }\r\n\r\n getPaginationButtons() {\r\n return document.querySelectorAll('[id^=\"button-\"]');\r\n }\r\n\r\n addPaginationButtons() {\r\n const buttonBlock = document.createElement('div');\r\n buttonBlock.classList.add('text-center');\r\n\r\n const buttons = document.createElement('ul');\r\n buttons.classList.add('pagination');\r\n\r\n buttonBlock.appendChild(buttons);\r\n\r\n const itemsToDisplay = document.querySelectorAll('[id^=\"article-index-\"]');\r\n\r\n const numItemsPerPage = 10;\r\n const numPageButtons =\r\n Math.floor(itemsToDisplay.length / numItemsPerPage) +\r\n (itemsToDisplay.length % numItemsPerPage > 0 ? 1 : 0);\r\n\r\n const previousButton = document.createElement('li');\r\n previousButton.id = 'button-prev';\r\n const previousButtonLink = document.createElement('a');\r\n previousButtonLink.text = this.isEng() ? 'Previous' : 'Précédent';\r\n previousButtonLink.href = `javascript:showPreviousPage();`;\r\n previousButton.appendChild(previousButtonLink);\r\n buttons.appendChild(previousButton);\r\n\r\n for (let i = 0; i < numPageButtons; i++) {\r\n const button = document.createElement('li');\r\n const buttonNumber = i + 1;\r\n button.id = 'button-' + buttonNumber;\r\n const buttonLink = document.createElement('a');\r\n buttonLink.href = `javascript:showPage(${buttonNumber});`;\r\n buttonLink.text = String(buttonNumber);\r\n button.appendChild(buttonLink);\r\n\r\n buttons.appendChild(button);\r\n }\r\n\r\n const nextButton = document.createElement('li');\r\n nextButton.id = 'button-next';\r\n const nextButtonLink = document.createElement('a');\r\n nextButtonLink.text = this.isEng() ? 'Next' : 'Suivant';\r\n nextButtonLink.href = `javascript:showNextPage();`;\r\n nextButton.appendChild(nextButtonLink);\r\n buttons.appendChild(nextButton);\r\n\r\n this.indexDiv!.parentNode!.insertBefore(\r\n buttonBlock,\r\n this.indexDiv!.nextSibling\r\n );\r\n }\r\n\r\n configureEventListener(lang: string) {\r\n const targetNode = document.getElementById(\r\n `${lang}_index-type-span`\r\n ) as Node;\r\n\r\n const config = { characterData: true, childList: true, subtree: true };\r\n\r\n const buildIndex = (lang: string) => {\r\n this.buildIndex(lang)\r\n .then((response) => response)\r\n .catch((error) => console.error(error));\r\n };\r\n\r\n const callback = () => {\r\n buildIndex(lang);\r\n };\r\n\r\n const observer = new MutationObserver(callback);\r\n\r\n if (targetNode) {\r\n observer.observe(targetNode, config);\r\n }\r\n }\r\n\r\n async buildIndex(lang: string) {\r\n let indexType: string | null;\r\n if (\r\n this.isPath('/resources/index.shtml') ||\r\n this.isPath('/ressources/index.shtml')\r\n ) {\r\n indexType = '16'; // Videos\r\n } else {\r\n indexType = document.querySelector(\r\n `tvar[data-tvar=\"${lang}_index-type\"]`\r\n )!.textContent as string;\r\n }\r\n\r\n this.indexItems = await this.getIndexItems();\r\n\r\n const authorsResponse = await fetch('/data/authors.json');\r\n this.authors = (await authorsResponse.json()) as Array;\r\n\r\n const categoriesResponse = await fetch('/data/categories.json');\r\n this.categories = (await categoriesResponse.json()) as Array;\r\n\r\n this.clearIndex();\r\n\r\n if (indexType === 'articles') {\r\n this.buildArticleListing(this.allCategories);\r\n } else {\r\n this.buildIndexListing(indexType);\r\n }\r\n }\r\n\r\n clearIndex() {\r\n this.indexDiv!.innerHTML = '';\r\n }\r\n\r\n isAuthorSelected(indexType: string) {\r\n return indexType.startsWith('auth-');\r\n }\r\n\r\n buildIndexListing(indexType: string) {\r\n const itemsToDisplaySet = new Set();\r\n\r\n if (this.isAuthorSelected(indexType)) {\r\n this.indexItems.forEach((j: Index) => {\r\n const authorId = j.author;\r\n const description = this.isEng() ? j.enDescription : j.frDescription;\r\n if (description && indexType && indexType === 'auth-' + authorId) {\r\n itemsToDisplaySet.add(j);\r\n }\r\n });\r\n } else {\r\n // else it's a category, not an author.\r\n this.indexItems.forEach((i: Index) => {\r\n const itemCategories = i.categories;\r\n const description = this.isEng() ? i.enDescription : i.frDescription;\r\n if (itemCategories && description) {\r\n itemCategories.forEach((category: number) => {\r\n if (indexType && Number(indexType) === Number(category)) {\r\n itemsToDisplaySet.add(i);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n const itemsToDisplay: Index[] = Array.from(itemsToDisplaySet) as Index[];\r\n itemsToDisplay.forEach((item: Index, index) => {\r\n const row = document.createElement('div');\r\n row.classList.add('row');\r\n row.classList.add('mrgn-bttm-lg');\r\n row.setAttribute('id', `article-index-${index}`);\r\n this.indexDiv!.appendChild(row);\r\n\r\n const thumnailDiv = document.createElement('div');\r\n thumnailDiv.classList.add('col-md-4');\r\n row.appendChild(thumnailDiv);\r\n\r\n const thumbnailLink = document.createElement('a');\r\n thumbnailLink.setAttribute(\r\n 'href',\r\n this.isEng() ? item.enUrl : item.frUrl\r\n );\r\n thumbnailLink.setAttribute(\r\n 'aria-label',\r\n this.isEng() ? item.enTitle : item.frTitle\r\n );\r\n const thumbnailImage = document.createElement('img');\r\n thumbnailImage.classList.add('index-thumbnail');\r\n\r\n thumbnailImage.alt = '';\r\n\r\n const thumbnailImageDiv = document.createElement('div');\r\n thumbnailImageDiv.classList.add('index-thumbnail-div');\r\n thumbnailImageDiv.appendChild(thumbnailImage);\r\n\r\n const thumbnailUrl = this.getThumbnailImageUrl(item);\r\n\r\n thumbnailImage.setAttribute('src', thumbnailUrl);\r\n thumbnailImage.classList.add('img-responsive');\r\n thumbnailLink.appendChild(thumbnailImageDiv);\r\n thumnailDiv.appendChild(thumbnailLink);\r\n\r\n const itemDetailsDiv = document.createElement('div');\r\n itemDetailsDiv.classList.add('col-md-8');\r\n row.appendChild(itemDetailsDiv);\r\n\r\n // Categories\r\n const categoryDiv = document.createElement('div');\r\n categoryDiv.classList.add('small');\r\n itemDetailsDiv.appendChild(categoryDiv);\r\n const categoryIds = item.categories;\r\n if (categoryIds) {\r\n categoryIds.forEach((categoryId: number, index) => {\r\n const categoryInfo = this.getCategoryInfo(\r\n this.categories,\r\n Number(categoryId)\r\n );\r\n\r\n const categoryLink = document.createElement('a');\r\n categoryLink.setAttribute('href', categoryInfo.link);\r\n categoryLink.innerHTML = categoryInfo.name;\r\n categoryDiv.appendChild(categoryLink);\r\n const categorySeperator =\r\n index === categoryIds.length - 1 ? '' : ', ';\r\n const categorySeperatorSpan = document.createElement('span');\r\n categorySeperatorSpan.innerHTML = categorySeperator;\r\n categoryDiv.appendChild(categorySeperatorSpan);\r\n });\r\n }\r\n\r\n const itemLinkDiv = document.createElement('div');\r\n const itemLink = document.createElement('a');\r\n itemLink.classList.add('h4');\r\n itemLink.classList.add('mrgn-bttm-0');\r\n itemLink.setAttribute('href', this.isEng() ? item.enUrl : item.frUrl);\r\n itemLink.setAttribute(\r\n 'title',\r\n this.isEng() ? item.enTitle : item.frTitle\r\n );\r\n itemLink.innerHTML = this.isEng() ? item.enTitle : item.frTitle;\r\n itemLinkDiv.appendChild(itemLink);\r\n itemDetailsDiv.appendChild(itemLinkDiv);\r\n\r\n // Author label\r\n const authorAndDateDiv = document.createElement('div');\r\n authorAndDateDiv.classList.add('small');\r\n const authorlabelLink = document.createElement('a');\r\n const authorlabelInfo = this.getAuthorInfo(this.authors, item.author);\r\n authorlabelLink.setAttribute('href', authorlabelInfo.link as string);\r\n authorlabelLink.innerHTML = authorlabelInfo.name as string;\r\n authorAndDateDiv.appendChild(authorlabelLink);\r\n\r\n const authorDateSeperatorSpan = document.createElement('span');\r\n authorDateSeperatorSpan.innerHTML = ' • ';\r\n authorAndDateDiv.appendChild(authorDateSeperatorSpan);\r\n\r\n const dateSpan = document.createElement('span');\r\n dateSpan.innerHTML = item.dateIssued;\r\n authorAndDateDiv.appendChild(dateSpan);\r\n\r\n itemDetailsDiv.appendChild(authorAndDateDiv);\r\n\r\n const descriptionP = document.createElement('p');\r\n descriptionP.classList.add('small');\r\n const descriptionText = this.isEng()\r\n ? item.enDescription\r\n : item.frDescription;\r\n descriptionP.innerHTML = descriptionText ? descriptionText : '';\r\n\r\n itemDetailsDiv.appendChild(descriptionP);\r\n });\r\n\r\n this.addPaginationButtons();\r\n this.showPage(1);\r\n this.clearLoadingIcon();\r\n }\r\n\r\n buildArticleListing(categoryIdsToDisplay: number[]) {\r\n const catgorySelectorDiv = document.getElementById(\r\n 'index-category-buttons'\r\n );\r\n catgorySelectorDiv!.innerHTML = '';\r\n const categoryButtonGroup = document.createElement('div');\r\n categoryButtonGroup.setAttribute('class', 'btn-group btn-group-sm');\r\n catgorySelectorDiv!.appendChild(categoryButtonGroup);\r\n\r\n const categoryButtonAll = document.createElement('button');\r\n categoryButtonAll.setAttribute('class', 'btn btn-default');\r\n categoryButtonAll.setAttribute('type', 'button');\r\n if (this.isAllArticles(categoryIdsToDisplay)) {\r\n categoryButtonAll.classList.add('active');\r\n }\r\n categoryButtonAll.innerHTML = this.isEng() ? 'All' : 'Tous';\r\n categoryButtonAll.onclick = () => {\r\n this.clearIndex();\r\n this.displayLoader();\r\n this.buildArticleListing(this.allCategories);\r\n };\r\n categoryButtonGroup.appendChild(categoryButtonAll);\r\n\r\n this.allCategories.forEach((catId) => {\r\n const categoryInfo = this.getCategoryInfo(this.categories, catId);\r\n const categoryButton = document.createElement('button');\r\n categoryButton.setAttribute('class', 'btn btn-default');\r\n categoryButton.setAttribute('type', 'button');\r\n if (\r\n !this.isAllArticles(categoryIdsToDisplay) &&\r\n this.doesCatIdMatchCatToDisplay(catId, categoryIdsToDisplay)\r\n ) {\r\n categoryButton.classList.add('active');\r\n }\r\n categoryButton.innerHTML = categoryInfo.name;\r\n categoryButton.onclick = () => {\r\n this.clearIndex();\r\n this.displayLoader();\r\n this.buildArticleListing([catId]);\r\n };\r\n\r\n categoryButtonGroup.appendChild(categoryButton);\r\n });\r\n\r\n const articlesToDisplay = new Set();\r\n\r\n this.indexItems.forEach((a: Index) => {\r\n const articleCategories = a.categories;\r\n if (articleCategories) {\r\n articleCategories.forEach((articleCategoryId: number) => {\r\n if (categoryIdsToDisplay.includes(Number(articleCategoryId))) {\r\n articlesToDisplay.add(a);\r\n }\r\n });\r\n }\r\n });\r\n\r\n const articleArray = Array.from(articlesToDisplay);\r\n while (articleArray.length) {\r\n const articlesForRow = articleArray.splice(0, 3) as Index[];\r\n const row = document.createElement('div');\r\n row.setAttribute('class', 'row');\r\n this.indexDiv!.appendChild(row);\r\n\r\n articlesForRow.forEach((article: Index) => {\r\n const col = document.createElement('div');\r\n col.setAttribute(\r\n 'data-cat',\r\n article.categories ? article.categories.toString() : ''\r\n );\r\n col.setAttribute('class', 'col-md-4');\r\n const figure = document.createElement('figure');\r\n figure.setAttribute('class', 'thumbnail');\r\n col.appendChild(figure);\r\n\r\n const imageLink = document.createElement('a');\r\n imageLink.setAttribute(\r\n 'href',\r\n this.isEng() ? article.enUrl : article.frUrl\r\n );\r\n imageLink.setAttribute(\r\n 'aria-label',\r\n this.isEng() ? article.enTitle : article.frTitle\r\n );\r\n const image = document.createElement('img');\r\n image.setAttribute('class', 'index-thumbnail');\r\n image.alt = '';\r\n\r\n const imageDiv = document.createElement('div');\r\n imageDiv.classList.add('article-thumbnail-div');\r\n imageDiv.appendChild(image);\r\n\r\n const imageUrl = this.getThumbnailImageUrl(article);\r\n image.setAttribute('src', imageUrl);\r\n imageLink.appendChild(imageDiv);\r\n figure.appendChild(imageLink);\r\n\r\n const figcaption = document.createElement('figcaption');\r\n figcaption.setAttribute('class', 'caption');\r\n const articleCaptionLink = document.createElement('a');\r\n articleCaptionLink.classList.add('h4');\r\n articleCaptionLink.classList.add('mrgn-bttm-0');\r\n articleCaptionLink.setAttribute(\r\n 'href',\r\n this.isEng() ? article.enUrl : article.frUrl\r\n );\r\n articleCaptionLink.setAttribute(\r\n 'title',\r\n this.isEng() ? article.enTitle : article.frTitle\r\n );\r\n articleCaptionLink.innerHTML = this.isEng()\r\n ? article.enTitle\r\n : article.frTitle;\r\n figcaption.appendChild(articleCaptionLink);\r\n const authorDiv = document.createElement('div');\r\n authorDiv.classList.add('small');\r\n const authorLink = document.createElement('a');\r\n authorDiv.appendChild(authorLink);\r\n const authorInfo = this.getAuthorInfo(this.authors, article.author);\r\n authorLink.setAttribute('href', authorInfo.link as string);\r\n authorLink.innerHTML = authorInfo.name as string;\r\n figcaption.appendChild(authorDiv);\r\n\r\n const categoryList = document.createElement('ul');\r\n categoryList.setAttribute('class', 'list-inline mrgn-tp-lg');\r\n const categoryIds = article.categories;\r\n if (categoryIds) {\r\n categoryIds.forEach((categoryId: number) => {\r\n const categoryListItem = document.createElement('li');\r\n const categoryLink = document.createElement('a');\r\n const categoryInfo = this.getCategoryInfo(\r\n this.categories,\r\n Number(categoryId)\r\n );\r\n categoryLink.setAttribute('href', categoryInfo.link);\r\n categoryLink.setAttribute('class', 'btn btn-default btn-xs');\r\n categoryLink.setAttribute('role', 'button');\r\n categoryLink.innerHTML = categoryInfo.name;\r\n\r\n categoryListItem.appendChild(categoryLink);\r\n categoryList.appendChild(categoryListItem);\r\n });\r\n }\r\n figcaption.appendChild(categoryList);\r\n\r\n figure.appendChild(figcaption);\r\n\r\n row.appendChild(col);\r\n });\r\n }\r\n\r\n this.clearLoadingIcon();\r\n }\r\n\r\n isAllArticles(categoryIdsToDisplay: number[]) {\r\n return categoryIdsToDisplay.length > 1;\r\n }\r\n\r\n doesCatIdMatchCatToDisplay(catId: number, categoryIdsToDisplay: number[]) {\r\n return Number(catId) === Number(categoryIdsToDisplay[0]);\r\n }\r\n\r\n getAuthorInfo(authorList: Author[], authorId: number) {\r\n const a = authorList.find((author: Author) => author.id === authorId);\r\n const result = {\r\n link: this.isEng() ? a?.href_en : a?.href_fr,\r\n name: a?.name\r\n };\r\n\r\n return result;\r\n }\r\n\r\n getCategoryInfo(categoryList: Category[], categoryId: number): CategoryInfo {\r\n const c = categoryList.find((category) => category.id === categoryId);\r\n\r\n const result: CategoryInfo = {\r\n link: this.isEng() ? (c?.enLink as string) : (c?.frLink as string),\r\n name: this.isEng() ? (c?.enText as string) : (c?.frText as string)\r\n };\r\n\r\n return result;\r\n }\r\n}\r\n","import i18next from 'i18next';\nimport { EDIT_PREVIEWPAGE_UPDATE, hasPreviewPage } from '../previewUtil.js';\nimport HorizonsModule from './horizons.js';\nimport type { Author } from '../../types/horizons.js';\n\nexport default class AuthorModule extends HorizonsModule {\n moduleReady: boolean = false;\n private readonly lang = i18next.language;\n\n getModuleName(): string {\n return 'author';\n }\n\n async doLogic(): Promise {\n if (!hasPreviewPage()) {\n this.updateAuthor(this.lang);\n } else {\n document.addEventListener(EDIT_PREVIEWPAGE_UPDATE, () => {\n this.configureEventListener(this.lang);\n this.updateAuthor(this.lang);\n });\n }\n\n this.moduleReady = true;\n return Promise.resolve();\n }\n\n updateAuthor(lang: string) {\n this.addDatePublishedToAuthorArea(lang);\n\n const authorIdTvar = document.querySelector(`tvar[data-tvar=\"${lang}_author-id-text\"]`);\n const authorId = authorIdTvar!.textContent;\n\n fetch('/data/authors.json')\n .then((response) => {\n if (!response.ok) {\n console.error('Failed to load authors.json file.');\n }\n\n response\n .json()\n .then((data: Array) => {\n data.forEach((obj: Author) => {\n if (obj.id === Number(authorId)) {\n const smallImage = obj.smallImageUrl;\n const largeImage = obj.largeImageUrl;\n\n // Author info\n const authorInfoImage = document.getElementById('author-info-image');\n authorInfoImage!.setAttribute('src', smallImage);\n authorInfoImage!.setAttribute('srcset', largeImage);\n const authorInfoImageLink = document.getElementById('author-info-image-link');\n authorInfoImageLink!.setAttribute('href', this.isEng() ? obj.href_en : obj.href_fr);\n const authorInfoLink = document.getElementById('author-info-link');\n authorInfoLink!.setAttribute('href', this.isEng() ? obj.href_en : obj.href_fr);\n authorInfoLink!.setAttribute('title', 'Posts by ' + obj.name);\n authorInfoLink!.textContent = obj.name;\n\n // Author bio\n const authorBioName = document.getElementById('author-bio-name');\n authorBioName!.setAttribute('href', this.isEng() ? obj.href_en : obj.href_fr);\n authorBioName!.textContent = obj.name;\n const authorBioText = document.getElementById('author-bio-text');\n authorBioText!.textContent = this.isEng() ? obj.bio_en : obj.bio_fr;\n const authorBioImage = document.getElementById('author-bio-image');\n authorBioImage!.setAttribute('src', obj.smallBioImageUrl);\n authorBioImage!.setAttribute('srcset', obj.largeBioImageUrl);\n }\n });\n })\n .catch((error) => {\n console.error(error);\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n addDatePublishedToAuthorArea(lang: string) {\n const publisheDataSpanId = 'date-published';\n if (!document.getElementById(publisheDataSpanId)) {\n const authorInfoDiv = document.getElementById('author-info');\n const dateCreatedDiv = document.createElement('div');\n dateCreatedDiv.classList.add('small');\n dateCreatedDiv.classList.add('mrgn-tp-sm');\n const datePublishedLabelSpan = document.createElement('span');\n datePublishedLabelSpan.textContent =\n lang === 'en' ? 'Date published: ' : 'Date de publication: ';\n dateCreatedDiv.appendChild(datePublishedLabelSpan);\n const datePublishedDateSpan = document.createElement('span');\n const dateCreatedTime = document.createElement('time');\n const datePublishedMeta = document\n .querySelector(\"meta[name='dcterms.issued']\")!\n .getAttribute('content');\n datePublishedDateSpan.id = publisheDataSpanId;\n dateCreatedTime.textContent = datePublishedMeta;\n datePublishedDateSpan.appendChild(dateCreatedTime);\n dateCreatedDiv.appendChild(datePublishedDateSpan);\n authorInfoDiv!.appendChild(dateCreatedDiv);\n }\n }\n\n configureEventListener(lang: string) {\n const targetNode = document.getElementById(`${lang}_author-id-span`) as Node;\n\n const config = { characterData: true, childList: true, subtree: true };\n\n const callback = () => {\n this.updateAuthor(lang);\n };\n\n const observer = new MutationObserver(callback);\n\n observer.observe(targetNode, config);\n }\n}\n","import BuildTopListModule from './list.js';\nimport i18next from 'i18next';\nimport { EDIT_PREVIEWPAGE_UPDATE, hasPreviewPage } from '../previewUtil.js';\nimport HorizonsModule from './horizons.js';\nimport type { Index } from '../../types/horizons.js';\n\nexport default class TopListModule extends HorizonsModule {\n moduleReady: boolean = false;\n private readonly buildTopListModule: BuildTopListModule;\n\n constructor() {\n super();\n this.buildTopListModule = new BuildTopListModule();\n }\n\n getModuleName(): string {\n return 'toplist';\n }\n\n async doLogic(): Promise {\n const buildLists = () => {\n this.buildLists()\n .then((response) => response)\n .catch((error) => console.error(error));\n };\n\n if (!hasPreviewPage()) {\n buildLists();\n } else {\n document.addEventListener(EDIT_PREVIEWPAGE_UPDATE, buildLists);\n }\n\n this.moduleReady = true;\n return Promise.resolve();\n }\n\n async buildLists() {\n const lang = i18next.language;\n const toplistDiv = document.getElementById('toplist') as HTMLElement;\n\n const indexItems = await this.getIndexItems();\n\n const sectionItems = indexItems.filter((entry: Index) => {\n const categories = entry.categories;\n const categoryId = 0;\n return categories?.includes(categoryId);\n });\n const reportsLink =\n lang === 'en'\n ? '/en/categories/reports.shtml'\n : '/fr/categories/rapports.shtml';\n await this.buildTopListModule.run(\n sectionItems,\n 'Reports',\n 'Rapports',\n reportsLink,\n toplistDiv\n );\n\n const dividerReportsHr = document.createElement('hr');\n dividerReportsHr.classList.add('brdr-bttm');\n toplistDiv.appendChild(dividerReportsHr);\n\n const sectionArticlesItems = indexItems.filter(function (entry: Index) {\n const categories = entry.categories;\n\n const learningCategoryId = 6;\n const blogCategoryId = 7;\n const weakSignalsCategoryId = 11;\n const foresightBriefsCategoryId = 22;\n const articleCategoryId = 23;\n const allCategories = [\n learningCategoryId,\n blogCategoryId,\n weakSignalsCategoryId,\n foresightBriefsCategoryId,\n articleCategoryId\n ];\n\n let found = false;\n allCategories.forEach(function (catId) {\n if (categories?.includes(catId)) {\n found = true;\n }\n });\n\n return found;\n });\n\n this.buildTopListModule.buildTopList(\n sectionArticlesItems,\n 'Articles',\n 'Articles',\n '/' + lang + '/articles-' + lang + '/index.shtml',\n toplistDiv\n );\n }\n}\n","import i18next from 'i18next';\r\nimport type { SiteConfig } from '../../types/config.js';\r\nimport BaseConfig from '../base.config.js';\r\nimport HorizonsGenericConfigEN from './horizons.generic.en.config.js';\r\nimport HorizonsGenericConfigFR from './horizons.generic.fr.config.js';\r\nimport HorizonsSplashPageConfig from './horizons.splashPage.config.js';\r\nimport {\r\n Language,\r\n SectionIdentifiers,\r\n Site,\r\n type CustomWindow,\r\n type LanguageType,\r\n type SiteAsset,\r\n type TemplateType\r\n} from '../../types/template.js';\r\nimport HorizonsArticleConfigEN from './horizons.article.en.config.js';\r\nimport HorizonsArticleConfigFR from './horizons.article.fr.config.js';\r\nimport HorizonsIndexConfigEN from './horizons.index.en.config.js';\r\nimport HorizonsIndexConfigFR from './horizons.index.fr.config.js';\r\nimport OurWorkModule from '../../modules/horizons/ourwork.js';\r\nimport IndexModule from '../../modules/horizons/index.js';\r\nimport BreadCrumbModule from '../../modules/breadcrumbs.js';\r\nimport AuthorModule from '../../modules/horizons/author.js';\r\nimport TopListModule from '../../modules/horizons/toplist.js';\r\nimport type { AdobeConfig } from '../../types/adobeConfig.js';\r\ndeclare let window: CustomWindow;\r\n\r\nexport default class HorizonsConfig extends BaseConfig {\r\n private readonly _configs: Array = [\r\n new HorizonsGenericConfigEN(),\r\n new HorizonsGenericConfigFR(),\r\n new HorizonsArticleConfigEN(),\r\n new HorizonsArticleConfigFR(),\r\n new HorizonsIndexConfigEN(),\r\n new HorizonsIndexConfigFR()\r\n ];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n getChildConfigs() {\r\n return this._configs;\r\n }\r\n\r\n getAdobeConfig() {\r\n const config: AdobeConfig = {\r\n sitename: 'ESDC-EDSC_HORIZONS-HORIZONS',\r\n accessRights: '2'\r\n };\r\n return config;\r\n }\r\n\r\n hasSplashPage(): boolean {\r\n const title = document.querySelector('title')?.innerHTML;\r\n\r\n return (\r\n title ===\r\n i18next.getResource(\r\n 'en',\r\n 'ns1',\r\n `sites.${Site.HORIZONS.toString()}.pages.splashPage.title`\r\n ) ||\r\n title ===\r\n i18next.getResource(\r\n 'fr',\r\n 'ns1',\r\n `sites.${Site.HORIZONS.toString()}.pages.splashPage.title`\r\n )\r\n );\r\n }\r\n\r\n getSplashPageConfigs(): SiteConfig | undefined {\r\n return new HorizonsSplashPageConfig();\r\n }\r\n\r\n getDefaultChildConfig(lang: LanguageType): SiteConfig | undefined {\r\n return lang === Language.ENGLISH\r\n ? new HorizonsGenericConfigEN()\r\n : new HorizonsGenericConfigFR();\r\n }\r\n\r\n hasCustomCDTSSetup(): boolean {\r\n return true;\r\n }\r\n\r\n async customCDTSSetup(\r\n lang: LanguageType,\r\n wcmsTemplate: TemplateType\r\n ): Promise {\r\n const config = this.getConfig(lang, wcmsTemplate);\r\n\r\n // FOOTER\r\n const defFooter = document.getElementById(SectionIdentifiers.CUSTOM_FOOTER);\r\n const responseFooter = await fetch(config.footer?.footerPath as string);\r\n const menuHtmlFooter = await responseFooter.text();\r\n if (defFooter) defFooter.outerHTML = menuHtmlFooter;\r\n\r\n this.setWbContId();\r\n this.removeShareButon();\r\n\r\n await new BreadCrumbModule().run();\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n /*\r\n * Add wb-cont id to h1 tags so the WET \"skip to main content\" link works.\r\n * This is for pages that were generated before the template was updated.\r\n */\r\n private setWbContId() {\r\n const h1Tags = document.getElementsByTagName('h1');\r\n if (h1Tags.length > 0) {\r\n const h1 = h1Tags[0];\r\n h1.id = 'wb-cont';\r\n }\r\n }\r\n\r\n /*\r\n * Remove the 'share this' link from the bottom of the page.\r\n * This is for pages that were generated before the template was updated.\r\n */\r\n private removeShareButon() {\r\n const shareButton = document.querySelectorAll(\r\n '[class=\"wb-share mrgn-tp-xl\"]'\r\n );\r\n if (shareButton && shareButton.length > 0) {\r\n shareButton[0].remove();\r\n }\r\n }\r\n\r\n getFooterAssets(): Array {\r\n const author = new AuthorModule();\r\n const index = new IndexModule();\r\n const toplist = new TopListModule();\r\n const ourwork = new OurWorkModule();\r\n\r\n return [\r\n {\r\n asset: ourwork.run.bind(ourwork),\r\n isInjectable: () => {\r\n return (\r\n ourwork.isPath('/our-work/') || ourwork.isPath('/notre-travail/')\r\n );\r\n }\r\n },\r\n {\r\n asset: toplist.run.bind(toplist),\r\n isInjectable: () => {\r\n return toplist.isPath('/home/') || toplist.isPath('/accueil/');\r\n }\r\n },\r\n {\r\n asset: async () => {\r\n window.showNextPage = index.showNextPage.bind(index);\r\n window.showPage = index.showPage.bind(index);\r\n window.showPreviousPage = index.showPreviousPage.bind(index);\r\n await index.run();\r\n },\r\n isInjectable: () => {\r\n return (\r\n index.isPath('/categories/') ||\r\n index.isPath('/authors/') ||\r\n index.isPath('/articles-en/') ||\r\n index.isPath('/articles-fr/') ||\r\n index.isPath('/resources/index.shtml') ||\r\n index.isPath('/ressources/index.shtml')\r\n );\r\n }\r\n },\r\n {\r\n asset: author.run.bind(author),\r\n isInjectable: () => {\r\n return author.isArticlePath();\r\n }\r\n }\r\n ];\r\n }\r\n}\r\n","import type { NsdJson } from '../../types/nsd.js';\nimport Module from '../Module.js';\n\n/**\n * National Service Desk Script\n */\nexport default class NationalServiceDeskModule extends Module {\n moduleReady: boolean = false;\n\n getModuleName(): string {\n return 'nsd';\n }\n\n async doLogic(): Promise {\n await this.nsd();\n this.moduleReady = true;\n return Promise.resolve();\n }\n\n async nsd() {\n console.debug('1');\n let laDate: string;\n const response = await fetch('https://mnapesd5247.intra.dmz/lirejson', {\n method: 'GET',\n headers: {\n Authorization: 'Basic'\n }\n }).catch((error) => {\n console.error('Error thrown during fetch: ' + error);\n (document.getElementById('attenteMoyenneFR') as HTMLElement).innerHTML = '0';\n (document.getElementById('dureeMoyenneFR') as HTMLElement).innerHTML = '0';\n (document.getElementById('attenteActuelFR') as HTMLElement).innerHTML = '0';\n (document.getElementById('dateFr') as HTMLElement).innerHTML = laDate;\n });\n\n if (response && !response.ok) {\n throw new Error('Network response was not ok');\n }\n const data = (await response?.json()) as NsdJson;\n\n // Traitement des données\n console.debug('1');\n if (data) {\n console.debug('2');\n laDate = data.LastUpdate;\n console.debug('laDate :' + laDate);\n laDate = new Date(laDate).toLocaleString();\n\n if (this.bonTemps(data.LastUpdate)) {\n console.debug('bonTemps');\n (document.getElementById('attenteMoyenneFR') as HTMLElement).innerHTML = this.secondeMinute(\n data.CallCentres[0].Metrics[0].Value\n );\n (document.getElementById('dureeMoyenneFR') as HTMLElement).innerHTML = this.secondeMinute(\n data.CallCentres[0].Metrics[2].Value\n );\n (document.getElementById('attenteActuelFR') as HTMLElement).innerHTML = this.secondeMinute(\n data.CallCentres[0].Metrics[1].Value\n );\n (document.getElementById('dateFr') as HTMLElement).innerHTML = laDate;\n } else {\n console.debug('pasbonTemps');\n (document.getElementById('msgDisplay') as HTMLElement).className =\n 'text-danger h3 text-center';\n (document.getElementById('timeDisplay') as HTMLElement).className = 'hidden';\n (document.getElementById('lastUpdate-display') as HTMLElement).className = 'hidden';\n (document.getElementById('dateFr') as HTMLElement).innerHTML = '';\n }\n }\n }\n\n secondeMinute(sec: number) {\n const hours = Math.floor(sec / 3600);\n sec %= 3600;\n const minutes = Math.floor(sec / 60);\n const secondes = sec % 60;\n const temps = hours + ' hrs ' + minutes + ' min ' + secondes + ' sec';\n return temps;\n }\n\n bonTemps(d: string) {\n const maintenant = new Date();\n const date = new Date(d);\n console.debug(`MAINTENANT : ${maintenant.toString()}`);\n console.debug(`DATE : ${date.toString()}`);\n let diff = Math.abs(maintenant.getTime() - date.getTime());\n\n diff = Math.floor(diff / 1000 / 60);\n console.debug('Difference : ' + diff);\n\n if (diff > 11500) {\n return false;\n } else {\n return true;\n }\n }\n}\n","////MLAP3778/edsc-esdc/main/iservice/WORKAREA/share/docs/sp-es/js\n/* EP Week Quiz JD 2019-03-18 */\n// EP Week Quiz JD 2019-03-18\n\nimport Module from '../Module.js';\n\nexport default class SendModule extends Module {\n moduleReady: boolean = false;\n\n getModuleName(): string {\n return 'send';\n }\n\n async doLogic(): Promise {\n await this.send();\n this.moduleReady = true;\n return Promise.resolve();\n }\n\n async send() {\n let quizStatus = 'quizQ1';\n let quizQ1sum: number = 0;\n let quizQ2sum: number = 0;\n let quizQ3sum: number = 0;\n\n (document.getElementById('IntruderQuiz') as HTMLElement)?.classList.remove('hidden');\n [\n 'quizQ1a',\n 'quizQ1b',\n 'quizQ1c',\n 'quizQ2',\n 'quizQ3',\n 'neXt',\n 'quizPick',\n 'quizfin',\n 'loading'\n ].forEach((id) => {\n const element = document.getElementById(id) as HTMLElement;\n if (element) element.style.display = 'none';\n });\n\n function handleQuizClick(className: string) {\n Array.from(document.querySelectorAll(`.${className}`)).forEach((element) => {\n element.addEventListener('click', function () {\n const total = Array.from(document.querySelectorAll(`.${className}:checked`)).reduce(\n (acc, elem) => acc + parseInt((elem as HTMLInputElement).value),\n 0\n );\n if (total == 0) {\n if (className === 'prepared') quizQ1sum = 0;\n if (className === 'faced') quizQ2sum = 0;\n if (className === 'mobile') quizQ3sum = 0;\n } else {\n if (className === 'prepared') quizQ1sum = total;\n if (className === 'faced') quizQ2sum = total;\n if (className === 'mobile') quizQ3sum = total;\n }\n });\n });\n }\n\n handleQuizClick('prepared');\n handleQuizClick('faced');\n handleQuizClick('mobile');\n\n const whatsumEle = document.getElementById('whatsum') as HTMLElement;\n whatsumEle?.addEventListener('click', function () {\n let key: number;\n if (quizStatus == 'quizQ1') {\n key = quizQ1sum;\n } else if (quizStatus == 'quizQ2') {\n key = quizQ2sum;\n } else {\n key = quizQ3sum;\n }\n\n if (key == 0) {\n (document.getElementById('quizPick') as HTMLElement).style.display = 'block';\n } else {\n if (key < 10) {\n (document.getElementById(quizStatus + 'b') as HTMLElement).style.display = 'block';\n (document.getElementById(quizStatus + 'a') as HTMLElement).style.display = 'none';\n (document.getElementById(quizStatus + 'c') as HTMLElement).style.display = 'none';\n } else if (key == 10) {\n (document.getElementById(quizStatus + 'a') as HTMLElement).style.display = 'block';\n (document.getElementById(quizStatus + 'b') as HTMLElement).style.display = 'none';\n (document.getElementById(quizStatus + 'c') as HTMLElement).style.display = 'none';\n } else if (key > 10) {\n (document.getElementById(quizStatus + 'c') as HTMLElement).style.display = 'block';\n (document.getElementById(quizStatus + 'a') as HTMLElement).style.display = 'none';\n (document.getElementById(quizStatus + 'b') as HTMLElement).style.display = 'none';\n }\n }\n\n if (quizStatus == 'quizQ1' && key >= 1) {\n (document.getElementById('neXt') as HTMLElement).style.display = 'block';\n } else if (quizStatus == 'quizQ2' && key >= 1) {\n (document.getElementById('neXt') as HTMLElement).style.display = 'block';\n } else if (quizStatus == 'quizQ3' && key >= 1) {\n (document.getElementById('neXt') as HTMLElement).style.display = 'none';\n (document.getElementById('quizfin') as HTMLElement).style.display = 'block';\n }\n });\n\n const nextEle = document.getElementById('neXt') as HTMLElement;\n nextEle?.addEventListener('click', function () {\n if (quizQ1sum == 0) {\n (document.getElementById('quizPick') as HTMLElement).style.display = 'block';\n } else if (quizQ1sum >= 1 && quizQ2sum == 0) {\n (document.getElementById(quizStatus) as HTMLElement).style.display = 'none';\n quizStatus = 'quizQ2';\n (document.getElementById(quizStatus) as HTMLElement).style.display = 'block';\n ['quizQ2a', 'quizQ2b', 'quizQ2c', 'quizfin'].forEach((id) => {\n (document.getElementById(id) as HTMLElement).style.display = 'none';\n });\n } else if (quizQ2sum >= 1 && quizQ3sum == 0) {\n (document.getElementById(quizStatus) as HTMLElement).style.display = 'none';\n quizStatus = 'quizQ3';\n (document.getElementById(quizStatus) as HTMLElement).style.display = 'block';\n ['quizQ3a', 'quizQ3b', 'quizQ3c', 'quizfin'].forEach((id) => {\n (document.getElementById(id) as HTMLElement).style.display = 'none';\n });\n }\n (document.getElementById('neXt') as HTMLElement).style.display = 'none';\n });\n\n document.querySelectorAll(\"input[type='reset']\").forEach((resetButton) => {\n resetButton.addEventListener('click', function () {\n quizStatus = 'quizQ1';\n quizQ1sum = 0;\n quizQ2sum = 0;\n quizQ3sum = 0;\n (document.getElementById('quizQ1') as HTMLElement).style.display = 'block';\n (document.getElementById('neXt') as HTMLElement).style.display = 'none';\n ['quizQ1a', 'quizQ1b', 'quizQ1c', 'quizQ2', 'quizQ3', 'quizPick'].forEach((id) => {\n (document.getElementById(id) as HTMLElement).style.display = 'none';\n });\n });\n });\n\n return Promise.resolve();\n }\n}\n","import i18next from 'i18next';\nimport Module from '../Module.js';\nimport type { CustomWindow, LanguageType } from '../../types/template.js';\ndeclare let window: CustomWindow;\n\nexport default class WatsonChatBotModule extends Module {\n moduleReady: boolean = false;\n private readonly language: string = i18next.language;\n private readonly intID: Record = {\n en: 'bd8ceb98-258a-497c-9c01-ebaea2950f5f',\n fr: 'a38d198e-4788-49cd-9dd3-6494c8c64e11'\n };\n getModuleName(): string {\n return 'watsonChatbot';\n }\n\n async doLogic(): Promise {\n await this.watsonChatBot();\n this.moduleReady = true;\n return Promise.resolve();\n }\n\n async watsonChatBot() {\n let loadVal = function (instance: WatsonInstance) {\n instance.render();\n instance.openWindow();\n };\n if (this.language == 'fr') {\n loadVal = function (instance) {\n instance.updateLocale('fr');\n instance.render();\n instance.openWindow();\n };\n }\n\n window.watsonAssistantChatOptions = {\n integrationID: this.intID[`${this.language}`], // The ID of this integration.\n region: 'dev', // The region your integration is hosted in.\n serviceInstanceID: '00000000-0000-0000-1640-824849946654', // The ID of your service instance.\n cloudPrivateHostURL:\n 'https://wa404-esdc-davidma.ibmcanadacp4d.com/assistant/cpd403-wa/integrations', // The integration service URL for your provisioned instance.\n onLoad: loadVal\n };\n\n setTimeout(function () {\n const t = document.createElement('script');\n t.src =\n 'https://wa404-esdc-davidma.ibmcanadacp4d.com/assistant/cpd403-wa/integrations/static/webchat/loadWatsonAssistantChat.js';\n document.head.appendChild(t);\n });\n\n return Promise.resolve();\n }\n}\n\n/**\n * Unsure if this is the correct type def for the instance. Correct this if needed\n */\ninterface WatsonInstance {\n render: () => void;\n openWindow: () => void;\n updateLocale: (lang: LanguageType) => void;\n}\n","import type { SiteConfig, Config } from '../../types/config.js';\nimport { WetAsset } from '../../types/template.js';\nimport CdtsConfigurator from '../cdts.config.js';\n\nexport default class IservicePrvSplashPageConfig implements SiteConfig {\n getConfig() {\n return {\n siteCssLinks: [\n {\n asset: CdtsConfigurator.getWetAssetUrl(WetAsset.CSS_MESSAGES),\n sri: 'sha512-utHIWB+pwhbqgoAaf4clvQ6s7i9YpDgjtQsXwd88N0ivH3oV3CNvypCTw/67EWv54Ra4QXDsjc9Pv3UBtGsEvQ=='\n },\n {\n asset: CdtsConfigurator.getWetAssetUrl(WetAsset.CSS_FAVICON),\n rel: 'icon',\n type: 'image/x-icon',\n sri: 'sha512-K5sY7P1HeSsL9CWCrDbDjF28nBQpu7PPW4hKI6e5k7+Y6MJZVJvWP36tEiHfrzOU8jJWNNOgKG72utwJr0DJ6Q=='\n }\n ]\n } as Partial;\n }\n}\n","import i18next from 'i18next';\r\nimport { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config.js';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template.js';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class IservicePrvGenericConfigEN implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.ISERVICE_PRV;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.DEFAULT;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.ENGLISH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_INTRANET;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n siteJsLinks: [{ asset: '/_conf/assets/iservice.js' }],\r\n GCToolsModal: true,\r\n footer: {\r\n subTheme: 'esdc',\r\n footerPath: `https://esdc.prv/_conf/assets/${this.getLanguageType().toString()}/footer/esdcfooter-eng.html`,\r\n showFeatures: false,\r\n showFooter: true\r\n },\r\n top: {\r\n subTheme: 'esdc',\r\n siteMenu: true,\r\n menuPath: `https://esdc.prv/_conf/assets/${this.getLanguageType().toString()}/mega_menu/esdcmenu-eng.html`,\r\n GCToolsModal: true,\r\n intranetTitle: [\r\n {\r\n href: `http://esdc.prv/${this.getLanguageType().toString()}/index.shtml`,\r\n text: ` ${i18next.getResource(this.getLanguageType().toString(), 'ns1', 'sites.' + this.getSiteName().toString() + '.config.top.intranetTitle.text') as string}`,\r\n boldText: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.intranetTitle.boldText'\r\n ) as string,\r\n acronym: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.intranetTitle.acronym'\r\n ) as string\r\n }\r\n ],\r\n lngLinks: [\r\n {\r\n lang: Language.FRENCH,\r\n href: getOtherLang(),\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.lngLinks.text'\r\n ) as string\r\n }\r\n ],\r\n breadcrumbs: [\r\n {\r\n title: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.breadcrumbs.title'\r\n ) as string,\r\n acronym: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.breadcrumbs.acronym'\r\n ) as string,\r\n href: '/eng/index.shtml'\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: `https://esdc.prv/${this.getLanguageType().toString()}/search/index.html`,\r\n placeholder: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.customSearch.placeholder'\r\n ) as string,\r\n method: 'get'\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import i18next from 'i18next';\r\nimport { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config.js';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template.js';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class IservicePrvGenericConfigFR implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.ISERVICE_PRV;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.DEFAULT;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.FRENCH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_INTRANET;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n siteJsLinks: [{ asset: '/_conf/assets/iservice.js' }],\r\n GCToolsModal: true,\r\n footer: {\r\n subTheme: 'esdc',\r\n footerPath: `https://esdc.prv/_conf/assets/${this.getLanguageType().toString()}/footer/esdcfooter-fra.html`,\r\n showFeatures: false,\r\n showFooter: true\r\n },\r\n top: {\r\n subTheme: 'esdc',\r\n siteMenu: true,\r\n menuPath: `https://esdc.prv/_conf/assets/${this.getLanguageType().toString()}/mega_menu/esdcmenu-fra.html`,\r\n GCToolsModal: true,\r\n intranetTitle: [\r\n {\r\n href: `http://esdc.prv/${this.getLanguageType().toString()}/index.shtml`,\r\n text: ` ${i18next.getResource(this.getLanguageType().toString(), 'ns1', 'sites.' + this.getSiteName().toString() + '.config.top.intranetTitle.text') as string}`,\r\n boldText: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.intranetTitle.boldText'\r\n ) as string,\r\n acronym: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.intranetTitle.acronym'\r\n ) as string\r\n }\r\n ],\r\n lngLinks: [\r\n {\r\n lang: Language.FRENCH,\r\n href: getOtherLang(),\r\n text: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.lngLinks.text'\r\n ) as string\r\n }\r\n ],\r\n breadcrumbs: [\r\n {\r\n title: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.breadcrumbs.title'\r\n ) as string,\r\n acronym: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.breadcrumbs.acronym'\r\n ) as string,\r\n href: '/fra/index.shtml'\r\n }\r\n ],\r\n customSearch: [\r\n {\r\n action: `https://esdc.prv/${this.getLanguageType().toString()}/recherche/index.html`,\r\n placeholder: i18next.getResource(\r\n this.getLanguageType().toString(),\r\n 'ns1',\r\n 'sites.' +\r\n this.getSiteName().toString() +\r\n '.config.top.customSearch.placeholder'\r\n ) as string,\r\n method: 'get'\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import i18next from 'i18next';\nimport Module from '../Module.js';\n\nexport default class AlertMessageModule extends Module {\n moduleReady: boolean = false;\n private readonly _divAlert: HTMLDivElement;\n private readonly _url: string;\n\n constructor(\n elementId: string = 'alertMessage',\n url: string = `/_conf/assets/${i18next.language}/alert/alert.html`\n ) {\n super();\n this._divAlert = document.getElementById(elementId) as HTMLDivElement;\n this._url = url;\n }\n\n getModuleName(): string {\n return 'alertMessage';\n }\n\n async doLogic(): Promise {\n await this.init();\n this.moduleReady = true;\n return Promise.resolve();\n }\n\n async init() {\n await this._getMarkup();\n return Promise.resolve();\n }\n\n async _getMarkup() {\n const response = await fetch(this._url);\n const markup = await response.text();\n this._divAlert.innerHTML = markup;\n }\n}\n","import i18next from 'i18next';\r\nimport text from '../../i18n/i18n.js';\r\nimport NationalServiceDeskModule from '../../modules/iservice-prv/nsd.js';\r\nimport SendModule from '../../modules/iservice-prv/send.js';\r\nimport WatsonChatBotModule from '../../modules/iservice-prv/watsonChatBot.js';\r\nimport LeftNavigationMenuModule from '../../modules/leftNavMenu.js';\r\nimport type { SiteConfig } from '../../types/config.js';\r\nimport {\r\n Language,\r\n Site,\r\n type CustomWindow,\r\n type LanguageType,\r\n type SiteAsset\r\n} from '../../types/template.js';\r\nimport BaseConfig from '../base.config.js';\r\nimport IservicePrvSplashPageConfig from './iservice-prv-splashPage.config.js';\r\nimport IservicePrvGenericConfigEN from './iservice-prv.generic.en.config.js';\r\nimport IservicePrvGenericConfigFR from './iservice-prv.generic.fr.config.js';\r\nimport ShareThisPageModule from '../../modules/esdc-prv/ShareThisPage.js';\r\nimport BreadCrumbModule from '../../modules/breadcrumbs.js';\r\nimport Module from '../../modules/Module.js';\r\nimport AlertMessageModule from '../../modules/iservice-prv/AlertMessage.js';\r\nimport type { AdobeConfig } from '../../types/adobeConfig.js';\r\nimport type { IservicePrvModules } from '../../types/script.js';\r\ndeclare let window: CustomWindow;\r\n\r\nexport default class IservicePrvConfig extends BaseConfig {\r\n private readonly _configs: Array = [\r\n new IservicePrvGenericConfigEN(),\r\n new IservicePrvGenericConfigFR()\r\n ];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n getChildConfigs() {\r\n return this._configs;\r\n }\r\n\r\n /**\r\n * REF: Site names for ISERVICE-PRV are located in service_no_check.json and selected by users via CMS\r\n * @returns\r\n */\r\n getAdobeConfig() {\r\n const config: AdobeConfig = {\r\n accessRights: '3'\r\n };\r\n return config;\r\n }\r\n\r\n hasSplashPage(): boolean {\r\n let titles: Array = Array.from(\r\n document.querySelectorAll('meta[name=\"dc.title\"]')\r\n );\r\n if (titles.length === 0)\r\n titles = Array.from(\r\n document.querySelectorAll('meta[name=\"dcterms.title\"]')\r\n );\r\n return titles.some((title) => {\r\n return (\r\n title.content ===\r\n i18next.getResource(\r\n 'en',\r\n 'ns1',\r\n `sites.${Site.ISERVICE_PRV.toString()}.pages.splashPage.title`\r\n ) ||\r\n title.content ===\r\n i18next.getResource(\r\n 'fr',\r\n 'ns1',\r\n `sites.${Site.ISERVICE_PRV.toString()}.pages.splashPage.title`\r\n )\r\n );\r\n });\r\n }\r\n\r\n getSplashPageConfigs(): SiteConfig | undefined {\r\n return new IservicePrvSplashPageConfig();\r\n }\r\n\r\n getDefaultChildConfig(lang: LanguageType): SiteConfig | undefined {\r\n return lang === Language.ENGLISH\r\n ? new IservicePrvGenericConfigEN()\r\n : new IservicePrvGenericConfigFR();\r\n }\r\n\r\n hasCustomCDTSSetup(): boolean {\r\n return true;\r\n }\r\n async customCDTSSetup(): Promise {\r\n if (!this.hasSplashPage()) {\r\n window.shwHidden = (Id: string) => {\r\n const section = document.getElementById(Id) as HTMLElement;\r\n const li = section.getElementsByTagName('li');\r\n for (let i = 0; i < li.length; i++) {\r\n li[i].setAttribute('class', '');\r\n }\r\n };\r\n\r\n await new ShareThisPageModule('iservice-prv').run();\r\n await new BreadCrumbModule().run();\r\n await new LeftNavigationMenuModule().run();\r\n }\r\n }\r\n\r\n getFooterAssets(): Array {\r\n const pathName = window.location.pathname;\r\n const watsonChatbot = new WatsonChatBotModule();\r\n const send = new SendModule();\r\n const nsd = new NationalServiceDeskModule();\r\n\r\n return [\r\n {\r\n asset: send,\r\n isInjectable: () => {\r\n return false;\r\n }\r\n },\r\n {\r\n asset: watsonChatbot.run.bind(watsonChatbot),\r\n isInjectable: () => {\r\n /* Commented out to disable */\r\n // return pathName.includes('imit/nsd/index.shtml');\r\n return false;\r\n }\r\n },\r\n {\r\n asset: nsd.run.bind(nsd),\r\n isInjectable: () => {\r\n return (\r\n pathName.includes('imit/nsd/index.shtml') ||\r\n pathName.includes('/giti/isn/index.shtml')\r\n );\r\n }\r\n },\r\n {\r\n asset: '/js/ewcms-social.js',\r\n isInjectable: () => {\r\n const commentsMetaContent = (\r\n document.querySelector(\r\n `meta[name=\"intersection.commentsEnabled\"]`\r\n ) as HTMLMetaElement\r\n )?.content;\r\n const likabilityMetaContent = (\r\n document.querySelector(\r\n `meta[name=\"intersection.likabilityEnabled\"]`\r\n ) as HTMLMetaElement\r\n )?.content;\r\n const feedbackMetaContent = (\r\n document.querySelector(\r\n `meta[name=\"iservice.feedbackEnabled\"]`\r\n ) as HTMLMetaElement\r\n )?.content;\r\n\r\n const hasQowDivs = document.querySelectorAll('.qow').length > 0;\r\n const hasQowMultipleDivs =\r\n document.querySelectorAll('.qow-multiple').length > 0;\r\n\r\n const commentsEnabled = commentsMetaContent === '1';\r\n const likabilityEnabled = likabilityMetaContent === '1';\r\n const feedbackEnabled = feedbackMetaContent === '1';\r\n\r\n return (\r\n likabilityEnabled ||\r\n commentsEnabled ||\r\n feedbackEnabled ||\r\n hasQowDivs ||\r\n hasQowMultipleDivs\r\n );\r\n }\r\n },\r\n {\r\n asset: '/js/iservice-ict-oci.js',\r\n isInjectable: () => {\r\n return pathName.includes('/eng/is/security/categorization');\r\n }\r\n },\r\n {\r\n asset: async () => {\r\n const alertMsg = new AlertMessageModule();\r\n await alertMsg.run();\r\n },\r\n isInjectable: () => {\r\n return (\r\n pathName.includes('/eng/index.shtml') ||\r\n pathName.includes('/fra/index.shtml')\r\n );\r\n }\r\n },\r\n {\r\n asset: () => {\r\n const interval = setInterval(() => {\r\n if (\r\n (\r\n window.templateFrontEnd.modules[\r\n Site.ISERVICE_PRV\r\n ] as unknown as IservicePrvModules\r\n ).shareThisPageBtn\r\n ) {\r\n clearInterval(interval);\r\n const shareThisPageWidget = document.querySelector(\r\n `#${ShareThisPageModule.rootElementId}`\r\n );\r\n (shareThisPageWidget as HTMLDivElement).getElementsByTagName(\r\n 'div'\r\n )[0].innerHTML = `\r\n \r\n ${text('sites.iservice-prv.components.buttons.lookingFor.text')}\r\n \r\n `;\r\n Module.whenScriptIsDoneMarkReady('feedbackBtn');\r\n }\r\n }, 500);\r\n },\r\n isInjectable: () => {\r\n return (\r\n pathName.includes('/eng/imit') || pathName.includes('/fra/giti')\r\n );\r\n }\r\n }\r\n ];\r\n }\r\n}\r\n","import i18next from 'i18next';\nimport { getOtherLang } from '../../i18n/i18n.js';\nimport { type SiteConfig, type Config, type CdtsThemeType, CdtsTheme } from '../../types/config.js';\nimport {\n Language,\n type LanguageType,\n Site,\n type SiteType,\n Template,\n type TemplateType\n} from '../../types/template.js';\nimport CdtsConfigurator from '../cdts.config.js';\n\nexport default class RdspGenericConfigEN implements SiteConfig {\n getSiteName(): SiteType {\n return Site.RDSP;\n }\n\n getTemplateType(): TemplateType {\n return Template.DEFAULT;\n }\n\n getLanguageType(): LanguageType {\n return Language.ENGLISH;\n }\n\n getCdtsThemeType(): CdtsThemeType {\n return CdtsTheme.GC_WEB;\n }\n\n getConfig() {\n return {\n siteName: this.getSiteName(),\n theme: this.getCdtsThemeType(),\n siteJsLinks: [{ asset: '/js/custom.js' }],\n footer: {\n footerPath: `/_conf/assets/${this.getLanguageType().toString()}/footer/rdspfooter-en.html`,\n showFeatures: false,\n showFooter: true\n },\n top: {\n siteMenu: true,\n menuPath: `/_conf/assets/${this.getLanguageType().toString()}/mega_menu/rdspmenu-en.html`,\n lngLinks: [\n {\n lang: Language.FRENCH,\n href: getOtherLang(),\n text: i18next.getResource(\n this.getLanguageType().toString(),\n 'ns1',\n 'sites.' + this.getSiteName().toString() + '.config.top.lngLinks.text'\n ) as string\n }\n ]\n },\n preFooter: {\n showPostContent: false,\n dateModified: CdtsConfigurator.getDateModified()\n }\n } as Partial;\n }\n}\n","import i18next from 'i18next';\nimport { getOtherLang } from '../../i18n/i18n.js';\nimport { type SiteConfig, type Config, CdtsTheme, type CdtsThemeType } from '../../types/config.js';\nimport {\n Language,\n type LanguageType,\n Site,\n type SiteType,\n Template,\n type TemplateType\n} from '../../types/template.js';\nimport CdtsConfigurator from '../cdts.config.js';\n\nexport default class RdspGenericConfigFR implements SiteConfig {\n getSiteName(): SiteType {\n return Site.RDSP;\n }\n\n getTemplateType(): TemplateType {\n return Template.DEFAULT;\n }\n\n getLanguageType(): LanguageType {\n return Language.FRENCH;\n }\n\n getCdtsThemeType(): CdtsThemeType {\n return CdtsTheme.GC_WEB;\n }\n\n getConfig() {\n return {\n siteName: this.getSiteName(),\n theme: this.getCdtsThemeType(),\n siteJsLinks: [{ asset: '/js/custom.js' }],\n footer: {\n footerPath: `/_conf/assets/${this.getLanguageType().toString()}/footer/rdspfooter-fr.html`,\n showFeatures: false,\n showFooter: true\n },\n top: {\n siteMenu: true,\n menuPath: `/_conf/assets/${this.getLanguageType().toString()}/mega_menu/rdspmenu-fr.html`,\n lngLinks: [\n {\n lang: Language.ENGLISH,\n href: getOtherLang(),\n text: i18next.getResource(\n this.getLanguageType().toString(),\n 'ns1',\n 'sites.' + this.getSiteName().toString() + '.config.top.lngLinks.text'\n ) as string\n }\n ]\n },\n preFooter: {\n showPostContent: false,\n dateModified: CdtsConfigurator.getDateModified()\n }\n } as Partial;\n }\n}\n","import type { SiteConfig, Config } from '../../types/config';\nimport { WetAsset } from '../../types/template.js';\nimport CdtsConfigurator from '../cdts.config.js';\n\nexport default class RdspSplashPageConfig implements SiteConfig {\n getConfig() {\n return {\n siteCssLinks: [\n {\n asset: CdtsConfigurator.getWetAssetUrl(WetAsset.CSS_MESSAGES),\n sri: 'sha512-utHIWB+pwhbqgoAaf4clvQ6s7i9YpDgjtQsXwd88N0ivH3oV3CNvypCTw/67EWv54Ra4QXDsjc9Pv3UBtGsEvQ=='\n },\n {\n asset: CdtsConfigurator.getWetAssetUrl(WetAsset.CSS_FAVICON),\n rel: 'icon',\n type: 'image/x-icon',\n sri: 'sha512-K5sY7P1HeSsL9CWCrDbDjF28nBQpu7PPW4hKI6e5k7+Y6MJZVJvWP36tEiHfrzOU8jJWNNOgKG72utwJr0DJ6Q=='\n }\n ]\n } as Partial;\n }\n}\n","import i18next from 'i18next';\r\nimport type { SiteConfig } from '../../types/config.js';\r\nimport { Language, Site, type LanguageType } from '../../types/template.js';\r\nimport BaseConfig from '../base.config.js';\r\nimport RdspGenericConfigEN from './rdsp.generic.en.config.js';\r\nimport RdspGenericConfigFR from './rdsp.generic.fr.config.js';\r\nimport RdspSplashPageConfig from './rdsp.splashPage.config.js';\r\nimport type { AdobeConfig } from '../../types/adobeConfig.js';\r\n\r\nexport default class RdspConfig extends BaseConfig {\r\n private readonly _configs: Array = [\r\n new RdspGenericConfigEN(),\r\n new RdspGenericConfigFR()\r\n ];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n getChildConfigs() {\r\n return this._configs;\r\n }\r\n\r\n getAdobeConfig() {\r\n const config: AdobeConfig = {\r\n sitename: 'ESDC-EDSC_RDSP-REEI',\r\n accessRights: '2'\r\n };\r\n return config;\r\n }\r\n\r\n hasSplashPage(): boolean {\r\n let titles: Array = Array.from(\r\n document.querySelectorAll('meta[name=\"dc.title\"]')\r\n );\r\n if (titles.length === 0)\r\n titles = Array.from(\r\n document.querySelectorAll('meta[name=\"dcterms.title\"]')\r\n );\r\n return titles.some((title) => {\r\n return (\r\n title.content ===\r\n i18next.getResource(\r\n 'en',\r\n 'ns1',\r\n `sites.${Site.RDSP.toString()}.pages.splashPage.title`\r\n ) ||\r\n title.content ===\r\n i18next.getResource(\r\n 'fr',\r\n 'ns1',\r\n `sites.${Site.RDSP.toString()}.pages.splashPage.title`\r\n )\r\n );\r\n });\r\n }\r\n\r\n getSplashPageConfigs(): SiteConfig | undefined {\r\n return new RdspSplashPageConfig();\r\n }\r\n\r\n getDefaultChildConfig(lang: LanguageType): SiteConfig | undefined {\r\n return lang === Language.ENGLISH\r\n ? new RdspGenericConfigEN()\r\n : new RdspGenericConfigFR();\r\n }\r\n\r\n hasCustomCDTSSetup(): boolean {\r\n return true;\r\n }\r\n\r\n customCDTSSetup(): Promise {\r\n return Promise.resolve();\r\n }\r\n}\r\n","import { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class RedSealGenericConfigEN implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.RED_SEAL;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.DEFAULT;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.ENGLISH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_INTRANET;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n GCToolsModal: true,\r\n siteJsLinks: [\r\n { asset: '/_conf/assets/custom/rs-custom/rs-scripts.js' },\r\n { asset: '/_conf/assets/custom/search/search.js' },\r\n {\r\n asset: '/js/sampleExam_2.js',\r\n isInjectable: () => {\r\n function getPathName() {\r\n let ret = window.location.pathname;\r\n\r\n if (ret.startsWith('/esdc-prv/_conf/form_template/')) {\r\n ret = localStorage.getItem('enFilename') as string;\r\n }\r\n return ret;\r\n }\r\n\r\n return getPathName() === '/eng/s.1mpl.2.2x.1mQ.5.2st.3.4ns.shtml';\r\n }\r\n },\r\n {\r\n asset: '/js/selfassestest.js',\r\n isInjectable: () => {\r\n function getPathName() {\r\n return window.location.pathname;\r\n }\r\n return getPathName().includes('/eng/resources/selfexamspace.shtml');\r\n }\r\n }\r\n ],\r\n footer: {\r\n footerPath: '/_conf/assets/en/footer/redsealfooter-eng.html',\r\n showFeatures: false,\r\n showFooter: false\r\n },\r\n top: {\r\n siteMenu: false,\r\n GCToolsModal: true,\r\n menuPath: '/_conf/assets/en/mega_menu/redsealmenu-eng.html',\r\n lngLinks: [\r\n {\r\n lang: Language.FRENCH,\r\n href: getOtherLang(),\r\n text: 'Français'\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import { getOtherLang } from '../../i18n/i18n.js';\r\nimport {\r\n type SiteConfig,\r\n type Config,\r\n CdtsTheme,\r\n type CdtsThemeType\r\n} from '../../types/config';\r\nimport {\r\n Language,\r\n type LanguageType,\r\n Site,\r\n type SiteType,\r\n Template,\r\n type TemplateType\r\n} from '../../types/template';\r\nimport CdtsConfigurator from '../cdts.config.js';\r\n\r\nexport default class RedSealGenericConfigFR implements SiteConfig {\r\n getSiteName(): SiteType {\r\n return Site.RED_SEAL;\r\n }\r\n\r\n getTemplateType(): TemplateType {\r\n return Template.DEFAULT;\r\n }\r\n\r\n getLanguageType(): LanguageType {\r\n return Language.FRENCH;\r\n }\r\n\r\n getCdtsThemeType(): CdtsThemeType {\r\n return CdtsTheme.GC_INTRANET;\r\n }\r\n\r\n getConfig() {\r\n return {\r\n siteName: this.getSiteName(),\r\n theme: this.getCdtsThemeType(),\r\n GCToolsModal: true,\r\n siteJsLinks: [\r\n { asset: '/_conf/assets/custom/rs-custom/rs-scripts.js' },\r\n { asset: '/_conf/assets/custom/search/search.js' },\r\n {\r\n asset: '/js/sampleExam_2.js',\r\n isInjectable: () => {\r\n function getPathName() {\r\n let ret = window.location.pathname;\r\n\r\n if (ret.startsWith('/esdc-prv/_conf/form_template/')) {\r\n ret = localStorage.getItem('frFilename') as string;\r\n }\r\n return ret;\r\n }\r\n\r\n return getPathName() === '/fra/s.1mpl.2.2x.1mQ.5.2st.3.4ns.shtml';\r\n }\r\n },\r\n {\r\n asset: '/js/selfassestest.js',\r\n isInjectable: () => {\r\n function getPathName() {\r\n return window.location.pathname;\r\n }\r\n return getPathName().includes(\r\n '/fra/resources/selfexamspacef.shtml'\r\n );\r\n }\r\n }\r\n ],\r\n footer: {\r\n footerPath: '/_conf/assets/fr/footer/redsealfooter-fra.html',\r\n showFeatures: false,\r\n showFooter: false\r\n },\r\n top: {\r\n siteMenu: false,\r\n GCToolsModal: true,\r\n menuPath: '/_conf/assets/fr/mega_menu/redsealmenu-fra.html',\r\n lngLinks: [\r\n {\r\n lang: Language.ENGLISH,\r\n href: getOtherLang(),\r\n text: 'English'\r\n }\r\n ]\r\n },\r\n preFooter: {\r\n showPostContent: false,\r\n dateModified: CdtsConfigurator.getDateModified()\r\n }\r\n } as Partial;\r\n }\r\n}\r\n","import type { SiteConfig, Config } from '../../types/config';\n\nexport default class RedSealSplashPageConfig implements SiteConfig {\n getConfig() {\n return {\n siteCssLinks: [\n { asset: '/_conf/assets/custom/rs-custom/rs-custom.css' },\n { asset: '/_conf/assets/custom/css/theme.css' },\n { asset: '/_conf/assets/custom/css/messages.css' },\n { asset: '/_conf/assets/custom/css/noscript.css' }\n ]\n } as Partial;\n }\n}\n","import text from '../../i18n/i18n.js';\r\nimport LeftNavigationMenuModule from '../../modules/leftNavMenu.js';\r\nimport type { AdobeConfig } from '../../types/adobeConfig.js';\r\nimport type { SiteConfig } from '../../types/config';\r\nimport {\r\n Language,\r\n SectionIdentifiers,\r\n type LanguageType,\r\n type TemplateType\r\n} from '../../types/template.js';\r\nimport WhenReady from '../../WhenReady.js';\r\nimport BaseConfig from '../base.config';\r\nimport RedSealGenericConfigEN from './red-seal.generic.en.config';\r\nimport RedSealGenericConfigFR from './red-seal.generic.fr.config';\r\nimport RedSealSplashPageConfig from './red-seal.splashPage.config.js';\r\n\r\nexport default class RedSealConfig extends BaseConfig {\r\n private readonly _configs: Array = [\r\n new RedSealGenericConfigEN(),\r\n new RedSealGenericConfigFR()\r\n ];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n getChildConfigs() {\r\n return this._configs;\r\n }\r\n\r\n getAdobeConfig() {\r\n const config: AdobeConfig = {\r\n sitename: text('sites.red-seal.adobeAnalytics.sitename'),\r\n accessRights: '2',\r\n creator: text('sites.red-seal.adobeAnalytics.creator')\r\n };\r\n return config;\r\n }\r\n\r\n hasSplashPage(): boolean {\r\n const titles: Array = Array.from(\r\n document.querySelectorAll('meta[name=\"dc.title\"]')\r\n );\r\n return titles.some((title) => {\r\n return (\r\n title.content === 'Interprovincial Standards Red Seal Program' ||\r\n title.content === 'Programme des normes interprovinciales Sceau rouge'\r\n );\r\n });\r\n }\r\n\r\n getSplashPageConfigs(): SiteConfig | undefined {\r\n return new RedSealSplashPageConfig();\r\n }\r\n\r\n getDefaultChildConfig(lang: LanguageType): SiteConfig | undefined {\r\n return lang === Language.ENGLISH\r\n ? new RedSealGenericConfigEN()\r\n : new RedSealGenericConfigFR();\r\n }\r\n\r\n hasCustomCDTSSetup(): boolean {\r\n return true;\r\n }\r\n\r\n async customCDTSSetup(\r\n lang: LanguageType,\r\n wcmsTemplate: TemplateType\r\n ): Promise {\r\n console.debug(`Lanuage set to ${lang}`);\r\n console.debug(`Template type set to ${wcmsTemplate}`);\r\n\r\n if (!this.hasSplashPage()) {\r\n const config = this.getConfig(lang, wcmsTemplate);\r\n\r\n // HEADER\r\n const defTop = document.getElementById(SectionIdentifiers.CUSTOM_TOP);\r\n const responseHeader = await fetch(config.top?.menuPath as string);\r\n const menuHtmlHeader = await responseHeader.text();\r\n if (defTop) defTop.outerHTML = menuHtmlHeader;\r\n\r\n // LANGUAGE SELECT\r\n const lngSection = document\r\n .getElementById('wb-lng')\r\n ?.querySelector('a') as HTMLAnchorElement;\r\n if (lngSection) {\r\n lngSection.href = config.top?.lngLinks[0].href as string;\r\n lngSection.innerHTML = config.top?.lngLinks[0].text as string;\r\n lngSection.setAttribute('lang', config.top?.lngLinks[0].lang as string);\r\n }\r\n\r\n // FOOTER\r\n const defFooter = document.getElementById(\r\n SectionIdentifiers.CUSTOM_FOOTER\r\n );\r\n const responseFooter = await fetch(config.footer?.footerPath as string);\r\n const menuHtmlFooter = await responseFooter.text();\r\n if (defFooter) defFooter.outerHTML = menuHtmlFooter;\r\n\r\n // This is to ensure that the inline ajax calls get executed for pulling in menu markup\r\n WhenReady.whenWetIsReady(() => {\r\n $(\r\n '[data-ajax-after], [data-ajax-append], [data-ajax-before], [data-ajax-prepend], [data-ajax-replace]'\r\n ).trigger('wb-init.wb-data-ajax');\r\n });\r\n\r\n await new LeftNavigationMenuModule().run();\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n}\r\n","import i18next from 'i18next';\nimport { getOtherLang } from '../../i18n/i18n.js';\nimport { type SiteConfig, type Config, CdtsTheme, type CdtsThemeType } from '../../types/config.js';\nimport {\n Language,\n type LanguageType,\n Site,\n type SiteType,\n Template,\n type TemplateType\n} from '../../types/template.js';\nimport CdtsConfigurator from '../cdts.config.js';\n\nexport default class RespGenericConfigEN implements SiteConfig {\n getSiteName(): SiteType {\n return Site.RESP;\n }\n\n getTemplateType(): TemplateType {\n return Template.DEFAULT;\n }\n\n getLanguageType(): LanguageType {\n return Language.ENGLISH;\n }\n\n getCdtsThemeType(): CdtsThemeType {\n return CdtsTheme.GC_WEB;\n }\n\n getConfig() {\n return {\n siteName: this.getSiteName(),\n theme: this.getCdtsThemeType(),\n siteJsLinks: [{ asset: '/js/custom.js' }],\n footer: {\n footerPath: `/_conf/assets/${this.getLanguageType().toString()}/footer/respfooter-en.html`,\n showFeatures: false,\n showFooter: true\n },\n top: {\n siteMenu: true,\n menuPath: `/_conf/assets/${this.getLanguageType().toString()}/mega_menu/respmenu-en.html`,\n lngLinks: [\n {\n lang: Language.FRENCH,\n href: getOtherLang(),\n text: i18next.getResource(\n this.getLanguageType().toString(),\n 'ns1',\n 'sites.' + this.getSiteName().toString() + '.config.top.lngLinks.text'\n ) as string\n }\n ]\n },\n preFooter: {\n cdnEnv: 'esdcprod',\n showPostContent: false,\n dateModified: CdtsConfigurator.getDateModified()\n }\n } as Partial;\n }\n}\n","import i18next from 'i18next';\nimport { getOtherLang } from '../../i18n/i18n.js';\nimport { type SiteConfig, type Config, CdtsTheme, type CdtsThemeType } from '../../types/config.js';\nimport {\n Language,\n type LanguageType,\n Site,\n type SiteType,\n Template,\n type TemplateType\n} from '../../types/template.js';\nimport CdtsConfigurator from '../cdts.config.js';\n\nexport default class RespGenericConfigFR implements SiteConfig {\n getSiteName(): SiteType {\n return Site.RESP;\n }\n\n getTemplateType(): TemplateType {\n return Template.DEFAULT;\n }\n\n getLanguageType(): LanguageType {\n return Language.FRENCH;\n }\n\n getCdtsThemeType(): CdtsThemeType {\n return CdtsTheme.GC_WEB;\n }\n\n getConfig() {\n return {\n siteName: this.getSiteName(),\n theme: this.getCdtsThemeType(),\n siteJsLinks: [{ asset: '/js/custom.js' }],\n footer: {\n footerPath: `/_conf/assets/${this.getLanguageType().toString()}/footer/respfooter-fr.html`,\n showFeatures: false,\n showFooter: true\n },\n top: {\n siteMenu: true,\n menuPath: `/_conf/assets/${this.getLanguageType().toString()}/mega_menu/respmenu-fr.html`,\n lngLinks: [\n {\n lang: Language.ENGLISH,\n href: getOtherLang(),\n text: i18next.getResource(\n this.getLanguageType().toString(),\n 'ns1',\n 'sites.' + this.getSiteName().toString() + '.config.top.lngLinks.text'\n ) as string\n }\n ]\n },\n preFooter: {\n showPostContent: false,\n dateModified: CdtsConfigurator.getDateModified()\n }\n } as Partial;\n }\n}\n","import type { SiteConfig, Config } from '../../types/config';\nimport { WetAsset } from '../../types/template.js';\nimport CdtsConfigurator from '../cdts.config.js';\n\nexport default class RespSplashPageConfig implements SiteConfig {\n getConfig() {\n return {\n siteCssLinks: [\n {\n asset: CdtsConfigurator.getWetAssetUrl(WetAsset.CSS_MESSAGES),\n sri: 'sha512-utHIWB+pwhbqgoAaf4clvQ6s7i9YpDgjtQsXwd88N0ivH3oV3CNvypCTw/67EWv54Ra4QXDsjc9Pv3UBtGsEvQ=='\n },\n {\n asset: CdtsConfigurator.getWetAssetUrl(WetAsset.CSS_FAVICON),\n rel: 'icon',\n type: 'image/x-icon',\n sri: 'sha512-K5sY7P1HeSsL9CWCrDbDjF28nBQpu7PPW4hKI6e5k7+Y6MJZVJvWP36tEiHfrzOU8jJWNNOgKG72utwJr0DJ6Q=='\n }\n ]\n } as Partial;\n }\n}\n","import i18next from 'i18next';\r\nimport type { SiteConfig } from '../../types/config.js';\r\nimport BaseConfig from '../base.config.js';\r\nimport RespGenericConfigEN from './resp.generic.en.config.js';\r\nimport RespGenericConfigFR from './resp.generic.fr.config.js';\r\nimport RespSplashPageConfig from './resp.splashPage.config.js';\r\nimport { Language, Site, type LanguageType } from '../../types/template.js';\r\nimport type { AdobeConfig } from '../../types/adobeConfig.js';\r\n\r\nexport default class RespConfig extends BaseConfig {\r\n private readonly _configs: Array = [\r\n new RespGenericConfigEN(),\r\n new RespGenericConfigFR()\r\n ];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n getChildConfigs() {\r\n return this._configs;\r\n }\r\n\r\n getAdobeConfig() {\r\n const config: AdobeConfig = {\r\n sitename: 'ESDC-EDSC_RESP-REEE',\r\n accessRights: '2'\r\n };\r\n return config;\r\n }\r\n\r\n hasSplashPage(): boolean {\r\n let titles: Array = Array.from(\r\n document.querySelectorAll('meta[name=\"dc.title\"]')\r\n );\r\n if (titles.length === 0)\r\n titles = Array.from(\r\n document.querySelectorAll('meta[name=\"dcterms.title\"]')\r\n );\r\n return titles.some((title) => {\r\n return (\r\n title.content ===\r\n i18next.getResource(\r\n 'en',\r\n 'ns1',\r\n `sites.${Site.RESP.toString()}.pages.splashPage.title`\r\n ) ||\r\n title.content ===\r\n i18next.getResource(\r\n 'fr',\r\n 'ns1',\r\n `sites.${Site.RESP.toString()}.pages.splashPage.title`\r\n )\r\n );\r\n });\r\n }\r\n\r\n getSplashPageConfigs(): SiteConfig | undefined {\r\n return new RespSplashPageConfig();\r\n }\r\n\r\n getDefaultChildConfig(lang: LanguageType): SiteConfig | undefined {\r\n return lang === Language.ENGLISH\r\n ? new RespGenericConfigEN()\r\n : new RespGenericConfigFR();\r\n }\r\n\r\n hasCustomCDTSSetup(): boolean {\r\n return true;\r\n }\r\n\r\n customCDTSSetup(): Promise {\r\n return Promise.resolve();\r\n }\r\n}\r\n","import type { ConfigModule } from '../types/config.js';\nimport { Site, type SiteType } from '../types/template.js';\nimport EiBoardConfig from './eiboard/eiboard.config.js';\nimport EllisChartConfig from './ellis-chart/elllis-chart.config.js';\nimport EsdcPrvConfig from './esdc-prv/esdc-prv.config.js';\nimport HorizonsConfig from './horizons/horizons.config.js';\nimport IservicePrvConfig from './iservice-prv/iservice-prv.config.js';\nimport RdspConfig from './rdsp/rdsp.config.js';\nimport RedSealConfig from './red-seal/red-seal.config.js';\nimport RespConfig from './resp/resp.config.js';\n\nexport class ConfigModuleFactory {\n static getConfig(type: SiteType): ConfigModule | undefined {\n let config: ConfigModule | undefined = undefined;\n\n switch (type) {\n case Site.HORIZONS:\n config = new HorizonsConfig();\n break;\n case Site.ESDC_PRV:\n config = new EsdcPrvConfig();\n break;\n case Site.ISERVICE_PRV:\n config = new IservicePrvConfig();\n break;\n case Site.EIBOARD:\n config = new EiBoardConfig();\n break;\n case Site.RED_SEAL:\n config = new RedSealConfig();\n break;\n case Site.ELLIS_CHART:\n config = new EllisChartConfig();\n break;\n case Site.RDSP:\n config = new RdspConfig();\n break;\n case Site.RESP:\n config = new RespConfig();\n break;\n default:\n throw new Error('Unknown config type');\n }\n\n return config;\n }\n}\n"],"names":["Language","WetAsset","Template","Site","SitePublishedDomain","SectionIdentifiers","freeGlobal","freeSelf","root","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","value","isOwn","tag","unmasked","result","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","symbolTag","isSymbol","arrayMap","array","iteratee","index","length","isArray","symbolProto","symbolToString","baseToString","isObject","type","identity","asyncTag","funcTag","genTag","proxyTag","isFunction","coreJsData","maskSrcKey","uid","isMasked","func","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","getValue","object","key","getNative","objectCreate","baseCreate","proto","apply","thisArg","args","copyArray","source","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","count","lastCalled","stamp","remaining","constant","defineProperty","baseSetToString","string","setToString","MAX_SAFE_INTEGER","reIsUint","isIndex","baseAssignValue","eq","other","assignValue","objValue","copyObject","props","customizer","isNew","newValue","nativeMax","overRest","start","transform","otherArgs","baseRest","isLength","isArrayLike","isIterateeCall","createAssigner","assigner","sources","guard","isPrototype","Ctor","baseTimes","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","stubFalse","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseUnary","freeProcess","nodeUtil","types","nodeIsTypedArray","isTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","overArg","arg","nativeKeysIn","baseKeysIn","isProto","keysIn","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","data","hashHas","hashSet","Hash","entries","entry","listCacheClear","assocIndexOf","arrayProto","splice","listCacheDelete","lastIndex","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","map","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","size","MapCache","toString","getPrototype","objectCtorString","isPlainObject","basePropertyOf","stackClear","stackDelete","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","Stack","cloneBuffer","buffer","isDeep","Uint8Array","cloneArrayBuffer","arrayBuffer","cloneTypedArray","typedArray","initCloneObject","createBaseFor","fromRight","keysFunc","iterable","baseFor","assignMergeValue","isArrayLikeObject","safeGet","toPlainObject","baseMergeDeep","srcIndex","mergeFunc","stack","srcValue","stacked","isCommon","isTyped","baseMerge","htmlEscapes","escapeHtmlChar","reUnescapedHtml","reHasUnescapedHtml","escape","merge","Module","scriptName","globals","moduleType","flags","module","AdobeModule","adobeConfig","head","metaTag","tags","tagName","script","domain","prodDomains","d","Versions","CdtsTheme","CdtsConfigurator","themeType","sriInfo","error","lang","cdtsConfiguration","cdtslib","json","dateStr","asset","redirect","path","urlpath","response","notfound","val","httpcode_en","httpcode_fr","three_zero_two","redirect_to_en","redirect_to_fr","page","countdown_en","countdown_fr","timeleft","downloadTimer","four_zero_four","EDIT_PREVIEWPAGE_UPDATE","isInPreviewMode","url","isLocalDev","hasPreviewPage","isProdSite","hostName","getPathName","ret","getTemplate","template","buildSiteList","siteList","site","getSiteForConfig","readCookie","matchFound","sites","name","nameEQ","ca","returnValue","cookie","FourZeroFourConfig","boundRedirect","BaseConfig","wcmsTemplate","js","i","css","body","scriptElement","cssLink","link","siteAsset","title","siteConfig","config","siteConfigs","defaultConfigs","fallback","ns1","resources","enNs1","frNs1","i18next","getLanguage","text","option","getOtherLang","otherLang","metaTagFr","metaTagEn","DEFAULT_LANGUAGE","EiBoardGenericConfigEN","EiBoardGenericConfigFR","EiboardSplashPageConfig","EiBoardConfig","titles","defTop","menuHtmlHeader","lngSection","defFooter","menuHtmlFooter","LeftNavigationMenuModule","err","tvarLeftNav","dataAjaxDiv","leftNavElement","main","nav","containerDiv","rowDiv","h2","callback","intervalInMilliseconds","timeoutInMilliseconds","hasTimedOut","untilReady","resolve","check","timeout","_resolve","reject","e","listItems","listItem","WhenReady","cb","interval","divDataAjax","EllisChartGenericConfigEN","EllisChartGenericConfigFR","EllisChartSplashPageConfig","EllisChartConfig","BreadCrumbModule","xml","pathArray","bc","paths","elements","out","breadcrumb","xmlPath","xmlTitle","xmlHREF","xmlIgnoreMatchingHref","flag","currentHref","xmlStr","ArticlesModule","getUrl","predicate","year","el","is_preview","filtered","acc","num","sParam","sURLVariables","sParameterName","prop","asc","b","ascSortValue","descSortValue","ascSort","descSort","header","categoryTypesMatch","intcategorysMatch","articles","createArticleEntryMarkup","div","html","articleEntry","field","checkExist","h1","isArticlesPage","BlogsModule","results","ascResult","descResult","src","pair","blogs","CarousselModule","property1","property2","a","sortStatus","sortedArticles","id","sectionHtml","article","cat11","articleData","en_articleURL","fr_articleURL","CategoryModule","property","n","NewsfeedTypes","MoreNewsFeedModule","event","$newPanel","target","newsDiv","j","newsfeed","yearDiv","date","match","yearDivList","filename","y","yearElement","dd","mm","str","day","enTitle","mmLowerCaseWithSpace","frTitle","formatted","NewsfeedModule","href","wbTabs","c","x","k","panelNumber","RandomSurveyModule","modalText","modalHTML","ShareThisPageModule","isReady","lightbox","mutationList","observer","mutation","footer","footerBtn","column1","column2","element","clearfix","Content","EsdcPrvAssistConfigFR","EsdcPrvSplashPageConfig","EsdcPrvAssistConfigEN","EsdcPrvGenericConfigEN","EsdcPrvGenericConfigFR","EsdcPrvConfig","ATL_ARTICLE_IDENTIFIER","BLOGS_IDENTIFIER","isAtlArticle","isBlogs","myDivId","xmlhttp","markup","pathName","catquery","moreNewsfeed","caroussel","randomSurvey","commentsMetaContent","likabilityMetaContent","feedbackMetaContent","hasQowDivs","hasQowMultipleDivs","HorizonsGenericConfigEN","HorizonsGenericConfigFR","HorizonsSplashPageConfig","HorizonsArticleConfigEN","HorizonsArticleConfigFR","HorizonsIndexConfigEN","HorizonsIndexConfigFR","HorizonsModule","indexItem","thumbnailUrl","loaderWrapper","loader","loaderText","location","indexItems","BuildTopListModule","sectionItems","enSectionHeader","frSectionHeader","allItemsLink","toplistDiv","displayShowAllButton","sectionHeader","listRow","leftColumn","firstItem","itemThumbnail","thumbnailDiv","firstItemTitle","firstItemLink","firstItemH4","firstItemA","dividerTitleHr","descriptionP","desc","readMoreButtonDiv","readMoreButton","rightColumn","dividerTopHr","indexOfSecondItem","indexOfLastItem","item","itemH4","itemA","dividerHr","allButtonDiv","allButton","OurWorkModule","buildLists","images","numImages","numImagesLoaded","img","evt","ourWorkDiv","economicFuturesDiv","socialFuturesDiv","governanceFuturesDiv","covid19Div","sectionId","sectionDiv","itemsForRow","row","col","figure","imageLink","image","imageDiv","imageUrl","figcaption","articleCaptionLink","headerDiv","topButton","headerRow","h2Col","buttonCol","reportItems","categories","videoItems","blogItems","presentationItems","weakSignalsItems","foresightItems","dividerEconomicFuturesHr","sectionSocialFuturesItems","categoryId","hasThumbnail","dividerSocialFuturesHr","sectionGovernanceFuturesItems","dividerGovernanceFuturesHr","sectionCovidItems","IndexModule","buildIndex","numImageLoadsAttempted","pageNum","itemsToDisplay","records_per_page","buttons","button","firstPageNum","previousButton","nextButton","currentPage","activeButton","buttonBlock","numItemsPerPage","numPageButtons","previousButtonLink","buttonNumber","buttonLink","nextButtonLink","targetNode","indexType","authorsResponse","categoriesResponse","itemsToDisplaySet","authorId","itemCategories","description","category","thumnailDiv","thumbnailLink","thumbnailImage","thumbnailImageDiv","itemDetailsDiv","categoryDiv","categoryIds","categoryInfo","categoryLink","categorySeperator","categorySeperatorSpan","itemLinkDiv","itemLink","authorAndDateDiv","authorlabelLink","authorlabelInfo","authorDateSeperatorSpan","dateSpan","descriptionText","categoryIdsToDisplay","catgorySelectorDiv","categoryButtonGroup","categoryButtonAll","catId","categoryButton","articlesToDisplay","articleCategories","articleCategoryId","articleArray","articlesForRow","authorDiv","authorLink","authorInfo","categoryList","categoryListItem","authorList","author","AuthorModule","obj","smallImage","largeImage","authorInfoImage","authorInfoLink","authorBioName","authorBioText","authorBioImage","publisheDataSpanId","authorInfoDiv","dateCreatedDiv","datePublishedLabelSpan","datePublishedDateSpan","dateCreatedTime","datePublishedMeta","TopListModule","reportsLink","dividerReportsHr","sectionArticlesItems","allCategories","found","HorizonsConfig","h1Tags","shareButton","toplist","ourwork","NationalServiceDeskModule","laDate","sec","hours","minutes","secondes","maintenant","diff","SendModule","quizStatus","quizQ1sum","quizQ2sum","quizQ3sum","handleQuizClick","className","total","elem","resetButton","WatsonChatBotModule","loadVal","instance","IservicePrvSplashPageConfig","IservicePrvGenericConfigEN","IservicePrvGenericConfigFR","AlertMessageModule","elementId","IservicePrvConfig","Id","li","watsonChatbot","send","nsd","shareThisPageWidget","RdspGenericConfigEN","RdspGenericConfigFR","RdspSplashPageConfig","RdspConfig","RedSealGenericConfigEN","RedSealGenericConfigFR","RedSealSplashPageConfig","RedSealConfig","RespGenericConfigEN","RespGenericConfigFR","RespSplashPageConfig","RespConfig","ConfigModuleFactory"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103]}