<button use:tooltip="tooltip">action</button>
<svelte:window on:keydown="checkForCtrl(event)" on:keyup="checkForCtrl(event)"/>

<script>
	export default {
		data() {
			return { tooltip: 'Perform an Action' };
		},

		methods: {
			checkForCtrl(event) {
				if (event.ctrlKey) {
					this.set({ tooltip: 'Perform an augmented Action' });
				} else {
					this.set({ tooltip: 'Perform an Action' });
				}
			}
		},

		actions: {
			tooltip(node, text) {
				let tooltip = null;

				function onMouseEnter() {
					tooltip = document.createElement('div');
					tooltip.classList.add('tooltip');
					tooltip.textContent = text;
					node.parentNode.appendChild(tooltip);
				}

				function onMouseLeave() {
					if (!tooltip) return;
					tooltip.remove();
					tooltip = null;
				}

				node.addEventListener('mouseenter', onMouseEnter);
				node.addEventListener('mouseleave', onMouseLeave);

				return {
					update(text) {
						if (tooltip) tooltip.textContent = text;
					},
					destroy() {
						node.removeEventListener('mouseenter', onMouseEnter);
						node.removeEventListener('mouseleave', onMouseLeave);
					}
				}
			}
		}
	}
</script>