UNPKG

4.44 kBSource Map (JSON)View Raw
1{"version":3,"sources":["lists/pl-grouped-list.js"],"names":["window","Ractive","controller","component","data","el","config","done","_refresh","GroupedList","fire","lvl","level","keypath","split","length","plName","_$el","$","list","find","content","on","realScrollTop","get","scrollTop","$lastItemMoved","children","each","$item","this","removeClass","css","top","position","$prev","prevAll","Math","max","outerHeight","height","$next","filter","nextTop","z-index","min","addClass","item","scroll","resize","off","observe"],"mappings":"CAAA,WACE,YAEAA,QAAOC,QAAQC,WAAW,kBAAmB,SAASC,EAAWC,EAAMC,EAAIC,EAAQC,GAiBjF,QAASC,KACPC,EAAYC,KAAK,WAhBnBN,EAAKO,IAAM,EACXP,EAAKQ,MAAQ,SAASC,GACpB,MAAOA,GAAQC,MAAM,SAASC,OAAS,EAGzC,IAAIN,GAAcN,GACZa,OAAQ,kBACRZ,KAAMA,IAERa,GACEjB,OAAQkB,EAAElB,QACVmB,KAAMD,EAAET,EAAYJ,IAAIe,KAAK,oBAC7BC,QAASH,EAAET,EAAYJ,IAAIe,KAAK,4BAOtCX,GAAYa,GAAG,UAAW,WACxB,GAAIC,GAAgBN,EAAKE,KAAKK,IAAI,GAAGC,UACjCC,EAAiB,IAErBT,GAAKI,QAAQM,WAAWC,KAAK,WAC3B,GAAIH,GAAYF,EACZM,EAAQX,EAAEY,MACVlB,EAAQiB,EAAMzB,KAAK,QAEvByB,GACGE,YAAY,8CACZC,IAAI,MAAO,GAEd,IAAIC,GAAMJ,EAAMK,WAAWD,GAE3B,IAAc,IAAVrB,EAAa,CACf,GAAIuB,GAAQjB,EAAEW,EAAMO,QAAQ,WAAaxB,EAAQ,IAAIY,IAAI,GACzDC,GAAYY,KAAKC,IAAIL,EAAKE,EAAMD,WAAWD,IAAME,EAAMI,aAAY,IAGrE,GAAUd,EAANQ,EAAiB,CACnB,GAAIO,GAASX,EAAMU,aAAY,GAC3BE,EAAQZ,EAAMT,KAAK,wBAAwBsB,OAAO,WAChD,MAAOxB,GAAEY,MAAM1B,KAAK,UAAYQ,GAEtC6B,GAAQA,EAAM1B,OAASG,EAAEuB,EAAMjB,IAAI,IAAM,IACzC,IAAImB,GAAUF,EAAQA,EAAMP,WAAWD,IAAMO,EAASvB,EAAKI,QAAQkB,cAAgBC,CAEnFX,GAAMG,KACJY,UAAW,KAAOhC,EAClBqB,IAAKI,KAAKQ,IAAIpB,EAAWkB,GAAWV,IAGlCU,EAAUlB,IACZI,EAAMiB,SAAS,sBACfpB,EAAiBG,EACjBpB,EAAYC,KAAK,SACfqC,KAAMlB,QAMVH,IACFA,EAAeoB,SAAS,2BACxBrC,EAAYC,KAAK,aACfqC,KAAMrB,OAKZT,EAAKE,KAAK6B,OAAOxC,GAEjBS,EAAKjB,OAAOiD,OAAOzC,GAEnBC,EAAYa,GAAG,WAAY,WACzBL,EAAKjB,OAAOkD,IAAI,SAAU1C,KAG5BC,EAAY0C,QAAQ,QAAS3C,GAE7BA,IAEAD","file":"lists/pl-grouped-list.min.js","sourcesContent":["(function() {\n 'use strict';\n\n window.Ractive.controller('pl-grouped-list', function(component, data, el, config, done) {\n\n data.lvl = 0;\n data.level = function(keypath) {\n return keypath.split('items').length - 2;\n };\n\n var GroupedList = component({\n plName: 'pl-grouped-list',\n data: data\n }),\n _$el = {\n window: $(window),\n list: $(GroupedList.el).find('.pl-grouped-list'),\n content: $(GroupedList.el).find('.pl-grouped-list-content')\n };\n\n function _refresh() {\n GroupedList.fire('refresh');\n }\n\n GroupedList.on('refresh', function() {\n var realScrollTop = _$el.list.get(0).scrollTop,\n $lastItemMoved = null;\n\n _$el.content.children().each(function() {\n var scrollTop = realScrollTop,\n $item = $(this),\n level = $item.data('level');\n\n $item\n .removeClass('grouped-list-fixed grouped-list-fixed-last')\n .css('top', '');\n\n var top = $item.position().top;\n\n if (level !== 0) {\n var $prev = $($item.prevAll('.level-' + (level - 1)).get(0));\n scrollTop = Math.max(top, $prev.position().top + $prev.outerHeight(true));\n }\n\n if (top < scrollTop) {\n var height = $item.outerHeight(true),\n $next = $item.find('~ .grouped-list-item').filter(function() {\n return $(this).data('level') <= level;\n });\n $next = $next.length ? $($next.get(0)) : null;\n var nextTop = $next ? $next.position().top - height : _$el.content.outerHeight() - height;\n\n $item.css({\n 'z-index': 9999 - level,\n top: Math.min(scrollTop, nextTop) - top\n });\n\n if (nextTop > scrollTop) {\n $item.addClass('grouped-list-fixed');\n $lastItemMoved = $item;\n GroupedList.fire('fixed', {\n item: $item\n });\n }\n }\n });\n\n if ($lastItemMoved) {\n $lastItemMoved.addClass('grouped-list-fixed-last');\n GroupedList.fire('lastFixed', {\n item: $lastItemMoved\n });\n }\n });\n\n _$el.list.scroll(_refresh);\n\n _$el.window.resize(_refresh);\n\n GroupedList.on('teardown', function() {\n _$el.window.off('resize', _refresh);\n });\n\n GroupedList.observe('items', _refresh);\n\n _refresh();\n\n done();\n });\n\n})();\n"],"sourceRoot":"/source/"}
\No newline at end of file