88217c5e7d
* Implement a first version of WithFloating and Portal * Add outside slot for Portal * Execute computePosition from WithFloating * Set up a first example of new WithFloating with the Latex menu * Use autoUpdate in WithFloating * Create sveltelib/position * Add event-store * Use event-store in close-on-click * Implement subscribeToUpdates * Introduce sass/elevation * Split close-on-click to closing-click and subscribe-trigger * Have closing-* stores return a symbol - This way they act more of an EventEmitter than a store * Allow passing show store * Remove styling on float on updatePosition removal * Implement a nice border for dropdowns * Apply different border and box-shadow to Popover in dark/light theme * Fix Ctrl+Shift+T not working * Satisfy formatters and tests * Add copyright header * move copyright header to top (dae)
29 lines
593 B
TypeScript
29 lines
593 B
TypeScript
// Copyright: Ankitects Pty Ltd and contributors
|
|
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
|
|
import type { Writable } from "svelte/store";
|
|
|
|
export interface Toggleable {
|
|
toggle: () => void;
|
|
on: () => void;
|
|
off: () => void;
|
|
}
|
|
|
|
function toggleable(store: Writable<boolean>): Toggleable {
|
|
function toggle(): void {
|
|
store.update((value) => !value);
|
|
}
|
|
|
|
function on(): void {
|
|
store.set(true);
|
|
}
|
|
|
|
function off(): void {
|
|
store.set(false);
|
|
}
|
|
|
|
return { toggle, on, off };
|
|
}
|
|
|
|
export default toggleable;
|