{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/ts/Controllers/loadMore.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","3","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","default","object","property","p","jsonpArray","window","kwsWebpackJsonp","oldJsonpFunction","slice","$","KWS","controllers","loadMore","EVENT_SELECTOR","DATA_ATTR_NAME","Type","ForType","ForValue","Total","Shown","PageSize","toggleClickEvent","enable","document","on","handleClickEvent","off","e","preventDefault","stopPropagation","$element","target","context","deferred","Deferred","settings","async","url","method","headers","accept","ajax","done","resolve","fail","reject","promise","content","template","getElementById","innerHTML","markup","Handlebars","compile","append","results","totalCount","attr","hide","init"],"mappings":"aACA,SAAAA,EAAAC,GAQA,IAPA,IAMAC,EAAAC,EANAC,EAAAH,EAAA,GACAI,EAAAJ,EAAA,GACAK,EAAAL,EAAA,GAIAM,EAAA,EAAAC,KACQD,EAAAH,EAAAK,OAAoBF,IAC5BJ,EAAAC,EAAAG,GACAG,EAAAP,IACAK,EAAAG,KAAAD,EAAAP,GAAA,IAEAO,EAAAP,GAAA,EAEA,IAAAD,KAAAG,EACAO,OAAAC,UAAAC,eAAAC,KAAAV,EAAAH,KACAc,EAAAd,GAAAG,EAAAH,IAKA,IAFAe,KAAAhB,GAEAO,EAAAC,QACAD,EAAAU,OAAAV,GAOA,OAHAW,EAAAR,KAAAS,MAAAD,EAAAb,OAGAe,IAEA,SAAAA,IAEA,IADA,IAAAC,EACAf,EAAA,EAAiBA,EAAAY,EAAAV,OAA4BF,IAAA,CAG7C,IAFA,IAAAgB,EAAAJ,EAAAZ,GACAiB,KACAC,EAAA,EAAkBA,EAAAF,EAAAd,OAA2BgB,IAAA,CAC7C,IAAAC,EAAAH,EAAAE,GACA,IAAAf,EAAAgB,KAAAF,MAEAA,IACAL,EAAAQ,OAAApB,IAAA,GACAe,EAAAM,IAAAC,EAAAN,EAAA,KAGA,OAAAD,EAIA,IAAAQ,KAKApB,GACAqB,EAAA,GAGAZ,KAGA,SAAAS,EAAA1B,GAGA,GAAA4B,EAAA5B,GACA,OAAA4B,EAAA5B,GAAA8B,QAGA,IAAAC,EAAAH,EAAA5B,IACAK,EAAAL,EACAgC,KACAF,YAUA,OANAhB,EAAAd,GAAAa,KAAAkB,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,KAGAD,EAAAD,QAKAJ,EAAAO,EAAAnB,EAGAY,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACA1B,OAAA6B,eAAAT,EAAAM,GAA0CI,cAAAC,IAAAJ,KAK1CX,EAAAgB,EAAA,SAAAZ,GACA,oBAAAa,eAAAC,aACAlC,OAAA6B,eAAAT,EAAAa,OAAAC,aAAwDC,MAAA,WAExDnC,OAAA6B,eAAAT,EAAA,cAAiDe,YAQjDnB,EAAAoB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAAnB,EAAAmB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAvC,OAAAwC,OAAA,MAGA,GAFAxB,EAAAgB,EAAAO,GACAvC,OAAA6B,eAAAU,EAAA,WAAyCT,cAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAAnB,EAAAS,EAAAc,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAvB,EAAA2B,EAAA,SAAAtB,GACA,IAAAM,EAAAN,KAAAiB,WACA,WAA2B,OAAAjB,EAAAuB,SAC3B,WAAiC,OAAAvB,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAiB,EAAAC,GAAsD,OAAA9C,OAAAC,UAAAC,eAAAC,KAAA0C,EAAAC,IAGtD9B,EAAA+B,EAAA,GAEA,IAAAC,EAAAC,OAAAC,gBAAAD,OAAAC,iBAAA,GACAC,EAAAH,EAAAjD,KAAA2C,KAAAM,GACAA,EAAAjD,KAAAX,EACA4D,IAAAI,QACA,QAAAzD,EAAA,EAAgBA,EAAAqD,EAAAnD,OAAuBF,IAAAP,EAAA4D,EAAArD,IACvC,IAAAU,EAAA8C,EAIA5C,EAAAR,MAAA,OAEAU,mCChIA4C,GAAA,IAAUC,GAAV,SAAUA,IAAI,SAAAC,IAAY,SAAAC,GAEtB,IAAMC,EAAiB,kBAEjBC,GACFC,KAAM,gBACNC,QAAS,mBACTC,SAAU,oBACVC,MAAO,iBACPC,MAAO,iBACPC,SAAU,qBAGd,SAAAC,EAA0BC,GAClBA,EAAQb,EAAEc,UAAUC,GAAG,QAASX,EAAgBY,GAC/ChB,EAAEc,UAAUG,IAAI,QAASb,EAAgBY,GAGlD,SAAAA,EAA0BE,GAEtBA,EAAEC,iBACFD,EAAEE,kBAGF,IAAIC,EAAWrB,EAAEkB,EAAEI,QAGfC,EAkBR,SAAsBF,GAClB,OACIf,KAAMe,EAASrF,KAAKqE,EAAeC,MACnCC,QAASc,EAASrF,KAAKqE,EAAeE,SACtCC,SAAUa,EAASrF,KAAKqE,EAAeG,UACvCC,MAAOY,EAASrF,KAAKqE,EAAeI,OACpCC,MAAOW,EAASrF,KAAKqE,EAAeK,OACpCC,SAAUU,EAASrF,KAAKqE,EAAeM,WAP/C,CAlB+BU,aA2CTE,GAClB,IAAMC,EAAWxB,EAAEyB,WACbC,GACFC,SACAC,IAAK,oBAAoBL,EAAQhB,QAAO,IAAIgB,EAAQf,SAAQ,IAAIe,EAAQjB,KAAI,SAASiB,EAAQb,MAAK,SAASa,EAAQZ,SACnHkB,OAAQ,MACRC,SACIC,OAAQ,qBAMhB,OAHA/B,EAAEgC,KAAKN,GACFO,KAAKT,EAASU,SACdC,KAAKX,EAASY,QACZZ,EAASa,WAxDWhB,CAGdE,GAASU,KAAK,SAAAK,IAwD/B,SAAuBf,EAA0Be,GAC7C,IAAMC,EAAWzB,SAAS0B,eAAkBjB,EAAQjB,KAAI,aAAamC,UAE/DC,EADUC,WAAWC,QAAQL,EAAnBI,CACOL,GACvBtC,EAAE,aAAauB,EAAQjB,MAAQuC,OAAOH,GAJ1C,CAtDsBnB,EAASe,GAwB/B,SAAuBf,EAA0Be,GAC7Cf,EAAQb,OAAS4B,EAAQQ,QAAQtG,OACjC+E,EAAQd,MAAQ6B,EAAQS,WAF5B,CArBsBxB,EAASe,GA0B/B,SAAwBf,EAA0BF,GAC9CA,EACKrF,KAAKqE,EAAeI,MAAOc,EAAQd,OACnCuC,KAAK,QAAQ3C,EAAeI,MAASc,EAAQd,OAClDY,EACKrF,KAAKqE,EAAeK,MAAOa,EAAQb,OACnCsC,KAAK,QAAQ3C,EAAeK,MAASa,EAAQb,OANtD,CAvBuBa,EAASF,GAuDhC,SAAsCE,EAA0BF,GACxDE,EAAQb,OAASa,EAAQd,QACzBG,MACAS,EAAS4B,QAHjB,CApDqC1B,EAASF,KA2D9BlB,EAAA+C,KAAhB,WACItC,OArGkB,CAAAV,EAAAC,WAAAD,EAAAC,cAAZ,CAAAF,EAAAC,cAAAD,EAAAC,iBAAd,CAAUD,WAyGVA,EAAIC,YAAYC,SAAS+C","file":"/controllers/loadMore.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t3: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"kwsWebpackJsonp\"] = window[\"kwsWebpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([24,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","declare module Handlebars {\r\n export function compile(markup: any): any;\r\n}\r\n\r\ntype LoadMoreContext = {\r\n Type: string;\r\n ForType: string;\r\n ForValue: string;\r\n Total: number;\r\n Shown: number;\r\n PageSize: number;\r\n}\r\n\r\ntype LoadMoreAttributeNames = {\r\n [K in keyof LoadMoreContext]: string;\r\n}\r\n\r\ninterface ILoadMoreContentResponse {\r\n results: any[];\r\n totalCount: number;\r\n}\r\n\r\nnamespace KWS.controllers.loadMore {\r\n\r\n const EVENT_SELECTOR = \"[data-loadmore]\";\r\n\r\n const DATA_ATTR_NAME: LoadMoreAttributeNames = {\r\n Type: \"loadmore-type\",\r\n ForType: \"loadmore-fortype\",\r\n ForValue: \"loadmore-forvalue\",\r\n Total: \"loadmore-total\",\r\n Shown: \"loadmore-shown\",\r\n PageSize: \"loadmore-pagesize\"\r\n };\r\n\r\n function toggleClickEvent(enable: boolean): void {\r\n if (enable) $(document).on('click', EVENT_SELECTOR, handleClickEvent);\r\n else $(document).off('click', EVENT_SELECTOR, handleClickEvent);\r\n }\r\n\r\n function handleClickEvent(e: JQueryEventObject): void {\r\n // Stop the browser from handling click\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // Clicked element containing context attributes\r\n let $element = $(e.target);\r\n\r\n // Parse context from element attributes\r\n let context = parseContext($element);\r\n\r\n // Fetch more content\r\n fetchContent(context).done(content => {\r\n // Render fetched content\r\n renderContent(context, content);\r\n\r\n // Update context\r\n updateContext(context, content);\r\n\r\n // Write context to element attributes\r\n persistContext(context, $element);\r\n\r\n // Unregister and hide click element if all content has loaded\r\n disableIfAllContentHasLoaded(context, $element);\r\n });\r\n }\r\n\r\n function parseContext($element: JQuery): LoadMoreContext {\r\n return {\r\n Type: $element.data(DATA_ATTR_NAME.Type),\r\n ForType: $element.data(DATA_ATTR_NAME.ForType),\r\n ForValue: $element.data(DATA_ATTR_NAME.ForValue),\r\n Total: $element.data(DATA_ATTR_NAME.Total),\r\n Shown: $element.data(DATA_ATTR_NAME.Shown),\r\n PageSize: $element.data(DATA_ATTR_NAME.PageSize),\r\n };\r\n }\r\n\r\n function updateContext(context: LoadMoreContext, content: ILoadMoreContentResponse): void {\r\n context.Shown += content.results.length;\r\n context.Total = content.totalCount;\r\n }\r\n\r\n function persistContext(context: LoadMoreContext, $element: JQuery): void {\r\n $element\r\n .data(DATA_ATTR_NAME.Total, context.Total)\r\n .attr(`data-${DATA_ATTR_NAME.Total}`, context.Total);\r\n $element\r\n .data(DATA_ATTR_NAME.Shown, context.Shown)\r\n .attr(`data-${DATA_ATTR_NAME.Shown}`, context.Shown);\r\n }\r\n\r\n function fetchContent(context: LoadMoreContext): JQueryPromise {\r\n const deferred = $.Deferred();\r\n const settings: JQueryAjaxSettings = {\r\n async: true,\r\n url: `/api/kws/support/${context.ForType}/${context.ForValue}/${context.Type}?skip=${context.Shown}&take=${context.PageSize}`,\r\n method: \"GET\",\r\n headers: {\r\n accept: \"application/json\"\r\n }\r\n };\r\n $.ajax(settings)\r\n .done(deferred.resolve)\r\n .fail(deferred.reject);\r\n return deferred.promise();\r\n }\r\n\r\n function renderContent(context: LoadMoreContext, content: ILoadMoreContentResponse) {\r\n const template = document.getElementById(`${context.Type}-template`).innerHTML;\r\n const compile = Handlebars.compile(template);\r\n const markup = compile(content);\r\n $(`.loadmore-${context.Type}`).append(markup);\r\n }\r\n\r\n function disableIfAllContentHasLoaded(context: LoadMoreContext, $element: JQuery) {\r\n if (context.Shown >= context.Total) {\r\n toggleClickEvent(false);\r\n $element.hide();\r\n }\r\n }\r\n\r\n export function init() {\r\n toggleClickEvent(true);\r\n }\r\n}\r\n\r\nKWS.controllers.loadMore.init();"],"sourceRoot":""}