Current Path : /var/www/ljmtc/cbt/message/amd/build/ |
Current File : /var/www/ljmtc/cbt/message/amd/build/message_drawer_view_search.min.js.map |
{"version":3,"sources":["../src/message_drawer_view_search.js"],"names":["define","$","CustomEvents","Notification","PubSub","Str","Templates","Repository","Events","USERS_SEARCH_LIMIT","USERS_INITIAL_SEARCH_LIMIT","SELECTORS","BLOCK_ICON_CONTAINER","CANCEL_SEARCH_BUTTON","CONTACTS_CONTAINER","CONTACTS_LIST","EMPTY_MESSAGE_CONTAINER","LIST","LOADING_ICON_CONTAINER","LOADING_PLACEHOLDER","MESSAGES_LIST","MESSAGES_CONTAINER","NON_CONTACTS_CONTAINER","NON_CONTACTS_LIST","SEARCH_ICON_CONTAINER","SEARCH_ACTION","SEARCH_INPUT","SEARCH_RESULTS_CONTAINER","LOAD_MORE_USERS","LOAD_MORE_MESSAGES","BUTTON_TEXT","NO_RESULTS_CONTAINTER","ALL_CONTACTS_CONTAINER","TEMPLATES","getLoggedInUserId","body","attr","getEmptyMessageContainer","find","getLoadingIconContainer","header","getLoadingPlaceholder","getSearchIconContainer","getSearchInput","getSearchResultsContainer","getContactsContainer","getNonContactsContainer","getMessagesContainer","showEmptyMessage","removeClass","hideEmptyMessage","addClass","showLoadingIcon","hideLoadingIcon","showLoadingPlaceholder","hideLoadingPlaceholder","showSearchIcon","hideSearchIcon","showSearchResults","hideSearchResults","showNoSearchResults","container","hideNoSearchResults","showAllContactsSearchResults","hideAllContactsSearchResults","showContactsSearchResults","hideContactsSearchResults","showNonContactsSearchResults","hideNonContactsSearchResults","showMessagesSearchResults","hideMessagesSearchResults","disableSearchInput","prop","enableSearchInput","clearSearchInput","val","clearAllSearchResults","empty","showLoadMoreUsersButton","showLoadMoreMessagesButton","startLoading","stopLoading","showUsersLoadingIcon","root","button","hideUsersLoadingIcon","hideLoadMoreUsersButton","showMessagesLoadingIcon","hideMessagesLoadingIcon","hideLoadMoreMessagesButton","findContact","userId","addContact","contact","nonContactsContainer","nonContact","userid","length","remove","contactsContainer","append","children","removeContact","blockContact","unblockContact","highlightSearch","content","searchText","regex","RegExp","replace","renderContacts","contacts","frompanel","list","render","then","html","renderNonContacts","nonContacts","noncontacts","renderMessages","messages","loadMoreUsers","loggedInUserId","text","limit","offset","loadedAll","searchUsers","results","slice","contactsCount","nonContactsCount","forEach","highlight","fullname","when","counts","catch","error","loadMoreMessages","searchMessages","message","lastmessage","count","search","usersLimit","usersOffset","messagesLimit","messagesOffset","userCounts","messagesCount","registerEventListeners","searchInput","searchEventHandler","e","data","trim","focus","exception","originalEvent","preventDefault","events","enter","activate","on","subscribe","CONTACT_ADDED","CONTACT_REMOVED","CONTACT_BLOCKED","CONTACT_UNBLOCKED","description","namespace","get_string","show","Deferred","resolve","promise"],"mappings":"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","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Controls the search page of the message drawer.\n *\n * @module core_message/message_drawer_view_search\n * @copyright 2018 Ryan Wyllie <ryan@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(\n[\n 'jquery',\n 'core/custom_interaction_events',\n 'core/notification',\n 'core/pubsub',\n 'core/str',\n 'core/templates',\n 'core_message/message_repository',\n 'core_message/message_drawer_events',\n],\nfunction(\n $,\n CustomEvents,\n Notification,\n PubSub,\n Str,\n Templates,\n Repository,\n Events\n) {\n\n var MESSAGE_SEARCH_LIMIT = 50;\n var USERS_SEARCH_LIMIT = 50;\n var USERS_INITIAL_SEARCH_LIMIT = 3;\n\n var SELECTORS = {\n BLOCK_ICON_CONTAINER: '[data-region=\"block-icon-container\"]',\n CANCEL_SEARCH_BUTTON: '[data-action=\"cancel-search\"]',\n CONTACTS_CONTAINER: '[data-region=\"contacts-container\"]',\n CONTACTS_LIST: '[data-region=\"contacts-container\"] [data-region=\"list\"]',\n EMPTY_MESSAGE_CONTAINER: '[data-region=\"empty-message-container\"]',\n LIST: '[data-region=\"list\"]',\n LOADING_ICON_CONTAINER: '[data-region=\"loading-icon-container\"]',\n LOADING_PLACEHOLDER: '[data-region=\"loading-placeholder\"]',\n MESSAGES_LIST: '[data-region=\"messages-container\"] [data-region=\"list\"]',\n MESSAGES_CONTAINER: '[data-region=\"messages-container\"]',\n NON_CONTACTS_CONTAINER: '[data-region=\"non-contacts-container\"]',\n NON_CONTACTS_LIST: '[data-region=\"non-contacts-container\"] [data-region=\"list\"]',\n SEARCH_ICON_CONTAINER: '[data-region=\"search-icon-container\"]',\n SEARCH_ACTION: '[data-action=\"search\"]',\n SEARCH_INPUT: '[data-region=\"search-input\"]',\n SEARCH_RESULTS_CONTAINER: '[data-region=\"search-results-container\"]',\n LOAD_MORE_USERS: '[data-action=\"load-more-users\"]',\n LOAD_MORE_MESSAGES: '[data-action=\"load-more-messages\"]',\n BUTTON_TEXT: '[data-region=\"button-text\"]',\n NO_RESULTS_CONTAINTER: '[data-region=\"no-results-container\"]',\n ALL_CONTACTS_CONTAINER: '[data-region=\"all-contacts-container\"]'\n };\n\n var TEMPLATES = {\n CONTACTS_LIST: 'core_message/message_drawer_contacts_list',\n NON_CONTACTS_LIST: 'core_message/message_drawer_non_contacts_list',\n MESSAGES_LIST: 'core_message/message_drawer_messages_list'\n };\n\n /**\n * Get the logged in user id.\n *\n * @param {Object} body Search body container element.\n * @return {Number} User id.\n */\n var getLoggedInUserId = function(body) {\n return body.attr('data-user-id');\n };\n\n /**\n * Show the no messages container element.\n *\n * @param {Object} body Search body container element.\n * @return {Object} No messages container element.\n */\n var getEmptyMessageContainer = function(body) {\n return body.find(SELECTORS.EMPTY_MESSAGE_CONTAINER);\n };\n\n /**\n * Get the search loading icon.\n *\n * @param {Object} header Search header container element.\n * @return {Object} Loading icon element.\n */\n var getLoadingIconContainer = function(header) {\n return header.find(SELECTORS.LOADING_ICON_CONTAINER);\n };\n\n /**\n * Get the loading container element.\n *\n * @param {Object} body Search body container element.\n * @return {Object} Loading container element.\n */\n var getLoadingPlaceholder = function(body) {\n return body.find(SELECTORS.LOADING_PLACEHOLDER);\n };\n\n /**\n * Get the search icon container.\n *\n * @param {Object} header Search header container element.\n * @return {Object} Search icon container.\n */\n var getSearchIconContainer = function(header) {\n return header.find(SELECTORS.SEARCH_ICON_CONTAINER);\n };\n\n /**\n * Get the search input container.\n *\n * @param {Object} header Search header container element.\n * @return {Object} Search input container.\n */\n var getSearchInput = function(header) {\n return header.find(SELECTORS.SEARCH_INPUT);\n };\n\n /**\n * Get the search results container.\n *\n * @param {Object} body Search body container element.\n * @return {Object} Search results container.\n */\n var getSearchResultsContainer = function(body) {\n return body.find(SELECTORS.SEARCH_RESULTS_CONTAINER);\n };\n\n /**\n * Get the search contacts container.\n *\n * @param {Object} body Search body container element.\n * @return {Object} Search contacts container.\n */\n var getContactsContainer = function(body) {\n return body.find(SELECTORS.CONTACTS_CONTAINER);\n };\n\n /**\n * Get the search non contacts container.\n *\n * @param {Object} body Search body container element.\n * @return {Object} Search non contacts container.\n */\n var getNonContactsContainer = function(body) {\n return body.find(SELECTORS.NON_CONTACTS_CONTAINER);\n };\n\n /**\n * Get the search messages container.\n *\n * @param {Object} body Search body container element.\n * @return {Object} Search messages container.\n */\n var getMessagesContainer = function(body) {\n return body.find(SELECTORS.MESSAGES_CONTAINER);\n };\n\n\n /**\n * Show the messages empty container.\n *\n * @param {Object} body Search body container element.\n */\n var showEmptyMessage = function(body) {\n getEmptyMessageContainer(body).removeClass('hidden');\n };\n\n /**\n * Hide the messages empty container.\n *\n * @param {Object} body Search body container element.\n */\n var hideEmptyMessage = function(body) {\n getEmptyMessageContainer(body).addClass('hidden');\n };\n\n\n /**\n * Show the loading icon.\n *\n * @param {Object} header Search header container element.\n */\n var showLoadingIcon = function(header) {\n getLoadingIconContainer(header).removeClass('hidden');\n };\n\n /**\n * Hide the loading icon.\n *\n * @param {Object} header Search header container element.\n */\n var hideLoadingIcon = function(header) {\n getLoadingIconContainer(header).addClass('hidden');\n };\n\n /**\n * Show loading placeholder.\n *\n * @param {Object} body Search body container element.\n */\n var showLoadingPlaceholder = function(body) {\n getLoadingPlaceholder(body).removeClass('hidden');\n };\n\n /**\n * Hide loading placeholder.\n *\n * @param {Object} body Search body container element.\n */\n var hideLoadingPlaceholder = function(body) {\n getLoadingPlaceholder(body).addClass('hidden');\n };\n\n /**\n * Show search icon.\n *\n * @param {Object} header Search header container element.\n */\n var showSearchIcon = function(header) {\n getSearchIconContainer(header).removeClass('hidden');\n };\n\n /**\n * Hide search icon.\n *\n * @param {Object} header Search header container element.\n */\n var hideSearchIcon = function(header) {\n getSearchIconContainer(header).addClass('hidden');\n };\n\n /**\n * Show search results.\n *\n * @param {Object} body Search body container element.\n */\n var showSearchResults = function(body) {\n getSearchResultsContainer(body).removeClass('hidden');\n };\n\n /**\n * Hide search results.\n *\n * @param {Object} body Search body container element.\n */\n var hideSearchResults = function(body) {\n getSearchResultsContainer(body).addClass('hidden');\n };\n\n /**\n * Show the no search results message.\n *\n * @param {Object} body Search body container element.\n */\n var showNoSearchResults = function(body) {\n var container = getSearchResultsContainer(body);\n container.find(SELECTORS.ALL_CONTACTS_CONTAINER).addClass('hidden');\n container.find(SELECTORS.MESSAGES_CONTAINER).addClass('hidden');\n container.find(SELECTORS.NO_RESULTS_CONTAINTER).removeClass('hidden');\n };\n\n /**\n * Hide the no search results message.\n *\n * @param {Object} body Search body container element.\n */\n var hideNoSearchResults = function(body) {\n var container = getSearchResultsContainer(body);\n container.find(SELECTORS.ALL_CONTACTS_CONTAINER).removeClass('hidden');\n container.find(SELECTORS.MESSAGES_CONTAINER).removeClass('hidden');\n container.find(SELECTORS.NO_RESULTS_CONTAINTER).addClass('hidden');\n };\n\n /**\n * Show the whole contacts results area.\n *\n * @param {Object} body Search body container element.\n */\n var showAllContactsSearchResults = function(body) {\n var container = getSearchResultsContainer(body);\n container.find(SELECTORS.ALL_CONTACTS_CONTAINER).removeClass('hidden');\n };\n\n /**\n * Hide the whole contacts results area.\n *\n * @param {Object} body Search body container element.\n */\n var hideAllContactsSearchResults = function(body) {\n var container = getSearchResultsContainer(body);\n container.find(SELECTORS.ALL_CONTACTS_CONTAINER).addClass('hidden');\n };\n\n /**\n * Show the contacts results.\n *\n * @param {Object} body Search body container element.\n */\n var showContactsSearchResults = function(body) {\n var container = getSearchResultsContainer(body);\n container.find(SELECTORS.CONTACTS_CONTAINER).removeClass('hidden');\n };\n\n /**\n * Hide the contacts results.\n *\n * @param {Object} body Search body container element.\n */\n var hideContactsSearchResults = function(body) {\n var container = getSearchResultsContainer(body);\n container.find(SELECTORS.CONTACTS_CONTAINER).addClass('hidden');\n };\n\n /**\n * Show the non contacts results.\n *\n * @param {Object} body Search body container element.\n */\n var showNonContactsSearchResults = function(body) {\n var container = getSearchResultsContainer(body);\n container.find(SELECTORS.NON_CONTACTS_CONTAINER).removeClass('hidden');\n };\n\n /**\n * Hide the non contacts results.\n *\n * @param {Object} body Search body container element.\n */\n var hideNonContactsSearchResults = function(body) {\n var container = getSearchResultsContainer(body);\n container.find(SELECTORS.NON_CONTACTS_CONTAINER).addClass('hidden');\n };\n\n /**\n * Show the messages results.\n *\n * @param {Object} body Search body container element.\n */\n var showMessagesSearchResults = function(body) {\n var container = getSearchResultsContainer(body);\n container.find(SELECTORS.MESSAGES_CONTAINER).removeClass('hidden');\n };\n\n /**\n * Hide the messages results.\n *\n * @param {Object} body Search body container element.\n */\n var hideMessagesSearchResults = function(body) {\n var container = getSearchResultsContainer(body);\n container.find(SELECTORS.MESSAGES_CONTAINER).addClass('hidden');\n };\n\n /**\n * Disable the search input.\n *\n * @param {Object} header Search header container element.\n */\n var disableSearchInput = function(header) {\n getSearchInput(header).prop('disabled', true);\n };\n\n /**\n * Enable the search input.\n *\n * @param {Object} header Search header container element.\n */\n var enableSearchInput = function(header) {\n getSearchInput(header).prop('disabled', false);\n };\n\n /**\n * Clear the search input.\n *\n * @param {Object} header Search header container element.\n */\n var clearSearchInput = function(header) {\n getSearchInput(header).val('');\n };\n\n /**\n * Clear all search results\n *\n * @param {Object} body Search body container element.\n */\n var clearAllSearchResults = function(body) {\n body.find(SELECTORS.CONTACTS_LIST).empty();\n body.find(SELECTORS.NON_CONTACTS_LIST).empty();\n body.find(SELECTORS.MESSAGES_LIST).empty();\n hideNoSearchResults(body);\n showAllContactsSearchResults(body);\n showContactsSearchResults(body);\n showNonContactsSearchResults(body);\n showMessagesSearchResults(body);\n showLoadMoreUsersButton(body);\n showLoadMoreMessagesButton(body);\n };\n\n /**\n * Update the body and header to indicate the search is loading.\n *\n * @param {Object} header Search header container element.\n * @param {Object} body Search body container element.\n */\n var startLoading = function(header, body) {\n hideSearchIcon(header);\n hideEmptyMessage(body);\n hideSearchResults(body);\n showLoadingIcon(header);\n showLoadingPlaceholder(body);\n disableSearchInput(header);\n };\n\n /**\n * Update the body and header to indicate the search has stopped loading.\n *\n * @param {Object} header Search header container element.\n * @param {Object} body Search body container element.\n */\n var stopLoading = function(header, body) {\n showSearchIcon(header);\n hideEmptyMessage(body);\n showSearchResults(body);\n hideLoadingIcon(header);\n hideLoadingPlaceholder(body);\n enableSearchInput(header);\n };\n\n /**\n * Show the more users loading icon.\n *\n * @param {Object} root The more users container element.\n */\n var showUsersLoadingIcon = function(root) {\n var button = root.find(SELECTORS.LOAD_MORE_USERS);\n button.prop('disabled', true);\n button.find(SELECTORS.BUTTON_TEXT).addClass('hidden');\n button.find(SELECTORS.LOADING_ICON_CONTAINER).removeClass('hidden');\n };\n\n /**\n * Hide the more users loading icon.\n *\n * @param {Object} root The more users container element.\n */\n var hideUsersLoadingIcon = function(root) {\n var button = root.find(SELECTORS.LOAD_MORE_USERS);\n button.prop('disabled', false);\n button.find(SELECTORS.BUTTON_TEXT).removeClass('hidden');\n button.find(SELECTORS.LOADING_ICON_CONTAINER).addClass('hidden');\n };\n\n /**\n * Show the load more users button.\n *\n * @param {Object} root The users container element.\n */\n var showLoadMoreUsersButton = function(root) {\n root.find(SELECTORS.LOAD_MORE_USERS).removeClass('hidden');\n };\n\n /**\n * Hide the load more users button.\n *\n * @param {Object} root The users container element.\n */\n var hideLoadMoreUsersButton = function(root) {\n root.find(SELECTORS.LOAD_MORE_USERS).addClass('hidden');\n };\n\n /**\n * Show the messages are loading icon.\n *\n * @param {Object} root Messages root element.\n */\n var showMessagesLoadingIcon = function(root) {\n var button = root.find(SELECTORS.LOAD_MORE_MESSAGES);\n button.prop('disabled', true);\n button.find(SELECTORS.BUTTON_TEXT).addClass('hidden');\n button.find(SELECTORS.LOADING_ICON_CONTAINER).removeClass('hidden');\n };\n\n /**\n * Hide the messages are loading icon.\n *\n * @param {Object} root Messages root element.\n */\n var hideMessagesLoadingIcon = function(root) {\n var button = root.find(SELECTORS.LOAD_MORE_MESSAGES);\n button.prop('disabled', false);\n button.find(SELECTORS.BUTTON_TEXT).removeClass('hidden');\n button.find(SELECTORS.LOADING_ICON_CONTAINER).addClass('hidden');\n };\n\n /**\n * Show the load more messages button.\n *\n * @param {Object} root The messages container element.\n */\n var showLoadMoreMessagesButton = function(root) {\n root.find(SELECTORS.LOAD_MORE_MESSAGES).removeClass('hidden');\n };\n\n /**\n * Hide the load more messages button.\n *\n * @param {Object} root The messages container element.\n */\n var hideLoadMoreMessagesButton = function(root) {\n root.find(SELECTORS.LOAD_MORE_MESSAGES).addClass('hidden');\n };\n\n /**\n * Find a contact in the search results.\n *\n * @param {Object} root Search results container element.\n * @param {Number} userId User id.\n * @return {Object} User container element.\n */\n var findContact = function(root, userId) {\n return root.find('[data-contact-user-id=\"' + userId + '\"]');\n };\n\n /**\n * Add a contact to the search results.\n *\n * @param {Object} root Search results container.\n * @param {Object} contact User in contacts list.\n */\n var addContact = function(root, contact) {\n var nonContactsContainer = getNonContactsContainer(root);\n var nonContact = findContact(nonContactsContainer, contact.userid);\n\n if (nonContact.length) {\n nonContact.remove();\n var contactsContainer = getContactsContainer(root);\n contactsContainer.removeClass('hidden');\n contactsContainer.find(SELECTORS.LIST).append(nonContact);\n }\n\n if (!nonContactsContainer.find(SELECTORS.LIST).children().length) {\n nonContactsContainer.addClass('hidden');\n }\n };\n\n /**\n * Remove a contact from the contacts results.\n *\n * @param {Object} root Search results container.\n * @param {Object} userId Contact user id.\n */\n var removeContact = function(root, userId) {\n var contactsContainer = getContactsContainer(root);\n var contact = findContact(contactsContainer, userId);\n\n if (contact.length) {\n contact.remove();\n var nonContactsContainer = getNonContactsContainer(root);\n nonContactsContainer.removeClass('hidden');\n nonContactsContainer.find(SELECTORS.LIST).append(contact);\n }\n\n if (!contactsContainer.find(SELECTORS.LIST).children().length) {\n contactsContainer.addClass('hidden');\n }\n };\n\n /**\n * Show the contact is blocked icon.\n *\n * @param {Object} root Search results container.\n * @param {Object} userId Contact user id.\n */\n var blockContact = function(root, userId) {\n var contact = findContact(root, userId);\n if (contact.length) {\n contact.find(SELECTORS.BLOCK_ICON_CONTAINER).removeClass('hidden');\n }\n };\n\n /**\n * Hide the contact is blocked icon.\n *\n * @param {Object} root Search results container.\n * @param {Object} userId Contact user id.\n */\n var unblockContact = function(root, userId) {\n var contact = findContact(root, userId);\n if (contact.length) {\n contact.find(SELECTORS.BLOCK_ICON_CONTAINER).addClass('hidden');\n }\n };\n\n /**\n * Highlight words in search results.\n *\n * @param {String} content HTML to search.\n * @param {String} searchText Search text.\n * @return {String} searchText with search wrapped in matchtext span.\n */\n var highlightSearch = function(content, searchText) {\n if (!content) {\n return '';\n }\n var regex = new RegExp('(' + searchText + ')', 'gi');\n return content.replace(regex, '<span class=\"matchtext\">$1</span>');\n };\n\n\n /**\n * Render contacts in the contacts search results.\n *\n * @param {Object} root Search results container.\n * @param {Array} contacts List of contacts.\n * @return {Promise} Renderer promise.\n */\n var renderContacts = function(root, contacts) {\n var container = getContactsContainer(root);\n var frompanel = root.attr('data-in-panel');\n var list = container.find(SELECTORS.LIST);\n\n return Templates.render(TEMPLATES.CONTACTS_LIST, {contacts: contacts, frompanel: frompanel})\n .then(function(html) {\n list.append(html);\n return html;\n });\n };\n\n /**\n * Render non contacts in the contacts search results.\n *\n * @param {Object} root Search results container.\n * @param {Array} nonContacts List of non contacts.\n * @return {Promise} Renderer promise.\n */\n var renderNonContacts = function(root, nonContacts) {\n var container = getNonContactsContainer(root);\n var frompanel = root.attr('data-in-panel');\n var list = container.find(SELECTORS.LIST);\n\n return Templates.render(TEMPLATES.NON_CONTACTS_LIST, {noncontacts: nonContacts, frompanel: frompanel})\n .then(function(html) {\n list.append(html);\n return html;\n });\n };\n\n /**\n * Render messages in the messages search results.\n *\n * @param {Object} root Search results container.\n * @param {Array} messages List of messages.\n * @return {Promise} Renderer promise.\n */\n var renderMessages = function(root, messages) {\n var container = getMessagesContainer(root);\n var frompanel = root.attr('data-in-panel');\n var list = container.find(SELECTORS.LIST);\n\n return Templates.render(TEMPLATES.MESSAGES_LIST, {messages: messages, frompanel: frompanel})\n .then(function(html) {\n list.append(html);\n return html;\n });\n };\n\n /**\n * Load more users from the repository and render the results into the users search results.\n *\n * @param {Object} root Search results container.\n * @param {Number} loggedInUserId Current logged in user.\n * @param {String} text Search text.\n * @param {Number} limit Number of users to get.\n * @param {Number} offset Load users from\n * @return {Object} jQuery promise\n */\n var loadMoreUsers = function(root, loggedInUserId, text, limit, offset) {\n var loadedAll = false;\n showUsersLoadingIcon(root);\n\n return Repository.searchUsers(loggedInUserId, text, limit + 1, offset)\n .then(function(results) {\n var contacts = results.contacts;\n var noncontacts = results.noncontacts;\n\n if (contacts.length <= limit && noncontacts.length <= limit) {\n loadedAll = true;\n return {\n contacts: contacts,\n noncontacts: noncontacts\n };\n } else {\n return {\n contacts: contacts.slice(0, limit),\n noncontacts: noncontacts.slice(0, limit)\n };\n }\n })\n .then(function(results) {\n var contactsCount = results.contacts.length;\n var nonContactsCount = results.noncontacts.length;\n\n if (contactsCount) {\n results.contacts.forEach(function(contact) {\n contact.highlight = highlightSearch(contact.fullname, text);\n });\n }\n\n if (nonContactsCount) {\n results.noncontacts.forEach(function(contact) {\n contact.highlight = highlightSearch(contact.fullname, text);\n });\n }\n\n return $.when(\n contactsCount ? renderContacts(root, results.contacts) : true,\n nonContactsCount ? renderNonContacts(root, results.noncontacts) : true\n )\n .then(function() {\n return {\n contactsCount: contactsCount,\n nonContactsCount: nonContactsCount\n };\n });\n })\n .then(function(counts) {\n hideUsersLoadingIcon(root);\n\n if (loadedAll) {\n hideLoadMoreUsersButton(root);\n }\n\n return counts;\n })\n .catch(function(error) {\n hideUsersLoadingIcon(root);\n // Rethrow error for other handlers.\n throw error;\n });\n };\n\n /**\n * Load more messages from the repository and render the results into the messages search results.\n *\n * @param {Object} root Search results container.\n * @param {Number} loggedInUserId Current logged in user.\n * @param {String} text Search text.\n * @param {Number} limit Number of messages to get.\n * @param {Number} offset Load messages from\n * @return {Object} jQuery promise\n */\n var loadMoreMessages = function(root, loggedInUserId, text, limit, offset) {\n var loadedAll = false;\n showMessagesLoadingIcon(root);\n\n return Repository.searchMessages(loggedInUserId, text, limit + 1, offset)\n .then(function(results) {\n var messages = results.contacts;\n\n if (messages.length <= limit) {\n loadedAll = true;\n return messages;\n } else {\n return messages.slice(0, limit);\n }\n })\n .then(function(messages) {\n if (messages.length) {\n messages.forEach(function(message) {\n message.lastmessage = highlightSearch(message.lastmessage, text);\n });\n return renderMessages(root, messages)\n .then(function() {\n return messages.length;\n });\n } else {\n return messages.length;\n }\n })\n .then(function(count) {\n hideMessagesLoadingIcon(root);\n\n if (loadedAll) {\n hideLoadMoreMessagesButton(root);\n }\n\n return count;\n })\n .catch(function(error) {\n hideMessagesLoadingIcon(root);\n // Rethrow error for other handlers.\n throw error;\n });\n };\n\n /**\n * Search for users and messages.\n *\n * @param {Object} header Search header container element.\n * @param {Object} body Search body container element.\n * @param {String} searchText Search text.\n * @param {Number} usersLimit The users limit.\n * @param {Number} usersOffset The users offset.\n * @param {Number} messagesLimit The message limit.\n * @param {Number} messagesOffset The message offset.\n * @return {Object} jQuery promise\n */\n var search = function(header, body, searchText, usersLimit, usersOffset, messagesLimit, messagesOffset) {\n var loggedInUserId = getLoggedInUserId(body);\n startLoading(header, body);\n clearAllSearchResults(body);\n\n return $.when(\n loadMoreUsers(body, loggedInUserId, searchText, usersLimit, usersOffset),\n loadMoreMessages(body, loggedInUserId, searchText, messagesLimit, messagesOffset)\n )\n .then(function(userCounts, messagesCount) {\n var contactsCount = userCounts.contactsCount;\n var nonContactsCount = userCounts.nonContactsCount;\n\n stopLoading(header, body);\n\n if (!contactsCount && !nonContactsCount && !messagesCount) {\n showNoSearchResults(body);\n } else {\n if (!contactsCount && !nonContactsCount) {\n hideAllContactsSearchResults(body);\n } else {\n if (!contactsCount) {\n hideContactsSearchResults(body);\n }\n\n if (!nonContactsCount) {\n hideNonContactsSearchResults(body);\n }\n }\n\n if (!messagesCount) {\n hideMessagesSearchResults(body);\n }\n }\n\n return;\n });\n };\n\n\n /**\n * Listen to and handle events for searching.\n *\n * @param {Object} header Search header container element.\n * @param {Object} body Search body container element.\n */\n var registerEventListeners = function(header, body) {\n var loggedInUserId = getLoggedInUserId(body);\n var searchInput = getSearchInput(header);\n var searchText = '';\n var messagesOffset = 0;\n var usersOffset = 0;\n\n var searchEventHandler = function(e, data) {\n searchText = searchInput.val().trim();\n\n if (searchText !== '') {\n messagesOffset = 0;\n usersOffset = 0;\n search(\n header,\n body,\n searchText,\n USERS_INITIAL_SEARCH_LIMIT,\n usersOffset,\n MESSAGE_SEARCH_LIMIT,\n messagesOffset\n )\n .then(function() {\n searchInput.focus();\n usersOffset = usersOffset + USERS_INITIAL_SEARCH_LIMIT;\n messagesOffset = messagesOffset + MESSAGE_SEARCH_LIMIT;\n return;\n })\n .catch(Notification.exception);\n }\n\n data.originalEvent.preventDefault();\n };\n\n CustomEvents.define(searchInput, [CustomEvents.events.enter]);\n CustomEvents.define(header, [CustomEvents.events.activate]);\n CustomEvents.define(body, [CustomEvents.events.activate]);\n\n searchInput.on(CustomEvents.events.enter, searchEventHandler);\n\n header.on(CustomEvents.events.activate, SELECTORS.SEARCH_ACTION, searchEventHandler);\n\n body.on(CustomEvents.events.activate, SELECTORS.LOAD_MORE_MESSAGES, function(e, data) {\n if (searchText !== '') {\n loadMoreMessages(body, loggedInUserId, searchText, MESSAGE_SEARCH_LIMIT, messagesOffset)\n .then(function() {\n messagesOffset = messagesOffset + MESSAGE_SEARCH_LIMIT;\n return;\n })\n .catch(Notification.exception);\n }\n data.originalEvent.preventDefault();\n });\n\n body.on(CustomEvents.events.activate, SELECTORS.LOAD_MORE_USERS, function(e, data) {\n if (searchText !== '') {\n loadMoreUsers(body, loggedInUserId, searchText, USERS_SEARCH_LIMIT, usersOffset)\n .then(function() {\n usersOffset = usersOffset + USERS_SEARCH_LIMIT;\n return;\n })\n .catch(Notification.exception);\n }\n data.originalEvent.preventDefault();\n });\n\n header.on(CustomEvents.events.activate, SELECTORS.CANCEL_SEARCH_BUTTON, function() {\n clearSearchInput(header);\n showEmptyMessage(body);\n showSearchIcon(header);\n hideSearchResults(body);\n hideLoadingIcon(header);\n hideLoadingPlaceholder(body);\n usersOffset = 0;\n messagesOffset = 0;\n });\n\n PubSub.subscribe(Events.CONTACT_ADDED, function(userId) {\n addContact(body, userId);\n });\n\n PubSub.subscribe(Events.CONTACT_REMOVED, function(userId) {\n removeContact(body, userId);\n });\n\n PubSub.subscribe(Events.CONTACT_BLOCKED, function(userId) {\n blockContact(body, userId);\n });\n\n PubSub.subscribe(Events.CONTACT_UNBLOCKED, function(userId) {\n unblockContact(body, userId);\n });\n };\n\n /**\n * Setup the search page.\n *\n * @param {string} namespace The route namespace.\n * @param {Object} header Contacts header container element.\n * @param {Object} body Contacts body container element.\n * @return {Object} jQuery promise\n */\n var show = function(namespace, header, body) {\n if (!body.attr('data-init')) {\n registerEventListeners(header, body);\n body.attr('data-init', true);\n }\n var searchInput = getSearchInput(header);\n searchInput.focus();\n\n return $.Deferred().resolve().promise();\n };\n\n /**\n * String describing this page used for aria-labels.\n *\n * @param {string} namespace The route namespace.\n * @param {Object} header Contacts header container element.\n * @return {Object} jQuery promise\n */\n var description = function(namespace, header) {\n if (typeof header !== 'object') {\n return Str.get_string('messagedrawerviewsearch', 'core_message');\n }\n var searchInput = getSearchInput(header);\n var searchText = searchInput.val().trim();\n return Str.get_string('messagedrawerviewsearch', 'core_message', searchText);\n };\n\n return {\n show: show,\n description: description\n };\n});\n"],"file":"message_drawer_view_search.min.js"}