tag app-links

	def handle_click_delete link
		return unless window.confirm "Do you really want to delete {link..display_name}?"
		handle_delete link

	def handle_click_pin link
		api.pin_link link

	def handle_edit
		return unless state.sorted_links.length > 0
		refs.edit.open api.selected_link

	get tips
		let result = []

		result.push <>
			<.tip
				@click=api.handle_add_link
				@hotkey('shift+return').capture.if(!state.loading)=api.handle_add_link
			>
				<.tip-hotkey> "Shift + Return"
				<.tip-content.ellipsis>
					<span[ws:pre]> "Create Link "
					let sq = state.query.trim!.split /\s+/
					if sq.length >= 2
						let url = sq.pop!
						<span> '"'
						<span> sq.join " "
						<span[c:blue3 ws:pre]> " {url}"
						<span> '"'
					else
						<span> "\"{sq.join " "}\""

		result.push <>
			<.tip
				@click=api.handle_click_link
				@hotkey('return').force.if(!loading)=api.handle_click_link
			>
				<.tip-hotkey> "Return"
				<.tip-content> "Navigate To Link"

		result.push <>
			<.tip
				@click=handle_edit
				@hotkey('shift+backspace').capture.if(!state.loading)=handle_edit
			>
				<.tip-hotkey> "Shift + Backspace"
				<.tip-content> "Edit Link"

		result.push <>
			<.tip
				@click.if(!state.loading)=api.toggle_effective_names
				@hotkey('tab').capture.if(!state.loading)=api.toggle_effective_names
			>
				<.tip-hotkey> "Tab"
				<.tip-content> "Toggle Effective Names"

		result.push <>
			<.tip
				@click.if(!state.loading)=refs.settings.open
				@hotkey('shift+tab').capture.if(!state.loading)=refs.settings.open
			>
				<.tip-hotkey> "Shift + Tab"
				<.tip-content> "Toggle Settings"

		result.push <>
			<.tip @click.if(!loading)=api.handle_cut>
				if api.math_result
					<.tip-hotkey> "Cut (Math, If No Selection)"
					<.tip-content> "Cut Math Result"
				else
					<.tip-hotkey> "Cut (If No Selection)"
					<.tip-content> "Cut All Text"

		result.push <>
			<.tip.noclick
				@hotkey('down').capture.if(!state.loading)=api.increment_link_selection_index
				@hotkey('up').capture.if(!state.loading)=api.decrement_link_selection_index
			>
				<.tip-hotkey> "Up/Down Arrow"
				<.tip-content> "Move Selection"

		result.push <>
			<.tip.noclick>
				<.tip-hotkey> "Paste (If Input Empty)"
				<.tip-content> "Instant Search"

		result

	def render

		<self>
			css w:100% d:flex fld:column gap:15px ofy:hidden

			<app-tips$tips tips=tips>

			unless $tips.show_more
				<.links>
					css ofy:scroll
					for link, index in state.sorted_links
						<app-link link=link index=index>