diff --git a/paperforge/plugin/src/utils/disclosure.ts b/paperforge/plugin/src/utils/disclosure.ts new file mode 100644 index 00000000..f5062798 --- /dev/null +++ b/paperforge/plugin/src/utils/disclosure.ts @@ -0,0 +1,21 @@ +export function getDisclosureState( + store: Record | null | undefined, + key: string, + defaultCollapsed: boolean, +): boolean { + if (!store || typeof store !== "object") return !!defaultCollapsed; + if (!Object.prototype.hasOwnProperty.call(store, key)) return !!defaultCollapsed; + return !!store[key]; +} + +export function toggleDisclosureState( + store: Record | null | undefined, + key: string, + defaultCollapsed: boolean, +): boolean { + const next = !getDisclosureState(store, key, defaultCollapsed); + if (store && typeof store === "object") { + store[key] = next; + } + return next; +}