{"version":3,"file":"./modules/RangeBasic.xxxxxxxx.js","mappings":"wJAee,MAAMA,EAOjB,YAAOC,CAAMC,EAhBM,8BAiBfC,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,OAAQC,IAAuBA,EAAKC,QAAQC,mBAAmBC,QAASC,IACpH,IAAIZ,EAAWY,GACfA,EAAQH,QAAQC,kBAAoB,QAE5C,CAEA,WAAAG,CAAYD,EAAsBE,EAAuC,CAAC,GACtEC,KAAKH,QAAUA,EACfG,KAAKD,SAAU,QAAWC,KAAKH,QAASI,OAAOC,OAAOF,KAAKG,oBAAqBJ,IAChFC,KAAKI,MAAQJ,KAAKH,QAAQQ,cAAc,IAAIL,KAAKD,QAAQO,oBAEzDN,KAAKO,gBAAgBP,KAAKD,QAAQS,cAAgBR,KAAKD,QAAQU,KAC/DT,KAAKU,MACT,CAEU,IAAAA,GACNV,KAAKW,YACT,CAEU,QAAAC,CAASC,GAMf,OALAb,KAAKO,gBAAgBM,GAErBb,KAAKI,MAAMU,kBAAkBC,UAAYf,KAAKa,MAAMG,WACpDhB,KAAKH,QAAQoB,cAAc,IAAIC,YAAY,SAAU,CAAEC,SAAS,KAEzDnB,IACX,CAEU,eAAAO,CAAgBM,GACtBb,KAAKa,MAAQb,KAAKH,QAAQgB,MAAQA,CACtC,CAEU,UAAAF,GACN,MAAM,IAAEF,EAAG,IAAEW,GAAQpB,KAAKD,QAGpBsB,EAFQ,IAAIjC,MAAMgC,EAAMX,EAAM,GAAGa,KAAKb,EAAIO,YAAYO,MAAM,IAAIC,OAAO,CAACC,EAAKC,EAAGC,IAAQF,EAAIG,OAAOnB,EAAMkB,GAAM,IAEjGE,IAAIC,IACpB,MAAMrC,GAAO,QAAe,GAAGO,KAAKD,QAAQO,mBAE5C,OADAb,EAAKsB,UAAYtB,EAAKoB,MAAQiB,EACvBrC,IAOX,OAJAO,KAAK+B,MAAO,QAAY,GAAG/B,KAAKD,QAAQO,oBACxC,QAAqBN,KAAK+B,KAAMV,IAChC,QAAarB,KAAKH,QAASG,KAAK+B,MAEzB/B,IACX,CAEU,iBAAAG,GACN,MAAO,CACHM,IAAK,EACLW,IAAK,GACLd,UAAW,WAEnB,E","sources":["webpack:///./modules/RangeBasic.ts"],"sourcesContent":["/// \r\n\r\nimport { createListItem, createUList, addElementsFromArray, addToElement } from '../helpers/DOMHelpers';\r\nimport { getOptions } from '../helpers/helperFunctions';\r\nimport { Optional } from '../typings/mapped-types';\r\n\r\nconst moduleSelector = '[data-module=\"RangeBasic\"]';\r\n\r\nexport interface RangeBasicOptions {\r\n min: number;\r\n max: number;\r\n initialValue?: number;\r\n mainClass?: string;\r\n}\r\n\r\nexport default class RangeBasic {\r\n protected element: HTMLElementWithNumberValue;\r\n protected options: RangeBasicOptions;\r\n protected list: HTMLElement;\r\n protected label: HTMLElement;\r\n protected value: number;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new RangeBasic(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(element: HTMLElement, options: Optional = {}) {\r\n this.element = element as HTMLElementWithNumberValue;\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), options));\r\n this.label = this.element.querySelector(`.${this.options.mainClass}__label`);\r\n\r\n this.setInitialValue(this.options.initialValue || this.options.min);\r\n this.init();\r\n }\r\n\r\n protected init(): void {\r\n this.insertList();\r\n }\r\n\r\n protected setValue(value: number): RangeBasic {\r\n this.setInitialValue(value);\r\n\r\n this.label.firstElementChild.innerHTML = this.value.toString();\r\n this.element.dispatchEvent(new CustomEvent('change', { bubbles: true }));\r\n\r\n return this;\r\n }\r\n\r\n protected setInitialValue(value: number): void {\r\n this.value = this.element.value = value;\r\n }\r\n\r\n protected insertList(): RangeBasic {\r\n const { min, max } = this.options;\r\n const range = new Array(max - min + 2).join(min.toString()).split('').reduce((acc, _, idx) => acc.concat(min + idx), []);\r\n \r\n const items = range.map(v => {\r\n const node = createListItem(`${this.options.mainClass}__item`) as HTMLElementWithNumberValue;\r\n node.innerHTML = node.value = v;\r\n return node;\r\n });\r\n\r\n this.list = createUList(`${this.options.mainClass}__list`);\r\n addElementsFromArray(this.list, items);\r\n addToElement(this.element, this.list);\r\n\r\n return this;\r\n }\r\n\r\n protected getDefaultOptions(): RangeBasicOptions {\r\n return {\r\n min: 0,\r\n max: 10,\r\n mainClass: 'nx-range',\r\n };\r\n }\r\n};\r\n"],"names":["RangeBasic","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","options","this","Object","assign","getDefaultOptions","label","querySelector","mainClass","setInitialValue","initialValue","min","init","insertList","setValue","value","firstElementChild","innerHTML","toString","dispatchEvent","CustomEvent","bubbles","max","items","join","split","reduce","acc","_","idx","concat","map","v","list"],"sourceRoot":""}