{"version":3,"file":"site.BIVjsIxE.js","sources":["../../Scripts/global/character-counter-widget.ts","../../Scripts/global/global.ts","../../node_modules/js-cookie/dist/js.cookie.mjs","../../Scripts/global/alerts.ts","../../Scripts/global/jquery.datetimepicker.ts","../../Scripts/global/jquery.validate.better-required.ts","../../Scripts/global/jquery.validate.groups.ts","../../Scripts/global/jquery.validate.pattern.ts","../../Scripts/global/ko.binding-handlers.ts","../../Scripts/global/sidebar.ts","../../Scripts/global/tour.loader.ts"],"sourcesContent":["import \"./extensions\"\r\n\r\n$(() => {\r\n\t$(\"input[data-val-length-max]\").add(\"textarea[data-val-length-max]\").filter(\"[data-character-count]\").each((index, element) => {\r\n\t\tlet $element = $(element),\r\n\t\t\tmaximum = parseFloat($element.data(\"valLengthMax\")) || 0,\r\n\t\t\toffset = maximum - $element.valAsString().length,\r\n\t\t\t$widget = $(`
${offset}
'`);\r\n\r\n\t\t$element.on(\"input\", () => {\r\n\t\t\toffset = (maximum - $element.valAsString().length);\r\n\r\n\t\t\t$widget.text(offset);\r\n\r\n\t\t\t$widget[offset < 0 ? \"addClass\" : \"removeClass\"](\"invalid\");\r\n\t\t});\r\n\r\n\t\t$element.after($widget);\r\n\t});\r\n});\r\n","function configureXsrfToken(xsrfToken: string) {\r\n\t$.ajaxPrefilter(function (options) {\r\n\t\tif (!options.beforeSend) {\r\n\t\t\toptions.beforeSend = function (xhr) {\r\n\t\t\t\txhr.setRequestHeader(\"X-XSRF-TOKEN\", xsrfToken);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nwindow.configureXsrfToken = configureXsrfToken\r\n\r\n// Clear the 'selectedOfficeId' value from local storage when a impersonate form is submitted\r\n// This will exist only for ecare but we are leaving it here for easier merging\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n // Select all submit buttons within the relevant forms\r\n const submitButtons = document.querySelectorAll('#employee-finder [type=\"submit\"]');\r\n\r\n // Add a click event listener to each button\r\n submitButtons.forEach(button => {\r\n button.addEventListener('click', () => {\r\n console.log('removing selectedOfficeId');\r\n // Clear the 'selectedOfficeId' value from local storage\r\n localStorage.removeItem('selectedOfficeId');\r\n });\r\n });\r\n});\r\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import Cookies from 'js-cookie';\r\n\r\n// Helper function to hash content\r\nasync function hashContent(content: string): Promise {\r\n const encoder = new TextEncoder();\r\n const data = encoder.encode(content);\r\n const hashBuffer = await crypto.subtle.digest('SHA-256', data);\r\n return Array.from(new Uint8Array(hashBuffer))\r\n .map(b => b.toString(16).padStart(2, '0'))\r\n .join('');\r\n}\r\n\r\n// Function to handle alerts\r\nasync function handleGlobalAlerts(): Promise {\r\n const alerts = document.querySelectorAll('.alert-global');\r\n const currentHashes = new Set(); // Store current alert hashes\r\n\r\n for (let alert of alerts) {\r\n const content = alert.textContent?.trim() ?? \"\";\r\n const hash = await hashContent(content);\r\n const cookieName = 'remax_global_alert__' + hash;\r\n currentHashes.add(cookieName); // Add to set of current hashes\r\n\r\n // Alerts are defaulted to hidden, manage display based on cookie\r\n if (Cookies.get(cookieName)) {\r\n alert.style.display = 'none'; // Ensure it remains hidden\r\n } else {\r\n alert.style.display = 'block'; // Show the alert if no cookie is found\r\n const closeButton = alert.querySelector('.close');\r\n if (closeButton) {\r\n closeButton.addEventListener('click', () => {\r\n Cookies.set(cookieName, 'closed', { expires: 30, secure: true, sameSite: 'strict' });\r\n alert.style.display = 'none'; // Hide alert and set cookie\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Clean up outdated cookies\r\n const allCookies = Cookies.get();\r\n for (const cookieName in allCookies) {\r\n if (cookieName.startsWith('remax_global_alert__') && !currentHashes.has(cookieName)) {\r\n Cookies.remove(cookieName); // Remove cookies that are no longer relevant\r\n }\r\n }\r\n}\r\n\r\n// Execute when the DOM is fully loaded\r\ndocument.addEventListener('DOMContentLoaded', handleGlobalAlerts);\r\n","$(function () {\r\n $('input.datetime').datetimepicker();\r\n\r\n $('input.date').datetimepicker({\r\n format: 'L'\r\n });\r\n\r\n $('input.time').datetimepicker({\r\n format: 'LT'\r\n });\r\n\r\n $('[data-start-date-id]').on('dp.change', function (e: any) {\r\n $('[data-end-date-id=\"' + $(this).data('start-date-id') + '\"]').data('DateTimePicker').minDate(e.date);\r\n });\r\n\r\n $('[data-end-date-id]').on('dp.change', function (e: any) {\r\n $('[data-start-date-id=\"' + $(this).data('end-date-id') + '\"]').data('DateTimePicker').maxDate(e.date);\r\n });\r\n\r\n $(\"div.alert[data-hash]\").on(\"closed.bs.alert\", event => {\r\n $.post(\"/home/dismiss-alert\", {\r\n hash: $(event.currentTarget).data(\"hash\")\r\n });\r\n });\r\n\r\n const $selectorForm = $(\"#office-selector-form, #search-form\");\r\n\r\n function initializeDropdown() {\r\n if ($selectorForm.length) {\r\n const $officeSelect = $selectorForm.find(\"[name='id']\");\r\n const $currentPath = window.location.pathname || '';\r\n\r\n // 1. Read the selectedOfficeId from localStorage and set the dropdown value\r\n const selectedOfficeId = localStorage.getItem('selectedOfficeId');\r\n if (selectedOfficeId !== null) {\r\n // Check if the option exists in the dropdown before setting it\r\n if ($officeSelect.find(`option[value='${selectedOfficeId}']`).length > 0) {\r\n $officeSelect.val(selectedOfficeId);\r\n } else {\r\n console.log(`The selected office with id ${selectedOfficeId} does not exist in the dropdown. Setting it to the default value.`);\r\n }\r\n }\r\n\r\n // 2. Update localStorage whenever the dropdown value changes\r\n $officeSelect.off(\"change\").on(\"change\", function (event) {\r\n const selectedVal = $(event.delegateTarget).val();\r\n\r\n // Save the selected value to localStorage\r\n localStorage.setItem('selectedOfficeId', selectedVal?.toString() || '');\r\n\r\n // Only perform actions if the selected value exists in the dropdown\r\n if ($officeSelect.find(`option[value='${selectedVal}']`).length > 0) {\r\n if (selectedVal == \"-2\") {\r\n window.location.assign($selectorForm.data(\"action-empty\"));\r\n } else if (selectedVal == \"-1\") {\r\n if ($currentPath !== \"/honorcards/create\") {\r\n window.location.assign($selectorForm.data(\"action-all\"));\r\n } else {\r\n $selectorForm.submit();\r\n } \r\n } else {\r\n $selectorForm.submit();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n // // Initialize dropdown on load\r\n initializeDropdown();\r\n\r\n // Reinitialize the dropdown whenever the page is shown, including during back/forward navigation\r\n $(window).on(\"pageshow\", function () {\r\n initializeDropdown();\r\n });\r\n\r\n $(document.body).tooltip({\r\n selector: \"[data-toggle='tooltip']\"\r\n });\r\n});\r\n","$.validator.addMethod(\"required\", function (value, element, param) {\r\n\t// Check if dependency is met\r\n\tif (!this.depend(param, element)) {\r\n\t\treturn false;\r\n\t}\r\n\tif (element.nodeName.toLowerCase() === \"select\") {\r\n\t\t// Could be an array for select-multiple or a string, both are fine this way\r\n\t\tvar val = $(element).val().toString();\r\n\t\treturn val && val.length > 0;\r\n\t}\r\n\tif (this.checkable(element)) {\r\n\t\treturn this.getLength(value, element) > 0;\r\n\t}\r\n\r\n\t// Trim the value first to disallow just spaces.\r\n\treturn $.trim(value).length > 0;\r\n});\r\n","$(() => {\r\n\tfunction validate($group: JQuery) {\r\n\t\tif ($group.prop(\"disabled\")) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn $(\":input\", $group).get().reduce((previous, element) => {\r\n\t\t\treturn $(element).valid() && previous;\r\n\t\t}, true);\r\n\t}\r\n\r\n\t$(\"fieldset [data-causes-validation]\").on(\"click\", (event: JQueryEventObject) => {\r\n\t\tlet $group = $(event.currentTarget).closest(\"fieldset\");\r\n\r\n\t\tif (!validate($group)) {\r\n\t\t\tevent.stopImmediatePropagation();\r\n\t\t\t$group.trigger(\"error.validation-group\");\r\n\t\t}\r\n\t});\r\n\r\n\t$(\"fieldset\").on(\"validate\", (event: JQueryEventObject) => {\r\n\t\tlet $group = $(event.currentTarget);\r\n\r\n\t\tif (!validate($group)) {\r\n\t\t\tevent.stopImmediatePropagation();\r\n\t\t\t$group.trigger(\"error.validation-group\");\r\n\t\t}\r\n\t});\r\n\r\n\t$(\"fieldset :text\").on(\"keydown\", (event: JQueryEventObject) => {\r\n\t\tif (event.which === 13) {\r\n\t\t\tlet $group = $(event.currentTarget).closest(\"fieldset\");\r\n\r\n\t\t\tif (!validate($group)) {\r\n\t\t\t\t$group.trigger(\"error.validation-group\");\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n});\r\n","/**\r\n* Return true if the field value matches the given format RegExp\r\n*\r\n* @example $.validator.methods.pattern(\"AR1004\",element,/^AR\\d{4}$/)\r\n* @result true\r\n*\r\n* @example $.validator.methods.pattern(\"BR1004\",element,/^AR\\d{4}$/)\r\n* @result false\r\n*\r\n* @name $.validator.methods.pattern\r\n* @type Boolean\r\n* @cat Plugins/Validate/Methods\r\n*/\r\n$.validator.addMethod(\"pattern\", function (value, element, param) {\r\n\tif (this.optional(element)) {\r\n\t\treturn true;\r\n\t}\r\n\tif (typeof param === \"string\") {\r\n\t\tparam = new RegExp(\"^(?:\" + param + \")$\");\r\n\t}\r\n\treturn param.test(value);\r\n}, \"Invalid format.\");\r\n","import \"./extensions\"\r\n\r\ninterface KnockoutBindingHandlers {\r\n\tslideVisible: KnockoutBindingHandler;\r\n\tfadeVisible: KnockoutBindingHandler;\r\n\tfadeText: KnockoutBindingHandler;\r\n\tcurrency: KnockoutBindingHandler;\r\n\tallowBindings: KnockoutBindingHandler;\r\n}\r\n\r\n(function () {\r\n\tko.bindingHandlers.slideVisible = {\r\n\t\tinit: function (element, valueAccessor) {\r\n\t\t\t// First get the latest data that we're bound to\r\n\t\t\tvar value = valueAccessor();\r\n\r\n\t\t\t// Next, whether or not the supplied model property is observable, get its current value\r\n\t\t\tvar valueUnwrapped = ko.unwrap(value);\r\n\r\n\t\t\t// Now manipulate the DOM element\r\n\t\t\tif (valueUnwrapped == true)\r\n\t\t\t\t$(element).show(); // Make the element visible\r\n\t\t\telse\r\n\t\t\t\t$(element).hide(); // Make the element invisible\r\n\t\t},\r\n\t\tupdate: function (element, valueAccessor, allBindings) {\r\n\t\t\t// First get the latest data that we're bound to\r\n\t\t\tvar value = valueAccessor();\r\n\r\n\t\t\t// Next, whether or not the supplied model property is observable, get its current value\r\n\t\t\tvar valueUnwrapped = ko.unwrap(value);\r\n\r\n\t\t\t// Grab some more data from another binding property\r\n\t\t\tvar duration = allBindings.get('slideDuration') || 400; // 400ms is default duration unless otherwise specified\r\n\r\n\t\t\t// Now manipulate the DOM element\r\n\t\t\tif (valueUnwrapped == true)\r\n\t\t\t\t$(element).slideDown(duration); // Make the element visible\r\n\t\t\telse\r\n\t\t\t\t$(element).slideUp(duration); // Make the element invisible\r\n\t\t}\r\n\t};\r\n\r\n\tko.bindingHandlers.fadeVisible = {\r\n\t\tupdate: (element, valueAccessor, allBindings) => {\r\n\t\t\tlet value = ko.unwrap(valueAccessor());\r\n\r\n\t\t\t$(element)[value ? \"fadeIn\" : \"fadeOut\"](allBindings.get(\"fadeDuration\") || 400)\r\n\t\t}\r\n\t}\r\n\r\n\tko.bindingHandlers.fadeText = {\r\n\t\tupdate: (element, valueAccessor, allBindings, ...args) => {\r\n\t\t\tlet $element = $(element),\r\n\t\t\t\tvalue = ko.unwrap(valueAccessor()),\r\n\t\t\t\tduration = ko.unwrap(allBindings.get(\"fadeDuration\")) || 200;\r\n\r\n\t\t\t$element.css({\r\n\t\t\t\t\"min-width\": $element.width()\r\n\t\t\t});\r\n\r\n\t\t\t$element.fadeOut(duration, () => {\r\n\t\t\t\tko.bindingHandlers.text.update.call(this, element, () => ko.unwrap(value.text || value), allBindings, ...args);\r\n\r\n\t\t\t\t$element.fadeIn(duration, () => {\r\n\t\t\t\t\t$element.css({\r\n\t\t\t\t\t\t\"min-width\": \"\"\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tko.bindingHandlers.allowBindings = {\r\n\t\tinit: function (elem, valueAccessor) {\r\n\t\t\t// Let bindings proceed as normal *only if* my value is false\r\n\t\t\tvar shouldAllowBindings = ko.unwrap(valueAccessor());\r\n\t\t\treturn { controlsDescendantBindings: !shouldAllowBindings };\r\n\t\t}\r\n\t};\r\n\r\n\tko.bindingHandlers.currency = {\r\n\t\tupdate: function (element, valueAccessor, allBindings, data, context) {\r\n\t\t\tvar valueUnwrapped = ko.unwrap(valueAccessor());\r\n\t\t\tvar newValueAccessor = function () {\r\n\t\t\t\treturn Number.toMoney(valueUnwrapped);\r\n\t\t\t};\r\n\t\t\tko.bindingHandlers.text.update(element, newValueAccessor, allBindings, data, context);\r\n\t\t}\r\n\t};\r\n\r\n\tko.virtualElements.allowedBindings[\"currency\"] = true;\r\n\tko.virtualElements.allowedBindings[\"allowBindings\"] = true;\r\n})();\r\n","import { preferences } from \"./preferences\";\r\n\r\n$(() => {\r\n\tlet $container = $(\"#main-container\");\r\n\r\n\t$(\"#sidebar .toggle\").on(\"click\", () => {\r\n\t\t$container.toggleClass(\"in\");\r\n\t\t$('body').trigger('toggled.sidebar.cmn'); // keep this, important\r\n\r\n\t\tpreferences.sidebarOpened = !preferences.sidebarOpened;\r\n\t});\r\n});\r\n\r\n$(window).on(\"load\", () => {\r\n\tlet $window = $(window),\r\n\t\theaderHeight = $(\"body > header\").height();\r\n\r\n\tlet sidebarHeight = (() => {\r\n\t\tlet $sizer = $(\"
\"),\r\n\t\t\theight = 0;\r\n\r\n\t\t$sizer.html($(\"#sidebar > div\").html());\r\n\r\n\t\t$(window.document.body).append($sizer);\r\n\r\n\t\theight = $sizer.outerHeight(true);\r\n\r\n\t\t$sizer.remove();\r\n\r\n\t\treturn height;\r\n\t})();\r\n\r\n\tfunction recalculate() {\r\n\t\twindow.requestAnimationFrame(() => {\r\n\t\t\t$(\"#main-container\").css(\"min-height\", () => {\r\n\t\t\t\treturn Math.max(sidebarHeight, $window.height() - headerHeight);\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n\r\n\t$window.on(\"resize\", recalculate);\r\n\r\n\trecalculate();\r\n});\r\n","$(function () {\r\n\tfunction onOpenTour(eventObject: JQueryEventObject) {\r\n\t\t$(document).off(\"click\", \"[data-open='tour']\", (onOpenTour));\r\n\r\n\t\tif (!$(\"#tour\").length) {\r\n\t\t\t$(\"
\")\r\n\t\t\t\t.attr(\"id\", \"tour-container\")\r\n\t\t\t\t.addClass(\"loading-overlay\")\r\n\t\t\t\t.text(\"Loading tour...\")\r\n\t\t\t\t.appendTo($(document.body));\r\n\r\n\t\t\t$(\"#tour-container\").load(\"/tour\", () => {\r\n\t\t\t\t$(\"#tour-container\").removeClass(\"loading-overlay\");\r\n\r\n\t\t\t\t$(\"#tour-styles\").on(\"load\", () => {\r\n\t\t\t\t\twindow.requestAnimationFrame(() => {\r\n\t\t\t\t\t\tsetTimeout(() => ko.dataFor(document.getElementById(\"tour\")).open(), 250);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t$(document).on(\"click\", \"[data-open='tour']\", onOpenTour);\r\n});"],"names":["index","element","$element","maximum","offset","$widget","configureXsrfToken","xsrfToken","options","xhr","button","assign","target","i","source","key","defaultConverter","value","init","converter","defaultAttributes","set","name","attributes","stringifiedAttributes","attributeName","get","cookies","jar","parts","found","api","hashContent","content","data","hashBuffer","b","handleGlobalAlerts","alerts","currentHashes","alert","cookieName","Cookies","closeButton","allCookies","event","$selectorForm","initializeDropdown","$officeSelect","$currentPath","selectedOfficeId","selectedVal","param","val","validate","$group","previous","valueAccessor","valueUnwrapped","allBindings","duration","args","elem","shouldAllowBindings","context","newValueAccessor","$container","preferences","$window","headerHeight","sidebarHeight","$sizer","height","recalculate","onOpenTour","eventObject"],"mappings":"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","x_google_ignoreList":[2]}