var MAIL_DOMAIN = [ "gmail.com", "docomo.ne.jp", "yahoo.co.jp", "ezweb.ne.jp", "i.softbank.jp", "icloud.com", "softbank.ne.jp", "hotmail.com", "yahoo.ne.jp", "hotmail.co.jp", "nifty.com", "ybb.ne.jp", "au.com", "outlook.jp", "ymobile.ne.jp" ]; var MailAutocomplete = /** @class */ (function () { function MailAutocomplete(selector) { this.selector = selector; } MailAutocomplete.prototype.exec = function () { var email = $(this.selector); email.autocomplete({ minLength: 5, delay : 0, source: function (request, response) { var input = email.val(); var atIndex = input.indexOf("@"); if (atIndex != -1) { // @あり var inputDomain_1 = input.substring(atIndex + 1); if (inputDomain_1 == "") { return response(MAIL_DOMAIN.map(function (domain) { return input + domain; })); } var pfMatchDomain = MAIL_DOMAIN.filter(function (domain) { return domain == inputDomain_1; }); if (pfMatchDomain.length > 0) { return response(pfMatchDomain.map(function (domain) { return input.substring(0, atIndex) + "@" + domain; })); } else { var fMatchDomain = MAIL_DOMAIN.filter(function (domain) { return domain.lastIndexOf(inputDomain_1, 0) === 0; }); if (fMatchDomain.length > 0) { return response(fMatchDomain.map(function (domain) { return input.substring(0, atIndex) + "@" + domain; })); } else { return response([]); } } } else { // @ăȘし return response(MAIL_DOMAIN.map(function (domain) { return input + "@" + domain; })); } }, select: function (data) { $(this.selector).val(data); setTimeout(function () { $(this.selector).blur(); }, 300); } }); }; return MailAutocomplete; }());