{
  "version": 3,
  "sources": ["../src/index.ts"],
  "sourcesContent": ["import { CatchLinks } from './catch-links.js'\nimport { type PushFunction, singlePage } from './single-page.js'\n\nexport interface Listener {\n    (href:string, data:{ scrollX:number, scrollY:number, popstate:boolean }):void;\n}\n\n/**\n * Routes\n * @param {} opts\n * @returns A function that takes a callback for route change events, and has\n * a property to set the route.\n */\nexport function Route (opts:{\n    el?:HTMLElement;\n    handleAnchor?:boolean|((href:string)=>boolean),\n    handleLink?:(href:string)=>boolean,\n    init?:boolean\n} = {}):{\n    (cb:Listener):()=>void;\n    setRoute:PushFunction;\n} {\n    let listeners:Listener[] = []\n    const init = opts.init\n    const el = opts.el || document?.body\n    if (!el) throw new Error('Not document')\n\n    const listen = function listen (cb:Listener) {\n        listeners.push(cb)\n\n        return function unlisten () {\n            listeners = listeners.filter(listener => {\n                return listener !== cb\n            })\n        }\n    }\n\n    const setRoute = singlePage((href, eventData) => {\n        listeners.forEach(function (cb) {\n            cb(href, eventData)\n        })\n    }, { init })\n\n    CatchLinks(el, setRoute, {\n        handleAnchor: opts.handleAnchor,\n        handleLink: opts.handleLink\n    })\n\n    const _setRoute:PushFunction = function (href:string) {\n        setRoute(href)\n    }\n\n    _setRoute.push = function (href:string):void {\n        setRoute.push(href)\n    }\n\n    _setRoute.show = function (href) {\n        setRoute.show(href)\n    }\n\n    _setRoute.page = setRoute.page\n\n    listen.setRoute = _setRoute\n\n    return listen\n}\n\nexport default Route\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA2B;AAC3B,yBAA8C;AAYvC,SAAS,MAAO,OAKnB,CAAC,GAGH;AACE,MAAI,YAAuB,CAAC;AAC5B,QAAM,OAAO,KAAK;AAClB,QAAM,KAAK,KAAK,MAAM,UAAU;AAChC,MAAI,CAAC,GAAI,OAAM,IAAI,MAAM,cAAc;AAEvC,QAAM,SAAS,gCAASA,QAAQ,IAAa;AACzC,cAAU,KAAK,EAAE;AAEjB,WAAO,gCAAS,WAAY;AACxB,kBAAY,UAAU,OAAO,cAAY;AACrC,eAAO,aAAa;AAAA,MACxB,CAAC;AAAA,IACL,GAJO;AAAA,EAKX,GARe;AAUf,QAAM,eAAW,+BAAW,CAAC,MAAM,cAAc;AAC7C,cAAU,QAAQ,SAAU,IAAI;AAC5B,SAAG,MAAM,SAAS;AAAA,IACtB,CAAC;AAAA,EACL,GAAG,EAAE,KAAK,CAAC;AAEX,qCAAW,IAAI,UAAU;AAAA,IACrB,cAAc,KAAK;AAAA,IACnB,YAAY,KAAK;AAAA,EACrB,CAAC;AAED,QAAM,YAAyB,gCAAU,MAAa;AAClD,aAAS,IAAI;AAAA,EACjB,GAF+B;AAI/B,YAAU,OAAO,SAAU,MAAkB;AACzC,aAAS,KAAK,IAAI;AAAA,EACtB;AAEA,YAAU,OAAO,SAAU,MAAM;AAC7B,aAAS,KAAK,IAAI;AAAA,EACtB;AAEA,YAAU,OAAO,SAAS;AAE1B,SAAO,WAAW;AAElB,SAAO;AACX;AApDgB;AAsDhB,IAAO,gBAAQ;",
  "names": ["listen"]
}
