{"version":3,"file":"index-CzTGF1dh.js","sources":["../../../app/assets/javascripts/app/sticky_navbar_handler/index.ts"],"sourcesContent":["\nimport $ from \"jquery\"\nimport _pick from \"lodash/pick\"\n\ninterface InputScrollOptions {\n  duration?: number,\n  easing?:   string,\n  complete?: (() => void), // Should put function here if you need\n  offset?:   number, // Some extra offset on top\n}\n\ninterface ScrollOptions {\n  duration:   number,\n  easing:     string,\n  complete?:  (() => void), // Should put function here if you need\n  offset:     number, // Some extra offset on top\n}\n\n/* eslint-disable no-empty-function */\n/* eslint-disable @typescript-eslint/no-empty-function */\nconst defaultScrollOptions: ScrollOptions = {\n  duration: 1000,\n  easing:   \"swing\",\n  complete: () => {},\n  offset:   20,\n}\n/* eslint-enable @typescript-eslint/no-empty-function */\n/* eslint-enable no-empty-function */\n\n\nclass StickyNavbarHandler {\n  private totalOffsetForScrolling: number\n\n  constructor(totalOffsetForScrolling = 0){\n    this.totalOffsetForScrolling = totalOffsetForScrolling\n  }\n\n  public scrollTo(selectorOrElement: string | Element | JQuery, options?: InputScrollOptions) {\n    const $target = $(selectorOrElement)\n    const opts: ScrollOptions = Object.assign({}, defaultScrollOptions, options)\n\n    if ( $target.length === 0 ){\n      return\n    }\n    const target_offset = $target.offset()\n    if (target_offset == null) { return }\n\n    const totalOffset = target_offset.top - opts.offset - this.totalOffsetForScrolling\n    $(\"html, body\").animate({\n      scrollTop: totalOffset,\n    }, _pick(opts, \"duration\", \"easing\", \"complete\") )\n  }\n\n  public getTotalOffsetForScrolling() {\n    return this.totalOffsetForScrolling\n  }\n\n  public setTotalOffsetForScrolling(num: number) {\n    this.totalOffsetForScrolling = num\n  }\n\n  public addToTotalOffsetForScrolling(num: number) {\n    this.totalOffsetForScrolling += num\n  }\n\n  public substractFromTotalOffsetForScrolling(num: number) {\n    this.totalOffsetForScrolling -= num\n  }\n}\n\nconst instance = new StickyNavbarHandler()\n\nexport {instance as default, StickyNavbarHandler }\n\n"],"names":["defaultScrollOptions","StickyNavbarHandler","totalOffsetForScrolling","selectorOrElement","options","$target","$","opts","target_offset","totalOffset","_pick","num","instance"],"mappings":"gFAoBA,MAAMA,EAAsC,CAC1C,SAAU,IACV,OAAU,QACV,SAAU,IAAM,CAAC,EACjB,OAAU,EACZ,EAKA,MAAMC,CAAoB,CAGxB,YAAYC,EAA0B,EAAE,CACtC,KAAK,wBAA0BA,CAAA,CAG1B,SAASC,EAA8CC,EAA8B,CACpF,MAAAC,EAAUC,EAAEH,CAAiB,EAC7BI,EAAsB,OAAO,OAAO,CAAA,EAAIP,EAAsBI,CAAO,EAEtE,GAAAC,EAAQ,SAAW,EACtB,OAEI,MAAAG,EAAgBH,EAAQ,OAAO,EACrC,GAAIG,GAAiB,KAAQ,OAE7B,MAAMC,EAAcD,EAAc,IAAMD,EAAK,OAAS,KAAK,wBACzDD,EAAA,YAAY,EAAE,QAAQ,CACtB,UAAWG,GACVC,EAAMH,EAAM,WAAY,SAAU,UAAU,CAAE,CAAA,CAG5C,4BAA6B,CAClC,OAAO,KAAK,uBAAA,CAGP,2BAA2BI,EAAa,CAC7C,KAAK,wBAA0BA,CAAA,CAG1B,6BAA6BA,EAAa,CAC/C,KAAK,yBAA2BA,CAAA,CAG3B,qCAAqCA,EAAa,CACvD,KAAK,yBAA2BA,CAAA,CAEpC,CAEM,MAAAC,EAAW,IAAIX"}