{"version":3,"file":"pagination-BKXTjOpo.js","sources":["../../../app/assets/javascripts/app/pagination.ts"],"sourcesContent":["\nimport $ from \"jquery\"\nimport _bind from \"lodash/bind\"\n\ninterface PaginationSelector {\n all: string,\n with_data: string,\n active_page: string\n}\ninterface PaginationDuck {\n $main: JQuery\n\n init(main: string, selector: PaginationSelector): PaginationDuck\n initEvent(): PaginationDuck\n getPage(): number\n setPage(n: number): PaginationDuck\n resetPage(): PaginationDuck\n onDataClick(f: (e: Event) => void): PaginationDuck\n onUpdate(f: (page: number) => void): PaginationDuck\n}\n\n\n// ====== constants =========\nconst DEFAULT_PAGE_NO: number = 1\nconst DEFAULT_SELECTOR: PaginationSelector = {\n all: \".pagination a\",\n with_data: \".pagination a[href][data-page]\",\n active_page: \".pagination__page-link--active a\",\n}\n\nclass Pagination implements PaginationDuck {\n public $main: JQuery\n\n private currentPageNo: number\n private selector: PaginationSelector\n\n private onDataClickCallbacks: Array<(e: Event) => void>\n\n constructor() {\n this.currentPageNo = DEFAULT_PAGE_NO\n this.selector = DEFAULT_SELECTOR\n this.$main = $(\"div\")\n\n this.onDataClickCallbacks = []\n }\n\n public init(main: string | Element | JQuery, selector?: PaginationSelector): PaginationDuck {\n this.selector = Object.assign({}, DEFAULT_SELECTOR, selector)\n this.$main = $(main)\n\n this._sync_from_html()\n\n return this\n }\n\n public initEvent(): PaginationDuck {\n const { all: $all, with_data: $with_data} = this.selector\n\n this.$main.on(\"click\", $all, (e) => e.preventDefault())\n this.$main.on(\"click\", $with_data, _bind(this._onDataClick, this))\n\n return this\n }\n\n public getPage(): number {\n return this.currentPageNo\n }\n\n public setPage(pageNo: number): PaginationDuck {\n this.currentPageNo = pageNo\n return this\n }\n\n public resetPage(): PaginationDuck {\n this.currentPageNo = DEFAULT_PAGE_NO\n return this\n }\n\n public onDataClick(f: (e: Event) => void): PaginationDuck {\n this.onDataClickCallbacks.push(f)\n\n return this\n }\n\n public onUpdate(f: (page: number) => void): PaginationDuck {\n // No this binding\n this._onUpdate = f\n\n return this\n }\n\n private _onDataClick(e: Event): void {\n this.onDataClickCallbacks.forEach((f) => f(e))\n\n this._onDataClickDefault(e)\n }\n\n private _onDataClickDefault(e: Event): void {\n e.preventDefault()\n\n if ( e.currentTarget == null ) { return }\n const $el = $(e.currentTarget)\n const _targetPage: number | null = $el.data(\"page\")\n\n if (typeof _targetPage === \"number\" && this.currentPageNo !== _targetPage){\n this.setPage(_targetPage)\n this._onUpdate(_targetPage)\n }\n }\n\n private _onUpdate(_page: number): void {\n // Empty\n }\n\n private _sync_from_html(): PaginationDuck {\n // by \"activated link(css)\"\n const $active_page = $(this.selector.active_page)\n // if they start at map view so we can only guess the page\n // TODO: handle this situation in map view / filters instead\n let pageNo = DEFAULT_PAGE_NO\n if ($active_page.length !== 0) {\n // if they start at listing page\n pageNo = $active_page.data(\"page\")\n }\n\n this.setPage(pageNo)\n\n return this\n }\n}\n\nconst Factory = {\n create(){\n return new Pagination()\n },\n}\n\nexport {\n Factory,\n Pagination,\n Factory as default,\n}\n\n\n"],"names":["DEFAULT_PAGE_NO","DEFAULT_SELECTOR","Pagination","$","main","selector","$all","$with_data","_bind","pageNo","f","e","_targetPage","_page","$active_page","Factory"],"mappings":"gFAuBA,MAAMA,EAA2B,EAC3BC,EAAuC,CAC3C,IAAc,gBACd,UAAc,iCACd,YAAc,kCAChB,EAEA,MAAMC,CAAqC,CAQzC,aAAc,CACZ,KAAK,cAAiBF,EACtB,KAAK,SAAiBC,EACjB,KAAA,MAAiBE,EAAE,KAAK,EAE7B,KAAK,qBAAuB,CAAC,CAAA,CAGxB,KAAKC,EAAiCC,EAA+C,CAC1F,YAAK,SAAW,OAAO,OAAO,CAAC,EAAGJ,EAAkBI,CAAQ,EACvD,KAAA,MAAQF,EAAEC,CAAI,EAEnB,KAAK,gBAAgB,EAEd,IAAA,CAGF,WAA4B,CACjC,KAAM,CAAE,IAAKE,EAAM,UAAWC,CAAA,EAAc,KAAK,SAE5C,YAAA,MAAM,GAAG,QAASD,EAAO,GAAM,EAAE,gBAAgB,EACjD,KAAA,MAAM,GAAG,QAASC,EAAYC,EAAM,KAAK,aAAc,IAAI,CAAC,EAE1D,IAAA,CAGF,SAAkB,CACvB,OAAO,KAAK,aAAA,CAGP,QAAQC,EAAgC,CAC7C,YAAK,cAAgBA,EACd,IAAA,CAGF,WAA4B,CACjC,YAAK,cAAgBT,EACd,IAAA,CAGF,YAAYU,EAAuC,CACnD,YAAA,qBAAqB,KAAKA,CAAC,EAEzB,IAAA,CAGF,SAASA,EAA2C,CAEzD,YAAK,UAAYA,EAEV,IAAA,CAGD,aAAaC,EAAgB,CACnC,KAAK,qBAAqB,QAASD,GAAMA,EAAEC,CAAC,CAAC,EAE7C,KAAK,oBAAoBA,CAAC,CAAA,CAGpB,oBAAoBA,EAAgB,CAGrC,GAFLA,EAAE,eAAe,EAEZA,EAAE,eAAiB,KAAS,OAE3B,MAAAC,EADMT,EAAEQ,EAAE,aAAa,EACU,KAAK,MAAM,EAE9C,OAAOC,GAAgB,UAAY,KAAK,gBAAkBA,IAC5D,KAAK,QAAQA,CAAW,EACxB,KAAK,UAAUA,CAAW,EAC5B,CAGM,UAAUC,EAAqB,CAAA,CAI/B,iBAAkC,CAExC,MAAMC,EAAeX,EAAE,KAAK,SAAS,WAAW,EAGhD,IAAIM,EAAST,EACT,OAAAc,EAAa,SAAW,IAEjBL,EAAAK,EAAa,KAAK,MAAM,GAGnC,KAAK,QAAQL,CAAM,EAEZ,IAAA,CAEX,CAEA,MAAMM,EAAU,CACd,QAAQ,CACN,OAAO,IAAIb,CAAW,CAE1B"}