{"version":3,"names":["window","require","registerSettings","theme_uploads","define","_exports","_pluginApi","Object","defineProperty","value","default","getObjectForTheme","name","after","initialize","withPluginApi","api","makeAjaxRequestWithChannels","channel","fetch","then","response","ok","json","Error","data","contentDiv","document","getElementById","count","users","querySelectorAll","forEach","aElement","remove","item","newLink","createElement","setAttribute","username","newImage","avatar_template","replace","appendChild","spanElement","querySelector","updatedText","textContent","maxToCollapse","container","lookup","whos_online_collapse_threshold","classList","add","catch","error","console","navigator","serviceWorker","getRegistrations","registrations","registration","unregister","replaceIcon","onPageChange","url","title","$","ready","length","y","first","offset","top","matches","includes","Discourse","router","currentURL","headerTranslations","en","fr","de","pl_PL","nl","prepend","I18n","currentLocale","onAppEvent","insertBefore","OIDC_PARAMS","idps","setupButtons","oidcUrl","params","URLSearchParams","entries","_ref","key","set","toString","buildOIDCUrl","signUpBtn","loginBtn","dataset","oidcInjected","addEventListener","e","stopPropagation","preventDefault","location","href","setTimeout"],"sourceRoot":"theme-40/","sources":["settings.js","discourse/initializers/theme-field-752-common-html-script-1.js"],"sourcesContent":["(function() {\n  if ('require' in window) {\n    require(\"discourse/lib/theme-settings-store\").registerSettings(40, {\"theme_uploads\":{\"icons-sprite\":\"/uploads/default/original/2X/a/a80fa8ed480b92e9a2c3ac564692d40d2c528d03.svg\"}});\n  }\n})();\n","if ('define' in window) {\ndefine(\"discourse/theme-40/discourse/initializers/theme-field-752-common-html-script-1\", [\"exports\", \"discourse/lib/plugin-api\"], function (_exports, _pluginApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const settings = require(\"discourse/lib/theme-settings-store\").getObjectForTheme(40);\n  const themePrefix = key => `theme_translations.40.${key}`;\n  var _default = _exports.default = {\n    name: \"theme-field-752-common-html-script-1\",\n    after: \"inject-objects\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(\"0.8\", api => {\n        /* HACK TO DISABLE BROWSER SERVICE WORKER */\n        if (typeof navigator.serviceWorker !== \"undefined\") {\n          navigator.serviceWorker.getRegistrations().then(registrations => {\n            for (let registration of registrations) {\n              registration.unregister();\n            }\n          });\n        }\n        api.replaceIcon('far-check-square', 'mycad-icon-solved');\n        api.replaceIcon('check-square', 'mycad-icon-solved');\n        api.replaceIcon('notification.check-square', 'mycad-icon-solved');\n\n        // close mycad menu on composer open\n        /*\n        api.onAppEvent('composer:opened', () => {\n            if(!($(\"#mycad-menu-open\").hasClass(\"open\")) && getSize() < t) {\n              $(\"#mycad-menu-open\").click();\n            }\n        });\n         const t = 300;\n        var X = false;\n        function getSize(){\n            let a = window.innerWidth - document.getElementById(\"main-outlet-wrapper\").offsetWidth;\n            let b = a - document.getElementById(\"mycad-menu-block\").offsetWidth;\n            return b;\n        }\n         setTimeout(function(){\n            jQuery(document).ready(function(){\n                if ($('#d-sidebar').length && !($(\"#mycad-menu-open\").hasClass(\"open\")) & getSize() < t){\n                    localStorage.setItem(\"menuState\", \"closed\");\n                    $('#mycad-menu-block').hide();\n                    $('#mycad-menu-open').addClass(\"open\");\n                }\n            });\n        }, 2000);\n         $(document).on( \"click\", \"#mycad-menu-open\", function(e) {\n            if (getSize() < t && $('#d-sidebar').length) {\n                // hide sidebar\n                X = true;\n                $(\".header-sidebar-toggle button\").click();\n            }\n        });\n         $(document).on( \"click\", \".header-sidebar-toggle button\", function(e) {\n            // hide mycadmenu\n            if (getSize() < t && !$('#mycad-menu-open').hasClass(\"open\") && X == false){\n                localStorage.setItem(\"menuState\", \"closed\");\n                $('#mycad-menu-block').hide();\n                $('#mycad-menu-open').addClass(\"open\");\n            }\n            X = false;\n        });\n        */\n\n        // to align right sidebar with topic list\n        api.onPageChange((url, title) => {\n          $(document).ready(function () {\n            if ($('.topic-list > tbody > tr').length) {\n              let y = $('.topic-list > tbody > tr').first().offset().top;\n              $('.tc-right-sidebar').offset({\n                top: y\n              });\n            }\n\n            // Add lang param to all links href property which redirect to myCAD platform\n            /*let siteSettings = api.container.lookup('site-settings:main');\n            let lang = I18n.locale;\n            let mycadHost = siteSettings.mycad_host;\n            let linksSelector = `.about-page section.about.contact a[href^=\"${mycadHost}\"]`;\n             $(linksSelector).each(function() {\n                let $link = $(this);\n                let href = $link.attr('href');\n                 // Check if the link already contains the lang parameter\n                let newHref;\n                if (href.includes(`${mycadHost}/${lang}`)) {\n                    newHref = href;\n                } else {\n                    let pos = href.indexOf(mycadHost);\n                    if (pos !== -1) {\n                        newHref = mycadHost + '/' + lang + href.substring(pos + mycadHost.length);\n                    } else {\n                        newHref = href;\n                    }\n                }\n                 // Update the href attribute\n                $link.attr('href', newHref);\n            });*/\n\n            /* Update TOS link by language */\n            /*let tosLinks = {\n                'en': mycadHost + '/fr/sites/default/files/footer/de/cgu-visiativ-solutions.pdf',\n                'fr': mycadHost + '/fr/cgu-mycadservices',\n                'de': mycadHost + '/fr/sites/default/files/footer/de/cgu-visiativ-solutions.pdf',\n                'nl': mycadHost + '/fr/sites/default/files/footer/de/cgu-visiativ-solutions.pdf',\n                'pl_PL': mycadHost + '/fr/sites/default/files/footer/de/cgu-visiativ-solutions.pdf'\n            };\n            let tosSelector = $(`.about-page .nav-pills li.nav-item-tos a`);\n            tosSelector.attr('href', tosLinks[lang]);*/\n            /* Update TOS link by language */\n\n            /* Update privacy link by language */\n            /*let privacyLinks = {\n                'en': mycadHost + '/fr/sites/default/files/footer/de/cgu-visiativ-solutions.pdf',\n                'fr': mycadHost + '/fr/sites/default/files/footer/Politique%20de%20confidentialité.pdf',\n                'de': mycadHost + '/de/sites/default/files/footer/de/privacy.pdf',\n            };\n            let privacySelector = $(`.about-page .nav-pills li.nav-item-privacy a`);\n            privacySelector.attr('href', privacyLinks[lang]);*/\n            /* Update privacy link by language */\n\n            /* Translate forum H1 */\n            let matches = [\"/\", \"/categories\", \"/top\", \"/latest\", \"/unread\"].includes(Discourse.router.currentURL);\n            const headerTranslations = {\n              \"en\": \"The myCAD community CAD forum\",\n              \"fr\": \"Le forum CAO de la communauté myCAD\",\n              \"de\": \"Das myCAD-Community CAD Forum\",\n              \"pl_PL\": \"Forum CAD społeczności myCAD\",\n              \"nl\": \"Het myCAD CAD forum\"\n            };\n            if (matches && $(\"#main-outlet h1\").length == 0) {\n              $(\"#main-outlet\").prepend(\"<h1>\" + headerTranslations[I18n.currentLocale()] + \"</h1>\");\n            }\n            if (!matches) {\n              $(\"#main-outlet > h1\").remove();\n            }\n            /* Translate forum H1 */\n          });\n        });\n\n        // to display custom notification from mycad on the user-menu\n        /*api.registerNotificationTypeRenderer('custom', (NotificationTypeBase) => {\n            return class extends NotificationTypeBase {\n                get label() {\n                    if (this.notification.data.source == \"LYNKOA\" && typeof window.Lynkoa !== \"undefined\") {\n                        var translate = window.Lynkoa.translates[this.notification.data.message];\n                        translate = translate ? translate[I18n.currentLocale()] : this.notification.data.message;\n                        for (var prop in this.notification.data.params) {\n                            translate = translate.replace(\"$\" + prop, this.notification.data.params[prop]);\n                        }\n                        return translate;\n                    }\n                    else if (this.notification.data.source == \"LYNKOA\" && typeof window.Lynkoa == \"undefined\") {\n                        let tmp = this.notification.data.message;\n                        for (var prop in this.notification.data.params) {\n                            tmp = tmp.replace(\"$\" + prop, this.notification.data.params[prop]);\n                        }\n                        return tmp;\n                    }\n                    return this.notification.data.message;\n                }\n                 get linkTitle() {\n                    return this.label;\n                }\n                 get icon() {\n                    return \"far-envelope\";\n                }\n            };\n        });*/\n\n        function makeAjaxRequestWithChannels() {\n          const channel = \"/whos-online/online\";\n          const apiUrl = \"/presence/get?channels[]=\" + channel;\n          fetch(apiUrl).then(response => {\n            if (response.ok) {\n              return response.json();\n            } else {\n              throw new Error('Failed to fetch data');\n            }\n          }).then(data => {\n            let contentDiv = document.getElementById(\"whos-online\");\n            if (contentDiv) {\n              let count = data[channel].count;\n              let users = data[channel].users;\n\n              // Remove all existing <a> elements within the div\n              let aElements = contentDiv.querySelectorAll('a');\n              aElements.forEach(aElement => {\n                aElement.remove();\n              });\n\n              // Create and append new <a> elements with images from the fetched data\n              users.forEach(item => {\n                let newLink = document.createElement(\"a\");\n                let avatarSize = 25;\n                newLink.setAttribute('class', \"ember-view\");\n                newLink.setAttribute('data-user-card', item.username);\n                let newImage = document.createElement(\"img\");\n                newImage.setAttribute('title', item.username);\n                newImage.setAttribute('aria-label', item.username);\n                newImage.setAttribute('src', item.avatar_template.replace(\"{size}\", avatarSize));\n                newImage.setAttribute('class', \"avatar\");\n                newImage.setAttribute('width', avatarSize);\n                newImage.setAttribute('height', avatarSize);\n                newImage.setAttribute('loading', \"lazy\");\n\n                // Append the new <img> element to the <a> element\n                newLink.appendChild(newImage);\n\n                // Append the new <a> element to the <div>\n                contentDiv.appendChild(newLink);\n                let spanElement = document.getElementById(\"whos-online\").querySelector('#whos-online span');\n                if (spanElement) {\n                  var spanText = spanElement.textContent;\n                  var updatedText = spanText.replace(/\\((\\d+)\\)/, '(' + count + ')');\n                  spanElement.textContent = updatedText;\n                }\n                let siteSettings = api.container.lookup('site-settings:main');\n                let maxToCollapse = siteSettings.whos_online_collapse_threshold;\n                if (count >= maxToCollapse) {\n                  contentDiv.classList.add(\"collapsed\");\n                } else {\n                  contentDiv.classList.remove(\"collapsed\");\n                }\n              });\n            }\n          }).catch(error => {\n            console.error(error);\n          });\n        }\n        api.onPageChange(url => {\n          makeAjaxRequestWithChannels();\n        });\n        api.onAppEvent('whosonline:changed', () => {\n          makeAjaxRequestWithChannels();\n        });\n        $(document).ready(function () {\n          $('.maintenance-message-message--wrapper').insertBefore('#main');\n        });\n\n        ///////// below OIDC\n\n        const OIDC_PARAMS = {\n          idps: \"totpsms\"\n        };\n        function buildOIDCUrl() {\n          const params = new URLSearchParams();\n          Object.entries(OIDC_PARAMS).forEach(_ref => {\n            let [key, value] = _ref;\n            params.set(key, value);\n          });\n          return \"/auth/oidc?\" + params.toString();\n        }\n        function setupButtons() {\n          const oidcUrl = buildOIDCUrl();\n          const signUpBtn = document.querySelector(\".sign-up-button\");\n          const loginBtn = document.querySelector(\".login-button\");\n          if (signUpBtn && !signUpBtn.dataset.oidcInjected) {\n            signUpBtn.dataset.oidcInjected = \"true\";\n            signUpBtn.addEventListener(\"click\", function (e) {\n              e.stopPropagation();\n              e.preventDefault();\n              window.location.href = oidcUrl;\n            });\n            //   console.log(\"[OIDC] sign-up-button intercepted →\", oidcUrl);\n          }\n          if (loginBtn && !loginBtn.dataset.oidcInjected) {\n            loginBtn.dataset.oidcInjected = \"true\";\n            loginBtn.addEventListener(\"click\", function (e) {\n              e.stopPropagation();\n              e.preventDefault();\n              window.location.href = oidcUrl;\n            });\n            //   console.log(\"[OIDC] login-button intercepted →\", oidcUrl);\n          }\n        }\n\n        // First page load\n        setTimeout(setupButtons, 500);\n\n        // Called by Discourse after each Ember navigation\n        api.onPageChange(function () {\n          setTimeout(setupButtons, 500);\n        });\n      });\n    }\n  };\n});\n}\n"],"mappings":"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"}