type TaskHandle = number export const useTasks = () => { const taskQueue = useState>('spinner:taskQueue', () => new Set()) const taskId = useState('spinner:taskId', () => 1) const hasTasks = computed(() => taskQueue.value.size > 0) const addTask = (): TaskHandle => { const handle = taskId.value++ taskQueue.value = new Set(taskQueue.value).add(handle) return handle } const completeTask = (handle: TaskHandle) => { const newSet = new Set(taskQueue.value) newSet.delete(handle) taskQueue.value = newSet } return { hasTasks, addTask, completeTask } }