PageSourceSearch

https://www.deltadentalnj.com/smile_resources/js/core?v=myZIyQOeRHS4nHtaL2qyyBR8Pbk_I64H87ST0SJo9bQ1

js deltadentalnj.com collected 2026-09-24 12:07:06 UTC 218,327 bytes, 4,843 lines download raw bytes

1/* Minification failed. Returning unminified contents.
2(539,19-20): run-time error JS1195: Expected expression: )
3(539,22-23): run-time error JS1195: Expected expression: >
4(542,8-9): run-time error JS1195: Expected expression: ,
5(542,10-14): run-time error JS1010: Expected identifier: 3000
6(544,5-6): run-time error JS1002: Syntax error: }
7(591,30-31): run-time error JS1195: Expected expression: >
8(591,88-89): run-time error JS1004: Expected ';': )
9(592,7-8): run-time error JS1002: Syntax error: }
10(597,7-8): run-time error JS1002: Syntax error: }
11(599,36-37): run-time error JS1195: Expected expression: )
12(599,38-39): run-time error JS1004: Expected ';': {
13(607,8-9): run-time error JS1195: Expected expression: )
14(706,48-49): run-time error JS1100: Expected ',': =
15(775,40-41): run-time error JS1195: Expected expression: )
16(775,43-44): run-time error JS1195: Expected expression: >
17(807,6-7): run-time error JS1195: Expected expression: ,
18(807,8-13): run-time error JS1010: Expected identifier: false
19(832,28-29): run-time error JS1195: Expected expression: >
20(838,6-7): run-time error JS1195: Expected expression: )
21(840,3-4): run-time error JS1002: Syntax error: }
22(846,32-33): run-time error JS1195: Expected expression: >
23(846,97-98): run-time error JS1004: Expected ';': :
24(857,3-4): run-time error JS1002: Syntax error: }
25(861,27-28): run-time error JS1004: Expected ';': :
26(862,29-30): run-time error JS1197: Too many errors. The file might not be a JavaScript file: :
27(856,5-21): run-time error JS1018: 'return' statement outside of function: return newObject
28 */
29var Smile = {};
30Smile.createNamespace = function (namespace, namespaceString) {
31    var parts = namespaceString.split('.'), parent = namespace;
32    if (parts[0] === "Smile") {
33        parts = parts.slice(1);
34    }
35    for (var i = 0; i < parts.length; i++) {
36        if (parent[parts[i]] === undefined) {
37            parent[parts[i]] = {};
38        }
39        parent = parent[parts[i]];
40    }
41    return parent;
42};
43Smile.createNamespace(Smile, "Smile.Feature");
44Smile.createNamespace(Smile, "Smile.SelfService");
45Smile.createNamespace(Smile, "Smile.ExternalClientApi");
46Smile.createNamespace(Smile, "Smile.Directives");
47//# sourceMappingURL=App.js.map;
48var Constants;
49(function (Constants) {
50    var CoreConstants = (function () {
51        function CoreConstants() {
52        }
53        CoreConstants.DefaultDecimalDigits = 2;
54        CoreConstants.DefaultDecimalSeparator = '.';
55        CoreConstants.ProcedureCodeValidationRegExp = '/^99999$/|^[d|D|0](?:[0-9]{4,5})$';
56        CoreConstants.PhoneCountryCode = "+1";
57        CoreConstants.PhoneInputMask = '(♠♠♠)♠♠♠-♠♠♠♠';
58        return CoreConstants;
59    }());
60    Constants.CoreConstants = CoreConstants;
61})(Constants || (Constants = {}));
62//# sourceMappingURL=Constants.js.map;
63var Layout;
64(function (Layout) {
65    var width = {
66        Desktop: 1220,
67        TabletLandscape: 981,
68        TabletPortrait: 768
69    };
70    function viewportWidth() {
71        return Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
72    }
73    Layout.viewportWidth = viewportWidth;
74    function isDesktop() {
75        return viewportWidth() >= width.Desktop;
76    }
77    Layout.isDesktop = isDesktop;
78    function isTabletLandscapeOrDesktop() {
79        return viewportWidth() >= width.TabletLandscape;
80    }
81    Layout.isTabletLandscapeOrDesktop = isTabletLandscapeOrDesktop;
82    function isTabletOrMobile() {
83        return viewportWidth() < width.Desktop;
84    }
85    Layout.isTabletOrMobile = isTabletOrMobile;
86    function isTabletPortraitOrMobile() {
87        return viewportWidth() < width.TabletLandscape;
88    }
89    Layout.isTabletPortraitOrMobile = isTabletPortraitOrMobile;
90    function isTablet() {
91        return viewportWidth() >= width.TabletPortrait && window.innerWidth < width.Desktop;
92    }
93    Layout.isTablet = isTablet;
94    function isTabletLandscape() {
95        return viewportWidth() >= width.TabletLandscape && window.innerWidth < width.Desktop;
96    }
97    Layout.isTabletLandscape = isTabletLandscape;
98    function isTabletPortrait() {
99        return viewportWidth() >= width.TabletPortrait && window.innerWidth < width.TabletLandscape;
100    }
101    Layout.isTabletPortrait = isTabletPortrait;
102    function isMobile() {
103        return viewportWidth() < width.TabletPortrait;
104    }
105    Layout.isMobile = isMobile;
106    function IsMobilePotraitOrLandscape() {
107        var isLandscape = window.matchMedia("(orientation: landscape)").matches;
108        return isMobile() || (viewportWidth() < width.TabletLandscape && isLandscape);
109    }
110    Layout.IsMobilePotraitOrLandscape = IsMobilePotraitOrLandscape;
111    function isMobileDevice() {
112        if (navigator.userAgent.match(/Android/i) ||
113            navigator.userAgent.match(/iPhone/i) ||
114            navigator.userAgent.match(/Mobi/i)) {
115            return true;
116        }
117        return false;
118    }
119    Layout.isMobileDevice = isMobileDevice;
120    function isTabletOrMobileDevice() {
121        if (navigator.userAgent.match(/Android/i) ||
122            navigator.userAgent.match(/webOS/i) ||
123            navigator.userAgent.match(/iPhone/i) ||
124            navigator.userAgent.match(/iPad/i) ||
125            navigator.userAgent.match(/iPod/i) ||
126            navigator.userAgent.match(/BlackBerry/i) ||
127            navigator.userAgent.match(/Windows Phone/i)) {
128            return true;
129        }
130        return false;
131    }
132    Layout.isTabletOrMobileDevice = isTabletOrMobileDevice;
133    function isPrintView() {
134        var printView = Core.Uri.getQuerystringValue('p');
135        if (printView && printView === "1") {
136            return true;
137        }
138        return false;
139    }
140    Layout.isPrintView = isPrintView;
141    function scrollToElement(selector) {
142        var element = document.querySelector(selector);
143        if (element) {
144            window.scrollTo({
145                behavior: 'smooth',
146                top: element.getBoundingClientRect().top - document.body.getBoundingClientRect().top,
147            });
148            if (!element.hasAttribute('tabindex')) {
149                element.setAttribute('tabindex', '0');
150            }
151            setTimeout(function () {
152                element.focus();
153                window.location.hash = selector.substring(1);
154            }, 500);
155        }
156    }
157    Layout.scrollToElement = scrollToElement;
158    Layout.pageBodyBlur = (function () {
159        function set() {
160            $.dataJs("pageBodyContent").addClass("blurBody");
161        }
162        function unset() {
163            $.dataJs("pageBodyContent").removeClass("blurBody");
164        }
165        return {
166            set: set,
167            unset: unset
168        };
169    })();
170    Layout.modalOverlayGray = (function () {
171        function set() {
172            $.dataJs("modalOverlay").addClass("modal-overlay-gray");
173        }
174        function unset() {
175            $.dataJs("modalOverlay").removeClass("modal-overlay-gray");
176        }
177        return {
178            set: set,
179            unset: unset
180        };
181    })();
182    Layout.mobileNoScroll = (function () {
183        return {
184            set: function () { jQuery("body").addClass("mobileNoScroll"); },
185            unset: function () { jQuery("body").removeClass("mobileNoScroll"); }
186        };
187    })();
188})(Layout || (Layout = {}));
189Smile.Layout = Layout;
190//# sourceMappingURL=Layout.js.map;
191var Core;
192(function (Core) {
193    var ClientAction;
194    (function (ClientAction) {
195        ClientAction[ClientAction["GET_START_QUOTE"] = 0] = "GET_START_QUOTE";
196        ClientAction[ClientAction["GET_MEMBER_COMPANY_INFO"] = 1] = "GET_MEMBER_COMPANY_INFO";
197        ClientAction[ClientAction["SUBMIT_MEMBER_COMPANY_INFO"] = 2] = "SUBMIT_MEMBER_COMPANY_INFO";
198        ClientAction[ClientAction["GET_WHOS_COVERED"] = 3] = "GET_WHOS_COVERED";
199        ClientAction[ClientAction["SUBMIT_WHOS_COVERED"] = 4] = "SUBMIT_WHOS_COVERED";
200        ClientAction[ClientAction["GET_QUOTE_PLANS"] = 5] = "GET_QUOTE_PLANS";
201        ClientAction[ClientAction["SUBMIT_QUOTE_PLANS"] = 6] = "SUBMIT_QUOTE_PLANS";
202        ClientAction[ClientAction["CART_PRODUCT_ADD"] = 7] = "CART_PRODUCT_ADD";
203        ClientAction[ClientAction["GET_APPLICANT_INFORMATION"] = 8] = "GET_APPLICANT_INFORMATION";
204        ClientAction[ClientAction["SUBMIT_APPLICANT_INFORMATION"] = 9] = "SUBMIT_APPLICANT_INFORMATION";
205        ClientAction[ClientAction["GET_REVIEW"] = 10] = "GET_REVIEW";
206        ClientAction[ClientAction["GET_CHECKOUT_DETAILS"] = 11] = "GET_CHECKOUT_DETAILS";
207        ClientAction[ClientAction["CART_PURCHASE"] = 12] = "CART_PURCHASE";
208        ClientAction[ClientAction["GET_ORDER_DETAILS"] = 13] = "GET_ORDER_DETAILS";
209    })(ClientAction = Core.ClientAction || (Core.ClientAction = {}));
210    var AccountRestrictionType;
211    (function (AccountRestrictionType) {
212        AccountRestrictionType[AccountRestrictionType["EmailPattern"] = 0] = "EmailPattern";
213        AccountRestrictionType[AccountRestrictionType["UsernamePattern"] = 1] = "UsernamePattern";
214    })(AccountRestrictionType = Core.AccountRestrictionType || (Core.AccountRestrictionType = {}));
215    var CoverageStatus;
216    (function (CoverageStatus) {
217        CoverageStatus[CoverageStatus["Undefined"] = 0] = "Undefined";
218        CoverageStatus[CoverageStatus["CoverageOk"] = 1] = "CoverageOk";
219        CoverageStatus[CoverageStatus["IsFutureCoverage"] = 2] = "IsFutureCoverage";
220        CoverageStatus[CoverageStatus["IsTermed"] = 4] = "IsTermed";
221        CoverageStatus[CoverageStatus["IsManagedCare"] = 8] = "IsManagedCare";
222    })(CoverageStatus = Core.CoverageStatus || (Core.CoverageStatus = {}));
223    var PermissionLevel;
224    (function (PermissionLevel) {
225        PermissionLevel[PermissionLevel["Read"] = 0] = "Read";
226        PermissionLevel[PermissionLevel["ReadWrite"] = 1] = "ReadWrite";
227        PermissionLevel[PermissionLevel["None"] = 2] = "None";
228        PermissionLevel[PermissionLevel["Deny"] = 3] = "Deny";
229    })(PermissionLevel = Core.PermissionLevel || (Core.PermissionLevel = {}));
230    var UserTypeMapping;
231    (function (UserTypeMapping) {
232        UserTypeMapping[UserTypeMapping["Unknown"] = 0] = "Unknown";
233        UserTypeMapping[UserTypeMapping["Patient"] = 1] = "Patient";
234        UserTypeMapping[UserTypeMapping["Provider"] = 2] = "Provider";
235        UserTypeMapping[UserTypeMapping["Producer"] = 3] = "Producer";
236        UserTypeMapping[UserTypeMapping["Employer"] = 4] = "Employer";
237    })(UserTypeMapping = Core.UserTypeMapping || (Core.UserTypeMapping = {}));
238    var WorkflowErrorType;
239    (function (WorkflowErrorType) {
240        WorkflowErrorType[WorkflowErrorType["Standard"] = 0] = "Standard";
241        WorkflowErrorType[WorkflowErrorType["Workflow"] = 1] = "Workflow";
242    })(WorkflowErrorType = Core.WorkflowErrorType || (Core.WorkflowErrorType = {}));
243    var SignInType;
244    (function (SignInType) {
245        SignInType[SignInType["Standard"] = 0] = "Standard";
246        SignInType[SignInType["Sso"] = 1] = "Sso";
247    })(SignInType = Core.SignInType || (Core.SignInType = {}));
248    var MfaMethod;
249    (function (MfaMethod) {
250        MfaMethod[MfaMethod["Unknown"] = 0] = "Unknown";
251        MfaMethod[MfaMethod["Sms"] = 1] = "Sms";
252        MfaMethod[MfaMethod["Email"] = 2] = "Email";
253    })(MfaMethod = Core.MfaMethod || (Core.MfaMethod = {}));
254    function getCookieDomain() {
255        return "." + window.location.hostname.split('.').slice(-2).join('.');
256    }
257    Core.getCookieDomain = getCookieDomain;
258    function isSecureConnection() {
259        return document.location.protocol.toUpperCase() === "https:".toUpperCase();
260    }
261    Core.isSecureConnection = isSecureConnection;
262    function setCookie(name, value, expires, domain) {
263        var key = name || '';
264        if (key === '') {
265            console.error('Invalid cookie name');
266            return;
267        }
268        var options = {
269            secure: isSecureConnection(),
270            domain: domain,
271            expires: expires
272        };
273        Cookies.set(key, value, options);
274    }
275    Core.setCookie = setCookie;
276    var userCookie = "user_type_site_default";
277    function getUserCookie() {
278        return Cookies.get(userCookie);
279    }
280    Core.getUserCookie = getUserCookie;
281    function getSubscriptionGidCookie() {
282        return Cookies.get("dp_fps");
283    }
284    Core.getSubscriptionGidCookie = getSubscriptionGidCookie;
285    function setUserCookie(value) {
286        setCookie(userCookie, value.toLowerCase(), 365, getCookieDomain());
287    }
288    Core.setUserCookie = setUserCookie;
289    var saiCookie = "s_a_i";
290    function getSaiCookie() {
291        return Cookies.get(saiCookie);
292    }
293    Core.getSaiCookie = getSaiCookie;
294    function clearSaiCookie() {
295        var options = {
296            domain: getCookieDomain()
297        };
298        Cookies.remove(saiCookie, options);
299    }
300    Core.clearSaiCookie = clearSaiCookie;
301    function jsonHasProperties(object, property) {
302        if (object) {
303            if (Object.hasOwnProperty.call(object, property)) {
304                return true;
305            }
306        }
307        return false;
308    }
309    Core.jsonHasProperties = jsonHasProperties;
310    ;
311    function arrayContains(array, obj) {
312        var i = array.length;
313        while (i--) {
314            if (array[i] === obj) {
315                return true;
316            }
317        }
318        return false;
319    }
320    Core.arrayContains = arrayContains;
321    ;
322    function navigateTo(url) {
323        window.location.href = url;
324    }
325    Core.navigateTo = navigateTo;
326    Core.Uri = (function () {
327        function toAbsolute(url) {
328            return window.location.origin + url;
329        }
330        function getSearchParameters(delimiter) {
331            if (delimiter === "?") {
332                return new URLSearchParams(window.location.search);
333            }
334            else {
335                return new URLSearchParams(window.location.hash.replace('#', ''));
336            }
337        }
338        function getQuerystringValues(name) {
339            var searchParams = getSearchParameters("?");
340            return searchParams.getAll(name);
341        }
342        function getQuerystringValue(name) {
343            var _a;
344            var searchParams = getSearchParameters("?");
345            return (_a = searchParams.get(name)) !== null && _a !== void 0 ? _a : undefined;
346        }
347        function getHashQuerystringValue(name) {
348            var _a;
349            var searchParams = getSearchParameters("#");
350            return (_a = searchParams.get(name)) !== null && _a !== void 0 ? _a : undefined;
351        }
352        function buildFromJson(json, url, delimiter) {
353            url += delimiter;
354            var i = 0;
355            for (var prop in json) {
356                if (i++ > 0) {
357                    url += '&';
358                }
359                url += prop + '=' + encodeURIComponent(json[prop]);
360            }
361            return url;
362        }
363        ;
364        function addPrintParam(url) {
365            var params = url.search;
366            if (params) {
367                params += '&p=1';
368            }
369            else {
370                params = '?p=1';
371            }
372            return url.pathname + params + url.hash;
373        }
374        ;
375        function addUrlParam(url, paramKeyValue) {
376            var params = url.search;
377            if (params) {
378                params += '&' + paramKeyValue;
379            }
380            else {
381                params = '?' + paramKeyValue;
382            }
383            return url.pathname + params + url.hash;
384        }
385        ;
386        function addFragment(url, newFragment) {
387            var fragmentIndex = url.indexOf('#');
388            var urlPath = url;
389            if (fragmentIndex !== -1) {
390                urlPath = url.substring(0, fragmentIndex);
391            }
392            return urlPath + newFragment;
393        }
394        ;
395        return {
396            toAbsolute: toAbsolute,
397            getSearchParameters: getSearchParameters,
398            getQuerystringValue: getQuerystringValue,
399            getHashQuerystringValue: getHashQuerystringValue,
400            fromJSON: buildFromJson,
401            addPrintParam: addPrintParam,
402            addUrlParam: addUrlParam,
403            addFragment: addFragment,
404            getQuerystringValues: getQuerystringValues
405        };
406    })();
407    var UserType = (function () {
408        function UserType() {
409        }
410        UserType.getFromIndex = function (index) {
411            switch (index) {
412                case 0:
413                    return Core.UserType.Patient;
414                case 1:
415                    return Core.UserType.Provider;
416                case 2:
417                    return Core.UserType.Producer;
418                case 3:
419                    return Core.UserType.Employer;
420                default:
421                    return Core.UserType.Patient;
422            }
423        };
424        UserType.Patient = "Patient";
425        UserType.Provider = "Provider";
426        UserType.Producer = "Producer";
427        UserType.Employer = "Employer";
428        return UserType;
429    }());
430    Core.UserType = UserType;
431    var DateFormat = (function () {
432        function DateFormat() {
433        }
434        DateFormat.ShortDateStandard = "mm/dd/yy";
435        DateFormat.ShortDateFullYear = "MM/DD/YYYY";
436        DateFormat.MediumDateFullYear = "MM/DD/YYYY HH:mm";
437        return DateFormat;
438    }());
439    Core.DateFormat = DateFormat;
440    function mapObjects(heavyObject, lightObject) {
441        for (var p in heavyObject) {
442            if (!lightObject.hasOwnProperty(p))
443                continue;
444            if (heavyObject[p] instanceof Array && lightObject[p] instanceof Array) {
445                for (var i = 0; i <= heavyObject[p].length; i++) {
446                    if (lightObject[p].length > 0) {
447                        this.mapObjects(heavyObject[p][i], lightObject[p][i]);
448                    }
449                }
450            }
451            else if (typeof (heavyObject[p]) === "object" && typeof (lightObject[p]) === "object") {
452                this.mapObjects(heavyObject[p], lightObject[p]);
453            }
454            else {
455                lightObject[p] = heavyObject[p];
456            }
457        }
458    }
459    Core.mapObjects = mapObjects;
460    function downloadBase64StringFile(base64StringFile, fileName, contentType) {
461        var nav = window.navigator;
462        if (nav && nav.msSaveBlob) {
463            var byteCharacters = atob(base64StringFile);
464            var byteNumbers = new Array(byteCharacters.length);
465            for (var i = 0; i < byteCharacters.length; i++) {
466                byteNumbers[i] = byteCharacters.charCodeAt(i);
467            }
468            var byteArray = new Uint8Array(byteNumbers);
469            var blob = new Blob([byteArray], { type: contentType });
470            nav.msSaveOrOpenBlob(blob, fileName);
471            return;
472        }
473        else {
474            var a = window.document.createElement('a');
475            a.href = "data:text/plain;base64," + base64StringFile;
476            a.download = fileName;
477            a.download = fileName;
478            document.body.appendChild(a);
479            a.click();
480            a.remove();
481        }
482    }
483    Core.downloadBase64StringFile = downloadBase64StringFile;
484    function getDateFromMMDDYYYYString(dateString) {
485        if (!dateString) {
486            return null;
487        }
488        var dateParts = dateString.split("/");
489        if (dateParts.length === 3) {
490            return moment.utc(dateString, 'MM/DD/YYYY').toDate();
491        }
492        return null;
493    }
494    Core.getDateFromMMDDYYYYString = getDateFromMMDDYYYYString;
495    function formatDate(date, dateFormat) {
496        if (dateFormat === void 0) { dateFormat = DateFormat.MediumDateFullYear; }
497        if (!date) {
498            return '';
499        }
500        return moment(String(date)).format(dateFormat);
501    }
502    Core.formatDate = formatDate;
503    function getDateFromMMDDYYYYStringNoTimeZone(dateString) {
504        if (!dateString)
505            return null;
506        var parts = dateString.split('/');
507        if (parts.length !== 3)
508            return null;
509        var month = parseInt(parts[0], 10) - 1;
510        var day = parseInt(parts[1], 10);
511        var year = parseInt(parts[2], 10);
512        return new Date(year, month, day);
513    }
514    Core.getDateFromMMDDYYYYStringNoTimeZone = getDateFromMMDDYYYYStringNoTimeZone;
515    function formatDateToDateOnly(dateString) {
516        if (!dateString)
517            return null;
518        var parts = dateString.split('/');
519        if (parts.length !== 3)
520            return null;
521        var month = parts[0];
522        var day = parts[1];
523        var year = parts[2];
524        if (month.length === 1) {
525            month = "0" + month;
526        }
527        if (day.length === 1) {
528            day = "0" + day;
529        }
530        return "".concat(year, "-").concat(month, "-").concat(day);
531    }
532    Core.formatDateToDateOnly = formatDateToDateOnly;
533})(Core || (Core = {}));
534Smile.Core || (Smile.Core = Core);
535//# sourceMappingURL=Core.js.map;
536window.addEventListener('load', function () {
537    document.addEventListener('keyup', function (e) {
538        if (e.code === 'Tab' && document.activeElement) {
539            document.activeElement.classList.add("is-focused-by-tab");
540        }
541        else if ((e.code === 'Space' || e.code === 'Enter' || e.code === 'Escape') &&
542            document.activeElement &&
543            (document.activeElement.getAttribute('role') === 'combobox')) {
544            document.activeElement.classList.add('is-focused-by-tab');
545        }
546    });
547    document.addEventListener('focusout', function (event) {
548        var _a;
549        var element = event.target;
550        (_a = element === null || element === void 0 ? void 0 : element.classList) === null || _a === void 0 ? void 0 : _a.remove('is-focused-by-tab');
551    });
552    document.querySelectorAll("a:not([href])").forEach(function (el) { return el.setAttribute("href", "javascript:void(0);"); });
553});
554//# sourceMappingURL=AccessibilityEvents.js.map;
555
556Smile.createNamespace(Smile, 'Smile.Core.Utils');
557Smile.Core.Utils = (function ($) {
558
559  /* Creates jump to dropdown navigation
560  ///		containerSelector	- <select> element where nodes are appended to
561  ///		areaSelector			- search only for elements within specific area
562  ///		elementSelector		- search for specific tags defined here
563
564  //	Any element found through selector should have an id attribute to enable navigation */
565  var createJumpToNavigation =
566    function (containerSelector, areaSelector, elementSelector, sortAlphabetically) {
567      setTimeout(() => {
568        generateJumpToNavigation(containerSelector, areaSelector, elementSelector, sortAlphabetically)
569
570      }, 3000);
571
572    }
573
574  var generateJumpToNavigation =
575    function (containerSelector, areaSelector, elementSelector, sortAlphabetically) {
576      var $selectList = $(containerSelector);
577      // empty to prevent on-page update caused old items
578
579      $selectList.find("option").not("#defaultOption").remove();
580
581      var options = [];
582
583      // append all elements defined by 'elementSelector' contained in 'areaSelector' to 'containerSelector'
584      $(areaSelector).each(function (index) {
585        var element = $(this);
586        var inlineValue = element.find(elementSelector).attr('data-content');
587
588        var result = element.find(elementSelector);
589
590        if (result.length === 0) {
591          var children = element.children();
592
593          for (var i = 0; i < children.length; i++) {
594            var child = $(children[i]);
595
596            result = child.find(elementSelector);
597
598            if (result.length > 0) {
599              break;
600            }
601          }
602        }
603
604        var displayValue = (($.trim(inlineValue).length > 0)
605          ? inlineValue
606          : result.extractParentTextOnly());
607
608        // UI Rules may hide some elements - Only add to list if not hidden.
609        if (!element.isHidden()) {
610          options.push({
611            id: result.attr('id'),
612            text: displayValue
613          });
614        }
615      });
616
617      // Sort alphabetically by display text (case-insensitive)
618      if (sortAlphabetically) {
619        options.sort((a, b) => a.text.toLowerCase().localeCompare(b.text.toLowerCase()));
620      }
621
622      // Append sorted options
623      options.forEach(opt => {
624        $selectList.append('<option value="' + opt.id + '">' + opt.text + '</option>');
625      });
626      // define animation when onchange occurs
627      $selectList.change(function () {
628        const selectedId = $(this).val();
629
630        $('#' + selectedId).attr('tabindex', '-1');
631        $('#' + selectedId).on('blur', function () {
632          $(this).removeAttr('tabindex');
633        })
634        Smile.Layout.scrollToElement('#' + selectedId);
635      });
636    }
637
638  // Creates bar graph
639  var generateBarGraph = function (wrapper) {
640    // Set width of bar to percent of max value
641    $(wrapper + ' .bar').each(function (index, el) {
642      var bar = $(this),
643        percentage = bar.data('percentage');
644      // Set Width & Add Class
645      bar.width(percentage + '%');
646      bar.addClass('in');
647    });
648  }
649
650  // Opens the tooltip
651  var tooltipOpen = function (selector) {
652
653    var processMobileTooltip = function (element, closeOnly) {
654      if (Smile.Layout.isMobile()) {
655        if (element.hasClass('jqToolTipMobileOpen')) {
656
657          element.parent().find('.tooltipInner').css({
658            'display': 'none'
659          });
660
661          if (element.parent().parent().hasClass('tooltip__mypref_mobile')) {
662            element.parent().css({
663              'margin-left': '0',
664              'top': '3px',
665              'padding-left': '0'
666            });
667          }
668
669          element.find("img.tootltip-icon").attr('src', element.attr('data-orig-src'));
670          element.removeClass('jqToolTipMobileOpen');
671        } else if (!closeOnly) {
672          if (element.parent().parent().hasClass('tooltip__mypref_mobile')) {
673
674            var prefHeight = element.parent().parent().parent().find('.leftBox').height();
675            element.parent().find('.tooltipInner').css({
676              'padding-top': prefHeight,
677              'margin-left': '0'
678            });
679
680            element.parent().css({
681              'margin-left': '-195px',
682              'top': '3px'
683            });
684          }
685
686          element.addClass('jqToolTipMobileOpen');
687          element.attr('data-orig-src', $(".tooltip .jqToolTipMobileOpen img").attr('src'));
688          $(".tooltip .jqToolTipMobileOpen img").attr('src', '/Assets/images/smile/tooltip-close-mobile.svg');
689
690          element.css({ 'margin-bottom': element.parent().find('.tooltipInner').height() + 30 });
691        }
692      }
693    };
694
695    //
696    // Close all open tooltips
697    // 
698
699    // close any open tooltip - ignore the current tooltip
700    $(".tooltip .closeTooltip").not(selector).parent().css({
701      'display': 'none'
702    });
703
704    // handle mobile version of the tooltip - ignore the current tooltip
705    $(".tooltip a").not(selector).each(function (i, e) {
706      processMobileTooltip($(e), true);
707    });
708
709    //
710    // Open the selected tooltip
711    //
712    var element = $(selector);
713    element.parent().find('.tooltipInner').css({
714      'display': 'block'
715    });
716    processMobileTooltip(element, false);
717
718  }
719
720  // Sets current jumpto option
721  var setJumpToOption = function (containerSelector, optionValue, optionText) {
722    $('select' + containerSelector + " option[value=" + optionValue + "]").text(optionText);
723  }
724
725  // Closes the tooltip
726  var tooltipClose = function (selector) {
727    $(selector).parent().css({
728      'display': 'none'
729    });
730  }
731
732
733  // Attaches chevron to its events
734  var chevronAttach = function (animationSpeed = 1000) {
735    /*
736    Use off to remove the event handler and add again as this is called from multiple places and leads to duplicate event handlers being attached. 
737    Using event.namespace, e.g. click.chevronattach to ensure we are only removing this event before adding the same - see https://api.jquery.com/event.namespace/
738    */
739
740    $(".chevronHeader").each(function () {
741      var $expandHeader = $(this);
742      var $chevronBtn = $expandHeader.find('button');
743
744      if ($chevronBtn.length === 0) {
745        $chevronBtn = $expandHeader;
746      }
747
748      $chevronBtn.off('click keydown');
749
750      if (Smile.Layout.isMobile() || Smile.Layout.isTabletPortrait()) {
751        $chevronBtn.on('click', function (e) {
752          e.stopPropagation();
753          chevronEvents(e, $expandHeader);
754        });
755
756        $chevronBtn.on('keydown', function (e) {
757          if (e.key === 'Enter') {
758            e.stopPropagation();
759            e.preventDefault();
760            chevronEvents(e, $expandHeader);
761          }
762        });
763      } else {
764        $chevronBtn.removeAttr("aria-expanded");
765      }
766    });
767  }
768
769  var chevronEvents = function (e, $chevronHeader, animationSpeed) {
770    if (
771      e.type === 'click' ||
772      e.key === 'Enter' ||
773      e.key === ' '
774    ) {
775      var $chevron = $chevronHeader.find('.chevron');
776      var $chevronBtn = $chevronHeader.find('button');
777
778      if ($chevronBtn.length === 0) {
779        $chevronBtn = $chevronHeader;
780      }
781
782      var expanded = $chevronBtn.attr('aria-expanded') === 'true'
783      $chevronBtn.attr('aria-expanded', String(!expanded));
784
785      if ($chevron.length) {
786        $chevron.toggleClass('closedAccord');
787
788        var $nextAnimate;
789        if ($chevronHeader.parent().children("div").next().first().is('a')) {
790          $nextAnimate = $chevronHeader.parent().parent().children("div").next().first();
791        } else {
792          $nextAnimate = $chevronHeader.parent().children("div").next().first();
793        }
794
795        $nextAnimate.animate({
796          height: "toggle"
797        }, animationSpeed);
798      }
799    }
800  }
801
802  var chevronsHandleResize = function () {
803    window.addEventListener("resize", () => {
804      $(".chevronHeader").each(function () {
805        var $chevronHeader = $(this);
806        var $chevronBtn = $chevronHeader.find('button');
807
808        var expanded = $chevronBtn.attr("aria-expanded") == "true";
809        window.setTimeout(function () {
810          var desktop = Smile.Layout.isDesktop();
811          // resize from mobile to desktop when panels already expanded
812          // remove attributes to make panels static
813          if ((desktop || Smile.Layout.isTabletLandscape()) && expanded) {
814            $chevronBtn.removeAttr("aria-expanded");
815            $chevronBtn.unbind("click");
816          }
817
818          // resize from mobile to desktop when panels collapsed
819          // click to expand first, then remove attributes to make panels static
820          else if ((desktop || Smile.Layout.isTabletLandscape()) && !expanded) {
821            $chevronBtn.click();
822            $chevronBtn.removeAttr("aria-expanded");
823            $chevronBtn.unbind("click");
824          }
825
826          // resize to mobile or tablet portrait, expanded (should) will always be null
827          // add attributes to make panels interactive
828          else if (!desktop || !Smile.Layout.isTabletLandscape()) {
829            $chevronBtn.attr("aria-expanded", "true");
830            $chevronBtn.off('click keydown');
831            $chevronBtn.on('click keydown', function (e) { chevronEvents(e, $chevronHeader) });
832          }
833        }, 50);
834      })
835    }, false);
836  }
837
838  var tooltipAttach = function () {
839    $(".tooltip a").unbind('click').on('click',
840      function () {
841        Smile.Utils.TooltipOpen(this);
842      });
843
844    $(".tooltip .closeTooltip").unbind('click').on('click',
845      function () {
846        Smile.Utils.TooltipClose(this);
847      });
848  };
849
850  var hideChildElements = function (jQueryElement) {
851    jQueryElement.children().not('script, link, meta, style').hide();
852  }
853
854  var showChildElements = function (jQueryElement) {
855    jQueryElement.children().not('script, link, meta, style').show();
856  }
857
858  var setTabbableList = function (elementSelector) {
859    var $elements = $.dataJs(elementSelector);
860    $elements.keyup((evt) => {
861      var key = evt.key;
862      evt.preventDefault();
863      if (key === ' ' || key === 'Enter') {
864        evt.currentTarget.click();
865      }
866    });
867    $elements[0].focus();
868  }
869  var toCamelCase = function (object) {
870    if (typeof object === 'undefined')
871      return object;
872
873    if (object instanceof Array)
874      return object.map(value => value instanceof Object && value !== null ? toCamelCase(value) : value);
875
876    let newObject = {};
877    for (key in object) {
878      if (object.hasOwnProperty(key)) {
879        let newKey = (key.charAt(0).toLowerCase() + key.slice(1) || key).toString();
880        newObject[newKey] = (object[key] instanceof Object || object[key] instanceof Array) && object[key] !== null
881          ? toCamelCase(object[key]) : object[key];
882      }
883    }
884    return newObject;
885  }
886
887  return {
888    SetJumpToOption: setJumpToOption,
889    CreateJumpToNavigation: createJumpToNavigation,
890    GenerateJumpToNavigation: generateJumpToNavigation,
891    GenerateBarGraph: generateBarGraph,
892    TooltipOpen: tooltipOpen,
893    TooltipClose: tooltipClose,
894    ChevronAttach: chevronAttach,
895    ChevronsHandleResize: chevronsHandleResize,
896    TooltipAttach: tooltipAttach,
897    HideChildElements: hideChildElements,
898    ShowChildElements: showChildElements,
899    SetTabbableList: setTabbableList,
900    ToCamelCase: toCamelCase
901  };
902})(jQuery);;
903var Events;
904(function (Events) {
905    var Action = (function () {
906        function Action() {
907        }
908        Action.AjaxRequestSent = "AjaxRequestSent";
909        Action.ShowErrorModal = "ShowErrorModal";
910        Action.ShowUnauthorisedModal = "ShowUnauthorisedModal";
911        Action.WorkflowErrorOccurred = "WorkflowErrorOccurred";
912        Action.ShowWorkflowErrorModal = "ShowWorkflowErrorModal";
913        Action.ShowLoadingDialog = "ShowLoadingDialog";
914        Action.HideLoadingDialog = "HideLoadingDialog";
915        Action.CloseModal = "CloseModal";
916        Action.FamilyMemberSelected = "FamilyMemberSelected";
917        Action.FamilyPickerHideFamilyButton = "FamilyPickerHideFamilyButton";
918        Action.FamilyPickerSetTitle = "FamilyPickerSetTitle";
919        Action.SubscriptionSelected = "SubscriptionSelected";
920        Action.SubscriptionSelectedHeaderLogo = "SubscriptionSelectedHeaderLogo";
921        Action.SubscriptionClaimsLoaded = "SubscriptionClaimsLoaded";
922        Action.PatientNetworkSummaryPanelLoaded = "PatientNetworkSummaryPanelLoaded";
923        Action.ComponentAJAXDataLoaded = "ComponentAJAXDataLoaded";
924        Action.CoreAJAXDataPreLoad = "CoreAJAXDataPreLoad";
925        Action.CoreAJAXDataPostLoad = "CoreAJAXDataPostLoad";
926        Action.NavigateToSignIn = "NavigateToSignIn";
927        Action.SignOut = "SignOut";
928        Action.ReCaptchaSubmit = "ReCaptchaSubmit";
929        Action.ReCaptchaExpired = "ReCaptchaExpired";
930        Action.ProviderBenefitSearchSubmit = "ProviderBenefitSearchSubmit";
931        Action.ProviderBenefitDetailsLoaded = "ProviderBenefitDetailsLoaded";
932        Action.ProviderBenefitDeductiblesLoaded = "ProviderBenefitDeductiblesLoaded";
933        Action.ProviderBenefitNetworkParticipationLoaded = "ProviderBenefitNetworkParticipationLoaded";
934        Action.ProviderServiceOfficePickerSelected = "ProviderServiceOfficePickerSelected";
935        Action.ProviderServiceOfficePickerInitialized = "ProviderServiceOfficePickerInitialized";
936        Action.ProviderLocationPickerInitialised = "ProviderLocationPickerInitialised";
937        Action.ProviderLocationPickerSelected = "ProviderLocationPickerSelected";
938        Action.ProviderProcedureLookupLoaded = "ProviderProcedureLookupLoaded";
939        Action.ProviderProcedureLookupInitiated = "ProviderProcedureLookupInitiated";
940        Action.ProviderProcedureLookupCompleted = "ProviderProcedureLookupCompleted";
941        Action.ResultsPaged = "ResultsPaged";
942        Action.AJAXRulesProcessed = "AJAXRulesProcessed";
943        Action.CoreAJAXRegisterHeader = "CoreAJAXRegisterHeader";
944        Action.UIRuleIdentifyFeatureIdComponent = "UIRuleIdentifyFeatureIdComponent";
945        Action.AnalyticsTracking = "AnalyticsTracking";
946        Action.PublicSessionTimeout = "PublicSessionTimeout";
947        Action.PublicSessionRefresh = "PublicSessionRefresh";
948        Action.ProviderPatientPrimaryCareDentistUpdate = "ProviderPatientPrimaryCareDentistUpdate";
949        Action.UISubscriptionRulesProcessed = "UISubscriptionRulesProcessed";
950        Action.FeatureUnavailable = "FeatureUnavailable";
951        Action.PatientRegistrationStatusValidated = "PatientRegistrationStatusValidated";
952        Action.BtlEvent = "BtlDateResponseEvent";
953        Action.PatientSubscriptionsPickerLoaded = "PatientSubscriptionsPickerLoaded";
954        Action.PlatformMessagesGetLoaded = "PlatformMessagesGetLoaded";
955        Action.GoogleMapsApiLoaded = "GoogleMapsApiLoaded";
956        Action.DashboardLoadedEvent = "DashboardLoaded";
957        return Action;
958    }());
959    Events.Action = Action;
960    var EventController = (function () {
961        function EventController() {
962            this.topics = {};
963            this.pastEvents = {};
964            this.props = this.topics.hasOwnProperty;
965        }
966        EventController.prototype.fire = function (eventId, data) {
967            this.pastEvents[eventId] = data;
968            if (!this.props.call(this.topics, eventId)) {
969                return;
970            }
971            this.topics[eventId].forEach(function (item) {
972                item(data !== undefined ? data : {});
973            });
974        };
975        EventController.prototype.subscribe = function (eventId, listener) {
976            var _this = this;
977            if (!this.props.call(this.topics, eventId))
978                this.topics[eventId] = [];
979            if (this.props.call(this.pastEvents, eventId))
980                listener(this.pastEvents[eventId]);
981            var index = this.topics[eventId].push(listener) - 1;
982            return {
983                remove: function () {
984                    delete _this.topics[eventId][index];
985                }
986            };
987        };
988        return EventController;
989    }());
990    Events.EventController = EventController;
991})(Events || (Events = {}));
992Smile.createNamespace(Smile, "Smile.Events");
993Smile.Events = new Events.EventController();
994//# sourceMappingURL=Events.js.map;
995var Ajax;
996(function (Ajax) {
997    var HttpService = (function () {
998        function HttpService() {
999        }
1000        HttpService.prototype.getJson = function (url, data, showLoading, tokenHeaderValue, antiForgeryToken) {
1001            if (data) {
1002                url = url + "?" + this.getQueryStringParameters(data);
1003            }
1004            var tokenAntiForgery = "";
1005            var aftField = $.dataJs("antiForgeryTokenInput").find("[name='__RequestVerificationToken']");
1006            if (aftField.length) {
1007                tokenAntiForgery = aftField.val().toString();
1008            }
1009            var options = {
1010                url: url,
1011                method: "GET",
1012                showLoading: showLoading,
1013                tokenHeaderValue: tokenHeaderValue,
1014                antiForgeryToken: tokenAntiForgery
1015            };
1016            return this.executeAjaxRequest(options);
1017        };
1018        HttpService.prototype.postJson = function (url, data, tokenHeaderValue, showLoading) {
1019            var tokenAntiForgery = $.dataJs("antiForgeryTokenInput").find("[name='__RequestVerificationToken']").val().toString();
1020            var options = {
1021                antiForgeryToken: tokenAntiForgery,
1022                url: url,
1023                data: JSON.stringify(data),
1024                contentType: "application/json; charset=utf-8",
1025                tokenHeaderValue: tokenHeaderValue,
1026                showLoading: showLoading !== undefined ? showLoading : true,
1027            };
1028            return this.executeAjaxRequest(options);
1029        };
1030        HttpService.prototype.downloadFile = function (url, fileName, onLoadEnd, onError) {
1031            var _this = this;
1032            if (fileName === void 0) { fileName = null; }
1033            Smile.Events.fire(Events.Action.ShowLoadingDialog, null);
1034            var req = new XMLHttpRequest();
1035            req.open("GET", url, true);
1036            req.responseType = "blob";
1037            req.send();
1038            req.onload = function (event) {
1039                if (req.status !== 200) {
1040                    Smile.Modals.ErrorDialog.show("Error downloading document", null);
1041                    if (onError)
1042                        onError();
1043                    return;
1044                }
1045                var blob = req.response;
1046                if (!fileName) {
1047                    fileName = _this.getFileNameFromHeader(req);
1048                }
1049                var nav = window.navigator;
1050                if (nav && nav.msSaveOrOpenBlob) {
1051                    nav.msSaveOrOpenBlob(blob, fileName);
1052                    return;
1053                }
1054                var link = document.createElement('a');
1055                link.href = window.URL.createObjectURL(blob);
1056                link.download = fileName;
1057                link.click();
1058            };
1059            req.onloadend = function () {
1060                Smile.Events.fire(Events.Action.HideLoadingDialog);
1061                if (onLoadEnd && req.status === 200)
1062                    onLoadEnd();
1063            };
1064            req.onerror = function () {
1065                if (onError)
1066                    onError();
1067            };
1068            return req;
1069        };
1070        HttpService.prototype.getQueryStringParameters = function (data) {
1071            var str = [];
1072            for (var property in data) {
1073                if (data.hasOwnProperty(property)) {
1074                    str.push(encodeURIComponent(property) + "=" + encodeURIComponent(data[property]));
1075                }
1076            }
1077            return str.join("&");
1078        };
1079        HttpService.prototype.getFileNameFromHeader = function (request) {
1080            var fileName;
1081            var fileNameRegex = /filename="(.*?)"/i;
1082            var contentDispositionHeader = request.getResponseHeader("content-disposition");
1083            var regexResult = fileNameRegex.exec(contentDispositionHeader);
1084            if (regexResult && regexResult.length > 1) {
1085                fileName = regexResult[1];
1086            }
1087            else {
1088                fileName = null;
1089            }
1090            return fileName;
1091        };
1092        HttpService.prototype.executeAjaxRequest = function (options) {
1093            var headers = {
1094                "X-Requested-With": "XMLHttpRequest"
1095            };
1096            if (options.antiForgeryToken && options.antiForgeryToken.length > 0) {
1097                headers["X-XSRF-Token"] = options.antiForgeryToken;
1098            }
1099            if (options.tokenHeaderValue && options.tokenHeaderValue.length > 0) {
1100                headers["Authorization"] = options.tokenHeaderValue;
1101            }
1102            if (options.headers) {
1103                for (var i = 0; i < options.headers.length; i++) {
1104                    headers[options.headers[i].Key] = options.headers[i].Value;
1105                }
1106            }
1107            var ajaxOptions = {
1108                url: options.url,
1109                cache: false,
1110                dataType: "json",
1111                method: options.method || "POST",
1112                data: options.data,
1113                headers: headers,
1114                async: options.async || true,
1115                showLoading: options.showLoading !== undefined ? options.showLoading : true,
1116                contentType: options.contentType
1117            };
1118            if (options.timeout !== undefined) {
1119                jQuery.extend(ajaxOptions, { timeout: options.timeout });
1120            }
1121            if (ajaxOptions.showLoading) {
1122                Smile.Events.fire(Events.Action.ShowLoadingDialog, null);
1123            }
1124            Smile.Events.fire(Events.Action.CoreAJAXDataPreLoad, ajaxOptions.url);
1125            var customHeaders = new Array();
1126            Smile.Events.fire(Events.Action.CoreAJAXRegisterHeader, customHeaders);
1127            for (var i = 0; i < customHeaders.length; i++) {
1128                ajaxOptions.headers[customHeaders[i].name] = customHeaders[i].value;
1129            }
1130            Ajax.AjaxRequestHandler.requestCount++;
1131            var deferred = jQuery.ajax(ajaxOptions);
1132            deferred
1133                .then(function (result) { return Ajax.AjaxRequestHandler.handleResult(result, ajaxOptions.url); }, function (error) { return Ajax.AjaxRequestHandler.handleError(error.status, error.responseJSON, ajaxOptions.url); })
1134                .then(function () { return Ajax.AjaxRequestHandler.handleRequestCount(); });
1135            this.processWebApiUIRulesWhenDone(deferred);
1136            return deferred;
1137        };
1138        HttpService.prototype.processWebApiUIRulesWhenDone = function (requestDeferred) {
1139            jQuery.when(requestDeferred)
1140                .done(function (result, successTextStatus, deferred) { return Ajax.AjaxRequestHandler.processUiRules(result); });
1141        };
1142        return HttpService;
1143    }());
1144    Ajax.HttpService = HttpService;
1145})(Ajax || (Ajax = {}));
1146Smile.createNamespace(Smile, "Smile.Ajax");
1147Smile.Ajax = new Ajax.HttpService();
1148(function (send) {
1149    XMLHttpRequest.prototype.send = function (data) {
1150        this.addEventListener("readystatechange", function () {
1151            Smile.Events.fire(Events.Action.AjaxRequestSent);
1152        }, false);
1153        send.call(this, data);
1154    };
1155})(XMLHttpRequest.prototype.send);
1156//# sourceMappingURL=Ajax.js.map;
1157var Ajax;
1158(function (Ajax) {
1159    var AjaxRequestHandler = (function () {
1160        function AjaxRequestHandler() {
1161        }
1162        Object.defineProperty(AjaxRequestHandler.prototype, "requestCount", {
1163            get: function () { return AjaxRequestHandler.requestCount; },
1164            set: function (val) { AjaxRequestHandler.requestCount = val; },
1165            enumerable: false,
1166            configurable: true
1167        });
1168        AjaxRequestHandler.handleRequestCount = function (hideLoading) {
1169            if (hideLoading === void 0) { hideLoading = true; }
1170            this.requestCount--;
1171            if (hideLoading && this.requestCount === 0) {
1172                Smile.Events.fire(Events.Action.HideLoadingDialog);
1173            }
1174        };
1175        AjaxRequestHandler.handleResult = function (result, requestUrl) {
1176            result.RequestUrl = requestUrl;
1177            Smile.Events.fire(Events.Action.CoreAJAXDataPostLoad, result);
1178            if (result.RedirectUrl && result.RedirectUrl.length) {
1179                AjaxRequestHandler.requestCount++;
1180                window.location.href = result.RedirectUrl;
1181                Smile.Modals.LoadingDialog.show();
1182            }
1183        };
1184        AjaxRequestHandler.handleError = function (status, responseData, requestUrl) {
1185            switch (status) {
1186                case 503:
1187                    Smile.Events.fire(Events.Action.FeatureUnavailable, responseData);
1188                    break;
1189                case 500:
1190                    Smile.Events.fire(Events.Action.HideLoadingDialog);
1191                    Smile.Events.fire(Events.Action.ShowErrorModal, responseData);
1192                    break;
1193                case 401:
1194                case 403:
1195                    Smile.Events.fire(Events.Action.SignOut);
1196                    Smile.Events.fire(Events.Action.HideLoadingDialog);
1197                    Smile.Events.fire(Events.Action.ShowUnauthorisedModal);
1198                    break;
1199            }
1200            if (!responseData) {
1201                var emptyResponse = {};
1202                emptyResponse.RequestUrl = requestUrl;
1203                Smile.Events.fire(Events.Action.CoreAJAXDataPostLoad, emptyResponse);
1204            }
1205            else {
1206                responseData.RequestUrl = requestUrl;
1207                Smile.Events.fire(Events.Action.CoreAJAXDataPostLoad, responseData);
1208            }
1209        };
1210        AjaxRequestHandler.processUiRules = function (result) {
1211            var apiResult = result;
1212            if (apiResult.UIRules) {
1213                Smile.UIRules.processWebApiUIRules(apiResult.UIRules);
1214            }
1215        };
1216        AjaxRequestHandler.requestCount = 0;
1217        return AjaxRequestHandler;
1218    }());
1219    Ajax.AjaxRequestHandler = AjaxRequestHandler;
1220})(Ajax || (Ajax = {}));
1221//# sourceMappingURL=AjaxRequestHandler.js.map;
1222var Core;
1223(function (Core) {
1224    var Guid = (function () {
1225        function Guid(guid) {
1226            if (!guid) {
1227                throw new TypeError("Invalid argument; `value` has no value.");
1228            }
1229            this.value = Guid.EMPTY;
1230            if (guid && Guid.isGuid(guid)) {
1231                this.value = guid;
1232            }
1233        }
1234        Guid.isGuid = function (guid) {
1235            var value = guid.toString();
1236            return guid && (guid instanceof Guid || Guid.validator.test(value));
1237        };
1238        Guid.newGuid = function () {
1239            return new Guid([Guid.gen(2), Guid.gen(1), Guid.gen(1), Guid.gen(1), Guid.gen(3)].join("-"));
1240        };
1241        Guid.empty = function () {
1242            return new Guid("emptyguid");
1243        };
1244        Guid.parse = function (guid) {
1245            return new Guid(guid);
1246        };
1247        Guid.gen = function (count) {
1248            var out = "";
1249            for (var i = 0; i < count; i++) {
1250                out += (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
1251            }
1252            return out;
1253        };
1254        Guid.prototype.equals = function (other) {
1255            return Guid.isGuid(other) && this.value === other.toString();
1256        };
1257        Guid.prototype.isEmpty = function () {
1258            return this.value === Guid.EMPTY;
1259        };
1260        Guid.prototype.toString = function () {
1261            return this.value;
1262        };
1263        Guid.prototype.toJSON = function () {
1264            return {
1265                value: this.value,
1266            };
1267        };
1268        Guid.validator = new RegExp("^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", "i");
1269        Guid.EMPTY = "00000000-0000-0000-0000-000000000000";
1270        return Guid;
1271    }());
1272    Core.Guid = Guid;
1273})(Core || (Core = {}));
1274//# sourceMappingURL=Guid.js.map;
1275var __assign = (this && this.__assign) || function () {
1276    __assign = Object.assign || function(t) {
1277        for (var s, i = 1, n = arguments.length; i < n; i++) {
1278            s = arguments[i];
1279            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
1280                t[p] = s[p];
1281        }
1282        return t;
1283    };
1284    return __assign.apply(this, arguments);
1285};
1286var Analytics;
1287(function (Analytics) {
1288    var AnalyticsUser = (function () {
1289        function AnalyticsUser() {
1290        }
1291        AnalyticsUser.Member = "Member";
1292        AnalyticsUser.Dentist = "Dentist";
1293        AnalyticsUser.Employer = "Employer";
1294        AnalyticsUser.Broker = "Broker";
1295        return AnalyticsUser;
1296    }());
1297    Analytics.AnalyticsUser = AnalyticsUser;
1298    var AnalyticsService = (function () {
1299        function AnalyticsService() {
1300            var _this = this;
1301            window.dataLayer = window.dataLayer || [];
1302            Smile.Events.subscribe(Events.Action.AnalyticsTracking, function (data) { _this.eventTracking(data); });
1303        }
1304        AnalyticsService.prototype.registerEvent = function (event, userType) {
1305            var eventName = (userType || Core.UserType.Patient) + event;
1306            window.dataLayer.push({ 'event': eventName });
1307        };
1308        AnalyticsService.prototype.registerEcommerceEvent = function (event, ecommerce) {
1309            window.dataLayer.push({ 'event': event, 'ecommerce': ecommerce });
1310        };
1311        AnalyticsService.prototype.registerEventWithDetails = function (event, details) {
1312            window.dataLayer.push(__assign({ 'event': event }, details));
1313        };
1314        AnalyticsService.prototype.convertUserType = function (userTypeCode) {
1315            var userNameCode = "Unknown";
1316            if (userTypeCode) {
1317                userTypeCode = userTypeCode.toLowerCase();
1318                switch (userTypeCode) {
1319                    case "e":
1320                        userNameCode = "Employer";
1321                        break;
1322                    case "m":
1323                        userNameCode = "Member";
1324                        break;
1325                    case "d":
1326                        userNameCode = "Dentist";
1327                        break;
1328                    case "b":
1329                        userNameCode = "Broker";
1330                        break;
1331                }
1332            }
1333            return userNameCode;
1334        };
1335        AnalyticsService.prototype.eventTracking = function (analyticsTracking) {
1336            window.dataLayer.push({
1337                'event': analyticsTracking.Event ? analyticsTracking.Event : 'DataAnalyticsEvent',
1338                'eventCategory': analyticsTracking.Category,
1339                'eventAction': analyticsTracking.Action,
1340                'eventLabel': analyticsTracking.Label ? analyticsTracking.Label : undefined,
1341                'eventValue': analyticsTracking.Value ? analyticsTracking.Value : undefined
1342            });
1343        };
1344        return AnalyticsService;
1345    }());
1346    Analytics.AnalyticsService = AnalyticsService;
1347    var Event = (function () {
1348        function Event() {
1349        }
1350        Event.click = "Click";
1351        Event.pdfPrint = "PDF Print";
1352        Event.benefitDetails = "BenefitDetails";
1353        Event.registration = "Registration";
1354        Event.interaction = "Interaction";
1355        Event.formSubmit = "Form Submit";
1356        Event.dropdownSelectionChanged = "DropdownSelectionChanged";
1357        Event.accountConfirmed = "Confirmed";
1358        Event.accountRegistered = "Registered";
1359        Event.accountCancelled = "RegisterCancel";
1360        Event.accountError = "RegisterError";
1361        Event.pcdAssignClicked = "PrimaryCareDentistAssignClicked";
1362        Event.pcdUpdateClicked = "PrimaryCareDentistUpdateClicked";
1363        Event.pcdConfirmClicked = "PrimaryCareDentistConfirmClicked";
1364        Event.pcdAssignSuccess = "PrimaryCareDentistAssignSuccess";
1365        Event.pcdAssignError = "PrimaryCareDentistAssignError";
1366        Event.IdCardCreateAccountSuccess = "IdCardCreateAccountSuccess";
1367        Event.idCardValidationRequested = "IdCardValidationRequested";
1368        Event.idCardValidationSuccess = "IdCardValidationSuccess";
1369        Event.idCardValidationError = "IdCardValidationError";
1370        Event.TreatmentHistorySearch = "TreatmentHistorySearch";
1371        Event.ProcedureCodeSearch = "ProcedureCodeSearch";
1372        Event.BenefitsCoverageLink = "BenefitsCoverageLink";
1373        Event.SendPasscode = "SendPasscode";
1374        Event.DeleteAccount = "DeleteAccount";
1375        Event.MemberIdCardCreateAccountClicked = "MemberIdCardCreateAccountClicked";
1376        Event.CreateAccountSuccess = "CreateAccountSuccess";
1377        Event.IdCardPdfDownloadClicked = "IdCardPdfDownloadClicked";
1378        Event.DdpaFadSearchAutocompleteOptionSelected = "DdpaFadSearchAutocompleteOptionSelected";
1379        Event.DdpaFadWidgetAutocompleteOptionSelected = "DdpaFadWidgetAutocompleteOptionSelected";
1380        Event.DdpaFadSearchWithDentistName = "DdpaFadSearchWithDentistName";
1381        Event.DdpaFadSearchWithClinicName = "DdpaFadSearchWithClinicName";
1382        Event.CostEstimatorWidgetAutocompleteOptionSelected = "CostEstimatorWidgetAutocompleteOptionSelected";
1383        return Event;
1384    }());
1385    Analytics.Event = Event;
1386    var EcommerceEvents = (function () {
1387        function EcommerceEvents() {
1388        }
1389        EcommerceEvents.ViewItemList = "view_item_list";
1390        EcommerceEvents.ViewItem = "view_item";
1391        EcommerceEvents.AddToCart = "add_to_cart";
1392        EcommerceEvents.RemoveFromCart = "remove_from_cart";
1393        EcommerceEvents.BeginCheckOut = "begin_checkout";
1394        EcommerceEvents.AddPaymentInfo = "add_payment_info";
1395        EcommerceEvents.Purchase = "purchase";
1396        EcommerceEvents.PlansViewed = "plans_viewed";
1397        EcommerceEvents.UpSell = "upsell";
1398        EcommerceEvents.Payment = "payment";
1399        return EcommerceEvents;
1400    }());
1401    Analytics.EcommerceEvents = EcommerceEvents;
1402    var EventTracking = (function () {
1403        function EventTracking() {
1404        }
1405        EventTracking.EnrollmentAddFormSubmitButtonClick = "EnrollmentAddFormSubmitButtonClick";
1406        EventTracking.EnrollmentDetailsFormSubmitChangesButtonClick = "EnrollmentDetailsFormSubmitChangesButtonClick";
1407        EventTracking.EnrollmentCreateModalAddMemberNewButtonClick = "EnrollmentCreateModalAddMemberNewButtonClick";
1408        EventTracking.EnrollmentCreateModalAddMemberExistingButtonClick = "EnrollmentCreateModalAddMemberExistingButtonClick";
1409        EventTracking.EnrollmentCreateModalFinishButtonClick = "EnrollmentCreateModalFinishButtonClick";
1410        return EventTracking;
1411    }());
1412    Analytics.EventTracking = EventTracking;
1413})(Analytics || (Analytics = {}));
1414Smile.createNamespace(Smile, "Smile.Analytics");
1415Smile.Analytics = new Analytics.AnalyticsService();
1416//# sourceMappingURL=AnalyticsService.js.map;
1417var __extends = (this && this.__extends) || (function () {
1418    var extendStatics = function (d, b) {
1419        extendStatics = Object.setPrototypeOf ||
1420            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
1421            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
1422        return extendStatics(d, b);
1423    };
1424    return function (d, b) {
1425        if (typeof b !== "function" && b !== null)
1426            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
1427        extendStatics(d, b);
1428        function __() { this.constructor = d; }
1429        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1430    };
1431})();
1432var ContentComponent;
1433(function (ContentComponent) {
1434    var ContentService = (function (_super) {
1435        __extends(ContentService, _super);
1436        function ContentService() {
1437            var _this = _super.call(this) || this;
1438            _this.endpoint = "/private/content/api/";
1439            _this.getEndpoint = function (action) {
1440                return _this.endpoint + action;
1441            };
1442            _this.getUiRuleContentByFieldFilter = function (componentType, featureId, fieldFilter) {
1443                return _this.getJson(_this.endpoint + "get-ui-rule-content-by-field-filter", {
1444                    componentType: componentType,
1445                    featureId: featureId,
1446                    fieldFilter: fieldFilter
1447                });
1448            };
1449            return _this;
1450        }
1451        return ContentService;
1452    }(Ajax.HttpService));
1453    ContentComponent.ContentService = ContentService;
1454})(ContentComponent || (ContentComponent = {}));
1455//# sourceMappingURL=ContentService.js.map;
1456var __extends = (this && this.__extends) || (function () {
1457    var extendStatics = function (d, b) {
1458        extendStatics = Object.setPrototypeOf ||
1459            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
1460            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
1461        return extendStatics(d, b);
1462    };
1463    return function (d, b) {
1464        if (typeof b !== "function" && b !== null)
1465            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
1466        extendStatics(d, b);
1467        function __() { this.constructor = d; }
1468        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1469    };
1470})();
1471var UIRules;
1472(function (UIRules) {
1473    var ActionTypes = (function () {
1474        function ActionTypes() {
1475        }
1476        ActionTypes.ElementDisable = 0;
1477        ActionTypes.ElementHide = 1;
1478        ActionTypes.ElementShow = 2;
1479        ActionTypes.ElementReplaceContent = 3;
1480        ActionTypes.SitecoreConfigure = 5;
1481        ActionTypes.UrlConfigure = 6;
1482        ActionTypes.DialogShow = 7;
1483        return ActionTypes;
1484    }());
1485    UIRules.ActionTypes = ActionTypes;
1486    var ParamType = (function () {
1487        function ParamType() {
1488        }
1489        ParamType.Text = 0;
1490        ParamType.DomDataSelector = 1;
1491        ParamType.FeatureId = 2;
1492        ParamType.FeaturePropertyId = 3;
1493        ParamType.Url = 4;
1494        ParamType.SitecorePath = 6;
1495        ParamType.SitecoreFieldFilter = 7;
1496        return ParamType;
1497    }());
1498    UIRules.ParamType = ParamType;
1499    var UIRuleProcessor = (function () {
1500        function UIRuleProcessor(contentService) {
1501            var _this = this;
1502            this.setup = function () {
1503                if (!Smile.UIRulesState) {
1504                    return;
1505                }
1506                _this.processPageLoadActions();
1507                if (Smile.UIRulesState.Actions.some(function (action) { return action.HasSubscriptionTrigger; })) {
1508                    Smile.Events.subscribe(Events.Action.SubscriptionSelected, _this.subscriptionChange);
1509                    Smile.Events.subscribe(Events.Action.SubscriptionSelectedHeaderLogo, _this.subscriptionChange);
1510                }
1511            };
1512            this.clearUIRulesCache = function () {
1513                _this.lastWebAPIUIRules = undefined;
1514                _this.previousWebAPIUIRules = undefined;
1515            };
1516            this.processWebApiUIRules = function (uiRules) {
1517                Smile.Events.fire(Events.Action.AJAXRulesProcessed, uiRules);
1518                _this.lastWebAPIUIRules = uiRules;
1519                if (uiRules && uiRules.Actions && uiRules.Actions.length > 0) {
1520                    if (_this.previousWebAPIUIRules && _this.previousWebAPIUIRules.Actions) {
1521                        for (var index in _this.previousWebAPIUIRules.Actions) {
1522                            var prevAction = _this.previousWebAPIUIRules.Actions[index];
1523                            var matchKey = _this.utility.FindAction(_this.lastWebAPIUIRules.Actions, prevAction);
1524                            var matchFound = matchKey && matchKey !== -1;
1525                            if (!matchFound && _this.previousStateStore.HasState(prevAction)) {
1526                                _this.previousStateStore.Rollback(prevAction);
1527                            }
1528                        }
1529                    }
1530                    for (var index in uiRules.Actions) {
1531                        var action = uiRules.Actions[index];
1532                        if (_this.previousWebAPIUIRules && _this.previousWebAPIUIRules.Actions) {
1533                            var matchFound_1 = false;
1534                            var matchKey = _this.utility.FindAction(_this.previousWebAPIUIRules.Actions, action);
1535                            matchFound_1 = matchKey && matchKey !== -1;
1536                            if (matchFound_1) {
1537                                continue;
1538                            }
1539                        }
1540                        if (action.HasSubscriptionTrigger) {
1541                            continue;
1542                        }
1543                        _this.executeAction(action);
1544                    }
1545                }
1546                else {
1547                    if (_this.previousWebAPIUIRules) {
1548                        for (var index in _this.previousWebAPIUIRules.Actions) {
1549                            var action = _this.previousWebAPIUIRules.Actions[index];
1550                            if (_this.previousStateStore.HasState(action)) {
1551                                _this.previousStateStore.Rollback(action);
1552                            }
1553                        }
1554                    }
1555                }
1556                _this.previousWebAPIUIRules = uiRules;
1557            };
1558            this.stageWebApiUIRules = function (uiRules) {
1559                _this.lastWebAPIUIRules = uiRules;
1560            };
1561            this.processStagedUIRules = function () {
1562                _this.processWebApiUIRules(_this.lastWebAPIUIRules);
1563            };
1564            this.processPageLoadActions = function () {
1565                var _a;
1566                for (var index in (_a = Smile.UIRulesState) === null || _a === void 0 ? void 0 : _a.Actions) {
1567                    var action = Smile.UIRulesState.Actions[index];
1568                    if (action.HasSubscriptionTrigger) {
1569                        continue;
1570                    }
1571                    _this.executeAction(action);
1572                }
1573            };
1574            this.subscriptionChange = function (eventPayload) {
1575                _this.processSubscriptionsActions(eventPayload);
1576            };
1577            this.processSubscriptionsActions = function (eventPayload) {
1578                var _a, _b;
1579                for (var index in (_a = Smile.UIRulesState) === null || _a === void 0 ? void 0 : _a.Actions) {
1580                    var action = Smile.UIRulesState.Actions[index];
1581                    if (!action.HasSubscriptionTrigger) {
1582                        continue;
1583                    }
1584                    var subscriptions = jQuery.grep(action.Metadata, function (item) {
1585                        return item.Key === "SUBSCRIPTION_GID" && item.Value == eventPayload.gid;
1586                    });
1587                    if (subscriptions.length === 0 && _this.previousStateStore.HasState(action)) {
1588                        _this.previousStateStore.Rollback(action);
1589                    }
1590                }
1591                for (var index in (_b = Smile.UIRulesState) === null || _b === void 0 ? void 0 : _b.Actions) {
1592                    var action = Smile.UIRulesState.Actions[index];
1593                    if (!action.HasSubscriptionTrigger) {
1594                        continue;
1595                    }
1596                    var subscriptions = jQuery.grep(action.Metadata, function (item) {
1597                        return item.Key === "SUBSCRIPTION_GID" && item.Value == eventPayload.gid;
1598                    });
1599                    if (subscriptions.length > 0) {
1600                        _this.executeAction(action);
1601                    }
1602                }
1603                Smile.Events.fire(Events.Action.UISubscriptionRulesProcessed, eventPayload);
1604            };
1605            this.executeAction = function (action) {
1606                if (action.Action === ActionTypes.ElementShow) {
1607                    _this.elementShowProcessor.Process(action, _this.previousStateStore);
1608                }
1609                else if (action.Action === ActionTypes.UrlConfigure) {
1610                    _this.urlConfigureProcessor.Process(action, _this.previousStateStore);
1611                }
1612                else if (action.Action === ActionTypes.ElementHide) {
1613                    _this.elementHideProcessor.Process(action, _this.previousStateStore);
1614                }
1615                else if (action.Action === ActionTypes.ElementDisable) {
1616                    _this.elementDisableProcessor.Process(action, _this.previousStateStore);
1617                }
1618                else if (action.Action === ActionTypes.DialogShow) {
1619                    _this.dialogShowProcessor.Process(action, _this.previousStateStore);
1620                }
1621                else if (action.Action === ActionTypes.SitecoreConfigure) {
1622                    _this.sitecoreConfigureProcessor.Process(action, _this.previousStateStore);
1623                }
1624            };
1625            this.contentService = contentService;
1626            this.previousStateStore = new PreviousStateStore();
1627            this.elementShowProcessor = new ElementShowProcessor();
1628            this.urlConfigureProcessor = new UrlConfigureProcessor();
1629            this.elementHideProcessor = new ElementHideProcessor();
1630            this.elementDisableProcessor = new ElementDisableProcessor();
1631            this.dialogShowProcessor = new DialogShowProcessor();
1632            this.sitecoreConfigureProcessor = new SitecoreConfigureProcessor(this.contentService);
1633            this.utility = new Utility();
1634            Smile.Events.subscribe(Events.Action.ResultsPaged, function (pagingPayload) {
1635                if (pagingPayload) {
1636                    _this.processWebApiUIRules(_this.lastWebAPIUIRules);
1637                }
1638            });
1639        }
1640        return UIRuleProcessor;
1641    }());
1642    UIRules.UIRuleProcessor = UIRuleProcessor;
1643    var BaseActionProcessor = (function () {
1644        function BaseActionProcessor() {
1645        }
1646        BaseActionProcessor.prototype.findElement = function (action) {
1647            for (var pIndex in action.ActionParams) {
1648                var param = action.ActionParams[pIndex];
1649                if (param.ActionParamType === ParamType.FeatureId) {
1650                    var featureId = param.ActionParam;
1651                    var element = $("[data-js-ui-rule-feature-id='" + featureId + "']");
1652                    return element;
1653                }
1654                else if (param.ActionParamType === ParamType.DomDataSelector) {
1655                    var domSelector = param.ActionParam;
1656                    var element = $(domSelector);
1657                    return element;
1658                }
1659            }
1660        };
1661        BaseActionProcessor.prototype.extractItemMetadata = function (itemId, metadata) {
1662            var itemIdPrefix = "ITEM_ID." + itemId + ".";
1663            return metadata.filter(function (m) { return m.Key.indexOf(itemIdPrefix) !== -1; })
1664                .map(function (m) {
1665                return {
1666                    Key: m.Key.substring(m.Key.indexOf(itemIdPrefix) + itemIdPrefix.length),
1667                    Value: m.Value
1668                };
1669            });
1670        };
1671        BaseActionProcessor.prototype.replacePlaceholders = function (message, placeholderValues) {
1672            if (message.indexOf("{METADATA_") === -1) {
1673                return message;
1674            }
1675            placeholderValues.forEach(function (p) {
1676                message = message.replace("{" + p.Key + "}", p.Value);
1677            });
1678            return message;
1679        };
1680        return BaseActionProcessor;
1681    }());
1682    UIRules.BaseActionProcessor = BaseActionProcessor;
1683    var ElementShowProcessor = (function (_super) {
1684        __extends(ElementShowProcessor, _super);
1685        function ElementShowProcessor() {
1686            var _this = _super !== null && _super.apply(this, arguments) || this;
1687            _this.Process = function (action, previousStateStore) {
1688                var element = _this.findElement(action);
1689                if (element && element.length > 0) {
1690                    var previousVisibleState_1 = element.is(':visible') || element.css('display') != 'none';
1691                    element.show();
1692                    var observer_1 = new MutationObserver(function (mutations) {
1693                        mutations.forEach(function (mutationRecord) {
1694                            element.show();
1695                        });
1696                    });
1697                    observer_1.observe(element[0], { attributes: true, attributeFilter: ['style'] });
1698                    Smile.Core.Debug.Log("Show element", "UI Rules Client Engine");
1699                    previousStateStore.Record(action, function () {
1700                        var visibleState = previousVisibleState_1;
1701                        var actionElement = element;
1702                        var actionObserver = observer_1;
1703                        actionObserver.disconnect();
1704                        if (!visibleState) {
1705                            actionElement.hide();
1706                            Smile.Core.Debug.Log("Rollback Show element", "UI Rules Client Engine");
1707                        }
1708                    });
1709                }
1710            };
1711            return _this;
1712        }
1713        return ElementShowProcessor;
1714    }(BaseActionProcessor));
1715    UIRules.ElementShowProcessor = ElementShowProcessor;
1716    var DialogShowProcessor = (function (_super) {
1717        __extends(DialogShowProcessor, _super);
1718        function DialogShowProcessor() {
1719            var _this = _super !== null && _super.apply(this, arguments) || this;
1720            _this.Process = function (action, previousStateStore) {
1721                if (action.HasItemId) {
1722                    var featureId_1 = "";
1723                    for (var pIndex in action.ActionParams) {
1724                        var param = action.ActionParams[pIndex];
1725                        if (param.ActionParamType === ParamType.FeatureId) {
1726                            featureId_1 = param.ActionParam;
1727                            break;
1728                        }
1729                    }
1730                    var itemIds = jQuery.map(action.Metadata, function (n, i) { return n.Key === "ITEM_ID" ? n.Value : ""; }).filter(function (itemId) { return itemId.length > 0; });
1731                    var messageTemplate_1 = "";
1732                    for (var pIndex in action.ActionParams) {
1733                        var param = action.ActionParams[pIndex];
1734                        if (param.ActionParamType === ParamType.Text
1735                            || param.ActionParamType === ParamType.SitecorePath) {
1736                            messageTemplate_1 = param.ActionParam;
1737                            break;
1738                        }
1739                    }
1740                    jQuery.each(itemIds, function (i, itemId) {
1741                        var itemMetaData = _this.extractItemMetadata(itemId, action.Metadata);
1742                        var customMessage = _this.replacePlaceholders(messageTemplate_1, itemMetaData);
1743                        var element = $("[data-js-ui-rule-feature-id='" + featureId_1 + "'][data-js-ui-rule-item-id='" + itemId + "']");
1744                        if (element && element.length > 0) {
1745                            element.on("click auxclick", function () {
1746                                Smile.Modals.MessageDialog.show(customMessage, null, "Ok");
1747                                element[0].dispatchEvent(new Event('ui-rule-block', { bubbles: true }));
1748                                return false;
1749                            });
1750                        }
1751                    });
1752                }
1753            };
1754            return _this;
1755        }
1756        return DialogShowProcessor;
1757    }(BaseActionProcessor));
1758    UIRules.DialogShowProcessor = DialogShowProcessor;
1759    var ElementHideProcessor = (function (_super) {
1760        __extends(ElementHideProcessor, _super);
1761        function ElementHideProcessor() {
1762            var _this = _super !== null && _super.apply(this, arguments) || this;
1763            _this.Process = function (action, previousStateStore) {
1764                if (action.HasItemId) {
1765                    var featureId_2 = "";
1766                    for (var pIndex in action.ActionParams) {
1767                        var param = action.ActionParams[pIndex];
1768                        if (param.ActionParamType === ParamType.FeatureId) {
1769                            featureId_2 = param.ActionParam;
1770                            break;
1771                        }
1772                    }
1773                    var itemIds = jQuery.map(action.Metadata, function (n, i) { return n.Value; });
1774                    jQuery.each(itemIds, function (i, val) {
1775                        var element = $("[data-js-ui-rule-feature-id='" + featureId_2 + "'][data-js-ui-rule-item-id='" + val + "']");
1776                        if (element && element.length > 0) {
1777                            element.attr('style', 'display:none !important');
1778                        }
1779                    });
1780                }
1781                else {
1782                    var element_1 = _this.findElement(action);
1783                    if (element_1 && element_1.length > 0) {
1784                        var previousVisibleState_2 = element_1.is(':visible') || element_1.css('display') != 'none';
1785                        element_1.hide();
1786                        var messageId = element_1.attr('data-js-ui-rule-message-id');
1787                        var messageElement_1 = messageId ? $('#' + messageId) : null;
1788                        if (messageElement_1 && messageElement_1.length > 0) {
1789                            messageElement_1.css('display', '');
1790                        }
1791                        var observer_2 = new MutationObserver(function (mutations) {
1792                            mutations.forEach(function (mutationRecord) {
1793                                element_1.hide();
1794                            });
1795                        });
1796                        observer_2.observe(element_1[0], { attributes: true, attributeFilter: ['style'] });
1797                        Smile.Core.Debug.Log("Hide element", "UI Rules Client Engine");
1798                        previousStateStore.Record(action, function () {
1799                            var visibleState = previousVisibleState_2;
1800                            var actionElement = _this.findElement(action);
1801                            var actionObserver = observer_2;
1802                            actionObserver.disconnect();
1803                            if (visibleState) {
1804                                actionElement.show();
1805                                Smile.Core.Debug.Log("Rollback Hide element", "UI Rules Client Engine");
1806                            }
1807                            if (messageElement_1 && messageElement_1.length > 0) {
1808                                messageElement_1.hide();
1809                            }
1810                        });
1811                    }
1812                }
1813            };
1814            return _this;
1815        }
1816        return ElementHideProcessor;
1817    }(BaseActionProcessor));
1818    UIRules.ElementHideProcessor = ElementHideProcessor;
1819    var ElementDisableProcessor = (function () {
1820        function ElementDisableProcessor() {
1821            this.Process = function (action, previousStateStore) {
1822                var _loop_1 = function (pIndex) {
1823                    var param = action.ActionParams[pIndex];
1824                    if (param.ActionParamType === ParamType.FeatureId) {
1825                        var featureId_3 = param.ActionParam;
1826                        if (action.HasItemId) {
1827                            itemIds = jQuery.map(action.Metadata, function (n, i) { return n.Value; });
1828                            jQuery.each(itemIds, function (i, val) {
1829                                var element = $("[data-js-ui-rule-feature-id='" + featureId_3 + "'][data-js-ui-rule-item-id='" + val + "']");
1830                                if (element && element.length > 0) {
1831                                    element.attr("disable", "disable");
1832                                    if (element.is("a")) {
1833                                        element.on('click', function (e) { e.preventDefault(); });
1834                                    }
1835                                }
1836                            });
1837                        }
1838                        else {
1839                            var element_2 = $("[data-js-ui-rule-feature-id='" + featureId_3 + "']");
1840                            var previousDisableState_1 = element_2.attr('disable');
1841                            element_2.attr("disable", "disable");
1842                            previousStateStore.Record(action, function () {
1843                                var disableState = previousDisableState_1;
1844                                var actionElement = element_2;
1845                                if (disableState === '') {
1846                                    actionElement.attr("disable", disableState);
1847                                }
1848                            });
1849                        }
1850                        return "break";
1851                    }
1852                };
1853                var itemIds;
1854                for (var pIndex in action.ActionParams) {
1855                    var state_1 = _loop_1(pIndex);
1856                    if (state_1 === "break")
1857                        break;
1858                }
1859            };
1860        }
1861        return ElementDisableProcessor;
1862    }());
1863    UIRules.ElementDisableProcessor = ElementDisableProcessor;
1864    var UrlConfigureProcessor = (function () {
1865        function UrlConfigureProcessor() {
1866            this.Process = function (action, previousStateStore) {
1867                var featureId = "";
1868                var url = "";
1869                for (var pIndex in action.ActionParams) {
1870                    var param = action.ActionParams[pIndex];
1871                    if (param.ActionParamType === ParamType.FeatureId) {
1872                        featureId = param.ActionParam;
1873                    }
1874                    else if (param.ActionParamType === ParamType.Url) {
1875                        url = param.ActionParam;
1876                    }
1877                }
1878                if (url !== "" && featureId !== "") {
1879                    var element_3 = $("[data-js-ui-rule-feature-id='" + featureId + "']");
1880                    if (element_3 && element_3.length > 0) {
1881                        var previousUrl_1 = "";
1882                        if (element_3.attr('href')) {
1883                            previousUrl_1 = element_3.attr('href');
1884                            element_3.attr('href', url);
1885                            Smile.Core.Debug.Log("Url configure element", "UI Rules Client Engine");
1886                            previousStateStore.Record(action, function () {
1887                                var urlValue = previousUrl_1;
1888                                var actionElement = element_3;
1889                                actionElement.attr('href', urlValue);
1890                                Smile.Core.Debug.Log("Rollback Url configure element", "UI Rules Client Engine");
1891                            });
1892                        }
1893                        else {
1894                            previousUrl_1 = $("[href]", element_3).attr('href');
1895                            $("[href]", element_3).attr('href', url);
1896                            Smile.Core.Debug.Log("Url configure element's children", "UI Rules Client Engine");
1897                            previousStateStore.Record(action, function () {
1898                                var urlValue = previousUrl_1;
1899                                var actionElement = element_3;
1900                                $("[href]", actionElement).attr('href', urlValue);
1901                                Smile.Core.Debug.Log("Rollback Url configure element's children", "UI Rules Client Engine");
1902                            });
1903                        }
1904                    }
1905                }
1906            };
1907        }
1908        return UrlConfigureProcessor;
1909    }());
1910    UIRules.UrlConfigureProcessor = UrlConfigureProcessor;
1911    var SitecoreConfigureProcessor = (function () {
1912        function SitecoreConfigureProcessor(contentService) {
1913            var _this = this;
1914            this.Process = function (action, previousStateStore) {
1915                jQuery(function () {
1916                    _this.processSitecoreConfigure(action, previousStateStore);
1917                });
1918            };
1919            this.processContent = function (action, previousStateStore, element, newContent) {
1920                var previousContent = "";
1921                if (element.html()) {
1922                    previousContent = element.html();
1923                    element.html(newContent);
1924                    Smile.Core.Debug.Log("Sitecore configure element", "UI Rules Client Engine");
1925                    previousStateStore.Record(action, function () {
1926                        var contentValue = previousContent;
1927                        var actionElement = element;
1928                        actionElement.html(contentValue);
1929                        Smile.Core.Debug.Lo
1929g("Rollback Sitecore configure element", "UI Rules Client Engine");
1930                    });
1931                }
1932                else {
1933                    previousContent = element.html();
1934                    element.html(newContent);
1935                    Smile.Core.Debug.Log("Sitecore configure element's children", "UI Rules Client Engine");
1936                    previousStateStore.Record(action, function () {
1937                        var contentValue = previousContent;
1938                        var actionElement = element;
1939                        actionElement.html(contentValue);
1940                        Smile.Core.Debug.Log("Rollback Sitecore configure element's children", "UI Rules Client Engine");
1941                    });
1942                }
1943            };
1944            this.contentService = contentService;
1945            this.contentCache = {};
1946        }
1947        SitecoreConfigureProcessor.prototype.processSitecoreConfigure = function (action, previousStateStore) {
1948            var featureId = "";
1949            var sitecoreFieldFilter = "";
1950            for (var pIndex in action.ActionParams) {
1951                var param = action.ActionParams[pIndex];
1952                if (param.ActionParamType === ParamType.FeatureId) {
1953                    featureId = param.ActionParam;
1954                }
1955                else if (param.ActionParamType === ParamType.SitecoreFieldFilter) {
1956                    sitecoreFieldFilter = param.ActionParam;
1957                }
1958            }
1959            if (sitecoreFieldFilter !== "" && featureId !== "") {
1960                var element_4 = $("[data-js-ui-rule-feature-id='" + featureId + "']");
1961                if (element_4 && element_4.length > 0) {
1962                    element_4.attr('data-js-content-type', featureId).attr('data-js-content-key', sitecoreFieldFilter);
1963                    var newContent = "";
1964                    var data = {
1965                        FeatureId: featureId,
1966                        ComponentType: ""
1967                    };
1968                    Smile.Events.fire(Events.Action.UIRuleIdentifyFeatureIdComponent, data);
1969                    if (this.contentCache && this.contentCache[data.ComponentType + featureId + sitecoreFieldFilter]) {
1970                        this.processContent(action, previousStateStore, element_4, this.contentCache[data.ComponentType + featureId + sitecoreFieldFilter]);
1971                    }
1972                    else {
1973                        var _th = this;
1974                        this.contentService.getUiRuleContentByFieldFilter(data.ComponentType, featureId, sitecoreFieldFilter).then(function (result) {
1975                            _th.contentCache[data.ComponentType + featureId + sitecoreFieldFilter] = result.Data;
1976                            _th.processContent(action, previousStateStore, element_4, result.Data);
1977                        });
1978                    }
1979                }
1980            }
1981        };
1982        return SitecoreConfigureProcessor;
1983    }());
1984    UIRules.SitecoreConfigureProcessor = SitecoreConfigureProcessor;
1985    var PreviousStateStore = (function () {
1986        function PreviousStateStore() {
1987            var _this = this;
1988            this.Rollback = function (action) {
1989                var actionIndexPos = _this.utility.FindAction(jQuery.map(_this.actionStates, function (n, i) { return n.action; }), action);
1990                if (actionIndexPos && actionIndexPos !== -1) {
1991                    _this.actionStates[actionIndexPos].rollback();
1992                    _this.actionStates.splice(actionIndexPos, 1);
1993                }
1994            };
1995            this.Record = function (action, rollbackFunc) {
1996                var actionIndexPos = _this.utility.FindAction(jQuery.map(_this.actionStates, function (n, i) { return n.action; }), action);
1997                if (!actionIndexPos || actionIndexPos == -1) {
1998                    _this.actionStates.push({ action: action, rollback: rollbackFunc });
1999                }
2000            };
2001            this.HasState = function (action) {
2002                var actionIndexPos = _this.utility.FindAction(jQuery.map(_this.actionStates, function (n, i) { return n.action; }), action);
2003                return actionIndexPos && actionIndexPos != -1;
2004            };
2005            this.actionStates = [];
2006            this.utility = new Utility();
2007        }
2008        return PreviousStateStore;
2009    }());
2010    UIRules.PreviousStateStore = PreviousStateStore;
2011    var Utility = (function () {
2012        function Utility() {
2013            this.FindAction = function (actions, action) {
2014                var matchKey;
2015                for (var pIndex in actions) {
2016                    var actionItem = actions[pIndex];
2017                    if (action.RuleId === actionItem.RuleId
2018                        && action.Action === actionItem.Action
2019                        && action.ActionParams.length > 0
2020                        && actionItem.ActionParams.length > 0
2021                        && action.ActionParams.length === actionItem.ActionParams.length) {
2022                        matchKey = pIndex;
2023                        for (var i = 0; i < action.ActionParams.length; i++) {
2024                            var actionParam = action.ActionParams[i];
2025                            var actionItemParam = actionItem.ActionParams[i];
2026                            if (actionParam.ActionParam !== actionItemParam.ActionParam
2027                                || actionParam.ActionParamType !== actionItemParam.ActionParamType) {
2028                                matchKey = undefined;
2029                                break;
2030                            }
2031                        }
2032                        if (matchKey === pIndex) {
2033                            break;
2034                        }
2035                    }
2036                }
2037                return matchKey;
2038            };
2039        }
2040        return Utility;
2041    }());
2042})(UIRules || (UIRules = {}));
2043Smile.createNamespace(Smile, "Smile.UIRules");
2044Smile.UIRules = new UIRules.UIRuleProcessor(new ContentComponent.ContentService());
2045//# sourceMappingURL=UIRules.js.map;
2046var Modal;
2047(function (Modal) {
2048    var BaseDialog = (function () {
2049        function BaseDialog(dialogId, setupModalCloseTabActions) {
2050            var _this = this;
2051            this.dialogId = dialogId;
2052            this.setupModalCloseTabActions = setupModalCloseTabActions !== null && setupModalCloseTabActions !== void 0 ? setupModalCloseTabActions : false;
2053            this.$modal = $.dataJs(dialogId);
2054            this.$overlay = $.dataJs("modalOverlay");
2055            this.$message = this.$modal.dataJs("modalMessage");
2056            this.defaultMessage = this.$message.text();
2057            this.$confirmBtn = this.$modal.dataJs("confirmBtn");
2058            this.$closeBtn = this.$modal.dataJs("dialogClose");
2059            this.$dialogContent = this.$modal.dataJs("dialogContent");
2060            this.clearMessage = true;
2061            this.blurBody = true;
2062            this.modalOverlayGray = false;
2063            this.$modal.on("click", "[data-js=confirmBtn]", function () { return _this.close(); });
2064            this.$modal.on("keydown", "[data-js=dialogClose]", function (event) {
2065                if (event.key == "Escape" || event.key == "Enter") {
2066                    _this.close();
2067                }
2068            });
2069            Smile.Events.subscribe(Events.Action.CloseModal, function () { return _this.close(); });
2070        }
2071        BaseDialog.prototype.open = function () {
2072            var _a;
2073            this.$modal.show();
2074            this.$modal.attr("aria-hidden", "false");
2075            this.$overlay.show();
2076            if (this.blurBody) {
2077                Smile.Layout.pageBodyBlur.set();
2078            }
2079            if (this.modalOverlayGray) {
2080                Smile.Layout.modalOverlayGray.set();
2081            }
2082            else {
2083                Smile.Layout.modalOverlayGray.unset();
2084            }
2085            if (!!this.setupModalCloseTabActions) {
2086                Smile.MdBootstrap.smileModal.setupModalCloseTabActions(null, this.dialogId);
2087            }
2088            if ($('#closeModalButton').length) {
2089                $('#closeModalButton').focus();
2090            }
2091            (_a = this === null || this === void 0 ? void 0 : this.$confirmBtn) === null || _a === void 0 ? void 0 : _a.focus();
2092        };
2093        BaseDialog.prototype.close = function () {
2094            this.$modal.hide();
2095            this.$modal.attr("aria-hidden", "true");
2096            this.$overlay.hide();
2097            if (this.blurBody) {
2098                Smile.Layout.pageBodyBlur.unset();
2099            }
2100            if (this.modalOverlayGray) {
2101                Smile.Layout.modalOverlayGray.unset();
2102            }
2103            if (this.onCloseCallback) {
2104                this.onCloseCallback();
2105            }
2106            this.reset();
2107        };
2108        BaseDialog.prototype.cancel = function () {
2109            this.$modal.hide();
2110            this.$overlay.hide();
2111            if (this.blurBody) {
2112                Smile.Layout.pageBodyBlur.unset();
2113            }
2114            this.reset();
2115        };
2116        BaseDialog.prototype.setBlurBody = function (blurBody) {
2117            this.blurBody = blurBody;
2118        };
2119        BaseDialog.prototype.reset = function () {
2120            if (this.clearMessage) {
2121                this.$message.empty();
2122                this.$message.html(this.defaultMessage);
2123            }
2124            this.onCloseCallback = null;
2125        };
2126        return BaseDialog;
2127    }());
2128    Modal.BaseDialog = BaseDialog;
2129})(Modal || (Modal = {}));
2130Smile.createNamespace(Smile, "Smile.Modals");
2131//# sourceMappingURL=BaseDialog.js.map;
2132var __extends = (this && this.__extends) || (function () {
2133    var extendStatics = function (d, b) {
2134        extendStatics = Object.setPrototypeOf ||
2135            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
2136            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
2137        return extendStatics(d, b);
2138    };
2139    return function (d, b) {
2140        if (typeof b !== "function" && b !== null)
2141            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
2142        extendStatics(d, b);
2143        function __() { this.constructor = d; }
2144        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
2145    };
2146})();
2147var Modal;
2148(function (Modal) {
2149    var MessageDialog = (function (_super) {
2150        __extends(MessageDialog, _super);
2151        function MessageDialog(dialogId) {
2152            var _this = _super.call(this, dialogId) || this;
2153            $(function () {
2154                _this.$cancelLink = _this.$modal.dataJs("cancelLink");
2155                _this.$actionLink = _this.$modal.dataJs("actionLink");
2156                _this.$modalTitle = _this.$modal.dataJs("modal-title");
2157                _this.$modalTitlebar = _this.$modal.dataJs("modal-titlebar");
2158                _this.$modalContent = _this.$modal.dataJs("modalContent");
2159                _this.confirmButtonTxt = _this.$confirmBtn.text();
2160                _this.cancelLinkTxt = _this.$cancelLink.text();
2161                _this.blurBody = false;
2162                _this.modalOverlayGray = true;
2163                _this.$modal.on("click", "[data-js=cancelLink]", function (e) { e.preventDefault(); _this.cancel(); });
2164            });
2165            _this.$modal.keydown(function (event) {
2166                if (event.key === "Tab") {
2167                    if (event.shiftKey) {
2168                        if ($(event.target).is(_this.$cancelLink)) {
2169                            event.preventDefault();
2170                            _this.$confirmBtn.focus();
2171                        }
2172                    }
2173                    else {
2174                        if ($(event.target).is(_this.$confirmBtn)) {
2175                            event.preventDefault();
2176                            _this.$cancelLink.focus();
2177                        }
2178                    }
2179                }
2180            });
2181            return _this;
2182        }
2183        MessageDialog.prototype.show = function (message, onCloseCallback, buttonText) {
2184            this.$message.html(message);
2185            this.$confirmBtn.text(buttonText || this.confirmButtonTxt);
2186            if (onCloseCallback) {
2187                this.onCloseCallback = onCloseCallback;
2188            }
2189            this.open();
2190        };
2191        MessageDialog.prototype.showWithTitle = function (mainTitle, message, onConfirmCallback, href, target, buttonText) {
2192            var _this = this;
2193            this.reset();
2194            this.$modalTitle.html(mainTitle);
2195            this.$modalContent.addClass("modal-dialog-content-size-extended");
2196            this.$modalTitlebar.show();
2197            this.$modalContent.on("click", "[data-js=modal-close]", function (e) { e.preventDefault(); _this.cancel(); });
2198            this.$confirmBtn.attr('href', href).attr("target", target);
2199            this.show(message, onConfirmCallback, buttonText);
2200        };
2201        MessageDialog.prototype.showWithRedirect = function (message, onCloseCallback, href, target, buttonText) {
2202            this.reset();
2203            this.$confirmBtn.attr('href', href).attr("target", target);
2204            this.show(message, onCloseCallback, buttonText);
2205        };
2206        MessageDialog.prototype.showWithCancel = function (message, confirmButtonText, cancelLinkText, onCancelCallback, onCloseCallback, isCloseOnEsc, closeOnEscCallback) {
2207            this.reset();
2208            this.$confirmBtn.text(confirmButtonText || this.confirmButtonTxt);
2209            this.$cancelLink.text(cancelLinkText || this.cancelLinkTxt).show();
2210            this.onCancelCallback = onCancelCallback;
2211            if (isCloseOnEsc) {
2212                this.addEscapeDismiss(closeOnEscCallback);
2213            }
2214            this.show(message, onCloseCallback, confirmButtonText);
2215        };
2216        MessageDialog.prototype.showWithActionLink = function (message, actionLinkText, actionLinkUrl, confirmButtonText, onCloseCallback) {
2217            this.reset();
2218            this.$actionLink.text(actionLinkText || this.confirmButtonTxt).attr("href", actionLinkUrl).show();
2219            this.$confirmBtn.text(confirmButtonText || this.confirmButtonTxt);
2220            if (confirmButtonText == null) {
2221                this.$confirmBtn.hide();
2222            }
2223            this.show(message, onCloseCallback, confirmButtonText);
2224        };
2225        MessageDialog.prototype.close = function () {
2226            _super.prototype.close.call(this);
2227            this.reset();
2228        };
2229        MessageDialog.prototype.cancel = function () {
2230            _super.prototype.cancel.call(this);
2231            if (this.onCancelCallback) {
2232                this.onCancelCallback();
2233            }
2234            this.reset();
2235        };
2236        MessageDialog.prototype.closeOnEsc = function (escCallback) {
2237            _super.prototype.cancel.call(this);
2238            if (escCallback != null) {
2239                escCallback();
2240            }
2241            this.reset();
2242        };
2243        MessageDialog.prototype.reset = function () {
2244            this.$cancelLink.hide();
2245            this.$actionLink.hide();
2246            this.$modalContent.removeClass("modal-dialog-content-size-extended");
2247            this.$modalTitlebar.hide();
2248            _super.prototype.reset.call(this);
2249        };
2250        MessageDialog.prototype.addEscapeDismiss = function (escCallback) {
2251            var _this = this;
2252            onkeyup = function (e) {
2253                if ($.dataJs("modalOverlay").css("display") != "none" && e.key == "Escape") {
2254                    e.preventDefault();
2255                    _this.closeOnEsc(escCallback);
2256                }
2257            };
2258        };
2259        return MessageDialog;
2260    }(Modal.BaseDialog));
2261    Modal.MessageDialog = MessageDialog;
2262})(Modal || (Modal = {}));
2263Smile.Modals.MessageDialog || (Smile.Modals.MessageDialog = new Modal.MessageDialog("messageDialog"));
2264//# sourceMappingURL=MessageDialog.js.map;
2265var __extends = (this && this.__extends) || (function () {
2266    var extendStatics = function (d, b) {
2267        extendStatics = Object.setPrototypeOf ||
2268            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
2269            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
2270        return extendStatics(d, b);
2271    };
2272    return function (d, b) {
2273        if (typeof b !== "function" && b !== null)
2274            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
2275        extendStatics(d, b);
2276        function __() { this.constructor = d; }
2277        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
2278    };
2279})();
2280var Modal;
2281(function (Modal) {
2282    var ErrorDialog = (function (_super) {
2283        __extends(ErrorDialog, _super);
2284        function ErrorDialog(dialogId, setupModalCloseTabActions) {
2285            var _this = _super.call(this, dialogId, setupModalCloseTabActions) || this;
2286            $(function () {
2287                _this.$ajaxError = _this.$modal.dataJs("ajaxError");
2288                _this.errorMessage = _this.$message.data("errorMessage");
2289                _this.unauthorizedMessage = _this.$message.data("unauthorizedMessage");
2290                _this.$modal.on("click", "[data-js=copyBtn]", function () { return _this.copyToClipboard(); });
2291                Smile.Events.subscribe(Events.Action.ShowErrorModal, function (error) { return _this.show(_this.errorMessage, error); });
2292                Smile.Events.subscribe(Events.Action.ShowUnauthorisedModal, function () { return _this.show(_this.unauthorizedMessage); });
2293            });
2294            return _this;
2295        }
2296        ErrorDialog.prototype.show = function (message, ajaxError) {
2297            this.previousActiveElement = document.activeElement;
2298            message = message || this.errorMessage;
2299            this.$message.text(message);
2300            if (ajaxError) {
2301                this.$ajaxError.show().dataJs("ajaxErrorId").text(ajaxError.Id);
2302                this.$ajaxError.dataJs("ajaxErrorDate").text(ajaxError.Date);
2303                if (ajaxError.ErrorCode) {
2304                    this.$ajaxError.dataJs("ajaxErrorCodeSection").show();
2305                    this.$ajaxError.dataJs("ajaxErrorCode").text(ajaxError.ErrorCode);
2306                }
2307                else {
2308                    this.$ajaxError.dataJs("ajaxErrorCodeSection").hide();
2309                }
2310            }
2311            this.open();
2312        };
2313        ErrorDialog.prototype.close = function () {
2314            var _a;
2315            (_a = this.previousActiveElement) === null || _a === void 0 ? void 0 : _a.focus();
2316            _super.prototype.close.call(this);
2317            this.reset();
2318        };
2319        ErrorDialog.prototype.reset = function () {
2320            this.$ajaxError.hide().dataJs("ajaxErrorId").empty();
2321            this.$ajaxError.dataJs("ajaxErrorDate").empty();
2322            this.$ajaxError.dataJs("ajaxErrorCode").empty();
2323            _super.prototype.reset.call(this);
2324        };
2325        ErrorDialog.prototype.copyToClipboard = function () {
2326            var text = "CorId:" + this.$ajaxError.dataJs("ajaxErrorId").text();
2327            text += "; Date:" + this.$ajaxError.dataJs("ajaxErrorDate").text();
2328            text += "; ErrorCode:" + this.$ajaxError.dataJs("ajaxErrorCode").text();
2329            text += "; URL.Domain:" + document.location.hostname;
2330            text += "; URL.Path:" + document.location.pathname;
2331            text += "; Cookie.UserType: " + Smile.Core.getUserCookie();
2332            try {
2333                navigator.clipboard.writeText(text);
2334                if (MdBootstrap && MdBootstrap.SmileToastr)
2335                    (new MdBootstrap.SmileToastr()).success("Copied!");
2336            }
2337            catch (err) {
2338                console.error('Failed to copy text: ', err);
2339            }
2340        };
2341        return ErrorDialog;
2342    }(Modal.BaseDialog));
2343    Modal.ErrorDialog = ErrorDialog;
2344})(Modal || (Modal = {}));
2345Smile.Modals.ErrorDialog || (Smile.Modals.ErrorDialog = new Modal.ErrorDialog("errorDialog", true));
2346//# sourceMappingURL=ErrorDialog.js.map;
2347var __extends = (this && this.__extends) || (function () {
2348    var extendStatics = function (d, b) {
2349        extendStatics = Object.setPrototypeOf ||
2350            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
2351            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
2352        return extendStatics(d, b);
2353    };
2354    return function (d, b) {
2355        if (typeof b !== "function" && b !== null)
2356            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
2357        extendStatics(d, b);
2358        function __() { this.constructor = d; }
2359        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
2360    };
2361})();
2362var Modal;
2363(function (Modal) {
2364    var WorkflowErrorDialog = (function (_super) {
2365        __extends(WorkflowErrorDialog, _super);
2366        function WorkflowErrorDialog(dialogId) {
2367            var _this = _super.call(this, dialogId) || this;
2368            Smile.Events.subscribe(Events.Action.ShowWorkflowErrorModal, function () { return _this.$modal.modal({ show: true }); });
2369            return _this;
2370        }
2371        return WorkflowErrorDialog;
2372    }(Modal.BaseDialog));
2373    Modal.WorkflowErrorDialog = WorkflowErrorDialog;
2374})(Modal || (Modal = {}));
2375Smile.Modals.WorkflowErrorDialog || (Smile.Modals.WorkflowErrorDialog = new Modal.WorkflowErrorDialog('WorkflowErrorDialog'));
2376//# sourceMappingURL=WorkflowErrorDialog.js.map;
2377var __extends = (this && this.__extends) || (function () {
2378    var extendStatics = function (d, b) {
2379        extendStatics = Object.setPrototypeOf ||
2380            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
2381            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
2382        return extendStatics(d, b);
2383    };
2384    return function (d, b) {
2385        if (typeof b !== "function" && b !== null)
2386            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
2387        extendStatics(d, b);
2388        function __() { this.constructor = d; }
2389        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
2390    };
2391})();
2392var Modal;
2393(function (Modal) {
2394    var LoadingDialog = (function (_super) {
2395        __extends(LoadingDialog, _super);
2396        function LoadingDialog(dialogId) {
2397            var _this = _super.call(this, dialogId) || this;
2398            _this.isLoading = false;
2399            _this.clearMessage = false;
2400            _this.delay = _this.$modal.data("delay");
2401            Smile.Events.subscribe(Events.Action.ShowLoadingDialog, function (message) { return _this.show(message); });
2402            Smile.Events.subscribe(Events.Action.HideLoadingDialog, function () { return _this.hide(); });
2403            return _this;
2404        }
2405        LoadingDialog.prototype.show = function (message) {
2406            var _this = this;
2407            if (message) {
2408                this.clearMessage = true;
2409                this.$message.html(message);
2410            }
2411            if (!this.isLoading) {
2412                this.isLoading = true;
2413                if (this.delay && this.delay > 0) {
2414                    this.timeoutHandle = setTimeout(function () { _this.open(); }, this.delay);
2415                }
2416                else {
2417                    this.open();
2418                }
2419            }
2420        };
2421        LoadingDialog.prototype.open = function () {
2422            _super.prototype.open.call(this);
2423            this.createHiddenAlert();
2424        };
2425        LoadingDialog.prototype.hide = function () {
2426            _super.prototype.close.call(this);
2427            this.destroyHiddenAlert();
2428            this.isLoading = false;
2429            if (!this.timeoutHandle) {
2430                clearTimeout(this.timeoutHandle);
2431                this.timeoutHandle = null;
2432            }
2433        };
2434        LoadingDialog.prototype.createHiddenAlert = function () {
2435            var hiddenAlert = document.createElement('div');
2436            $(hiddenAlert).addClass('sr-only').attr('role', 'alert').text(this.$message.text());
2437            this.$modal.append(hiddenAlert);
2438        };
2439        LoadingDialog.prototype.destroyHiddenAlert = function () {
2440            this.$modal.find('.sr-only[role="alert"]').remove();
2441        };
2442        return LoadingDialog;
2443    }(Modal.BaseDialog));
2444    Modal.LoadingDialog = LoadingDialog;
2445})(Modal || (Modal = {}));
2446Smile.Modals.LoadingDialog || (Smile.Modals.LoadingDialog = new Modal.LoadingDialog("loadingDialog"));
2447//# sourceMappingURL=LoadingDialog.js.map;
2448var __extends = (this && this.__extends) || (function () {
2449    var extendStatics = function (d, b) {
2450        extendStatics = Object.setPrototypeOf ||
2451            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
2452            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
2453        return extendStatics(d, b);
2454    };
2455    return function (d, b) {
2456        if (typeof b !== "function" && b !== null)
2457            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
2458        extendStatics(d, b);
2459        function __() { this.constructor = d; }
2460        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
2461    };
2462})();
2463var Modal;
2464(function (Modal) {
2465    var SessionMonitorDialog = (function (_super) {
2466        __extends(SessionMonitorDialog, _super);
2467        function SessionMonitorDialog(dialogId, options, signInService) {
2468            var _this = _super.call(this, dialogId) || this;
2469            _this.options = options;
2470            _this.signInService = signInService;
2471            _this.setBlurBody(false);
2472            if (_this.options.enabled) {
2473                _this.resetCounter();
2474                _this.setInterval();
2475                Smile.Events.subscribe(Events.Action.AjaxRequestSent, function () { _this.resetCounter(); });
2476            }
2477            return _this;
2478        }
2479        SessionMonitorDialog.prototype.resetCounter = function () {
2480            this.counter = this.options.timeout;
2481        };
2482        SessionMonitorDialog.prototype.refreshSession = function () {
2483            var _this = this;
2484            this.signInService.refreshSession().done(function () {
2485                _this.resetCounter();
2486            });
2487        };
2488        SessionMonitorDialog.prototype.updateCounter = function () {
2489            this.counter--;
2490            if (this.counter === this.options.warningThreshold) {
2491                this.showDialog();
2492            }
2493            if (this.counter <= 0) {
2494                this.logout();
2495            }
2496        };
2497        SessionMonitorDialog.prototype.logout = function () {
2498            this.signInService.signOut();
2499        };
2500        SessionMonitorDialog.prototype.setInterval = function () {
2501            setInterval('Smile.Modals.SessionMonitorDialog.updateCounter()', 1000);
2502        };
2503        SessionMonitorDialog.prototype.showDialog = function () {
2504            this.showWithCancel("Are you there?", "Continue", "Log Off", this.logout, this.refreshSession);
2505        };
2506        return SessionMonitorDialog;
2507    }(Modal.MessageDialog));
2508    Modal.SessionMonitorDialog = SessionMonitorDialog;
2509})(Modal || (Modal = {}));
2510//# sourceMappingURL=SessionMonitorDialog.js.map;
2511var Modal;
2512(function (Modal) {
2513    var UserActivityMonitorDialog = (function () {
2514        function UserActivityMonitorDialog() {
2515            var _this = this;
2516            this.tickInterval = 5000;
2517            this.closeSession = function () {
2518                _this.clearInterval();
2519                if (_this.signInService) {
2520                    _this.signInService.signOut();
2521                }
2522                else {
2523                    Smile.Events.fire(Events.Action.PublicSessionTimeout);
2524                }
2525            };
2526            this.refreshSession = function () {
2527                if (_this.signInService) {
2528                    _this.signInService.refreshSession().done(function () {
2529                        _this.resetCounter();
2530                    });
2531                }
2532                else {
2533                    _this.resetCounter();
2534                }
2535            };
2536        }
2537        UserActivityMonitorDialog.prototype.init = function (options, signInService) {
2538            var _this = this;
2539            if (!this.options) {
2540                this.options = options;
2541                this.signInService = signInService;
2542                if (this.options.enabled) {
2543                    this.resetCounter();
2544                    Smile.Events.subscribe(Events.Action.AjaxRequestSent, function () {
2545                        _this.resetCounter();
2546                    });
2547                }
2548            }
2549        };
2550        UserActivityMonitorDialog.prototype.showDialog = function () {
2551            if (this.dialogVisible) {
2552                return;
2553            }
2554            this.dialogVisible = true;
2555            var time = new Date().getTime() / 1000;
2556            this.closeSessionTime = time + this.options.warningThreshold;
2557            if (this.options.btnCancelText) {
2558                Smile.Modals.MessageDialog.showWithCancel(this.options.timeoutMessage, this.options.btnContinueText, this.options.btnCancelText, this.closeSession, this.refreshSession, true, this.refreshSession);
2559            }
2560            Smile.Modals.MessageDialog.show(this.options.timeoutMessage, this.refreshSession, this.options.btnContinueText);
2561        };
2562        UserActivityMonitorDialog.prototype.resetCounter = function () {
2563            var time = new Date().getTime() / 1000;
2564            this.showDialogTime = time + (this.options.timeout - this.options.warningThreshold);
2565            this.closeSessionTime = time + this.options.timeout;
2566            this.dialogVisible = false;
2567            this.setInterval();
2568        };
2569        UserActivityMonitorDialog.prototype.updateCounter = function () {
2570            var time = new Date().getTime() / 1000;
2571            if (time > this.closeSessionTime) {
2572                this.closeSession();
2573            }
2574            else {
2575                if (time > this.showDialogTime) {
2576                    this.showDialog();
2577                }
2578            }
2579        };
2580        UserActivityMonitorDialog.prototype.clearInterval = function () {
2581            if (this.intervalHandler) {
2582                clearInterval(this.intervalHandler);
2583                this.intervalHandler = null;
2584            }
2585        };
2586        UserActivityMonitorDialog.prototype.setInterval = function (handlerToUse) {
2587            if (handlerToUse === void 0) { handlerToUse = null; }
2588            if (this.intervalHandler) {
2589                return;
2590            }
2591            if (!handlerToUse) {
2592                handlerToUse = 'Smile.Modals.UserActivityMonitorDialog.updateCounter()';
2593            }
2594            this.intervalHandler = setInterval(handlerToUse, this.tickInterval);
2595        };
2596        return UserActivityMonitorDialog;
2597    }());
2598    Modal.UserActivityMonitorDialog = UserActivityMonitorDialog;
2599})(Modal || (Modal = {}));
2600Smile.Modals.UserActivityMonitorDialog || (Smile.Modals.UserActivityMonitorDialog = new Modal.UserActivityMonitorDialog());
2601//# sourceMappingURL=UserActivityMonitorDialog.js.map;
2602var DataGrid = {};
2603
2604DataGrid.GridData = (function ($) {
2605  function GridData(gridData, totalRows) {
2606    var self = this;
2607    self.Data = gridData;
2608    self.TotalRows = totalRows;
2609  };
2610  return GridData;
2611})();
2612
2613DataGrid.SortingBy = (function ($) {
2614  function SortingBy(sortField, sortOrder) {
2615    var self = this;
2616    self.Field = sortField;
2617    self.Order = sortOrder;
2618  };
2619  return SortingBy;
2620})();
2621
2622DataGrid.TableHeaders = (function ($) {
2623  function TableHeaders(headerText, sortBy, toShow, defaultSortOrder) {
2624    var self = this;
2625    self.Text = headerText;
2626    self.SortBy = sortBy;
2627    self.ToShow = toShow;
2628    self.DefaultSortOrder = defaultSortOrder;
2629  };
2630  return TableHeaders;
2631})();
2632
2633DataGrid.Grid = (function ($) {
2634  function Grid(originalData, headers, rowsPerPage, defaultSorting) {
2635    var self = this;
2636
2637    var defaultCssClasses = {};
2638    defaultCssClasses["ASC"] = "sortAscendingIcon";
2639    defaultCssClasses["DESC"] = "sortDescendingIcon";
2640    self.DefaultSorting = defaultSorting;
2641    self.OriginalData = originalData;
2642    self.SortCssClasses = defaultCssClasses;
2643    self.Headers = ko.observableArray(headers);
2644    self.DataRows = ko.observableArray();
2645    self.AllDataRows = new Array();
2646
2647    self.FilteredHeaders = ko.computed(self.FilterHeaders, this);
2648    self.SortingListForMobile = ko.computed(function () {
2649      return self.ReadSortingListForMobile(this.FilteredHeaders());
2650    }, this);
2651
2652    self.GridParams = {
2653      pageIndex: ko.observable(1),
2654      rowsPerPage: ko.observable(rowsPerPage),
2655      sortingBy: ko.observable(defaultSorting),
2656      selectedPatientGid: ko.observable(0),
2657      totalRows: ko.observable(0),
2658      totalPages: ko.observable(0),
2659      requestedPageIndex: ko.observable(1)
2660    };
2661
2662    self.GridParams.sortFieldForMobile = ko.computed({
2663      read: function () {
2664        return self.ReadSortingByForMobile(this.GridParams.sortingBy());
2665      },
2666      write: function (value) {
2667        self.WriteSortingByForMobile(value);
2668      },
2669      owner: this
2670    });
2671    self.GridParams.requestedPageIndex.subscribe(self.ChangePageByIndex, self);
2672
2673    self.HasMorePages = ko.computed(function () {
2674      var self = this;
2675      return self.GridParams.totalPages() > 1;
2676    }, this);
2677  }
2678
2679  Grid.prototype.GetDefaultSorting = function (defaultSorting, qsParams) {
2680    var self = this;
2681    if (qsParams === null) {
2682      return defaultSorting;
2683    }
2684
2685    var sortField = qsParams.sf !== undefined && qsParams.sf !== '' ? qsParams.sf : defaultSorting.Field;
2686    var sortOrder = qsParams.so !== undefined && qsParams.so !== '' ? qsParams.so : defaultSorting.Order;
2687
2688    return new DataGrid.SortingBy(sortField, sortOrder);
2689  }
2690
2691  Grid.prototype.GetQueryStringParameters = function () {
2692    var self = this;
2693    var vars = [], hash;
2694    var q = document.location.hash.split('#')[1];
2695    if (q !== undefined) {
2696      q = q.split('&');
2697      for (var i = 0; i < q.length; i++) {
2698        hash = q[i].split('=');
2699        vars.push(hash[1]);
2700        vars[hash[0]] = hash[1];
2701      }
2702    }
2703
2704    return vars;
2705  }
2706
2707  Grid.prototype.FilterHeaders = function () {
2708    var self = this;
2709    var res = self.Headers().filter(function (el) {
2710      if (el.ToShow && el.Text.trim() !== '') {
2711        return el;
2712      }
2713    });
2714
2715    return res;
2716  }
2717
2718  Grid.prototype.GetData = function () {
2719    var self = this;
2720    var result = JSON.parse(JSON.stringify(self.OriginalData));
2721    var patientGid = self.GridParams.selectedPatientGid();
2722    result.Data = jQuery.grep(result.Data, function (value) {
2723      if (patientGid <= 0) { 
2724        return value;
2725      }
2726      return value.PatientGid === patientGid;
2727    });
2728    result.TotalRows = result.Data.length;
2729
2730    self.OnGetDataDone(result);
2731
2732    self.SmilelyQueryStringParameters();
2733  };
2734
2735  Grid.prototype.SmilelyQueryStringParameters = function () {
2736    var self = this;
2737    var validQueryString = true;
2738    var qsParams = self.GetQueryStringParameters();
2739    var initialSorting = self.GetDefaultSorting(self.DefaultSorting, qsParams);
2740    var changeSorting = JSON.stringify(initialSorting) !== JSON.stringify(self.DefaultSorting);
2741    var changePageNumber = qsParams.pi !== '' && !isNaN(qsParams.pi) && qsParams.pi !== self.GridParams.pageIndex;
2742    if (changeSorting) {
2743      var foundHeader = initialSorting.Field === '' || jQuery.grep(self.Headers(), function (e) { return e.SortBy === initialSorting.Field; }).length > 0;
2744      var foundOrder = initialSorting.Order === '' || self.SortCssClasses.hasOwnProperty(initialSorting.Order);
2745
2746      validQueryString = foundHeader && foundOrder;
2747    }
2748    if (changePageNumber && validQueryString) {
2749      validQueryString = qsParams.pi >= 0 && qsParams.pi <= self.GridParams.totalPages();
2750    }
2751
2752    if (validQueryString) {
2753      if (changeSorting) {
2754        var colHeader = new DataGrid.TableHeaders('', initialSorting.Field, true, initialSorting.Order);
2755        self.Sort(colHeader);
2756      }
2757      if (changePageNumber) {
2758        self.ChangePageByNumber(qsParams.pi);
2759      }
2760      else {
2761        var firstPageLink = document.getElementById('paginationLinks').children[1];
2762        if (firstPageLink) {
2763          firstPageLink.setAttribute('aria-current', 'page');
2764        }
2765      }
2766    }
2767    else {
2768      self.ResetQueryString();
2769    }
2770  };
2771
2772  Grid.prototype.UpdateData = function () {
2773    var self = this;
2774    self.DataRows(self.GetPagedData());
2775    var totalPages = Math.ceil(self.GridParams.totalRows() / self.GridParams.rowsPerPage());
2776    self.GridParams.totalPages(totalPages);
2777    self.GridParams.requestedPageIndex(self.GridParams.pageIndex());
2778  };
2779
2780  Grid.prototype.OnGetDataDone = function (data) {
2781    var self = this;
2782    self.AllDataRows = data.Data;
2783    self.GridParams.totalRows(data.TotalRows);
2784    self.UpdateData();
2785  };
2786
2787  Grid.prototype.GetPagedData = function () {
2788    var self = this;
2789    var size = self.GridParams.rowsPerPage();
2790    var start = (self.GridParams.pageIndex() - 1) * size;
2791    return self.AllDataRows.slice(start, start + size);
2792  };
2793
2794  Grid.prototype.Sort = function (colHeader) {
2795    var self = this;
2796    var sortOrder = self.GridParams.sortingBy().Field === colHeader.SortBy ? self.GridParams.sortingBy().Order === 'ASC' ? 'DESC' : 'ASC' : colHeader.DefaultSortOrder;
2797    var sortingBy = new DataGrid.SortingBy(colHeader.SortBy, sortOrder);
2798    self.GridParams.sortingBy(sortingBy);
2799    self.GridParams.pageIndex(1);
2800    self.AllDataRows.sort(self.compare(self.GridParams.sortingBy().Field, self.GridParams.sortingBy().Order));
2801    self.UpdateData();
2802    self.UpdateQueryString(sortingBy, self.GridParams.pageIndex(), 0);
2803  };
2804
2805  Grid.prototype.UpdateQueryString = function (sortingBy, pageIndex) {
2806    var self = this;
2807    var qsParameters = {};
2808    if (sortingBy.Field !== self.DefaultSorting.Field) {
2809      qsParameters.sf = sortingBy.Field;
2810    }
2811
2812    if (!(sortingBy.Field === self.DefaultSorting.Field && sortingBy.Order === self.DefaultSorting.Order)) {
2813      qsParameters.so = sortingBy.Order;
2814    }
2815
2816    if (pageIndex !== 1) {
2817      qsParameters.pi = pageIndex;
2818    }
2819
2820    var qs = jQuery.param(qsParameters);
2821    window.history.replaceState({}, '', '#' + qs);
2822  };
2823
2824  Grid.prototype.ResetQueryString = function () {
2825    var href = document.location.href;
2826    var indexOfHash = href.indexOf('#');
2827    if (indexOfHash !== -1) {
2828      window.history.replaceState({}, '', href.substring(0, indexOfHash));
2829    }
2830  };
2831
2832  Grid.prototype.ChangePageByIndex = function (newRequestedPageIndex) {
2833    var self = this;
2834    var requestedPageIndex = parseInt(self.GridParams.requestedPageIndex());
2835  
2836    if (requestedPageIndex > 0 && requestedPageIndex <= self.GridParams.totalPages()) {
2837      self.GridParams.pageIndex(requestedPageIndex);
2838      self.UpdateData();
2839    } else {
2840      self.GridParams.requestedPageIndex(self.GridParams.pageIndex());
2841    }
2842  };
2843
2844  Grid.prototype.ChangePageByNumber = function (newRequestedPageIndex, element) {
2845    var self = this;
2846    var requestedPageIndex = parseInt(newRequestedPageIndex);
2847    if (element !== undefined) {
2848      for (let i = 0; i < element.parentNode.children.length; i++) {
2849        element.parentNode.children[i].removeAttribute('aria-current');
2850      }
2851      element.setAttribute('aria-current', 'page');
2852    }
2853    else {
2854      var paginationLinks = document.getElementById('paginationLinks').children;
2855      for (let i = 0; i < paginationLinks.length; i++) {
2856        paginationLinks[i].removeAttribute('aria-current');
2857      }
2858      paginationLinks[requestedPageIndex].setAttribute('aria-current', 'page');
2859    }
2860    if (requestedPageIndex > 0 && requestedPageIndex <= self.GridParams.totalPages()) {
2861      self.GridParams.pageIndex(requestedPageIndex);
2862      self.UpdateData();
2863      self.UpdateQueryString(self.GridParams.sortingBy(), newRequestedPageIndex, 0);
2864    }
2865  }
2866
2867  Grid.prototype.compare = function (prop, order) {
2868    var isAscendent = order === 'ASC';
2869    var decimalWithCurrencyRegex = /^(\$-?\d+\.?\d*)$/;
2870    var nonDecimalRegex = /[^-?0-9\.]+/g;
2871
2872    var compareMethod = function (a, b) {
2873      var propA = a[prop].toString();
2874      var propB = b[prop].toString();
2875
2876      var left = propA.match(decimalWithCurrencyRegex) === null && isNaN(Number(propA)) ? propA : Number(propA.replace(nonDecimalRegex, ""));
2877      var right = propB.match(decimalWithCurrencyRegex) === null && isNaN(Number(propB)) ? propB : Number(propB.replace(nonDecimalRegex, ""));
2878      left = typeof left === "string" ? left.toLowerCase() : left;
2879      right = typeof right === "string" ? right.toLowerCase() : right;
2880
2881      if (isAscendent)
2882        return (right > left) ? -1 : ((right < left) ? 1 : 0);
2883      else
2884        return (left < right) ? 1 : ((left > right) ? -1 : 0);
2885    };
2886
2887    return compareMethod;
2888  }
2889
2890  Grid.prototype.FilterByPatient = function (patientGid, resetQueryString) {
2891    var self = this;
2892    self.GridParams.selectedPatientGid(patientGid);
2893    self.GridParams.sortingBy(self.DefaultSorting);
2894    self.GridParams.pageIndex(1);
2895
2896    var headers = self.Headers();
2897    headers[1].ToShow = self.IsSecondColumnVisible();
2898    self.Headers(headers);
2899
2900    if (resetQueryString !== undefined && resetQueryString) {
2901      self.ResetQueryString();
2902    }
2903    self.GetData();
2904  }
2905
2906  Grid.prototype.GetAriaSort = function (field, index) {
2907    var self = this;
2908    var headers = self.Headers();
2909
2910    return field == headers[index].SortBy ? self.GridParams.sortingBy().Order.toLowerCase() + 'ending' : 'none';
2911  }
2912
2913  Grid.prototype.IsSecondColumnVisible = function () {
2914    var self = this;
2915    return self.Headers()[1].ToShow;
2916  }
2917
2918  Grid.prototype.ReloadOriginalData = function (originalData) {
2919    var self = this;
2920    self.OriginalData = originalData;
2921    self.GridParams.pageIndex(1);
2922    self.GridParams.sortingBy(self.DefaultSorting);
2923    self.GridParams.selectedPatientGid(0);
2924
2925    var headers = self.Headers();
2926    headers[1].ToShow = self.IsSecondColumnVisible();
2927
2928    self.Headers(headers);
2929  }
2930
2931  Grid.prototype.ReadSortingListForMobile = function (filteredHeaders) {
2932    var self = this;
2933    var result = [];
2934    jQuery.each(filteredHeaders, function (i, val) {
2935      var asc = new DataGrid.TableHeaders(val.Text + ", Ascending", val.SortBy + ",ASC");
2936      var desc = new DataGrid.TableHeaders(val.Text + ", Descending", val.SortBy + ",DESC");
2937      result.push(asc);
2938      result.push(desc);
2939    });
2940
2941    return result;
2942  };
2943
2944  Grid.prototype.ReadSortingByForMobile = function (sortingBy) {
2945    var self = this;
2946    var order = {};
2947    order["ASC"] = "Ascending";
2948    order["DESC"] = "Descending";
2949
2950    var sortBy = sortingBy.Field + ',' + sortingBy.Order;
2951    var fieldTextAux = jQuery.grep(self.SortingListForMobile(), function (e) {
2952      return e.SortBy === sortBy;
2953    });
2954
2955    return fieldTextAux[0];
2956  };
2957
2958  Grid.prototype.WriteSortingByForMobile = function (sortingByForMobile) {
2959    var self = this;
2960    var sortBy = sortingByForMobile.SortBy.split(',');
2961    var colHeader = new DataGrid.TableHeaders('', sortBy[0], true, sortBy[1]);
2962    self.Sort(colHeader);
2963  };
2964  return Grid;
2965})();;
2966
2967/*
2968 * String extensions
2969 */
2970
2971// ReSharper disable once NativeTypePrototypeExtending
2972String.prototype.isEmpty = String.prototype.isEmpty || function () {
2973  return (this.length === 0 || !this.trim());
2974};
2975
2976String.isNullOrWhitespace = String.isNullOrWhitespace || function (value) {
2977  return (!value || value.isEmpty());
2978};
2979
2980String.prototype.toDisplayDate = String.prototype.toDisplayDate || function () {
2981  var dt = new Date(this);
2982  return dt.toDisplayString();
2983};
2984
2985String.prototype.toMMDDYYYY = String.prototype.toMMDDYYYY || function () {
2986  var dt = new Date(this);
2987  return dt.toMMDDYYYY();
2988};
2989
2990String.prototype.toMMDDYY = Date.prototype.toMMDDYYYY || function () {
2991  var dt = new Date(this);
2992  return dt.toMMDDYY();
2993};
2994
2995String.prototype.toUtcWithFormat = String.prototype.toUtcWithFormat || function (format) {
2996  return moment.utc(this.toLocaleString()).format(format);
2997};
2998
2999String.prototype.toSortableString = String.prototype.toSortableString || function () {
3000  var dt = new Date(this);
3001  return dt.toSortableString();
3002};
3003
3004String.prototype.toPhone = String.prototype.toPhone || function () {
3005  var value = this;
3006
3007  if (value === "0000000000") {
3008    return "";
3009  }
3010
3011  if (value.length === 10) {
3012    return "(" + value.substr(0, 3) + ")" + value.substr(3, 3) + "-" + value.substr(6, 4);
3013  } else if (value[0] === "+" && value.length > 10) {
3014    return value.substr(value.length - 10, 10);
3015  }
3016
3017  return value;
3018};
3019
3020String.prototype.toUsZipCode = String.prototype.toUsZipCode || function () {
3021  var value = this;
3022  return value.length < 9 ? value : value.substring(0, 5) + "-" + value.substring(5);
3023}
3024
3025String.prototype.toDisplayUrl = String.prototype.toDisplayUrl || function () {
3026  var value = this;
3027  if (value) {
3028    value = value.toLowerCase().replace("http://", "").replace("https://", "");
3029  }
3030  return value;
3031}
3032
3033String.prototype.toTitleCase = String.prototype.toTitleCase || function () {
3034  var value = this;
3035  if (value) {
3036    value = value.replaceAll('"', '');
3037    value = value.charAt(0).toUpperCase() + value.substring(1).toLowerCase();
3038  }
3039  return value;
3040}
3041
3042String.prototype.removeNonNumeric = String.prototype.removeNonNumeric || function () {
3043  var value = this;
3044  if (!value) {
3045    return value;
3046  }
3047  return value.replace(/\D/g, '');
3048}
3049
3050
3051//Needed for IE 11 compatibility
3052String.prototype.startsWith = String.prototype.startsWith ||
3053  function (searchString, position) {
3054    var pos = position > 0 ? position | 0 : 0;
3055    return this.substring(pos, pos + searchString.length) === searchString;
3056  };
3057
3058/*
3059 * Date extensions
3060 */
3061
3062Date.prototype.toDisplayString = Date.prototype.toDisplayString || function () {
3063  var month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
3064  return month[this.getMonth()] + " " + this.getDate() + ", " + this.getFullYear();
3065};
3066
3067Date.prototype.toMMDDYYYY = Date.prototype.toMMDDYYYY || function () {
3068  var month = (1 + this.getMonth()).toString();
3069  month = month.length > 1 ? month : '0' + month;
3070
3071  var day = this.getDate().toString();
3072  day = day.length > 1 ? day : '0' + day;
3073
3074  return month + '/' + day + '/' + this.getFullYear().toString();
3075};
3076
3077Date.prototype.toMMDDYY = Date.prototype.toMMDDYYYY || function () {
3078  return this.toLocaleDateString('en-US', {
3079    month: '2-digit',
3080    day: '2-digit',
3081    year: '2-digit'
3082  });
3083};
3084
3085Date.prototype.toSortableString = Date.prototype.toSortableString || function () {
3086  var month = (1 + this.getMonth()).toString();
3087  month = month.length > 1 ? month : '0' + month;
3088
3089  var day = this.getDate().toString();
3090  day = day.length > 1 ? day : '0' + day;
3091
3092  return this.getFullYear().toString() + '-' + month + '-' + day;
3093};
3094
3095/*
3096 * Other extensions
3097 */
3098
3099Number.prototype.toCurrency = Number.prototype.toCurrency || function (fractionDigits) {
3100  if (!fractionDigits && fractionDigits !== 0) {
3101    fractionDigits = 2;
3102  }
3103  return '$' + (this).toFixed(fractionDigits).replace(/\d(?=(\d{3})+\.)/g, '$&,');
3104};
3105
3106/*
3107 * Knockout extensions
3108 */
3109
3110var ko = ko || undefined;
3111if (ko !== undefined) {
3112  ko.subscribable.fn.subscribeChanged = function (callback) {
3113    var oldValue;
3114    return [
3115      this.subscribe(function (_oldValue) {
3116        oldValue = _oldValue;
3117      }, this, 'beforeChange'),
3118      this.subscribe(function (newValue) {
3119        callback(newValue, oldValue);
3120      })
3121    ];
3122  };
3123};
3124
3125/*
3126 * Finds all anchors linking to a private page and triggers the
3127 * signin dialog if user is not logged in and clicks a link
3128 */
3129jQuery(function () {
3130
3131  // If user is not logged in and not on a private page
3132  if (!Smile.User.IsAuth && !Smile.User.IsLegacyUser && document.location.href.indexOf("/private/") === -1) {
3133
3134    // Bind the click event
3135    $("a[href*='/private/']").click(function (event) {
3136      event.preventDefault();
3137
3138      // Open the SignIn Page for login and set redirect url
3139      Smile.Events.fire(Events.Action.NavigateToSignIn, {
3140        redirectUrl: $(this).attr('href')
3141      });
3142    });
3143  }
3144});
3145;
3146
3147/*
3148 * Finds all anchors linking to an external page and redirects the
3149 * user to the outgoing redirect page before navigating to the target external link
3150 */
3151jQuery(function () {
3152
3153  // Test all links for external href
3154  jQuery("a", this).each(function () {
3155
3156    var $link = jQuery(this);
3157    if ($link.isExternalLink()) {
3158
3159      $link.click(function (e) {
3160        e.stopPropagation();
3161        var outgoingRedirectUrl = "/outgoing-redirect?target=" + encodeURIComponent(this.href);
3162
3163        if (this.target === "_blank" || this.target === "New") {
3164          var isIE = /MSIE|Trident/.test(navigator.userAgent);
3165          if (isIE) {
3166            var outgoingRedirectLink = document.createElement("a");
3167            outgoingRedirectLink.href = outgoingRedirectUrl;
3168            outgoingRedirectLink.target = this.target;
3169            outgoingRedirectLink.click();
3170          }
3171          else {
3172            window.open(outgoingRedirectUrl, this.target);
3173          }
3174        }
3175        else {
3176          document.location = outgoingRedirectUrl;
3177        }
3178        return false;
3179      });
3180    };
3181  });
3182
3183  jQuery.fn.bindExternalLinks = function () {
3184    jQuery.fn.bindExternalLinks.openExternalModalPopUp = function (event, url, target) {
3185        e.stopPropagation();
3186        var outgoingRedirectUrl = "/outgoing-redirect?target=" + encodeURIComponent(url);
3187
3188        if (this.target === "_blank" || this.target === "New") {
3189          window.open(outgoingRedirectUrl, this.target);
3190        }
3191        else {
3192          document.location = outgoingRedirectUrl;
3193        }
3194    };
3195  };
3196});;
3197Smile.createNamespace(Smile, 'Smile.Core.Debug');
3198
3199//jQuery(document).ajaxComplete(function (event, response, settings) {
3200//  Smile.Core.Debug.Log(JSON.stringify(response), "Ajax.Completed");
3201//});
3202
3203Smile.Core.Debug = (function ($) {
3204  var log = function (msg, componentId) {
3205    
3206  };
3207
3208  return {
3209    Log: log
3210  };
3211})(jQuery);;
3212function formatDate(element, valueAccessor, allBindingsAccessor, viewModel, suppliedValue, dateFormat) {
3213  let formattedValue = suppliedValue;
3214
3215  // if value is not null, convert it to the format supplied. 
3216  // will default to 'mmm dd, yyyy'
3217  if (formattedValue) {
3218    switch (dateFormat) {
3219      case "MMDDYYYY":
3220        formattedValue = formattedValue.toMMDDYYYY();
3221        break;
3222      default:
3223        formattedValue = formattedValue.toDisplayDate();
3224    }
3225  }
3226
3227  // update the element with the formatted value
3228  if (jQuery(element).is("input") === true) {
3229    jQuery(element).val(formattedValue);
3230  } else {
3231    jQuery(element).text(formattedValue);
3232  }
3233}
3234
3235ko.bindingHandlers.formatDate = {
3236  update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
3237    let value = ko.utils.unwrapObservable(valueAccessor());
3238    formatDate(element, valueAccessor, allBindingsAccessor, viewModel, value, null);
3239  }
3240};
3241
3242ko.bindingHandlers.formatDateAsMMDDYYYY = {
3243  init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
3244    ko.utils.registerEventHandler(element, 'change', function () {
3245      var value = valueAccessor();
3246      (element.value !== null && element.value !== undefined && element.value.length > 0) ? value(element.value) : value('');
3247    });
3248  },
3249  update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
3250    let value = ko.utils.unwrapObservable(valueAccessor());
3251    formatDate(element, valueAccessor, allBindingsAccessor, viewModel, value, "MMDDYYYY");
3252  }
3253};
3254
3255ko.bindingHandlers.formatCurrency = {
3256  update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
3257    var value = ko.utils.unwrapObservable(valueAccessor());
3258
3259    if (value != undefined) {
3260      var formattedValue = value.toCurrency();
3261
3262      // update the element
3263      if (jQuery(element).is("input") === true) {
3264        jQuery(element).val(formattedValue);
3265      } else {
3266        jQuery(element).text(formattedValue);
3267      }
3268    }
3269  }
3270};
3271
3272ko.bindingHandlers.formatPhone = {
3273  init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
3274    ko.utils.registerEventHandler(element, 'change', function () {
3275      var value = valueAccessor();
3276      (element.value !== null && element.value !== undefined && element.value.length > 0) ? value(element.value) : value('');
3277    });
3278  },
3279  update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
3280    var value = ko.utils.unwrapObservable(valueAccessor());
3281
3282    var formattedValue = value ? value.toPhone() : "";
3283
3284    // update the element
3285    if (jQuery(element).is("input") === true) {
3286      jQuery(element).val(formattedValue);
3287    } else {
3288      jQuery(element).text(formattedValue);
3289    }
3290  }
3291};
3292
3293ko.bindingHandlers.formatZipCode = {
3294  update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
3295    var value = ko.utils.unwrapObservable(valueAccessor());
3296
3297    var formattedValue = value ? value.toUsZipCode() : "";
3298
3299    // update the element
3300    if (jQuery(element).is("input") === true) {
3301      jQuery(element).val(formattedValue);
3302    } else {
3303      jQuery(element).text(formattedValue);
3304    }
3305  }
3306};
3307
3308ko.bindingHandlers.formatdisplayUrl = {
3309  update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
3310    var value = ko.utils.unwrapObservable(valueAccessor());
3311
3312    var formattedValue = value ? value.toDisplayUrl() : "";
3313
3314    // update the element
3315    if (jQuery(element).is("input") === true) {
3316      jQuery(element).val(formattedValue);
3317    } else {
3318      jQuery(element).text(formattedValue);
3319    }
3320  }
3321};
3322
3323ko.bindingHandlers.bindIf = {
3324  init: function (element, valueAccessor) {
3325    // Let bindings proceed as normal *only if* my value is false
3326    var shouldAllowBindings = ko.unwrap(valueAccessor());
3327    return { controlsDescendantBindings: !shouldAllowBindings };
3328  }
3329};;
3330
3331var windowSize = jQuery(window).width();
3332
3333var updateEdgeToolTips = function () {
3334    jQuery(".tooltip a").each(function (i, e) {
3335
3336        var icon = $(e);
3337        var pos = icon.offset();
3338        if (pos != null) {
3339            var dv = icon.parent().find(".tooltipInner");
3340            if ((pos.left + dv.width() + 100 >= $(window).width())) {
3341                icon.parent().addClass("tooltip-flip");
3342            }
3343            else {
3344                icon.parent().removeClass("tooltip-flip");
3345            }
3346        }
3347    });
3348};
3349
3350jQuery(document).ready(function () {
3351
3352    if (jQuery(".custMobifilterSelect").length) {
3353        jQuery(".custMobifilterSelect").click(function () {
3354            jQuery(".custMobiFilterSelectOverlay").show();
3355           jQuery(".custMobiFilterSelectOverlay").animate({ left: "0" }, 300);
3356            jQuery(".patient__date-dropdown").nextAll().hide();
3357            jQuery(".smile__footer").hide();
3358            jQuery("input[name=gender]:radio").change(function () {
3359                jQuery(".custMobiFilterBack").click();
3360            });
3361        });
3362
3363        jQuery(".custMobiFilterBack").click(function () {
3364          jQuery(".custMobiFilterSelectOverlay").animate({ left: "100%" }, 300);
3365            jQuery(".custMobiFilterSelectOverlay")
3366                .promise()
3367                .done(function () {
3368                    jQuery(".custMobiFilterSelectOverlay").hide();
3369                });
3370            jQuery(".patient__date-dropdown").nextAll().show();
3371            jQuery(".smile__footer").show();
3372        });
3373    }
3374
3375    windowSize = jQuery(window).width();
3376
3377    if (jQuery(".smile__leftrail__sticky").length) {
3378
3379        var distance = jQuery(".smile__leftrail__sticky").offset().top;
3380
3381        jQuery(window).scroll(function () {
3382            if (jQuery(window).scrollTop() >= distance) {
3383                if (windowSize > 980) {
3384
3385                    jQuery(".smile__mixedmaincontent_lr").css({ "margin-left": " 25% " });
3386                    jQuery(".smile__leftrail__sticky").addClass("smile__leftrail__sticky__pos");
3387                    jQuery(".smile__leftrail__sticky").css({ "position": "", "top": "" });
3388
3389                }
3390            }
3391            else {
3392                jQuery(".smile__mixedmaincontent_lr").css({ "margin-left": " 0 " });
3393                jQuery(".smile__leftrail__sticky").removeClass("smile__leftrail__sticky__pos");
3394            }
3395        });
3396
3397    }
3398
3399    jQuery(".faq__questions").click(function () {
3400        //if this is closed, close any/previous open:
3401        if (!jQuery(this).hasClass("faq__questions-opened")) {
3402            var $openFaqQ = jQuery(".faq__questions-opened");
3403            $openFaqQ.toggleClass("faq__questions-opened");
3404            $openFaqQ.find(".chevron").toggleClass("closedAccord");
3405            $openFaqQ.next().slideToggle("slow");
3406        }
3407        //now open this:
3408        var isOpened = jQuery(this).hasClass("faq__questions-opened");
3409        jQuery(this).find('button').attr('aria-expanded', isOpened ? 'false' : 'true');
3410        jQuery(this).toggleClass("faq__questions-opened");
3411        jQuery(this).find(".chevron").toggleClass("closedAccord");
3412        jQuery(this).next().slideToggle("slow", function () {
3413            //if this is last FAQ, reveal it to user:
3414            if (jQuery(this).parent().is(":last-child")) {
3415                jQuery(".faqContactUs")[0].scrollTop = 350;
3416            }
3417        });
3418    });
3419
3420    jQuery(".dash.fadresults.resultsCol").on("click", ".tooltip a", function () {
3421        jQuery(this).parent().find(".tooltipInner").css({
3422            "display": "block"
3423        });
3424    });
3425
3426    jQuery(".smile__container .smile__table").find("thead tr th .ddwa_table_heading").each(function () {
3427        headerContent.push(jQuery(this).text());
3428    });
3429
3430    jQuery(".smile__container .smile__table").each(function () {
3431        desktopTable.push(jQuery(this).html());
3432    });
3433
3434    jQuery(".smile__container .smile__table").find("tbody tr td:nth-child(1)").each(function () {
3435        val0.push(jQuery(this).text());
3436    });
3437    jQuery(".smile__container .smile__table").find("tbody tr td:nth-child(2)").each(function () {
3438        val1.push(jQuery(this).text());
3439    });
3440    jQuery(".smile__container .smile__table").find("tbody tr td:nth-child(3)").each(function () {
3441        val2.push(jQuery(this).text());
3442    });
3443    jQuery(".smile__container .smile__table").find("tbody tr td:nth-child(4)").each(function () {
3444        val3.push(jQuery(this).text());
3445    });
3446
3447    if (Smile.Layout.isMobileDevice()) {
3448      jQuery('#idBreadcrumbNavigation').addClass('mobile-hide');
3449    }
3450
3451    updateEdgeToolTips();
3452});
3453
3454
3455jQuery(window).resize(function () {
3456    windowSize = jQuery(window).width();
3457
3458    if (jQuery(".smile__leftrail__sticky").length) {
3459
3460        var distance = jQuery(".smile__leftrail__sticky").offset().top;
3461
3462        if (windowSize < 980) {
3463
3464            jQuery(".smile__mixedmaincontent_lr").css({ "margin-left": " 0 " });
3465            jQuery(".smile__leftrail__sticky").css({ "position": " static ", "top": "0" });
3466            jQuery(".smile__leftrail__sticky").removeClass("smile__leftrail__sticky__pos");
3467
3468        }
3469    }
3470
3471
3472
3473    if (Smile.Layout.isMobile()) {
3474        jQuery(".smile__container .smile__table").find("thead tr").each(function () {
3475            jQuery(this).html(function () {
3476                var selectBox = "<th><select class=\"gridselect\">";
3477                for (var z = 0; z < headerContent.length; z++) {
3478                    selectBox = selectBox + "<option value=\"val\" + z + \"\">" + headerContent[z] + "</option>";
3479                }
3480                selectBox = selectBox + "</select></th>";
3481                return selectBox;
3482            });
3483        });
3484
3485
3486        jQuery(".smile__container .smile__table").find("tbody").each(function () {
3487            jQuery(this).html(function () {
3488                var selectContent = "";
3489                for (var z = 0; z < headerContent.length; z++) {
3490                    selectContent = selectContent + "<tr><td style=\"width:100%;\" value=\"" + z + "\"><div>" + val0[z] + "</div></td></tr>";
3491                }
3492                return selectContent;
3493            });
3494        });
3495
3496        jQuery(".gridselect").change(function () {
3497            var selectElem = jQuery(this).val();
3498            jQuery(".smile__container .smile__table").find("tbody").each(function () {
3499                jQuery(this).html(function () {
3500                    var selectContent = "";
3501                    for (var z = 0; z < eval(selectElem).length; z++) {
3502                        selectContent = selectContent + "<tr><td style=\"width:100%;\" value=\"" + z + "">" + eval(selectElem)[z] + \"</td></tr>";
3503                    }
3504                    return selectContent;
3505                });
3506            })
3507        });
3508
3509    } else if (Smile.Layout.isMobile()) {
3510        jQuery(".smile__container .smile__table").each(function (i) {
3511
3512            jQuery(this).html(desktopTable[i]);
3513        });
3514    };
3515});
3516
3517
3518
3519jQuery(window).resize(function() {
3520  updateEdgeToolTips();
3521});;
3522var __extends = (this && this.__extends) || (function () {
3523    var extendStatics = function (d, b) {
3524        extendStatics = Object.setPrototypeOf ||
3525            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3526            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
3527        return extendStatics(d, b);
3528    };
3529    return function (d, b) {
3530        if (typeof b !== "function" && b !== null)
3531            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
3532        extendStatics(d, b);
3533        function __() { this.constructor = d; }
3534        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3535    };
3536})();
3537var Ajax;
3538(function (Ajax) {
3539    var SignInStatus;
3540    (function (SignInStatus) {
3541        SignInStatus[SignInStatus["Success"] = 0] = "Success";
3542        SignInStatus[SignInStatus["UserNotAuthorized"] = 1] = "UserNotAuthorized";
3543        SignInStatus[SignInStatus["UserNotConfirmed"] = 2] = "UserNotConfirmed";
3544        SignInStatus[SignInStatus["MfaChallenge"] = 3] = "MfaChallenge";
3545        SignInStatus[SignInStatus["TooManyRequests"] = 4] = "TooManyRequests";
3546        SignInStatus[SignInStatus["CodeMismatch"] = 5] = "CodeMismatch";
3547        SignInStatus[SignInStatus["ExpiredCode"] = 6] = "ExpiredCode";
3548        SignInStatus[SignInStatus["AccountDisabled"] = 7] = "AccountDisabled";
3549        SignInStatus[SignInStatus["PasswordChangeRequired"] = 8] = "PasswordChangeRequired";
3550        SignInStatus[SignInStatus["AccountConfirmLimitExceeded"] = 9] = "AccountConfirmLimitExceeded";
3551        SignInStatus[SignInStatus["MfaChallengeTooManyInvalidCredentials"] = 10
3551] = "MfaChallengeTooManyInvalidCredentials";
3552        SignInStatus[SignInStatus["MfaChallengeSessionExpired"] = 11] = "MfaChallengeSessionExpired";
3553        SignInStatus[SignInStatus["ProviderServiceOfficeNotFound"] = 12] = "ProviderServiceOfficeNotFound";
3554        SignInStatus[SignInStatus["PasswordAttemptsExceeded"] = 13] = "PasswordAttemptsExceeded";
3555        SignInStatus[SignInStatus["UserNotFound"] = 14] = "UserNotFound";
3556        SignInStatus[SignInStatus["AccountCorrupted"] = 50] = "AccountCorrupted";
3557    })(SignInStatus = Ajax.SignInStatus || (Ajax.SignInStatus = {}));
3558    var SignInService = (function (_super) {
3559        __extends(SignInService, _super);
3560        function SignInService() {
3561            var _this = _super.call(this) || this;
3562            _this.endpoint = "/api/signin/";
3563            _this.authEndpoint = "/private/api/account/";
3564            _this.signOut = function () {
3565                _this.clearLocalStorage();
3566                return _this.getJson(_this.endpoint + "sign-out");
3567            };
3568            _this.refreshSession = function () {
3569                return _this.getJson(_this.endpoint + "refresh-session");
3570            };
3571            _this.auth = function (returnUrl, bearerToken) {
3572                var url = _this.authEndpoint + "auth";
3573                returnUrl = !String.isNullOrWhitespace(returnUrl) ? encodeURIComponent(returnUrl) : null;
3574                if (returnUrl != null) {
3575                    url += "?returnUrl=" + returnUrl;
3576                }
3577                return _this.getJson(url, null, false, 'Bearer ' + bearerToken);
3578            };
3579            _this.clearLocalStorage = function () {
3580                var storage = new Navigation.LocalStorage("");
3581                storage.clearItems();
3582            };
3583            return _this;
3584        }
3585        return SignInService;
3586    }(Ajax.HttpService));
3587    Ajax.SignInService = SignInService;
3588})(Ajax || (Ajax = {}));
3589//# sourceMappingURL=SignInService.js.map;
3590var Core;
3591(function (Core) {
3592    var WorkflowHandler = (function () {
3593        function WorkflowHandler() {
3594        }
3595        WorkflowHandler.prototype.ProcessWorkflow = function (workflowResponse, onSuccessCallback, onFailCallback, onExceptionCallBack) {
3596            workflowResponse.then(function (serviceResponse) {
3597                var workflowResponseModel = serviceResponse.data.Workflow;
3598                var result = {
3599                    ResultOfOperation: serviceResponse.data,
3600                    IsValid: false,
3601                    WorkflowSessionId: workflowResponseModel.WorkflowSessionId,
3602                    ClientActions: workflowResponseModel.ClientActionCodes.map(function (c) { return Core.ClientAction[c]; }),
3603                };
3604                result.IsValid = !workflowResponseModel.WorkflowErrorC
3604ontext;
3605                if (result.IsValid) {
3606                    onSuccessCallback(result);
3607                    return;
3608                }
3609                Smile.Events.fire(Events.Action.HideLoadingDialog);
3610                if (workflowResponseModel.WorkflowErrorContext.WorkflowErrorType === Core.WorkflowErrorType.Workflow) {
3611                    Smile.Events.fire(Events.Action.WorkflowErrorOccurred, workflowResponseModel.WorkflowErrorContext);
3612                }
3613                onFailCallback(result);
3614            }).catch(function (error) {
3615                if (typeof onExceptionCallBack === "function") {
3616                    onExceptionCallBack();
3617                }
3618            });
3619        };
3620        return WorkflowHandler;
3621    }());
3622    Core.WorkflowHandler = WorkflowHandler;
3623})(Core || (Core = {}));
3624//# sourceMappingURL=WorkflowHandler.js.map;
3625var MdBootstrap;
3626(function (MdBootstrap_1) {
3627    var DataTable = (function () {
3628        function DataTable() {
3629        }
3630        DataTable.prototype.setupTable = function (dataTableOptions) {
3631            $.dataJs(dataTableOptions.dataJsSelector).DataTable();
3632            jQuery('.dataTables_length').addClass('bs-select');
3633        };
3634        return DataTable;
3635    }());
3636    MdBootstrap_1.DataTable = DataTable;
3637    var SmileToastr = (function () {
3638        function SmileToastr() {
3639            this.getToastrDefaults = function () {
3640                return {
3641                    "closeButton": true,
3642                    "positionClass": "md-toast-top-right",
3643                };
3644            };
3645            this.fullWidthToastrOptions = {
3646                positionClass: "md-toast-top-full-width",
3647                tapToDismiss: true,
3648                closeButton: true,
3649                timeOut: 0,
3650                extendedTimeOut: 0
3651            };
3652            this.nonDismissibleFullWidthToastrOptions = {
3653                positionClass: "md-toast-top-full-width",
3654                tapToDismiss: false,
3655                closeButton: false,
3656                timeOut: 0,
3657                extendedTimeOut: 0
3658            };
3659            this.defaultToastrOptions = this.getToastrDefaults();
3660        }
3661        SmileToastr.prototype.error = function (message, title, overrides) {
3662            toastr.error(message, title, this.getOverrides(overrides));
3663        };
3664        SmileToastr.prototype.info = function (message, title, overrides) {
3665            toastr.info(message, title, this.getOverrides(overrides));
3666        };
3667        SmileToastr.prototype.warning = function (message, title, overrides) {
3668            toastr.warning(message, title, this.getOverrides(overrides));
3669        };
3670        SmileToastr.prototype.clear = function () {
3671            toastr.clear();
3672        };
3673        SmileToastr.prototype.success = function (message, title, overrides) {
3674            toastr.success(message, title, this.getOverrides(overrides));
3675        };
3676        SmileToastr.prototype.getOverrides = function (methodOptions) {
3677            if (!methodOptions)
3678                return this.defaultToastrOptions;
3679            return methodOptions;
3680        };
3681        return SmileToastr;
3682    }());
3683    MdBootstrap_1.SmileToastr = SmileToastr;
3684    var SmileMaterialSelect = (function () {
3685        function SmileMaterialSelect() {
3686        }
3687        SmileMaterialSelect.prototype.isExpanded = function ($element) {
3688            return $element.siblings('input.select-dropdown').data('aria-expanded') === "true";
3689        };
3690        SmileMaterialSelect.prototype.setExpanded = function ($element, value) {
3691            var input = $element.siblings('input.select-dropdown');
3692            var ul = $element.siblings('ul.dropdown-content');
3693            var styleAttr = ul.attr("style");
3694            if (!styleAttr) {
3695                return;
3696            }
3697            if (styleAttr.indexOf('position') < 0) {
3698                if (!value) {
3699                    return;
3700                }
3701                input.trigger("click");
3702                return;
3703            }
3704            ul.css("display", value ? "block" : "none");
3705            input.attr('aria-expanded', value.toString());
3706            input.data('aria-expanded', value.toString());
3707        };
3708        SmileMaterialSelect.prototype.keyDown = function ($element, event) {
3709            var _a, _b;
3710            switch (event.key) {
3711                case "Escape":
3712                    event.preventDefault();
3713                    this.setExpanded($element, false);
3714                    return false;
3715                case "ArrowDown":
3716                case "ArrowUp":
3717                    event.preventDefault();
3718                    var ul = $element.siblings('ul.dropdown-content');
3719                    if (!this.isExpanded($element)) {
3720                        this.setExpanded($element, true);
3721                        $element.siblings('input.select-dropdown').trigger("focus");
3722                        return false;
3723                    }
3724                    var currentOption = ul.find('li').filter(function () {
3725                        var _a, _b, _c;
3726                        return ((_a = this.innerText) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === ((_c = (_b = $element.find("option:not([disabled]):selected")) === null || _b === void 0 ? void 0 : _b.text()) === null || _c === void 0 ? void 0 : _c.toLowerCase());
3727                    });
3728                    if (currentOption.length === 0) {
3729                        return false;
3730                    }
3731                    var currentIndex_1 = (_b = (_a = currentOption[0]) === null || _a === void 0 ? void 0 : _a.getAttribute('data-index')) !== null && _b !== void 0 ? _b : (event.key === "ArrowDown" ? -1 : 1);
3732                    var targetOption = ul.find('li').filter(function () {
3733                        var nextTargetIndex = event.key === "ArrowDown" ? (+currentIndex_1 + 1).toString() : (+currentIndex_1 - 1).toString();
3734                        return this.getAttribute('data-index') === nextTargetIndex;
3735                    });
3736                    if ((targetOption === null || targetOption === void 0 ? void 0 : targetOption.length) > 0) {
3737                        this.setSelectedOptionByText($element, targetOption[0].innerText.toLowerCase());
3738                    }
3739                    return false;
3740                case " ":
3741                case "Enter":
3742                    event.preventDefault();
3743                    this.setExpanded($element, !this.isExpanded($element));
3744                    return false;
3745                case "Tab":
3746                    if (this.isExpanded($element)) {
3747                        event.preventDefault();
3748                        $element.siblings('input.select-dropdown').trigger("focus");
3749                        this.setExpanded($element, false);
3750                        return false;
3751                    }
3752            }
3753            return true;
3754        };
3755        SmileMaterialSelect.prototype.setSelectedOptionByText = function ($dropdown, text) {
3756            var _a, _b;
3757            var textToLowerCase = text.toLowerCase();
3758            var optionValue = (_b = (_a = $dropdown.find('option').filter(function () {
3759                var _a;
3760                return ((_a = this.innerText) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === textToLowerCase;
3761            })) === null || _a === void 0 ? void 0 : _a.val()) === null || _b === void 0 ? void 0 : _b.toString();
3762            if (optionValue != undefined) {
3763                if (optionValue.length > 0) {
3764                    $dropdown.val(optionValue);
3765                    this.setValue($dropdown, optionValue, text);
3766                    var ul = $dropdown.siblings('ul.dropdown-content');
3767                    var li = ul.find("li").filter(function () {
3768                        var _a;
3769                        return ((_a = this.innerText) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === textToLowerCase;
3770                    });
3771                    ul.scrollTop(ul.scrollTop() + (li.offset().top - ul.offset().top));
3772                }
3773                else {
3774                    $dropdown.val(optionValue);
3775                    this.setValue($dropdown, optionValue, text);
3776                    var ul = $dropdown.siblings('ul.dropdown-content');
3777                    ul.scrollTop();
3778                }
3779            }
3780        };
3781        SmileMaterialSelect.prototype.rebuildDropdown = function ($dropdown) {
3782            var _this = this;
3783            $.fn.onClassChange = $.fn.onClassChange || function (cb) {
3784                return $(this).each(function (_, el) {
3785                    new MutationObserver(function (mutations) {
3786                        mutations.forEach(function (mutation) { return cb && cb(mutation.target, mutation.target.className); });
3787                    }).observe(el, {
3788                        attributes: true,
3789                        attributeFilter: ['class']
3790                    });
3791                });
3792            };
3793            if ($dropdown && $dropdown.length > 0 && $dropdown.materialSelect) {
3794                $dropdown.materialSelect({ destroy: true });
3795                $dropdown.materialSelect();
3796                var that_1 = this;
3797                var parent_1 = $dropdown.parents("div.select-wrapper");
3798                parent_1[0].onkeydown = function (event) { return _this.keyDown($dropdown, event); };
3799                $(parent_1[0]).onClassChange(function (el, classNames) {
3800                    window.setTimeout(function () {
3801                        if (classNames.indexOf("active") === -1 && !el.contains(document.activeElement)) {
3802                            window.setTimeout(function () { that_1.setExpanded($dropdown, false); }, 0);
3803                        }
3804                    }, 0);
3805                });
3806                var name_1 = $dropdown.attr('name');
3807                var caret = $dropdown.siblings('span.caret');
3808                caret[0].innerText = "";
3809                caret.attr('aria-hidden', 'true')
3810                    .attr('class', 'caret pr-2 icon fas fa-sort-down');
3811                var dropdownInput_1 = $dropdown.siblings('input.select-dropdown');
3812                dropdownInput_1
3813                    .attr('aria-labelledby', $dropdown[0].id + 'label')
3814                    .attr('aria-haspopup', 'listbox')
3815                    .attr('aria-expanded', 'false')
3816                    .attr('role', 'combobox')
3817                    .attr('name', name_1);
3818                dropdownInput_1.addClass('text-left');
3819                var select = $dropdown.siblings('ul.dropdown-content');
3820                select
3821                    .attr('role', 'listbox')
3822                    .attr('aria-labelledby', $dropdown[0].id + 'label');
3823                select.children("li").each(function (index, li) {
3824                    li.id = $dropdown[0].id + '_option_' + index;
3825                    li.setAttribute('data-index', index.toString());
3826                    li.setAttribute('tabindex', "0");
3827                });
3828                var label = $dropdown.siblings('label.active');
3829                label.attr('id', $dropdown[0].id + 'label');
3830                label.attr('aria-hidden' + 'true');
3831                var placeholder = $dropdown.find('option:disabled').text();
3832                if (placeholder && placeholder === dropdownInput_1.val()) {
3833                    dropdownInput_1.attr("placeholder", placeholder).val('');
3834                }
3835                $dropdown.on('change', function () {
3836                    dropdownInput_1.trigger('blur');
3837                });
3838                $dropdown.siblings('input.select-dropdown').on('click', function (e) {
3839                    _this.setExpanded($dropdown, !_this.isExpanded($dropdown));
3840                });
3841                var $dropdownOptions = $('ul.select-dropdown', $dropdown.parent());
3842                $dropdownOptions.find('li').on('click', function (event) {
3843                    event.preventDefault();
3844                    _this.setSelectedOptionByText($dropdown, event.currentTarget.innerText);
3845                    if (!!event.screenX) {
3846                        _this.setExpanded($dropdown, false);
3847                    }
3848                });
3849                if ($dropdown.attr('data-val-required')) {
3850                    var requiredMessage = $dropdown.attr('data-val-required');
3851                    dropdownInput_1
3852                        .attr('data-val-required', requiredMessage);
3853                }
3854                else {
3855                    dropdownInput_1.removeAttr('required');
3856                }
3857            }
3858        };
3859        SmileMaterialSelect.prototype.destroyDropdown = function ($dropdown) {
3860            if ($dropdown.materialSelect) {
3861                $dropdown.materialSelect({ destroy: true });
3862                $dropdown.children('[data-mdb-placeholder]').remove();
3863            }
3864        };
3865        SmileMaterialSelect.prototype.initDropdown = function ($dropdown) {
3866            var _this = this;
3867            $dropdown.materialSelect();
3868            var $dropdownInput = $('input.select-dropdown', $dropdown.parent());
3869            if ($dropdown.attr('data-val-required')) {
3870                $dropdownInput
3871                    .attr('name', $dropdown.attr('name'))
3872                    .attr('data-val-required', $dropdown.attr('data-val-required'));
3873                var placeholder = $dropdown.find('option:disabled').text();
3874                if (placeholder && placeholder === $dropdownInput.val()) {
3875                    $dropdownInput.attr("placeholder", placeholder).val('');
3876                }
3877            }
3878            $dropdown.on('change', function (event) {
3879                var placeholder = $dropdown.find('option:disabled').text();
3880                _this.setValue($dropdown, $dropdown.val(), placeholder);
3881                $dropdownInput.trigger('blur');
3882            });
3883        };
3884        SmileMaterialSelect.prototype.setValue = function ($dropdown, value, text) {
3885            var optionText = (value || '') !== '' ? $dropdown.find("option[value='".concat(value, "']")).text() : '';
3886            var $dropdownInput = $('input.select-dropdown', $dropdown.parent());
3887            var $dropdownOptions = $('ul.select-dropdown', $dropdown.parent());
3888            $dropdownOptions.find('li').removeClass().attr('aria-selected', 'false');
3889            $dropdownInput.val(optionText);
3890            if (optionText !== '') {
3891                var selectedLi = $dropdownOptions.find("li:contains('".concat(optionText, "')"));
3892                selectedLi.addClass('active selected').attr('aria-selected', 'true');
3893                $dropdownInput.attr('aria-activedescendant', selectedLi.attr('id'));
3894            }
3895            else {
3896                var selectedLi = $dropdownOptions.find("li:first");
3897                selectedLi.addClass('active selected').attr('aria-selected', 'true');
3898                $dropdownInput.attr('aria-activedescendant', selectedLi.attr('id'));
3899                if (text.length > 0) {
3900                    $dropdownInput.attr("placeholder", text);
3901                }
3902            }
3903            setTimeout(function () {
3904                $dropdownInput.focus();
3905                $dropdownInput.addClass('is-focused-by-tab');
3906            }, 100);
3907        };
3908        return SmileMaterialSelect;
3909    }());
3910    MdBootstrap_1.SmileMaterialSelect = SmileMaterialSelect;
3911    var SmileModal = (function () {
3912        function SmileModal() {
3913            this.returnFocusElement = null;
3914        }
3915        SmileModal.prototype.setupModalTabActions = function (focusableSelectors, actionHandlers, dialogId) {
3916            if (dialogId === void 0) { dialogId = null; }
3917            this.returnFocusElement = document.activeElement;
3918            this.modal = !!dialogId ? $("#".concat(dialogId)) : $('.modal');
3919            var focusableElements = this.modal.find(focusableSelectors).attr('tabIndex', '0');
3920            if (actionHandlers.length > 0)
3921                this.setupActions(actionHandlers);
3922            var firstFocusableElement = focusableElements[0];
3923            var lastFocusableElement = focusableElements[focusableElements.length - 1];
3924            firstFocusableElement === null || firstFocusableElement === void 0 ? void 0 : firstFocusableElement.focus();
3925            var trapTabInsideModal = function (e) {
3926                if (e.keyCode !== SmileModal.KEYCODE_TAB) {
3927                    return;
3928                }
3929                if (e.shiftKey) {
3930                    if (document.activeElement === firstFocusableElement) {
3931                        lastFocusableElement.focus();
3932                        e.preventDefault();
3933                    }
3934                }
3935                else {
3936                    if (document.activeElement === lastFocusableElement) {
3937                        firstFocusableElement.focus();
3938                        e.preventDefault();
3939                    }
3940                }
3941            };
3942            this.modal.off('keydown', trapTabInsideModal).on('keydown', trapTabInsideModal);
3943        };
3944        SmileModal.prototype.setupModalCloseTabActions = function (closeHandler, dialogId, useCloseHandler) {
3945            var _this = this;
3946            if (dialogId === void 0) { dialogId = ""; }
3947            if (useCloseHandler === void 0) { useCloseHandler = true; }
3948            var allFocusableElements = 'a.close, b-button, button:visible, a.modalFocusable, div.disclaimer-content';
3949            var closeHandlerWithFocusReturn;
3950            if (useCloseHandler) {
3951                closeHandlerWithFocusReturn = function () {
3952                    if (closeHandler) {
3953                        closeHandler();
3954                    }
3955                    window.setTimeout(function () {
3956                        if (_this.returnFocusElement && typeof _this.returnFocusElement.focus === 'function') {
3957                            _this.returnFocusElement.focus();
3958                        }
3959                        else {
3960                            document.body.focus();
3961                        }
3962                    }, 50);
3963                };
3964            }
3965            this.setupModalTabActions(allFocusableElements, useCloseHandler ? [
3966                {
3967                    controlSelector: allFocusableElements,
3968                    actionCallback: closeHandlerWithFocusReturn
3969                }
3970            ] : [], dialogId);
3971        };
3972        SmileModal.prototype.setupModalCloseButtonAccessibility = function (id) {
3973            var closeElement = this.modal.find('a.close');
3974            closeElement.attr('role', 'button');
3975            closeElement.attr('aria-label', 'Close');
3976            closeElement.attr('id', id);
3977            closeElement.attr('style', 'position: relative;');
3978            closeElement.on('keydown', function (event) {
3979                var _a;
3980                if (event.key === ' ' || event.key === 'Spacebar' || event.key === 'Enter') {
3981                    event.preventDefault();
3982                    (_a = closeElement.get(0)) === null || _a === void 0 ? void 0 : _a.click();
3983                }
3984            });
3985        };
3986        SmileModal.prototype.setupActions = function (actionHandlers) {
3987            var _this = this;
3988            actionHandlers.forEach(function (ah) {
3989                _this.modal.find(ah.controlSelector).on('keydown', function (e) {
3990                    if (e.keyCode === SmileModal.KEYCODE_ENTER)
3991                        ah.actionCallback();
3992                });
3993            });
3994        };
3995        SmileModal.KEYCODE_TAB = 9;
3996        SmileModal.KEYCODE_ENTER = 13;
3997        return SmileModal;
3998    }());
3999    MdBootstrap_1.SmileModal = SmileModal;
4000    var MdBootstrap = (function () {
4001        function MdBootstrap() {
4002            this.smileToastr = new SmileToastr();
4003            this.dataTable = new DataTable();
4004            this.materialSelect = new SmileMaterialSelect();
4005            this.smileModal = new SmileModal();
4006        }
4007        return MdBootstrap;
4008    }());
4009    MdBootstrap_1.MdBootstrap = MdBootstrap;
4010})(MdBootstrap || (MdBootstrap = {}));
4011Smile.createNamespace(Smile, "Smile.MdBootstrap");
4012Smile.MdBootstrap = new MdBootstrap.MdBootstrap();
4013//# sourceMappingURL=MdBootstrap.js.map;
4014var Directives;
4015(function (Directives) {
4016    var CustomTooltipDirective = (function () {
4017        function CustomTooltipDirective() {
4018            var self = this;
4019            Vue.directive('custom-tooltip', {
4020                bind: function (el, binding) {
4021                    var tooltipContainer = document.createElement('div');
4022                    tooltipContainer.innerHTML =
4023                        "<div id=\"customTooltip".concat(binding.value.targetId, "\" class=\"custom-tooltip\" role=\"tooltip\">\n              ").concat(binding.value.title, "\n            </div>");
4024                    el.appendChild(tooltipContainer.firstChild);
4025                    el.addEventListener('focus', function () {
4026                        self.showTooltip(binding.value.targetId);
4027                    });
4028                    el.addEventListener('mouseenter', function () {
4029                        self.showTooltip(binding.value.targetId);
4030                    });
4031                    el.addEventListener('blur', function () {
4032                        self.hideTooltip(binding.value.targetId);
4033                    });
4034                    el.addEventListener('mouseleave', function () {
4035                        self.hideTooltip(binding.value.targetId);
4036                    });
4037                },
4038                update: function (el, binding) {
4039                    if (binding.value !== binding.oldValue) {
4040                        var tooltip = document.getElementById("customTooltip".concat(binding.value.targetId));
4041                        if (tooltip) {
4042                            tooltip.innerText = binding.value.title;
4043                        }
4044                    }
4045                }
4046            });
4047        }
4048        CustomTooltipDirective.prototype.showTooltip = function (targetId) {
4049            var tooltip = document.getElementById("customTooltip".concat(targetId));
4050            if (tooltip) {
4051                tooltip.style.display = 'block';
4052                if ('ontouchstart' in window || navigator.maxTouchPoints > 0) {
4053                    if ("".concat(targetId).match("previousButton") || "".concat(targetId).match("nextButton")) {
4054                        if (this._tooltipTimer) {
4055                            clearTimeout(this._tooltipTimer);
4056                        }
4057                        this._tooltipTimer = setTimeout(function () {
4058                            tooltip.style.display = 'none';
4059                            var button = tooltip.parentElement;
4060                            if (button && button.tagName === 'BUTTON') {
4061                                button.focus();
4062                            }
4063                        }, 2000);
4064                    }
4065                }
4066            }
4067        };
4068        CustomTooltipDirective.prototype.hideTooltip = function (targetId) {
4069            var tooltip = document.getElementById("customTooltip".concat(targetId));
4070            if (tooltip) {
4071                tooltip.style.display = 'none';
4072            }
4073        };
4074        return CustomTooltipDirective;
4075    }());
4076    Directives.CustomTooltipDirective = CustomTooltipDirective;
4077})(Directives || (Directives = {}));
4078Smile.createNamespace(Smile.Directives, "Smile.Directives.CustomTooltipDirective");
4079Smile.Directives.CustomTooltipDirective = new Directives.CustomTooltipDirective();
4080//# sourceMappingURL=CustomTooltipDirective.js.map;
4081var Navigation;
4082(function (Navigation) {
4083    var LocalStorageKeys;
4084    (function (LocalStorageKeys) {
4085        LocalStorageKeys["Pagination"] = "Pagination";
4086        LocalStorageKeys["HistoryState"] = "HistoryState";
4087        LocalStorageKeys["ProviderClaimsSearch"] = "ProviderClaimsSearch";
4088        LocalStorageKeys["ProviderPaginationClaimsSearch"] = "ProviderPaginationClaimsSearch";
4089        LocalStorageKeys["ProviderPaymentVoucherSearch"] = "ProviderPaymentVoucherSearch";
4090        LocalStorageKeys["ProviderPaymentVoucherSearchV2"] = "ProviderPaymentVoucherSearchV2";
4091        LocalStorageKeys["ProviderPaginationPaymentVoucherSearch"] = "ProviderPaginationPaymentVoucherSearch";
4092        LocalStorageKeys["ProviderPredeterminationSearch"] = "ProviderPredeterminationSearch";
4093        LocalStorageKeys["ProviderPaginationPredeterminationSearch"] = "ProviderPaginationPredeterminationSearch";
4094        LocalStorageKeys["ProviderBenefitsSearch"] = "ProviderBenefitsSearch";
4095        LocalStorageKeys["ProviderDeltaCareRosterSearch"] = "ProviderDeltaCareRosterSearch";
4096        LocalStorageKeys["EnrollmentSearch"] = "EnrollmentSearch";
4097        LocalStorageKeys["EnrollmentSearchResults"] = "EnrollmentSearchResults";
4098        LocalStorageKeys["GroupEnrollmentSearchResults"] = "GroupEnrollmentSearchResults";
4099        LocalStorageKeys["EnrollmentEligibilityHistory"] = "EnrollmentEligibilityHistory";
4100        LocalStorageKeys["GroupEnrollmentEligibilityHistory"] = "GroupEnrollmentEligibilityHistory";
4101        LocalStorageKeys["PatientMyAccountNotification"] = "PatientMyAccountNotification";
4102        LocalStorageKeys["PlanManagementResult"] = "PlanManagementResult";
4103        LocalStorageKeys["DataStorage"] = "DataStorage";
4104        LocalStorageKeys["PatientRegistrationWidget"] = "PatientRegistrationWidget";
4105        LocalStorageKeys["IndividualBobResult"] = "IndividualBobResult";
4106        LocalStorageKeys["IndividualSalesCart"] = "IndividualSalesCart";
4107        LocalStorageKeys["IdCardValidation"] = "IdCardValidation";
4108        LocalStorageKeys["Invoices"] = "Invoices";
4109        LocalStorageKeys["FindADentistAddress"] = "FindADentistAddress";
4110        LocalStorageKeys["DDPASearch"] = "DDPASearch";
4111        LocalStorageKeys["ProviderClaimSubmissionData"] = "ProviderClaimSubmissionData";
4112        LocalStorageKeys["CostGenie"] = "CostGenie";
4113        LocalStorageKeys["SignInComponent"] = "SignInComponent";
4114        LocalStorageKeys["Pdu"] = "Pdu";
4115        LocalStorageKeys["SelfServiceRegistration"] = "SelfServiceRegistration";
4116        LocalStorageKeys["ProviderServiceRegistration"] = "ProviderServiceRegistration";
4117        LocalStorageKeys["CtaSignInDismissibleBanner"] = "CtaSignInDismissibleBanner";
4118        LocalStorageKeys["EdiBenefitsSearch"] = "EdiBenefitsSearch";
4119        LocalStorageKeys["ProviderPatientBenefits"] = "ProviderPatientBenefits";
4120        LocalStorageKeys["GroupEnrollmentV2SearchResults"] = "GroupEnrollmentV2SearchResults";
4121        LocalStorageKeys["PlanManagementCart"] = "PlanManagementCart";
4122        LocalStorageKeys["PlanManagementCall2ActionDismissibleBanner"] = "PlanManagementCall2ActionDismissibleBanner";
4123    })(LocalStorageKeys = Navigation.LocalStorageKeys || (Navigation.LocalStorageKeys = {}));
4124    var LocalStorage = (function () {
4125        function LocalStorage(appName) {
4126            var _this = this;
4127            this.baseName = "SMILE";
4128            this.storage = window.sessionStorage;
4129            this.setItem = function (item) {
4130                var serializedData = JSON.stringify(item.value);
4131                _this.storage.setItem(_this.getKey(item.key), serializedData);
4132            };
4133            this.getItem = function (key, defaultValues) {
4134                var result = _this.getItemUsingKey(key) || {};
4135                for (var key in defaultValues) {
4136                    if (!result.hasOwnProperty(key)) {
4137                        result[key] = defaultValues[key];
4138                    }
4139                }
4140                return result;
4141            };
4142            this.removeItem = function (key) {
4143                _this.storage.removeItem(_this.getKey(key));
4144            };
4145            this.clearItems = function () {
4146                var keyLength = _this.storage.length;
4147                for (var i = keyLength - 1; i >= 0; i--) {
4148                    var key = _this.storage.key(i);
4149                    if (key.indexOf(_this.appName) != -1) {
4150                        _this.storage.removeItem(key);
4151                    }
4152                }
4153            };
4154            this.getItemUsingKey = function (key) {
4155                return JSON.parse(_this.storage.getItem(_this.getKey(key)));
4156            };
4157            this.getKey = function (key) {
4158                return _this.appName + key;
4159            };
4160            this.appName = this.baseName + appName;
4161        }
4162        return LocalStorage;
4163    }());
4164    Navigation.LocalStorage = LocalStorage;
4165})(Navigation || (Navigation = {}));
4166//# sourceMappingURL=LocalStorageService.js.map;
4167var __extends = (this && this.__extends) || (function () {
4168    var extendStatics = function (d, b) {
4169        extendStatics = Object.setPrototypeOf ||
4170            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
4171            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
4172        return extendStatics(d, b);
4173    };
4174    return function (d, b) {
4175        if (typeof b !== "function" && b !== null)
4176            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
4177        extendStatics(d, b);
4178        function __() { this.constructor = d; }
4179        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
4180    };
4181})();
4182var Search;
4183(function (Search) {
4184    var SolrSuggestService = (function (_super) {
4185        __extends(SolrSuggestService, _super);
4186        function SolrSuggestService() {
4187            var _this = _super.call(this) || this;
4188            _this.suggesterEndpoint = "/api/search/suggest";
4189            _this.getSuggesterResults = function (data) {
4190                var deferred = jQuery.Deferred();
4191                _this.postJson(_this.suggesterEndpoint, data, undefined, false)
4192                    .done(function (result) {
4193                    if (result.Data) {
4194                        deferred.resolve(result.Data);
4195                    }
4196                    else {
4197                        deferred.reject(result.Data);
4198                    }
4199                })
4200                    .catch(function () { deferred.reject(-1); });
4201                return deferred.promise();
4202            };
4203            return _this;
4204        }
4205        return SolrSuggestService;
4206    }(Ajax.HttpService));
4207    Search.SolrSuggestService = SolrSuggestService;
4208})(Search || (Search = {}));
4209//# sourceMappingURL=SolrSuggestService.js.map;
4210var Search;
4211(function (Search) {
4212    var SuggesterView = (function () {
4213        function SuggesterView(suggestService) {
4214            var _this = this;
4215            this.getSuggestions = function (request, update) {
4216                var data = { keyword: request.term.toLowerCase() };
4217                _this.suggesterService.getSuggesterResults(data)
4218                    .done(function (results) {
4219                    update(_this.mapResults(results));
4220                });
4221            };
4222            this.mapResults = function (res) {
4223                return jQuery.map(res, function (item) { return { label: item }; });
4224            };
4225            this.getAntiforgeryToken = function () {
4226                var fromHeader = $.dataJs("submitSearch").find("[name='__RequestVerificationToken']");
4227                var fromResultPage = $.dataJs("submitSearchButton").find("[name='__RequestVerificationToken']");
4228                return fromHeader.val() || fromResultPage.val();
4229            };
4230            this.suggesterService = suggestService;
4231            this.$searchInputText = $('.SolrQueryBox');
4232            var that = this;
4233            $.ui.autocomplete.prototype._renderItem = this.renderItem;
4234            var $autocompleteWidget = this.$searchInputText
4235                .autocomplete({
4236                minLength: 3,
4237                delay: 500,
4238                source: this.getSuggestions,
4239                close: function (event, ui) {
4240                    that.$searchInputText.attr("aria-expanded", "false");
4241                },
4242                open: function (event, ui) {
4243                    that.$searchInputText.attr("aria-expanded", "true");
4244                }
4245            })
4246                .autocomplete("widget");
4247            Accessibility.AccessibilityUtils.makeSolrSearchInputAccesible(this.$searchInputText, $autocompleteWidget);
4248        }
4249        SuggesterView.prototype.renderItem = function (ul, item) {
4250            ul.attr("aria-labelledby", "searchSubmitInputLabel");
4251            return jQuery("<li role='option' id='item_" + ul.children().length + "'></li>")
4252                .each(function (_, _li) {
4253                var observer = new MutationObserver(function (mutationList) {
4254                    mutationList.forEach(function (mutation) {
4255                        if (mutation.attributeName === "class" &&
4256                            mutation.target instanceof Element &&
4257                            mutation.target.classList.contains("ui-state-active")) {
4258                            $('.SolrQueryBox').attr("aria-activedescendant", _li.id);
4259                        }
4260                    });
4261                });
4262                observer.observe(_li, { attributes: true, subtree: true, attributeFilter: ["class"] });
4263            })
4264                .data("item.autocomplete", item)
4265                .append(jQuery("<a></a>").html(item.label)).appendTo(ul);
4266        };
4267        ;
4268        return SuggesterView;
4269    }());
4270    Search.SuggesterView = SuggesterView;
4271})(Search || (Search = {}));
4272Smile.createNamespace(Smile.Feature, "Smile.Feature.SuggesterView");
4273Smile.Feature.SuggesterView = new Search.SuggesterView(new Search.SolrSuggestService());
4274//# sourceMappingURL=SuggesterView.js.map;
4275var Btl;
4276(function (Btl) {
4277    var BtlEventActionTracker = (function () {
4278        function BtlEventActionTracker() {
4279        }
4280        BtlEventActionTracker.prototype.action = function (area, type) {
4281            return new BtlEventAction(area, type);
4282        };
4283        return BtlEventActionTracker;
4284    }());
4285    Btl.BtlEventActionTracker = BtlEventActionTracker;
4286    var BtlEventAction = (function () {
4287        function BtlEventAction(area, type) {
4288            this.area = area;
4289            this.type = type;
4290        }
4291        BtlEventAction.prototype.setParameters = function (func) {
4292            this.parameters = func;
4293            return this;
4294        };
4295        BtlEventAction.prototype.setResults = function (func) {
4296            this.results = func;
4297            return this;
4298        };
4299        BtlEventAction.prototype.setSuccessStatus = function (status) {
4300            this.successStatus = status;
4301            return this;
4302        };
4303        BtlEventAction.prototype.setErrorStatus = function (status) {
4304            this.errorStatus = status;
4305            return this;
4306        };
4307        BtlEventAction.prototype.setSuccessMessage = function (message) {
4308            this.successMessage = message;
4309            return this;
4310        };
4311        BtlEventAction.prototype.setErrorMessage = function (message) {
4312            this.errorMessage = message;
4313            return this;
4314        };
4315        BtlEventAction.prototype.trackAjaxRequest = function (targetObj, funcName) {
4316            var action = this;
4317            var objType = typeof targetObj.prototype !== 'undefined' ? targetObj.prototype : targetObj;
4318            var originalFunc = objType[funcName];
4319            if (!originalFunc) {
4320                Smile.Core.Debug.Log("[BTL] WARN - function ".concat(funcName, " is not defined for ").concat(targetObj));
4321            }
4322            objType[funcName] = function () {
4323                var _this = this;
4324                var startTime = performance.now();
4325                var actionParameters = action.getParameters(this, arguments);
4326                var returnValue = originalFunc.apply(this, arguments);
4327                var jqXHR = returnValue;
4328                if (jqXHR && typeof jqXHR.then !== 'undefined' && typeof jqXHR.fail !== 'undefined') {
4329                    jqXHR.then(function (data) {
4330                        var actionResults = action.getResults(_this, data);
4331                        var actionStatus = action.getSuccessStatus(_this, data);
4332                        var actionStatusMessage = action.getSuccessMessage(_this, data);
4333                        var duration = performance.now() - startTime;
4334                        action.logEvent(action, actionParameters, actionResults, duration, actionStatus, actionStatusMessage);
4335                    });
4336                    jqXHR.fail(function (_) {
4337                        var actionResults = action.getResults(_this, null);
4338                        var actionStatus = action.getErrorStatus(_this, null);
4339                        var actionStatusMessage = action.getErrorMessage(_this, null);
4340                        var duration = performance.now() - startTime;
4341                        action.logEvent(action, actionParameters, actionResults, duration, actionStatus, actionStatusMessage);
4342                    });
4343                }
4344                else {
4345                    Smile.Core.Debug.Log("[BTL] WARN - returned value for func ".concat(funcName, " defined for ").concat(targetObj, " is not of type JQuery.jqXHR"));
4346                }
4347                return returnValue;
4348            };
4349            return this;
4350        };
4351        BtlEventAction.prototype.trackXMLHttpRequest = function (targetObj, funcName) {
4352            var action = this;
4353            var objType = typeof targetObj.prototype !== 'undefined' ? targetObj.prototype : targetObj;
4354            var originalFunc = objType[funcName];
4355            if (!originalFunc) {
4356                Smile.Core.Debug.Log("[BTL] WARN - function ".concat(funcName, " is not defined for ").concat(targetObj));
4357            }
4358            objType[funcName] = function () {
4359                var _this = this;
4360                var startTime = performance.now();
4361                var actionParameters = action.getParameters(this, arguments);
4362                var returnValue = originalFunc.apply(this, arguments);
4363                var xmlHttpRequest = returnValue;
4364                if (xmlHttpRequest && typeof xmlHttpRequest.onloadend !== 'undefined' && typeof xmlHttpRequest.onerror !== 'undefined') {
4365                    var _onloadend_1 = xmlHttpRequest.onloadend;
4366                    xmlHttpRequest.onloadend = function (ev) {
4367                        var success = xmlHttpRequest.status === 200;
4368                        var actionResults = success ? action.getResults(_this, returnValue) : action.getResults(_this, null);
4369                        var actionStatus = success ? action.getSuccessStatus(_this, returnValue) : action.getErrorStatus(_this, null);
4370                        var actionStatusMessage = success ? action.getSuccessMessage(_this, returnValue) : action.getErrorMessage(_this, null);
4371                        var duration = performance.now() - startTime;
4372                        action.logEvent(action, actionParameters, actionResults, duration, actionStatus, actionStatusMessage);
4373                        _onloadend_1.apply(_this, ev);
4374                    };
4375                    var _onerror_1 = xmlHttpRequest.onerror;
4376                    xmlHttpRequest.onerror = function (ev) {
4377                        var actionResults = action.getResults(_this, null);
4378                        var actionStatus = action.getErrorStatus(_this, null);
4379                        var actionStatusMessage = action.getErrorMessage(_this, null);
4380                        var duration = performance.now() - startTime;
4381                        action.logEvent(action, actionParameters, actionResults, duration, actionStatus, actionStatusMessage);
4382                        _onerror_1.apply(_this, ev);
4383                    };
4384                }
4385                else {
4386                    Smile.Core.Debug.Log("[BTL] WARN - returned value for func ".concat(funcName, " defined for ").concat(targetObj, " is not of type XMLHttpRequest"));
4387                }
4388                return returnValue;
4389            };
4390            return this;
4391        };
4392        BtlEventAction.prototype.trackDOMEvent = function (event, targetSelector, container) {
4393            var _this = this;
4394            if (!event) {
4395                Smile.Core.Debug.Log("[BTL] WARN - event is not defined");
4396                return this;
4397            }
4398            if (!targetSelector) {
4399                Smile.Core.Debug.Log("[BTL] WARN - target selector is not defined");
4400                return this;
4401            }
4402            if (!container) {
4403                Smile.Core.Debug.Log("[BTL] WARN - container is not defined");
4404                return this;
4405            }
4406            var action = this;
4407            $(container).on(event, targetSelector, function (ev) {
4408                var actionParameters = action.getParameters(_this, [ev]);
4409                var actionResults = action.getResults(_this, [ev]);
4410                var actionStatus = action.getSuccessStatus(_this, [ev]);
4411                var actionStatusMessage = action.getSuccessMessage(_this, [ev]);
4412                var duration = 0;
4413                action.logEvent(action, actionParameters, actionResults, duration, actionStatus, actionStatusMessage);
4414            });
4415            return this;
4416        };
4417        BtlEventAction.prototype.trackDOMEventOnce = function (event, targetSelector, container, delay) {
4418            var _this = this;
4419            if (delay === void 0) { delay = 100; }
4420            if (!event) {
4421                Smile.Core.Debug.Log("[BTL] WARN - event is not defined");
4422                return this;
4423            }
4424            if (!targetSelector) {
4425                Smile.Core.Debug.Log("[BTL] WARN - target selector is not defined");
4426                return this;
4427            }
4428            if (!container) {
4429                Smile.Core.Debug.Log("[BTL] WARN - container is not defined");
4430                return this;
4431            }
4432            var action = this;
4433            $(container).on(event, targetSelector, function (ev) {
4434                ev.preventDefault();
4435                ev.stopPropagation();
4436                setTimeout(function () {
4437                    ev.originalEvent.target.dispatchEvent(new MouseEvent(ev.originalEvent.type, {
4438                        bubbles: ev.originalEvent.bubbles,
4439                        composed: ev.originalEvent.composed,
4440                        cancelable: ev.originalEvent.cancelable
4441                    }));
4442                }, delay);
4443                $(container).off(event, targetSelector);
4444                var actionParameters = action.getParameters(_this, [ev]);
4445                var actionResults = action.getResults(_this, [ev]);
4446                var actionStatus = action.getSuccessStatus(_this, [ev]);
4447                var actionStatusMessage = action.getSuccessMessage(_this, [ev]);
4448                var duration = 0;
4449                action.logEvent(action, actionParameters, actionResults, duration, actionStatus, actionStatusMessage);
4450            });
4451            return this;
4452        };
4453        BtlEventAction.prototype.trackWindowEvent = function (event) {
4454            var _this = this;
4455            if (!event) {
4456                Smile.Core.Debug.Log("[BTL] WARN - event is not defined");
4457                return this;
4458            }
4459            var action = this;
4460            window.addEventListener(event, function (ev) {
4461                var actionParameters = action.getParameters(_this, [ev]);
4462                var actionResults = action.getResults(_this, [ev]);
4463                var actionStatus = action.getSuccessStatus(_this, [ev]);
4464                var actionStatusMessage = action.getSuccessMessage(_this, [ev]);
4465                var duration = 0;
4466                action.logEvent(action, actionParameters, actionResults, duration, actionStatus, actionStatusMessage);
4467            });
4468            return this;
4469        };
4470        BtlEventAction.prototype.getArea = function () {
4471            return typeof this.area === 'function' ? this.area() : this.area;
4472        };
4473        BtlEventAction.prototype.getType = function () {
4474            return typeof this.type === 'function' ? this.type() : this.type;
4475        };
4476        BtlEventAction.prototype.getParameters = function (context, args) {
4477            return this.parameters ? this.parameters.apply(context, args) : {};
4478        };
4479        BtlEventAction.prototype.getResults = function (context, args) {
4480            return this.results ? this.results.call(context, args) : {};
4481        };
4482        BtlEventAction.prototype.getSuccessStatus = function (context, args) {
4483            return typeof this.successStatus === 'function' ? this.successStatus.call(context, args) : this.successStatus || 'SUCCESS';
4484        };
4485        BtlEventAction.prototype.getErrorStatus = function (context, args) {
4486            return typeof this.errorStatus === 'function' ? this.errorStatus.call(context, args) : this.errorStatus || 'ERROR';
4487        };
4488        BtlEventAction.prototype.getSuccessMessage = function (context, args) {
4489            return typeof this.successMessage === 'function' ? this.successMessage.call(context, args) : this.successMessage || null;
4490        };
4491        BtlEventAction.prototype.getErrorMessage = function (context, args) {
4492            return typeof this.errorMessage === 'function' ? this.errorMessage.call(context, args) : this.errorMessage || null;
4493        };
4494        BtlEventAction.prototype.logEvent = function (action, parameters, results, duration, status, statusMessage) {
4495            var payload = {
4496                actor: 'user',
4497                area: action.getArea(),
4498                type: action.getType(),
4499                parameters: parameters ? Smile.Core.Utils.ToCamelCase(parameters) : {},
4500                results: results ? Smile.Core.Utils.ToCamelCase(results) : {},
4501                duration: duration,
4502                status: status
4503            };
4504            if (statusMessage)
4505                payload.statusMessage = statusMessage;
4506            Smile.Events.fire(Events.Action.BtlEvent, payload);
4507        };
4508        return BtlEventAction;
4509    }());
4510})(Btl || (Btl = {}));
4511Smile.createNamespace(Smile, "Smile.BtlTrack");
4512Smile.BtlTrack = new Btl.BtlEventActionTracker();
4513//# sourceMappingURL=BtlEventActionTracker.js.map;
4514var SelectComponent;
4515(function (SelectComponent_1) {
4516    var SelectComponent = (function () {
4517        function SelectComponent() {
4518            var _this = this;
4519            this.initForm = function () {
4520                Vue.use(vuelidate.default);
4521                Vue.use(Vuex);
4522                _this.SelectComponent = Vue.component('dp-select', {
4523                    template: "<template id=\"dp-select-component\">\n                            <mdb-select v-bind=\"$attrs\"\n                                         @change=\"onChange\">\n                            </mdb-select>\n                        </template>",
4524                    store: null,
4525                    components: {
4526                        mdbSelect: mdbvue.mdbSelect
4527                    },
4528                    computed: {},
4529                    beforeMount: function () {
4530                    },
4531                    props: {
4532                        showSelectionsCount: {
4533                            type: Boolean,
4534                            default: true
4535                        }
4536                    },
4537                    methods: {
4538                        onChange: function (value) {
4539                            var _this = this;
4540                            this.$emit('update:onselected', value);
4541                            this.$emit('change', value);
4542                            var input = this.$el.querySelector('input');
4543                            Vue.nextTick(function () {
4544                                var _a;
4545                                var activeElement = (_a = _this.$el.querySelector('ul')) === null || _a === void 0 ? void 0 : _a.querySelector('li.active');
4546                                if (input && activeElement) {
4547                                    input.setAttribute('aria-activedescendant', activeElement.id);
4548                                }
4549                            });
4550                            setTimeout(function () {
4551                                var input = _this.$el.querySelector('input');
4552                                if (input) {
4553                                    $(input).trigger('change');
4554                                }
4555                            }, 0);
4556                        },
4557                        reset: function () {
4558                            var _a, _b;
4559                            (_b = (_a = this.$children) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.reset();
4560                        },
4561                        update: function () {
4562                            var _a, _b;
4563                            (_b = (_a = this.$children) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.update(
4563);
4564                        },
4565                        closeDropdown: function (element, event) {
4566                            if (event.key === 'Escape' || event.key === 'Esc') {
4567                                event.preventDefault();
4568                                event.stopPropagation();
4569                                var dropdowns = document.querySelectorAll('.dropdown-content');
4570                                dropdowns.forEach(function (dropdown) {
4571                                    var dropdownElem = dropdown;
4572                                    dropdownElem.style.display = 'none';
4573                                });
4574                            }
4575                        }
4576                    },
4577                    mounted: function () {
4578                        var _this = this;
4579                        var _a, _b;
4580                        var form = this.$el.querySelector('form');
4581                        var input = this.$el.querySelector('input');
4582                        var listContainer = this.$el.querySelector('ul');
4583                        var label = this.$el.querySelector('label');
4584                        if (form) {
4585                            form.addEventListener('keydown', function (event) {
4586                                if (event.key === 'Escape') {
4587                                    event.preventDefault();
4588                                    event.stopPropagation();
4589                                }
4590                            });
4591                            listContainer.addEventListener('focusout', function (event) {
4592                                setTimeout(function () {
4593                                    if (!listContainer.contains(document.activeElement)) {
4594                                        if (!listContainer.querySelector('li.active')) {
4595                                            input.setAttribute('aria-activedescendant', '');
4596                                        }
4597                                        else {
4598                                            var activeElement = listContainer.querySelector('li.active');
4599                                            if (activeElement) {
4600                                                input.setAttribute('aria-activedescendant', activeElement.id);
4601                                            }
4602                                        }
4603                                    }
4604                                }, 50);
4605                            });
4606                            form.addEventListener('click', function () {
4607                                var activeElement = listContainer.querySelector('li.active');
4608                                setTimeout(function () {
4609                                    var _a;
4610                                    if (activeElement) {
4611                                        activeElement.focus();
4612                                    }
4613                                    else {
4614                                        (_a = listContainer.querySelector('li')) === null || _a === void 0 ? void 0 : _a.focus();
4615                                    }
4616                                }, 100);
4617                            });
4618                        }
4619                        if (label) {
4620                            (_a = input === null || input === void 0 ? void 0 : input.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(label, input);
4621                        }
4622                        this.$nextTick(function () {
4623                            _this.$el.removeAttribute('aria-required');
4624                        });
4625                        if (input.getAttribute("aria-activedescendant") === null)
4626                            input.setAttribute("aria-activedescendant", "");
4627                        var items = listContainer.querySelectorAll("li");
4628                        if (items) {
4629                            items.forEach(function (li) {
4630                                li.setAttribute("aria-selected", "false");
4631                            });
4632                        }
4633                        input.setAttribute('aria-controls', this.$el.id + "-ul");
4634                        input.addEventListener('keydown', function (event) {
4635                            var _a;
4636                            if (event.key === 'Enter' || event.code === 'Space') {
4637                                var activeElement_1 = (_a = _this.$el.querySelector('ul')) === null || _a === void 0 ? void 0 : _a.querySelector('li.active');
4638                                setTimeout(function () {
4639                                    var _a, _b;
4640                                    if (activeElement_1) {
4641                                        activeElement_1.focus();
4642                                    }
4643                                    else {
4644                                        (_b = (_a = _this.$el.querySelector('ul')) === null || _a === void 0 ? void 0 : _a.querySelector('li')) === null || _b === void 0 ? void 0 : _b.focus();
4645                                        listContainer.classList.add('kbd-nav');
4646                                    }
4647                                }, 100);
4648                            }
4649                            if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i)) {
4650                                _this.closeDropdown(input, event);
4651                            }
4652                        });
4653                        listContainer.addEventListener('keyup', function (event) {
4654                            if (event.key === 'ArrowUp' || event.key === 'ArrowDown'
4655                                || event.key === 'Home' || event.key === 'End') {
4656                                listContainer.classList.add('kbd-nav');
4657                            }
4658                        });
4659                        listContainer.addEventListener('pointermove', function () {
4660                            listContainer.classList.remove('kbd-nav');
4661                        });
4662                        listContainer.addEventListener('keydown', function (event) {
4663                            var _a;
4664                            if (event.key === 'Tab') {
4665                                (_a = _this.$children) === null || _a === void 0 ? void 0 : _a[0].handleEscClose();
4666                            }
4667                            if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i)) {
4668                                _this.closeDropdown(listContainer, event);
4669                            }
4670                        });
4671                        listContainer.addEventListener('mouseover', function (event) {
4672                            if (!event.target.parentElement.classList.contains('active')) {
4673                                event.target.classList.add('hovered');
4674                                event.target.style.backgroundColor = '#fff !important';
4675                            }
4676                        });
4677                        listContainer.addEventListener('mouseout', function (event) {
4678                            event.target.classList.remove('hovered');
4679                        });
4680                        if (!this.$props.showSelectionsCount) {
4681                            var mdbSelectInstance = (_b = this.$children) === null || _b === void 0 ? void 0 : _b[0];
4682                            if (mdbSelectInstance && mdbSelectInstance.checkNumberOfSelected) {
4683                                mdbSelectInstance.checkNumberOfSelected = function () {
4684                                    this.inputText = this.multiTexts;
4685                                };
4686                            }
4687                        }
4688                        var observeDropdown = function (el) {
4689                            if (el._alreadyObserved)
4690                                return;
4691                            el._alreadyObserved = true;
4692                            var lastState = null;
4693                            var observer = new MutationObserver(function () {
4694                                var isHidden = el.style.display === "none";
4695                                var newState = isHidden ? "hidden" : "visible";
4696                                var list = el.querySelector('ul');
4697                                if (newState !== lastState) {
4698                                    lastState = newState;
4699                                    if (newState === "hidden") {
4700                                        _this.$emit("blur");
4701                                    }
4702                                }
4703                                if (!isHidden && list) {
4704                                    list.classList.add("no-hover-on-open");
4705                                    var enableHover_1 = function () {
4706                                        list.classList.remove("no-hover-on-open");
4707                                        list.removeEventListener('mousemove', enableHover_1);
4708                                    };
4709                                    list.addEventListener('mousemove', enableHover_1);
4710                                }
4711                            });
4712                            observer.observe(el, {
4713                                attributes: true,
4714                                attributeFilter: ["style"]
4715                            });
4716                        };
4717                        this.$el.querySelectorAll(".select-dropdown")
4718                            .forEach(function (el) { return observeDropdown(el); });
4719                        var multiselectDiv = this.$el.querySelector('div[aria-multiselectable="true"]');
4720                        if (multiselectDiv) {
4721                            multiselectDiv.removeAttribute("aria-multiselectable");
4722                            listContainer.setAttribute("aria-multiselectable", "true");
4723                        }
4724                        var observer = new MutationObserver(function (mutationList) {
4725                            mutationList.forEach(function (mutation) {
4726                                if (mutation.attributeName === "class" &&
4727                                    mutation.target instanceof Element &&
4728                                    mutation.target.classList.contains("focused")) {
4729                                    input.setAttribute('aria-activedescendant', mutation.target.id);
4730                                }
4731                            });
4732                        });
4733                        observer.observe(listContainer, { attributes: true, subtree: true, attributeFilter: ["class"] });
4734                    }
4735                });
4736            };
4737            Accessibility.AccessibilityUtils.makeMdbSelectsAccessible();
4738            this.initForm();
4739        }
4740        return SelectComponent;
4741    }());
4742    SelectComponent_1.SelectComponent = SelectComponent;
4743})(SelectComponent || (SelectComponent = {}));
4744Smile.createNamespace(Smile.Feature, "Smile.Feature.SelectComponent");
4745Smile.Feature.SelectComponent = new SelectComponent.SelectComponent();
4746//# sourceMappingURL=DpSelectListComponent.js.map;
4747var TooltipComponent;
4748(function (TooltipComponent_1) {
4749    var TooltipComponent = (function () {
4750        function TooltipComponent() {
4751            var _this = this;
4752            this.initForm = function () {
4753                Vue.use(vuelidate.default);
4754                Vue.use(Vuex);
4755                _this.TooltipComponent = Vue.component('dp-tooltip', {
4756                    template: "<mdb-tooltip ref=\"tooltip\" material :trigger=\"resolvedTrigger\" :options=\"tooltipOptions\" class=\"dp-tooltip\">
4756\n                    <span slot=\"tip\">\n                      <div class=\"smile-tooltip dp-tooltip-content-container\">\n                        <div class=\"tooltipInner dp-tooltip-inner\">\n                          <div role=\"tooltip\" class=\"tooltipContent dp-tooltip-content\" aria-live=\"polite\" v-html=\"tooltipText\"></div>\n                        </div>\n                      </div>\n                    </span>\n                    <span slot=\"reference\" :class=\"referenceClass\" role=\"button\" tabindex=\"0\">\n                      <slot name=\"reference\">\n                        <i :class=\"iconClass\"></i><span v-if=\"label\">{{ label }}</span>\n                      </slot>\n                    </span>\n                  </mdb-tooltip>",
4757                    inheritAttrs: false,
4758                    store: null,
4759                    components: {
4760                        mdbTooltip: mdbvue.mdbTooltip
4761                    },
4762                    computed: {
4763                        tooltipText: function () {
4764                            return this.text || this.$attrs.content || '';
4765                        },
4766                        resolvedTrigger: function () {
4767                            return this.trigger || this.$attrs.trigger || 'hover';
4768                        },
4769                        tooltipOptions: function () {
4770                            var options = {
4771                                placement: this.placement || this.$attrs.placement || 'top'
4772                            };
4773                            var resolvedOffset = this.offset || this.$attrs.offset;
4774                            if (resolvedOffset) {
4775                                options.offset = resolvedOffset;
4776                            }
4777                            return options;
4778                        },
4779                        referenceClass: function () {
4780                            return this.className || this.$attrs['extra-css-classes'] || '';
4781                        }
4782                    },
4783                    beforeMount: function () {
4784                    },
4785                    props: {
4786                        text: { type: String, default: '' },
4787                        placement: { type: String, default: 'top' },
4788                        offset: { type: [String, Number], default: null },
4789                        trigger: { type: String, default: 'hover' },
4790                        iconClass: { type: String, default: 'fas fa-info-circle pr-2' },
4791                        label: { type: String, default: '' },
4792                        className: { type: String, default: '' }
4793                    },
4794                    methods: {
4795                        hideTootTip: function (event) {
4796                            var refs = this.$refs;
4797                            refs.tooltip.doClose();
4798                        },
4799                        showTootTip: function (event) {
4800                            var refs = this.$refs;
4801                            refs.tooltip.doShow();
4802                        }
4803                    },
4804                    mounted: function () {
4805                        var that = this;
4806                        var refs = this.$refs;
4807                        var tooltipElement = refs.tooltip.$el;
4808                        tooltipElement.addEventListener('focusin', function (e) {
4809                            that.showTootTip(e);
4810                        }, true);
4811                        tooltipElement.addEventListener('focusout', function (e) {
4812                            that.hideTootTip(e);
4813                        }, true);
4814                        tooltipElement.addEventListener('keydown', function (e) {
4815                            var event = e;
4816                            if (event.key === "Escape") {
4817                                that.hideTootTip(e);
4818                            }
4819                        }, true);
4820                    }
4821                });
4822            };
4823            Accessibility.AccessibilityUtils.makeMdbTooltipAccessible();
4824            this.initForm();
4825        }
4826        return TooltipComponent;
4827    }());
4828    TooltipComponent_1.TooltipComponent = TooltipComponent;
4829})(TooltipComponent || (TooltipComponent = {}));
4830Smile.createNamespace(Smile.Feature, "Smile.Feature.TooltipComponent");
4831Smile.Feature.TooltipComponent = new TooltipComponent.TooltipComponent();
4832//# sourceMappingURL=DpTooltipComponent.js.map;
4833var Platform;
4834(function (Platform) {
4835    var PlatformEvents = (function () {
4836        function PlatformEvents() {
4837        }
4838        PlatformEvents.Submit = "submit";
4839        return PlatformEvents;
4840    }());
4841    Platform.PlatformEvents = PlatformEvents;
4842})(Platform || (Platform = {}));
4843//# sourceMappingURL=PlatformEvents.js.map;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.