zulip/static/js
Steve Howell d3e961e179 performance: Improve prefix_sort.
We only convert the query to lowercase outside the
loop for an Nx speedup, where N = number of items.

And then we use startsWith instead of indexOf, which
means we don't senselessly search entire strings
for matches.

(We've had startsWith polyfills for a while now.)

Unfortunately, unless a string start with the
exact casing of the query, we still create an
entire lowercase copy of the string for the case
insensitive match.  For the English use case
(and many other languages), we could further
optimize this by slicing the string before
converting it to lowercase.

Unfortunately, you have languages like German
with the straße/STRASSE problem.  It's not clear
to me how we handle them with the current code,
but I don't want to break that yet.
2020-01-28 13:49:03 +00:00
..
analytics js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
billing js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
bundles topic list: Extract topic_list_data.js. 2020-01-22 14:31:33 -08:00
portico auth: Merge RemoteUserBackend into external_authentication_methods. 2019-12-10 20:16:21 +01:00
stats minor: Replace Math.min() with Infinity for easier to read code. 2019-12-06 11:27:58 -08:00
types typescript: Type webpack.config.ts correctly. 2019-11-04 18:12:11 -08:00
.eslintrc.json
activity.js blueslip: Add feature to time common operations. 2020-01-15 12:01:16 -08:00
admin.js org settings: De-duplicate template code for notification streams settings. 2020-01-14 17:16:23 -08:00
alert_words.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
alert_words_ui.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
archive.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
attachments_ui.js Rename filter.callback to filter.predicate. 2020-01-14 22:43:08 -08:00
avatar.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
blueslip.js blueslip: Add feature to time common operations. 2020-01-15 12:01:16 -08:00
blueslip_stacktrace.ts blueslip: Make stack trace more readable. 2019-10-31 13:47:54 -07:00
bot_data.js bots: Convert services from object to IntDict. 2020-01-16 13:23:47 -08:00
buddy_data.js js: Use IntDict in people.js. 2020-01-05 12:27:28 -08:00
buddy_list.js js: Clean up user_id type confusion. 2020-01-16 13:23:47 -08:00
channel.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
click_handlers.js bots: Remove FEEDBACK_BOT implementation. 2020-01-25 22:41:39 -08:00
color_data.js streams: Simplify claim_colors. 2019-12-30 09:50:22 -08:00
colorspace.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
common.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
components.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
compose.js compose: Update some comments on private stream warnings. 2020-01-14 13:23:27 -08:00
compose_actions.js typing: Fix invalid typing notifications for stream messages. 2019-12-02 09:31:16 -08:00
compose_fade.js compose_state: Rename compost_state.recipient to be about PMs only. 2019-12-02 08:53:55 -08:00
compose_pm_pill.js refactor: Use filter_taken_users in compose typeahead. 2020-01-08 12:55:42 -08:00
compose_state.js compose_state: Rename compost_state.recipient to be about PMs only. 2019-12-02 08:53:55 -08:00
compose_ui.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
composebox_typeahead.js mobile sharing: Extract shared/js/typeahead.js. 2020-01-27 16:32:11 -08:00
condense.js js: Automatically convert var to let and const in remaining files. 2019-11-20 23:04:01 -08:00
confirm_dialog.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
copy_and_paste.js js: Automatically convert var to let and const in more files. 2019-11-20 14:10:47 -08:00
csrf.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
debug.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
dict.ts int_dict: Move filter_values helper to dict. 2020-01-05 13:18:34 -08:00
drafts.js compose_state: Rename compost_state.recipient to be about PMs only. 2019-12-02 08:53:55 -08:00
echo.js message_edit: Add message edit local echo. 2019-11-20 17:40:19 -08:00
emoji.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
emoji_picker.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
favicon.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
feature_flags.js js: Purge useless IIFEs. 2019-10-25 13:51:21 -07:00
feedback_widget.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
fenced_code.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
fetch_status.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
filter.js filter: Allow marking is:mentioned messages as read. 2020-01-16 11:10:36 -08:00
floating_recipient_bar.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
fold_dict.ts js: Extract FoldDict class. 2020-01-03 17:19:50 -08:00
gear_menu.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
global.d.ts dependencies: Remove WebSockets system for sending messages. 2020-01-14 22:34:00 -08:00
hash_util.js hash_util: Simplify pm_with_uri. 2020-01-14 12:39:17 -08:00
hashchange.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
hbs.d.ts blueslip: Make stack trace more readable. 2019-10-31 13:47:54 -07:00
hotkey.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
hotspots.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
info_overlay.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
input_pill.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
int_dict.ts int_dict: Move filter_values helper to dict. 2020-01-05 13:18:34 -08:00
integration_bot_widget.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
invite.js invitations: Avoid adding to notifications stream unconditionally. 2020-01-27 15:36:59 -08:00
keydown_util.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
lazy_set.js Fix type errors in LazySet. 2020-01-14 15:40:40 -08:00
lightbox.js lightbox: Confine embedded video players to a unique origin. 2019-12-12 15:23:15 -08:00
lightbox_canvas.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
list_cursor.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
list_render.js blueslip: Add feature to time common operations. 2020-01-15 12:01:16 -08:00
list_util.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
loading.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
local_message.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
localstorage.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
markdown.js js: Use IntDict in people.js. 2020-01-05 12:27:28 -08:00
message_edit.js js: Automatically convert var to let and const in remaining files. 2019-11-20 23:04:01 -08:00
message_events.js message_edit: Add message edit local echo. 2019-11-20 17:40:19 -08:00
message_fetch.js narrow: Fix streams:all notice appearing too early. 2019-12-10 18:10:39 -08:00
message_flags.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
message_list.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
message_list_data.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
message_list_view.js int_dict: Fix type errors for user_groups. 2020-01-27 13:14:40 -05:00
message_live_update.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
message_scroll.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
message_store.js minor: Avoid recip.user_id defensive fallback. 2020-01-06 12:30:00 -08:00
message_util.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
message_viewport.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
muting.js js: Extract FoldDict class. 2020-01-03 17:19:50 -08:00
muting_ui.js dependencies: Upgrade eslint from 6.0.1 to 6.6.0. 2019-11-11 16:26:31 -08:00
narrow.js narrow: Clarify streams:public user experience. 2019-12-10 18:36:51 -08:00
narrow_state.js unreads: Remove is_reading_mode(). 2020-01-16 10:54:59 -08:00
navigate.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
night_mode.js js: Purge useless IIFEs. 2019-10-25 13:51:21 -07:00
notifications.js notifications: Support wildcard_mentions_notify for desktop. 2019-12-10 13:12:36 -08:00
overlays.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
padded_widget.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
page_params.js page_params: Record page_params_parse_time. 2020-01-15 12:01:14 -08:00
panels.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
people.js mobile sharing: Extract shared/js/typeahead.js. 2020-01-27 16:32:11 -08:00
pm_conversations.js js: Extract FoldDict class. 2020-01-03 17:19:50 -08:00
pm_list.js blueslip: Add feature to time common operations. 2020-01-15 12:01:16 -08:00
pointer.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
poll_widget.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
popovers.js js: Clean up poorly named const id variables. 2020-01-16 13:27:27 -08:00
presence.js js: Use IntDict in people.js. 2020-01-05 12:27:28 -08:00
reactions.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
ready.js templates: Make the Loading… message more robust. 2019-09-20 10:34:44 -07:00
realm_icon.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
realm_logo.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
recent_senders.js js: Extract FoldDict class. 2020-01-03 17:19:50 -08:00
reload.js compose_state: Rename compost_state.recipient to be about PMs only. 2019-12-02 08:53:55 -08:00
reload_state.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
reminder.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
resize.js bots: Remove FEEDBACK_BOT implementation. 2020-01-25 22:41:39 -08:00
rows.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
rtl.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
schema.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
scroll_bar.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
scroll_util.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
search.js search performance: Stop at max_items. 2019-12-28 11:09:28 -08:00
search_pill.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
search_pill_widget.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
search_suggestion.js search: Retrofit recent changes to pills code. 2020-01-08 14:02:34 -08:00
search_util.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
sent_messages.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
server_events.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
server_events_dispatch.js templates: Cache translations. 2020-01-15 18:01:59 -08:00
settings.js settings: Add notification settings checkboxes for wildcard mentions. 2019-11-20 16:58:46 -08:00
settings_account.js settings_account: Return IntDict from initialize_custom_user_type_fields. 2020-01-16 13:23:47 -08:00
settings_bots.js js: Clean up user_id type confusion. 2020-01-16 13:23:47 -08:00
settings_display.js settings: Fix buggy emoji format loading spinner. 2020-01-23 16:20:57 -08:00
settings_emoji.js Rename filter.callback to filter.predicate. 2020-01-14 22:43:08 -08:00
settings_exports.js Rename filter.callback to filter.predicate. 2020-01-14 22:43:08 -08:00
settings_invites.js Rename filter.callback to filter.predicate. 2020-01-14 22:43:08 -08:00
settings_linkifiers.js Rename filter.callback to filter.predicate. 2020-01-14 22:43:08 -08:00
settings_muting.js js: Clean up stream_id type confusion. 2020-01-16 13:23:47 -08:00
settings_notifications.js settings_notifications: Fix linter issue. 2019-11-20 17:16:43 -08:00
settings_org.js Rename filter.callback to filter.predicate. 2020-01-14 22:43:08 -08:00
settings_panel_menu.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
settings_profile_fields.js settings_profile_fields: Clean up field_id type confusion. 2020-01-16 13:23:47 -08:00
settings_sections.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
settings_streams.js Rename filter.callback to filter.predicate. 2020-01-14 22:43:08 -08:00
settings_toggle.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
settings_ui.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
settings_user_groups.js int_dict: Fix type errors for user_groups. 2020-01-27 13:14:40 -05:00
settings_users.js js: Clean up user_id type confusion. 2020-01-16 13:23:47 -08:00
setup.js dependencies: Remove WebSockets system for sending messages. 2020-01-14 22:34:00 -08:00
starred_messages.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
stream_color.js js: Clean up poorly named const id variables. 2020-01-16 13:27:27 -08:00
stream_create.js stream create: Avoid unnecessary val attribute. 2020-01-27 19:30:39 +00:00
stream_data.js refactor: Extract is_subscriber_subset(). 2020-01-14 13:19:49 -08:00
stream_edit.js js: Clean up poorly named const id variables. 2020-01-16 13:27:27 -08:00
stream_events.js wildcard_mentions_notify: Add per-stream override of global setting. 2019-12-09 16:09:38 -08:00
stream_list.js blueslip: Add feature to time common operations. 2020-01-15 12:01:16 -08:00
stream_muting.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
stream_popover.js Convert more stream_ids to ints. 2020-01-12 11:27:26 -08:00
stream_sort.js performance: Avoid dup calls to subscribed_streams(). 2019-12-30 09:50:22 -08:00
stream_ui_updates.js minor: Add comment explaining list_render.get call. 2020-01-14 22:43:08 -08:00
submessage.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
subs.js js: Clean up poorly named const id variables. 2020-01-16 13:27:27 -08:00
tab_bar.js js: Automatically convert var to let and const in remaining files. 2019-11-20 23:04:01 -08:00
templates.js templates: Cache translations. 2020-01-15 18:01:59 -08:00
tictactoe_widget.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
timerender.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
todo_widget.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
top_left_corner.js pm_list: Set active-sub-filter in template. 2020-01-06 10:21:23 -08:00
topic_data.js topic history: Avoid duplicate server fetches. 2020-01-23 13:28:52 -08:00
topic_generator.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
topic_list.js Extract topic_data.is_complete_for_stream_id(). 2020-01-23 13:28:52 -08:00
topic_list_data.js topic list: Extract topic_list_data.js. 2020-01-22 14:31:33 -08:00
topic_zoom.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
translations.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
transmit.js dependencies: Remove WebSockets system for sending messages. 2020-01-14 22:34:00 -08:00
tslint.json typescript: Move TS files into JS directory. 2019-03-25 12:11:37 -07:00
tutorial.js js: Purge useless IIFEs. 2019-10-25 13:51:21 -07:00
typeahead_helper.js refactor: Clean up prefix_sort get_item usage. 2020-01-28 13:07:25 +00:00
typing.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
typing_data.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
typing_events.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
ui.js dependencies: Upgrade simplebar from 4.2.3 to 5.0.7. 2019-11-13 12:46:29 -08:00
ui_init.js blueslip: Add feature to time common operations. 2020-01-15 12:01:16 -08:00
ui_report.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
ui_util.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
unread.js streams: Use IntDict for stream/topic unread counts. 2020-01-05 12:28:34 -08:00
unread_ops.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
unread_ui.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
upload.js js: Automatically convert var to let and const in remaining files. 2019-11-20 23:04:01 -08:00
upload_widget.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
user_events.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
user_groups.js user_groups: Convert user_group_by_id_dict from Dict to IntDict. 2020-01-16 13:23:47 -08:00
user_pill.js refactor: Extract filter_taken_users. 2020-01-08 12:55:42 -08:00
user_search.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
user_status.js refactor: Use a Set for away_user_ids. 2020-01-14 17:52:25 +00:00
user_status_ui.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
util.js performance: Improve prefix_sort. 2020-01-28 13:49:03 +00:00
widgetize.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
zcommand.js night_mode: Render the message instead of showing raw `/night` text. 2020-01-25 22:56:45 -08:00
zform.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00
zulip.js js: Automatically convert var to let and const in most files. 2019-11-03 12:42:39 -08:00