|  | @ -32,6 +32,7 @@ tag app | 
			
		
	
		
		
			
				
					|  |  | 	fatal_error = no |  |  | 	fatal_error = no | 
			
		
	
		
		
			
				
					|  |  | 	bang = no |  |  | 	bang = no | 
			
		
	
		
		
			
				
					|  |  | 	holding_shift = no |  |  | 	holding_shift = no | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 	editing_link = no | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 	get render? do mounted? |  |  | 	get render? do mounted? | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  | @ -225,11 +226,13 @@ tag app | 
			
		
	
		
		
			
				
					|  |  | 		link_text |  |  | 		link_text | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 	def handle_edit link |  |  | 	def handle_edit link | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 		editing_link = link | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 		state.query = construct_link_text(link) | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 	def make_edit link, new_link_text | 
			
		
	
		
		
			
				
					|  |  | 		def edit_link |  |  | 		def edit_link | 
			
		
	
		
		
			
				
					|  |  | 			let input = window.prompt "Enter the new link name and url:", construct_link_text(link) |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 			return if input is null |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 			try |  |  | 			try | 
			
		
	
		
		
			
				
					
					|  |  | 				await update_link link, input |  |  | 				await update_link link, new_link_text | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  | 			catch e |  |  | 			catch e | 
			
		
	
		
		
			
				
					|  |  | 				return err "editing link", e |  |  | 				return err "editing link", e | 
			
		
	
		
		
			
				
					|  |  | 		loading = yes |  |  | 		loading = yes | 
			
		
	
	
		
		
			
				
					|  | @ -281,12 +284,12 @@ tag app | 
			
		
	
		
		
			
				
					|  |  | 			sort_links! |  |  | 			sort_links! | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 	def handle_click_delete link |  |  | 	def handle_click_delete link | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 		return unless window.confirm "Do you really want to delete {link..display_name}?" | 
			
		
	
		
		
			
				
					|  |  | 		handle_delete link |  |  | 		handle_delete link | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 	def handle_delete link |  |  | 	def handle_delete link | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 		def delete_link |  |  | 		def delete_link | 
			
		
	
		
		
			
				
					|  |  | 			return unless window.confirm "Do you really want to delete {link..display_name}?" |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 			try |  |  | 			try | 
			
		
	
		
		
			
				
					|  |  | 				await db.links.delete(link.id) |  |  | 				await db.links.delete(link.id) | 
			
		
	
		
		
			
				
					|  |  | 			catch e |  |  | 			catch e | 
			
		
	
	
		
		
			
				
					|  | @ -322,11 +325,31 @@ tag app | 
			
		
	
		
		
			
				
					|  |  | 		window.alert "{link.display_name} is now the default bang" |  |  | 		window.alert "{link.display_name} is now the default bang" | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 	def handle_shift_backspace |  |  | 	def handle_shift_backspace | 
			
		
	
		
		
			
				
					
					|  |  | 		return unless state.scored_links.length > 0 |  |  | 		if editing_link | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 		handle_edit state.scored_links[selection_index] |  |  | 			await handle_delete editing_link | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  | 			editing_link = no | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 			state.query = '' | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 			sort_links! | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 		else | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 			return unless state.scored_links.length > 0 | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 			handle_edit state.scored_links[selection_index] | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 	def handle_shift_return |  |  | 	def handle_shift_return | 
			
		
	
		
		
			
				
					
					|  |  | 		handle_add! |  |  | 		if editing_link | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  | 			try | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 				await update_link editing_link, state.query | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 				editing_link = no | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 				state.query = '' | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 				sort_links! | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 			catch e | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 				err "updating link", e | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 		else | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 			handle_add! | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 	def handle_esc | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 		editing_link = no | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 		state.query = '' | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 		sort_links! | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 	def handle_click_add |  |  | 	def handle_click_add | 
			
		
	
		
		
			
				
					|  |  | 		handle_add! |  |  | 		handle_add! | 
			
		
	
	
		
		
			
				
					|  | @ -617,6 +640,7 @@ tag app | 
			
		
	
		
		
			
				
					|  |  | 						# placeholder=pretty_date |  |  | 						# placeholder=pretty_date | 
			
		
	
		
		
			
				
					|  |  | 						@hotkey('return').capture=handle_return |  |  | 						@hotkey('return').capture=handle_return | 
			
		
	
		
		
			
				
					|  |  | 						@hotkey('shift+return').capture.if(can_add)=handle_shift_return |  |  | 						@hotkey('shift+return').capture.if(can_add)=handle_shift_return | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 						@hotkey('esc').capture=handle_esc | 
			
		
	
		
		
			
				
					|  |  | 						@hotkey('shift+backspace').capture=handle_shift_backspace |  |  | 						@hotkey('shift+backspace').capture=handle_shift_backspace | 
			
		
	
		
		
			
				
					|  |  | 						@hotkey('down').capture=increment_selection_index |  |  | 						@hotkey('down').capture=increment_selection_index | 
			
		
	
		
		
			
				
					|  |  | 						@hotkey('up').capture=decrement_selection_index |  |  | 						@hotkey('up').capture=decrement_selection_index | 
			
		
	
	
		
		
			
				
					|  | @ -632,81 +656,105 @@ tag app | 
			
		
	
		
		
			
				
					|  |  | 						<svg src="./assets/settings.svg"> |  |  | 						<svg src="./assets/settings.svg"> | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 				if config.enable_tips and not config.enable_simplify_ui |  |  | 				if config.enable_tips and not config.enable_simplify_ui | 
			
		
	
		
		
			
				
					
					|  |  | 					<.middle-button> |  |  | 					if editing_link | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 						<.tip[jc:start ta:left fl:1] @click=handle_return> |  |  | 						<.middle-button> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 							<.tip-hotkey> "Return" |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 							<.tip-content> "Navigate To Link" |  |  | 							<.tip[jc:start ta:left fl:1] | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 						<.tip[jc:center ta:center fl:2 px:15px] |  |  | 								@click=handle_esc | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 							@click=handle_shift_return |  |  | 							> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 						> |  |  | 								<.tip-hotkey> "Esc" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 							<.tip-hotkey> "Shift + Return" |  |  | 								<.tip-content> "Cancel Edits" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 							<.tip-content[of:hidden text-overflow:ellipsis white-space:nowrap]> |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 								<span> "Add New Link" |  |  | 							<.tip[jc:center ta:center fl:1 px:15px] | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 								<span[ws:pre]> " " |  |  | 								@click=handle_shift_return | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 								let sq = state.query.trim!.split /\s+/ |  |  | 							> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 								if sq.length >= 2 |  |  | 								<.tip-hotkey> "Shift + Return" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									let url = sq.pop! |  |  | 								<.tip-content[of:hidden text-overflow:ellipsis white-space:nowrap]> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									<span> '"' |  |  | 									"Update Link" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									<span> sq.join ' ' |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									<span[ws:pre]> ' ' |  |  | 							<.tip[jc:end ta:right fl:1] | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									<span[c:blue3]> url |  |  | 								@click=handle_shift_backspace | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									<span> '"' |  |  | 							> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 								else |  |  | 								<.tip-hotkey> "Shift + Backspace" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									<span> '"' |  |  | 								<.tip-content> "Delete Link" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									<span> sq.join ' ' |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					|  |  | 									<span> '"' |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 						<.tip[jc:end ta:right fl:1] |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 							@click=handle_shift_backspace |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 						> |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 							<.tip-hotkey> "Shift + Backspace" |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 							<.tip-content> "Edit Link" |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 				<.links> |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 					if bang or state.scored_links.length < 1 |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 						<a.link.selected |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 							href=encoded_bang_query |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 							@click=handle_click_bang |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 						> |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 							<.link-left> |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 								<img.link-icon src=active_bang.icon> |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 								<.display-name.bang-text> encoded_bang_query |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 							<.link-right[jc:flex-end]> |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 								<.frequency> active_bang.frequency |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  | 					else |  |  | 					else | 
			
		
	
		
		
			
				
					
					|  |  | 						for link, index in state.scored_links |  |  | 						<.middle-button> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 							<a.link |  |  | 							<.tip[jc:start ta:left fl:1] @click=handle_return> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 								href=link.url |  |  | 								<.tip-hotkey> "Return" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 								@pointerover=(selection_index = index) |  |  | 								<.tip-content> "Navigate To Link" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 								@click.prevent=handle_click_link(link) |  |  | 							<.tip[jc:center ta:center fl:2 px:15px] | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 								.selected=(index is selection_index) |  |  | 								@click=handle_shift_return | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  | 							> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 								<.tip-hotkey> "Shift + Return" | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 								<.tip-content[of:hidden text-overflow:ellipsis white-space:nowrap]> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 									<span> "Add New Link" | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 									<span[ws:pre]> " " | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 									let sq = state.query.trim!.split /\s+/ | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 									if sq.length >= 2 | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 										let url = sq.pop! | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 										<span> '"' | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 										<span> sq.join ' ' | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 										<span[ws:pre]> ' ' | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 										<span[c:blue3]> url | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 										<span> '"' | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 									else | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 										<span> '"' | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 										<span> sq.join ' ' | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 										<span> '"' | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 							<.tip[jc:end ta:right fl:1] | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 								@click=handle_shift_backspace | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 							> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 								<.tip-hotkey> "Shift + Backspace" | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 								<.tip-content> "Edit Link" | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 				unless editing_link | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 					<.links> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 						if bang or state.scored_links.length < 1 | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 							<a.link.selected | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 								href=encoded_bang_query | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 								@click=handle_click_bang | 
			
		
	
		
		
			
				
					|  |  | 							> |  |  | 							> | 
			
		
	
		
		
			
				
					|  |  | 								<.link-left> |  |  | 								<.link-left> | 
			
		
	
		
		
			
				
					
					|  |  | 									<img.link-icon src=link.icon> |  |  | 									<img.link-icon src=active_bang.icon> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									<.display-name |  |  | 									<.display-name.bang-text> encoded_bang_query | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 										[c:#FAD4AB]=link.is_bang |  |  | 								<.link-right[jc:flex-end]> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									> link.display_name |  |  | 									<.frequency> active_bang.frequency | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									if link.display_name isnt link.name and config.enable_effective_names |  |  | 						else | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 										<.name> |  |  | 							for link, index in state.scored_links | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 											<span.parens> "(" |  |  | 								<a.link | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 											<span> link.name |  |  | 									href=link.url | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 											<span.parens> ")" |  |  | 									@pointerover=(selection_index = index) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 								<.link-right> |  |  | 									@click.prevent=handle_click_link(link) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									<.link-buttons .buttons-disabled=(not config.enable_buttons or config.enable_simplify_ui)> |  |  | 									.selected=(index is selection_index) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 										<.link-button |  |  | 								> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 											@click.if(link.is_bang).prevent.stop=handle_click_make_default_bang(link) |  |  | 									<.link-left> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 											[visibility:hidden]=!link.is_bang |  |  | 										<img.link-icon src=link.icon> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 										> |  |  | 										<.display-name | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 											<svg src='./assets/search.svg'> |  |  | 											[c:#FAD4AB]=link.is_bang | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 										<.link-button@click.prevent.stop=handle_click_edit(link)> |  |  | 										> link.display_name | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 											<svg src='./assets/edit-2.svg'> |  |  | 										if link.display_name isnt link.name and config.enable_effective_names | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 										<.link-button@click.prevent.stop=handle_click_delete(link)> |  |  | 											<.name> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 											<svg src='./assets/trash.svg'> |  |  | 												<span.parens> "(" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 										<.link-button |  |  | 												<span> link.name | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 											@click.prevent.stop=handle_click_pin(link) |  |  | 												<span.parens> ")" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 											[visibility:visible c:purple3/50]=(link.is_pinned and (index isnt selection_index or not config.enable_buttons or config.enable_simplify_ui)) |  |  | 									<.link-right> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 										> |  |  | 										<.link-buttons .buttons-disabled=(not config.enable_buttons or config.enable_simplify_ui)> | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 											<svg src='./assets/star.svg'> |  |  | 											<.link-button | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 									<.frequency> link.frequency |  |  | 												@click.if(link.is_bang).prevent.stop=handle_click_make_default_bang(link) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  | 												[visibility:hidden]=!link.is_bang | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 											> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 												<svg src='./assets/search.svg'> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 											<.link-button@click.prevent.stop=handle_click_edit(link)> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 												<svg src='./assets/edit-2.svg'> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 											<.link-button@click.prevent.stop=handle_click_delete(link)> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 												<svg src='./assets/trash.svg'> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 											<.link-button | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 												@click.prevent.stop=handle_click_pin(link) | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 												[visibility:visible c:purple3/50]=(link.is_pinned and (index isnt selection_index or not config.enable_buttons or config.enable_simplify_ui)) | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 											> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 												<svg src='./assets/star.svg'> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 										<.frequency> link.frequency | 
			
		
	
		
		
			
				
					|  |  | 			$main-input.focus! |  |  | 			$main-input.focus! | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | imba.mount <app> |  |  | imba.mount <app> | 
			
		
	
	
		
		
			
				
					|  | 
 |