{"version":3,"file":"subscribable.mjs","sources":["../../../src/vanilla/subscribable.ts"],"sourcesContent":["type Listener = () => void\n\nexport const createSubscribable = <TListener = Listener>(\n  onSubscribe?: () => void,\n  onUnsubscribe?: () => void\n) => {\n  const listeners = new Set<TListener>()\n\n  const subscribe = (listener: TListener) => {\n    listeners.add(listener)\n\n    onSubscribe?.()\n\n    return () => {\n      listeners.delete(listener)\n      onUnsubscribe?.()\n    }\n  }\n\n  const hasListeners = () => listeners.size > 0\n\n  return [listeners, subscribe, hasListeners] as const\n}\n"],"names":["createSubscribable","onSubscribe","onUnsubscribe","listeners","Set","subscribe","listener","add","delete","hasListeners","size"],"mappings":"MAEaA,kBAAkB,GAAGA,CAChCC,WAAwB,EACxBC,aAA0B,KACvB;AACH,EAAA,MAAMC,SAAS,GAAG,IAAIC,GAAG,EAAa,CAAA;EAEtC,MAAMC,SAAS,GAAIC,QAAmB,IAAK;AACzCH,IAAAA,SAAS,CAACI,GAAG,CAACD,QAAQ,CAAC,CAAA;IAEvBL,WAAW,IAAA,IAAA,IAAXA,WAAW,EAAI,CAAA;AAEf,IAAA,OAAO,MAAM;AACXE,MAAAA,SAAS,CAACK,MAAM,CAACF,QAAQ,CAAC,CAAA;MAC1BJ,aAAa,IAAA,IAAA,IAAbA,aAAa,EAAI,CAAA;KAClB,CAAA;GACF,CAAA;EAED,MAAMO,YAAY,GAAGA,MAAMN,SAAS,CAACO,IAAI,GAAG,CAAC,CAAA;AAE7C,EAAA,OAAO,CAACP,SAAS,EAAEE,SAAS,EAAEI,YAAY,CAAC,CAAA;AAC7C;;;;"}