UNPKG

better-auth

Version:

The most comprehensive authentication framework for TypeScript.

1 lines 2.13 kB
{"version":3,"file":"focus-manager.mjs","names":[],"sources":["../../src/client/focus-manager.ts"],"sourcesContent":["export type FocusListener = (focused: boolean) => void;\n\nexport const kFocusManager = Symbol.for(\"better-auth:focus-manager\");\n\nexport interface FocusManager {\n\tsetFocused(focused: boolean): void;\n\tsubscribe(listener: FocusListener): () => void;\n\tsetup(): () => void;\n}\n\nclass WindowFocusManager implements FocusManager {\n\tlisteners = new Set<FocusListener>();\n\n\tsubscribe(listener: FocusListener) {\n\t\tthis.listeners.add(listener);\n\t\treturn () => {\n\t\t\tthis.listeners.delete(listener);\n\t\t};\n\t}\n\n\tsetFocused(focused: boolean) {\n\t\tthis.listeners.forEach((listener) => listener(focused));\n\t}\n\n\tsetup() {\n\t\tif (\n\t\t\ttypeof window === \"undefined\" ||\n\t\t\ttypeof document === \"undefined\" ||\n\t\t\ttypeof window.addEventListener === \"undefined\"\n\t\t) {\n\t\t\treturn () => {};\n\t\t}\n\n\t\tconst visibilityHandler = () => {\n\t\t\tif (document.visibilityState === \"visible\") {\n\t\t\t\tthis.setFocused(true);\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener(\"visibilitychange\", visibilityHandler, false);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\n\t\t\t\t\"visibilitychange\",\n\t\t\t\tvisibilityHandler,\n\t\t\t\tfalse,\n\t\t\t);\n\t\t};\n\t}\n}\n\nexport function getGlobalFocusManager() {\n\tif (!(globalThis as any)[kFocusManager]) {\n\t\t(globalThis as any)[kFocusManager] = new WindowFocusManager();\n\t}\n\treturn (globalThis as any)[kFocusManager] as FocusManager;\n}\n"],"mappings":";AAEA,MAAa,gBAAgB,OAAO,IAAI,4BAA4B;AAQpE,IAAM,qBAAN,MAAiD;CAChD,4BAAY,IAAI,KAAoB;CAEpC,UAAU,UAAyB;AAClC,OAAK,UAAU,IAAI,SAAS;AAC5B,eAAa;AACZ,QAAK,UAAU,OAAO,SAAS;;;CAIjC,WAAW,SAAkB;AAC5B,OAAK,UAAU,SAAS,aAAa,SAAS,QAAQ,CAAC;;CAGxD,QAAQ;AACP,MACC,OAAO,WAAW,eAClB,OAAO,aAAa,eACpB,OAAO,OAAO,qBAAqB,YAEnC,cAAa;EAGd,MAAM,0BAA0B;AAC/B,OAAI,SAAS,oBAAoB,UAChC,MAAK,WAAW,KAAK;;AAIvB,WAAS,iBAAiB,oBAAoB,mBAAmB,MAAM;AAEvE,eAAa;AACZ,YAAS,oBACR,oBACA,mBACA,MACA;;;;AAKJ,SAAgB,wBAAwB;AACvC,KAAI,CAAE,WAAmB,eACxB,CAAC,WAAmB,iBAAiB,IAAI,oBAAoB;AAE9D,QAAQ,WAAmB"}