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)
27 lines
724 B
TypeScript
27 lines
724 B
TypeScript
// Copyright: Ankitects Pty Ltd and contributors
|
|
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
|
|
import type { Readable, Subscriber, Unsubscriber } from "svelte/store";
|
|
|
|
/**
|
|
* In some cases, we only care for updates, and not the initial
|
|
* value of a store, e.g. when the store wraps events.
|
|
* This also means, we can not use the special store syntax.
|
|
*/
|
|
function subscribeToUpdates<T>(
|
|
store: Readable<T>,
|
|
subscription: Subscriber<T>,
|
|
): Unsubscriber {
|
|
let first = true;
|
|
|
|
return store.subscribe((value: T): void => {
|
|
if (first) {
|
|
first = false;
|
|
} else {
|
|
subscription(value);
|
|
}
|
|
});
|
|
}
|
|
|
|
export default subscribeToUpdates;
|