56 lines
1.3 KiB
Svelte
56 lines
1.3 KiB
Svelte
<script lang="ts">
|
|
import { onMount } from 'svelte';
|
|
import { sideBar } from '$lib/components/Org/store';
|
|
import { apps } from '$lib/components/Apps/store';
|
|
import { globalStore } from '$lib/utils/store/app';
|
|
import APPS_CONSTANTS from '$lib/components/Apps/constants';
|
|
import hotkeys from 'hotkeys-js';
|
|
|
|
function handleClose() {
|
|
$apps.selectedApp = undefined;
|
|
if ($globalStore.isStudent) {
|
|
$apps.open = false;
|
|
}
|
|
}
|
|
|
|
function handleAppClick(appName?: string) {
|
|
if (appName === $apps.selectedApp) {
|
|
handleClose();
|
|
} else {
|
|
$apps.selectedApp = appName;
|
|
}
|
|
$apps.open = true;
|
|
$apps.dropdown = !$apps.dropdown;
|
|
}
|
|
|
|
function toggleSidebar() {
|
|
$sideBar.hidden = !$sideBar.hidden;
|
|
}
|
|
|
|
onMount(() => {
|
|
hotkeys('ctrl+b,command+b,ctrl+1,command+1,ctrl+2,command+2', function (event, handler) {
|
|
// Prevent default behavior
|
|
event.preventDefault();
|
|
|
|
console.log({ handlerKey: handler.key });
|
|
|
|
switch (handler.key) {
|
|
case 'ctrl+b':
|
|
case 'command+b':
|
|
toggleSidebar();
|
|
break;
|
|
case 'ctrl+1':
|
|
case 'command+1':
|
|
handleAppClick(APPS_CONSTANTS.APPS.COMMENTS);
|
|
break;
|
|
case 'ctrl+2':
|
|
case 'command+2':
|
|
handleAppClick(APPS_CONSTANTS.APPS.POLL);
|
|
break;
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<slot />
|