PageSourceSearch

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

js deltadentalnj.com collected 2026-10-02 15:26:36 UTC 219,750 bytes, 4,879 lines download raw bytes

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