0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-12-12 00:08:59 +01:00
Bootstrap/js/dist/scrollspy.js.map
Mark Otto c0fd91788e dist
2018-08-18 20:22:08 -07:00

1 line
20 KiB
Plaintext

{"version":3,"file":"scrollspy.js","sources":["../src/scrollspy.js"],"sourcesContent":["import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'scrollspy'\n const VERSION = '4.1.3'\n const DATA_KEY = 'bs.scrollspy'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n offset : 10,\n method : 'auto',\n target : ''\n }\n\n const DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n }\n\n const Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n }\n\n const Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n }\n\n const OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n const offsetLength = this._offsets.length\n for (let i = offsetLength; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n let queries = this._selector.split(',')\n // eslint-disable-next-line arrow-body-style\n queries = queries.map((selector) => {\n return `${selector}[data-target=\"${target}\"],` +\n `${selector}[href=\"${target}\"]`\n })\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n const nodes = [].slice.call(document.querySelectorAll(this._selector))\n $(nodes).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE)\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY))\n\n const scrollSpysLength = scrollSpys.length\n for (let i = scrollSpysLength; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = ScrollSpy._jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n }\n\n return ScrollSpy\n})($)\n\nexport default ScrollSpy\n"],"names":["ScrollSpy","$","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","fn","Default","offset","method","target","DefaultType","Event","ACTIVATE","SCROLL","LOAD_DATA_API","ClassName","DROPDOWN_ITEM","DROPDOWN_MENU","ACTIVE","Selector","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","OFFSET","POSITION","element","config","_element","_scrollElement","tagName","window","_config","_getConfig","_selector","_offsets","_targets","_activeTarget","_scrollHeight","on","event","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","slice","call","document","querySelectorAll","map","targetSelector","Util","getSelectorFromElement","querySelector","targetBCR","getBoundingClientRect","width","height","top","filter","item","sort","a","b","forEach","push","dispose","removeData","off","id","attr","getUID","typeCheckConfig","pageYOffset","scrollTop","scrollHeight","Math","max","body","documentElement","_getOffsetHeight","innerHeight","maxScroll","length","_activate","_clear","offsetLength","i","isActiveTarget","queries","split","selector","$link","join","hasClass","closest","find","addClass","parents","prev","children","trigger","relatedTarget","nodes","removeClass","_jQueryInterface","each","data","TypeError","scrollSpys","scrollSpysLength","$spy","Constructor","noConflict"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGA;;;;;;;EAOA,IAAMA,SAAS,GAAI,UAACC,IAAD,EAAO;EACxB;;;;;EAMA,MAAMC,IAAI,GAAiB,WAA3B;EACA,MAAMC,OAAO,GAAc,OAA3B;EACA,MAAMC,QAAQ,GAAa,cAA3B;EACA,MAAMC,SAAS,SAAgBD,QAA/B;EACA,MAAME,YAAY,GAAS,WAA3B;EACA,MAAMC,kBAAkB,GAAGN,IAAC,CAACO,EAAF,CAAKN,IAAL,CAA3B;EAEA,MAAMO,OAAO,GAAG;EACdC,IAAAA,MAAM,EAAG,EADK;EAEdC,IAAAA,MAAM,EAAG,MAFK;EAGdC,IAAAA,MAAM,EAAG;EAHK,GAAhB;EAMA,MAAMC,WAAW,GAAG;EAClBH,IAAAA,MAAM,EAAG,QADS;EAElBC,IAAAA,MAAM,EAAG,QAFS;EAGlBC,IAAAA,MAAM,EAAG;EAHS,GAApB;EAMA,MAAME,KAAK,GAAG;EACZC,IAAAA,QAAQ,eAAmBV,SADf;EAEZW,IAAAA,MAAM,aAAmBX,SAFb;EAGZY,IAAAA,aAAa,WAAUZ,SAAV,GAAsBC;EAHvB,GAAd;EAMA,MAAMY,SAAS,GAAG;EAChBC,IAAAA,aAAa,EAAG,eADA;EAEhBC,IAAAA,aAAa,EAAG,eAFA;EAGhBC,IAAAA,MAAM,EAAU;EAHA,GAAlB;EAMA,MAAMC,QAAQ,GAAG;EACfC,IAAAA,QAAQ,EAAU,qBADH;EAEfF,IAAAA,MAAM,EAAY,SAFH;EAGfG,IAAAA,cAAc,EAAI,mBAHH;EAIfC,IAAAA,SAAS,EAAS,WAJH;EAKfC,IAAAA,SAAS,EAAS,WALH;EAMfC,IAAAA,UAAU,EAAQ,kBANH;EAOfC,IAAAA,QAAQ,EAAU,WAPH;EAQfC,IAAAA,cAAc,EAAI,gBARH;EASfC,IAAAA,eAAe,EAAG;EATH,GAAjB;EAYA,MAAMC,YAAY,GAAG;EACnBC,IAAAA,MAAM,EAAK,QADQ;EAEnBC,IAAAA,QAAQ,EAAG;EAGb;;;;;;EALqB,GAArB;;EAlDwB,MA6DlBjC,SA7DkB;EAAA;EAAA;EA8DtB,uBAAYkC,OAAZ,EAAqBC,MAArB,EAA6B;EAAA;;EAC3B,WAAKC,QAAL,GAAsBF,OAAtB;EACA,WAAKG,cAAL,GAAsBH,OAAO,CAACI,OAAR,KAAoB,MAApB,GAA6BC,MAA7B,GAAsCL,OAA5D;EACA,WAAKM,OAAL,GAAsB,KAAKC,UAAL,CAAgBN,MAAhB,CAAtB;EACA,WAAKO,SAAL,GAAyB,KAAKF,OAAL,CAAa5B,MAAhB,SAA0BU,QAAQ,CAACG,SAAnC,UACG,KAAKe,OAAL,CAAa5B,MADhB,SAC0BU,QAAQ,CAACK,UADnC,WAEG,KAAKa,OAAL,CAAa5B,MAFhB,SAE0BU,QAAQ,CAACO,cAFnC,CAAtB;EAGA,WAAKc,QAAL,GAAsB,EAAtB;EACA,WAAKC,QAAL,GAAsB,EAAtB;EACA,WAAKC,aAAL,GAAsB,IAAtB;EACA,WAAKC,aAAL,GAAsB,CAAtB;EAEA7C,MAAAA,IAAC,CAAC,KAAKoC,cAAN,CAAD,CAAuBU,EAAvB,CAA0BjC,KAAK,CAACE,MAAhC,EAAwC,UAACgC,KAAD;EAAA,eAAW,KAAI,CAACC,QAAL,CAAcD,KAAd,CAAX;EAAA,OAAxC;EAEA,WAAKE,OAAL;;EACA,WAAKD,QAAL;EACD,KA9EqB;;;EAAA;;EA0FtB;EA1FsB,WA4FtBC,OA5FsB,sBA4FZ;EAAA;;EACR,UAAMC,UAAU,GAAG,KAAKd,cAAL,KAAwB,KAAKA,cAAL,CAAoBE,MAA5C,GACfR,YAAY,CAACC,MADE,GACOD,YAAY,CAACE,QADvC;EAGA,UAAMmB,YAAY,GAAG,KAAKZ,OAAL,CAAa7B,MAAb,KAAwB,MAAxB,GACjBwC,UADiB,GACJ,KAAKX,OAAL,CAAa7B,MAD9B;EAGA,UAAM0C,UAAU,GAAGD,YAAY,KAAKrB,YAAY,CAACE,QAA9B,GACf,KAAKqB,aAAL,EADe,GACQ,CAD3B;EAGA,WAAKX,QAAL,GAAgB,EAAhB;EACA,WAAKC,QAAL,GAAgB,EAAhB;EAEA,WAAKE,aAAL,GAAqB,KAAKS,gBAAL,EAArB;EAEA,UAAMC,OAAO,GAAG,GAAGC,KAAH,CAASC,IAAT,CAAcC,QAAQ,CAACC,gBAAT,CAA0B,KAAKlB,SAA/B,CAAd,CAAhB;EAEAc,MAAAA,OAAO,CACJK,GADH,CACO,UAAC3B,OAAD,EAAa;EAChB,YAAItB,MAAJ;EACA,YAAMkD,cAAc,GAAGC,IAAI,CAACC,sBAAL,CAA4B9B,OAA5B,CAAvB;;EAEA,YAAI4B,cAAJ,EAAoB;EAClBlD,UAAAA,MAAM,GAAG+C,QAAQ,CAACM,aAAT,CAAuBH,cAAvB,CAAT;EACD;;EAED,YAAIlD,MAAJ,EAAY;EACV,cAAMsD,SAAS,GAAGtD,MAAM,CAACuD,qBAAP,EAAlB;;EACA,cAAID,SAAS,CAACE,KAAV,IAAmBF,SAAS,CAACG,MAAjC,EAAyC;EACvC;EACA,mBAAO,CACLpE,IAAC,CAACW,MAAD,CAAD,CAAUwC,YAAV,IAA0BkB,GAA1B,GAAgCjB,UAD3B,EAELS,cAFK,CAAP;EAID;EACF;;EACD,eAAO,IAAP;EACD,OApBH,EAqBGS,MArBH,CAqBU,UAACC,IAAD;EAAA,eAAUA,IAAV;EAAA,OArBV,EAsBGC,IAtBH,CAsBQ,UAACC,CAAD,EAAIC,CAAJ;EAAA,eAAUD,CAAC,CAAC,CAAD,CAAD,GAAOC,CAAC,CAAC,CAAD,CAAlB;EAAA,OAtBR,EAuBGC,OAvBH,CAuBW,UAACJ,IAAD,EAAU;EACjB,QAAA,MAAI,CAAC7B,QAAL,CAAckC,IAAd,CAAmBL,IAAI,CAAC,CAAD,CAAvB;;EACA,QAAA,MAAI,CAAC5B,QAAL,CAAciC,IAAd,CAAmBL,IAAI,CAAC,CAAD,CAAvB;EACD,OA1BH;EA2BD,KAxIqB;;EAAA,WA0ItBM,OA1IsB,sBA0IZ;EACR7E,MAAAA,IAAC,CAAC8E,UAAF,CAAa,KAAK3C,QAAlB,EAA4BhC,QAA5B;EACAH,MAAAA,IAAC,CAAC,KAAKoC,cAAN,CAAD,CAAuB2C,GAAvB,CAA2B3E,SAA3B;EAEA,WAAK+B,QAAL,GAAsB,IAAtB;EACA,WAAKC,cAAL,GAAsB,IAAtB;EACA,WAAKG,OAAL,GAAsB,IAAtB;EACA,WAAKE,SAAL,GAAsB,IAAtB;EACA,WAAKC,QAAL,GAAsB,IAAtB;EACA,WAAKC,QAAL,GAAsB,IAAtB;EACA,WAAKC,aAAL,GAAsB,IAAtB;EACA,WAAKC,aAAL,GAAsB,IAAtB;EACD,KAtJqB;;;EAAA,WA0JtBL,UA1JsB,uBA0JXN,MA1JW,EA0JH;EACjBA,MAAAA,MAAM,qBACD1B,OADC,EAED,OAAO0B,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAF/C,CAAN;;EAKA,UAAI,OAAOA,MAAM,CAACvB,MAAd,KAAyB,QAA7B,EAAuC;EACrC,YAAIqE,EAAE,GAAGhF,IAAC,CAACkC,MAAM,CAACvB,MAAR,CAAD,CAAiBsE,IAAjB,CAAsB,IAAtB,CAAT;;EACA,YAAI,CAACD,EAAL,EAAS;EACPA,UAAAA,EAAE,GAAGlB,IAAI,CAACoB,MAAL,CAAYjF,IAAZ,CAAL;EACAD,UAAAA,IAAC,CAACkC,MAAM,CAACvB,MAAR,CAAD,CAAiBsE,IAAjB,CAAsB,IAAtB,EAA4BD,EAA5B;EACD;;EACD9C,QAAAA,MAAM,CAACvB,MAAP,SAAoBqE,EAApB;EACD;;EAEDlB,MAAAA,IAAI,CAACqB,eAAL,CAAqBlF,IAArB,EAA2BiC,MAA3B,EAAmCtB,WAAnC;EAEA,aAAOsB,MAAP;EACD,KA5KqB;;EAAA,WA8KtBmB,aA9KsB,4BA8KN;EACd,aAAO,KAAKjB,cAAL,KAAwBE,MAAxB,GACH,KAAKF,cAAL,CAAoBgD,WADjB,GAC+B,KAAKhD,cAAL,CAAoBiD,SAD1D;EAED,KAjLqB;;EAAA,WAmLtB/B,gBAnLsB,+BAmLH;EACjB,aAAO,KAAKlB,cAAL,CAAoBkD,YAApB,IAAoCC,IAAI,CAACC,GAAL,CACzC9B,QAAQ,CAAC+B,IAAT,CAAcH,YAD2B,EAEzC5B,QAAQ,CAACgC,eAAT,CAAyBJ,YAFgB,CAA3C;EAID,KAxLqB;;EAAA,WA0LtBK,gBA1LsB,+BA0LH;EACjB,aAAO,KAAKvD,cAAL,KAAwBE,MAAxB,GACHA,MAAM,CAACsD,WADJ,GACkB,KAAKxD,cAAL,CAAoB8B,qBAApB,GAA4CE,MADrE;EAED,KA7LqB;;EAAA,WA+LtBpB,QA/LsB,uBA+LX;EACT,UAAMqC,SAAS,GAAM,KAAKhC,aAAL,KAAuB,KAAKd,OAAL,CAAa9B,MAAzD;;EACA,UAAM6E,YAAY,GAAG,KAAKhC,gBAAL,EAArB;;EACA,UAAMuC,SAAS,GAAM,KAAKtD,OAAL,CAAa9B,MAAb,GACnB6E,YADmB,GAEnB,KAAKK,gBAAL,EAFF;;EAIA,UAAI,KAAK9C,aAAL,KAAuByC,YAA3B,EAAyC;EACvC,aAAKrC,OAAL;EACD;;EAED,UAAIoC,SAAS,IAAIQ,SAAjB,EAA4B;EAC1B,YAAMlF,MAAM,GAAG,KAAKgC,QAAL,CAAc,KAAKA,QAAL,CAAcmD,MAAd,GAAuB,CAArC,CAAf;;EAEA,YAAI,KAAKlD,aAAL,KAAuBjC,MAA3B,EAAmC;EACjC,eAAKoF,SAAL,CAAepF,MAAf;EACD;;EACD;EACD;;EAED,UAAI,KAAKiC,aAAL,IAAsByC,SAAS,GAAG,KAAK3C,QAAL,CAAc,CAAd,CAAlC,IAAsD,KAAKA,QAAL,CAAc,CAAd,IAAmB,CAA7E,EAAgF;EAC9E,aAAKE,aAAL,GAAqB,IAArB;;EACA,aAAKoD,MAAL;;EACA;EACD;;EAED,UAAMC,YAAY,GAAG,KAAKvD,QAAL,CAAcoD,MAAnC;;EACA,WAAK,IAAII,CAAC,GAAGD,YAAb,EAA2BC,CAAC,EAA5B,GAAiC;EAC/B,YAAMC,cAAc,GAAG,KAAKvD,aAAL,KAAuB,KAAKD,QAAL,CAAcuD,CAAd,CAAvB,IACnBb,SAAS,IAAI,KAAK3C,QAAL,CAAcwD,CAAd,CADM,KAElB,OAAO,KAAKxD,QAAL,CAAcwD,CAAC,GAAG,CAAlB,CAAP,KAAgC,WAAhC,IACGb,SAAS,GAAG,KAAK3C,QAAL,CAAcwD,CAAC,GAAG,CAAlB,CAHG,CAAvB;;EAKA,YAAIC,cAAJ,EAAoB;EAClB,eAAKJ,SAAL,CAAe,KAAKpD,QAAL,CAAcuD,CAAd,CAAf;EACD;EACF;EACF,KApOqB;;EAAA,WAsOtBH,SAtOsB,sBAsOZpF,MAtOY,EAsOJ;EAChB,WAAKiC,aAAL,GAAqBjC,MAArB;;EAEA,WAAKqF,MAAL;;EAEA,UAAII,OAAO,GAAG,KAAK3D,SAAL,CAAe4D,KAAf,CAAqB,GAArB,CAAd,CALgB;;;EAOhBD,MAAAA,OAAO,GAAGA,OAAO,CAACxC,GAAR,CAAY,UAAC0C,QAAD,EAAc;EAClC,eAAUA,QAAH,uBAA4B3F,MAA5B,aACG2F,QADH,gBACqB3F,MADrB,SAAP;EAED,OAHS,CAAV;EAKA,UAAM4F,KAAK,GAAGvG,IAAC,CAAC,GAAGwD,KAAH,CAASC,IAAT,CAAcC,QAAQ,CAACC,gBAAT,CAA0ByC,OAAO,CAACI,IAAR,CAAa,GAAb,CAA1B,CAAd,CAAD,CAAf;;EAEA,UAAID,KAAK,CAACE,QAAN,CAAexF,SAAS,CAACC,aAAzB,CAAJ,EAA6C;EAC3CqF,QAAAA,KAAK,CAACG,OAAN,CAAcrF,QAAQ,CAACM,QAAvB,EAAiCgF,IAAjC,CAAsCtF,QAAQ,CAACQ,eAA/C,EAAgE+E,QAAhE,CAAyE3F,SAAS,CAACG,MAAnF;EACAmF,QAAAA,KAAK,CAACK,QAAN,CAAe3F,SAAS,CAACG,MAAzB;EACD,OAHD,MAGO;EACL;EACAmF,QAAAA,KAAK,CAACK,QAAN,CAAe3F,SAAS,CAACG,MAAzB,EAFK;EAIL;;EACAmF,QAAAA,KAAK,CAACM,OAAN,CAAcxF,QAAQ,CAACE,cAAvB,EAAuCuF,IAAvC,CAA+CzF,QAAQ,CAACG,SAAxD,UAAsEH,QAAQ,CAACK,UAA/E,EAA6FkF,QAA7F,CAAsG3F,SAAS,CAACG,MAAhH,EALK;;EAOLmF,QAAAA,KAAK,CAACM,OAAN,CAAcxF,QAAQ,CAACE,cAAvB,EAAuCuF,IAAvC,CAA4CzF,QAAQ,CAACI,SAArD,EAAgEsF,QAAhE,CAAyE1F,QAAQ,CAACG,SAAlF,EAA6FoF,QAA7F,CAAsG3F,SAAS,CAACG,MAAhH;EACD;;EAEDpB,MAAAA,IAAC,CAAC,KAAKoC,cAAN,CAAD,CAAuB4E,OAAvB,CAA+BnG,KAAK,CAACC,QAArC,EAA+C;EAC7CmG,QAAAA,aAAa,EAAEtG;EAD8B,OAA/C;EAGD,KApQqB;;EAAA,WAsQtBqF,MAtQsB,qBAsQb;EACP,UAAMkB,KAAK,GAAG,GAAG1D,KAAH,CAASC,IAAT,CAAcC,QAAQ,CAACC,gBAAT,CAA0B,KAAKlB,SAA/B,CAAd,CAAd;EACAzC,MAAAA,IAAC,CAACkH,KAAD,CAAD,CAAS5C,MAAT,CAAgBjD,QAAQ,CAACD,MAAzB,EAAiC+F,WAAjC,CAA6ClG,SAAS,CAACG,MAAvD;EACD,KAzQqB;;;EAAA,cA6QfgG,gBA7Qe,6BA6QElF,MA7QF,EA6QU;EAC9B,aAAO,KAAKmF,IAAL,CAAU,YAAY;EAC3B,YAAIC,IAAI,GAAGtH,IAAC,CAAC,IAAD,CAAD,CAAQsH,IAAR,CAAanH,QAAb,CAAX;;EACA,YAAMoC,OAAO,GAAG,OAAOL,MAAP,KAAkB,QAAlB,IAA8BA,MAA9C;;EAEA,YAAI,CAACoF,IAAL,EAAW;EACTA,UAAAA,IAAI,GAAG,IAAIvH,SAAJ,CAAc,IAAd,EAAoBwC,OAApB,CAAP;EACAvC,UAAAA,IAAC,CAAC,IAAD,CAAD,CAAQsH,IAAR,CAAanH,QAAb,EAAuBmH,IAAvB;EACD;;EAED,YAAI,OAAOpF,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,cAAI,OAAOoF,IAAI,CAACpF,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,kBAAM,IAAIqF,SAAJ,wBAAkCrF,MAAlC,QAAN;EACD;;EACDoF,UAAAA,IAAI,CAACpF,MAAD,CAAJ;EACD;EACF,OAfM,CAAP;EAgBD,KA9RqB;;EAAA;EAAA;EAAA,0BAkFD;EACnB,eAAOhC,OAAP;EACD;EApFqB;EAAA;EAAA,0BAsFD;EACnB,eAAOM,OAAP;EACD;EAxFqB;;EAAA;EAAA;EAiSxB;;;;;;;EAMAR,EAAAA,IAAC,CAACsC,MAAD,CAAD,CAAUQ,EAAV,CAAajC,KAAK,CAACG,aAAnB,EAAkC,YAAM;EACtC,QAAMwG,UAAU,GAAG,GAAGhE,KAAH,CAASC,IAAT,CAAcC,QAAQ,CAACC,gBAAT,CAA0BtC,QAAQ,CAACC,QAAnC,CAAd,CAAnB;EAEA,QAAMmG,gBAAgB,GAAGD,UAAU,CAAC1B,MAApC;;EACA,SAAK,IAAII,CAAC,GAAGuB,gBAAb,EAA+BvB,CAAC,EAAhC,GAAqC;EACnC,UAAMwB,IAAI,GAAG1H,IAAC,CAACwH,UAAU,CAACtB,CAAD,CAAX,CAAd;;EACAnG,MAAAA,SAAS,CAACqH,gBAAV,CAA2B3D,IAA3B,CAAgCiE,IAAhC,EAAsCA,IAAI,CAACJ,IAAL,EAAtC;EACD;EACF,GARD;EAUA;;;;;;EAMAtH,EAAAA,IAAC,CAACO,EAAF,CAAKN,IAAL,IAAaF,SAAS,CAACqH,gBAAvB;EACApH,EAAAA,IAAC,CAACO,EAAF,CAAKN,IAAL,EAAW0H,WAAX,GAAyB5H,SAAzB;;EACAC,EAAAA,IAAC,CAACO,EAAF,CAAKN,IAAL,EAAW2H,UAAX,GAAwB,YAAM;EAC5B5H,IAAAA,IAAC,CAACO,EAAF,CAAKN,IAAL,IAAaK,kBAAb;EACA,WAAOP,SAAS,CAACqH,gBAAjB;EACD,GAHD;;EAKA,SAAOrH,SAAP;EACD,CA/TiB,CA+TfC,CA/Te,CAAlB;;;;;;;;"}