{"version":3,"sources":["../../../../src/browser/usePreferredLanguages/core.ts"],"sourcesContent":["import { observable, type Observable } from \"@legendapp/state\";\nimport { onMount, type DeepMaybeObservable, type ReadonlyObservable } from \"@usels/core\";\nimport { resolveWindowSource, type ConfigurableWindow } from \"@shared/configurable\";\nimport { createEventListener } from \"../useEventListener/core\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- intentional alias to allow future extension without breaking API\nexport interface UsePreferredLanguagesOptions extends ConfigurableWindow {}\n\nexport type UsePreferredLanguagesReturn = ReadonlyObservable<readonly string[]>;\n\n/**\n * Framework-agnostic reactive `navigator.languages` tracker.\n *\n * Tracks the user's preferred languages and updates whenever the `languagechange`\n * event fires on the resolved window. Must be called inside a `useScope` factory.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function createPreferredLanguages(\n  options?: DeepMaybeObservable<UsePreferredLanguagesOptions>\n): UsePreferredLanguagesReturn {\n  const opts$ = observable(options);\n  const win$ = resolveWindowSource(opts$.window as unknown as Observable<unknown>);\n\n  const languages$ = observable<readonly string[]>([]);\n\n  const readLanguages = (): readonly string[] => {\n    const win = win$.peek();\n    return win?.navigator?.languages ?? [\"en\"];\n  };\n\n  onMount(() => {\n    languages$.set(readLanguages());\n  });\n\n  createEventListener(\n    win$ as unknown as Observable<unknown>,\n    \"languagechange\",\n    () => {\n      languages$.set(readLanguages());\n    },\n    { passive: true }\n  );\n\n  return languages$ as ReadonlyObservable<readonly string[]>;\n}\n"],"mappings":"AAAA,SAAS,kBAAmC;AAC5C,SAAS,eAAkE;AAC3E,SAAS,2BAAoD;AAC7D,SAAS,2BAA2B;AAAA;AAc7B,SAAS,yBACd,SAC6B;AAC7B,QAAM,QAAQ,WAAW,OAAO;AAChC,QAAM,OAAO,oBAAoB,MAAM,MAAwC;AAE/E,QAAM,aAAa,WAA8B,CAAC,CAAC;AAEnD,QAAM,gBAAgB,MAAyB;AAC7C,UAAM,MAAM,KAAK,KAAK;AACtB,WAAO,KAAK,WAAW,aAAa,CAAC,IAAI;AAAA,EAC3C;AAEA,UAAQ,MAAM;AACZ,eAAW,IAAI,cAAc,CAAC;AAAA,EAChC,CAAC;AAED;AAAA,IACE;AAAA,IACA;AAAA,IACA,MAAM;AACJ,iBAAW,IAAI,cAAc,CAAC;AAAA,IAChC;AAAA,IACA,EAAE,SAAS,KAAK;AAAA,EAClB;AAEA,SAAO;AACT;","names":[]}