refactor: adopt createSingleton across the remaining stores
Replace the hand-rolled let _x / getX / __resetX boilerplate with the createSingleton helper in all nine remaining singleton stores. Exposed accessor names (getX, __resetX) are unchanged, so consumers and specs are unaffected. Teardown wired to each stores destroy() where it has one (fontCatalog, fontLifecycle, typography, availableFilter, theme, layout, scrollBreadcrumbs); sort and appliedFilter have no teardown. Also merges layoutStores duplicate $shared/lib imports.
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import { createSingleton } from '$shared/lib/helpers/createSingleton/createSingleton';
|
||||
|
||||
/**
|
||||
* Scroll-based breadcrumb tracking store
|
||||
*
|
||||
@@ -279,17 +281,15 @@ export function createScrollBreadcrumbsStore(): ScrollBreadcrumbsStore {
|
||||
return new ScrollBreadcrumbsStore();
|
||||
}
|
||||
|
||||
let _scrollBreadcrumbsStore: ScrollBreadcrumbsStore | undefined;
|
||||
|
||||
/**
|
||||
* App-wide scroll breadcrumbs store, created on first access.
|
||||
*/
|
||||
export function getScrollBreadcrumbsStore(): ScrollBreadcrumbsStore {
|
||||
return (_scrollBreadcrumbsStore ??= createScrollBreadcrumbsStore());
|
||||
}
|
||||
const scrollBreadcrumbsStore = createSingleton(
|
||||
() => createScrollBreadcrumbsStore(),
|
||||
instance => instance.destroy(),
|
||||
);
|
||||
|
||||
export const getScrollBreadcrumbsStore = scrollBreadcrumbsStore.get;
|
||||
|
||||
// test-only reset, so specs don't share observer/scroll state
|
||||
export function __resetScrollBreadcrumbsStore() {
|
||||
_scrollBreadcrumbsStore?.destroy();
|
||||
_scrollBreadcrumbsStore = undefined;
|
||||
}
|
||||
export const __resetScrollBreadcrumbsStore = scrollBreadcrumbsStore.reset;
|
||||
|
||||
Reference in New Issue
Block a user