{"version":3,"sources":["webpack:///../WCC.UI/App/components/select2/select2.html?0965","webpack:///../WCC.UI/App/components/select2/select2.scss?1bb2","webpack:///../WCC.UI/App/components/select2/select2.ts","webpack:///../WCC.UI/App/libraries/select2.js","webpack:///../WCC.UI/App/webpack/runtime/htmlExposer.js","webpack:///../WCC.UI/App/components/select2/select2.scss","webpack:///../WCC.UI/App/components/select2/select2.html"],"names":["content","expose","__esModule","default","api","module","i","options","exports","locals","Select2VM","constructor","config","info","effects","selectNode","ko","observable","selection","observableArray","data","flattenComputed","isMultiSelect","multiple","register","node","undefined","this","initSelect2","applyBindingsToNode","element","select","items","$select","$","select2","withEffect","updateItems","updateSelectionFromSource","DOMHelpers","onNodeEvent","updateSelectionFromSelect","empty","forEach","itemOrGroupData","_groupData$children","groupData","group","document","createElement","label","text","children","itemData","appendChild","Option","id","toString","append","trigger","currentSelection","map","item","system","isTheSameList","val","__decorate","injectable","__param","inject","wccModules","componentConfig","componentInfo","SystemHelpers","html","getTemplatesAndResources","head","___CSS_LOADER_API_IMPORT___","push"],"mappings":"mIAAA,UAAO,CACC,mGACA,wDAIC,KAJyC,EAAF,SAAYA,EAASC,GAGzD,OADAA,EADAD,EAAUA,EAAQE,WAAaF,EAAQG,QAAUH,GAE1CA,GACV,4B,gECNT,IAAII,EAAM,EAAQ,gFACFJ,EAAU,EAAQ,8IAIC,iBAFvBA,EAAUA,EAAQE,WAAaF,EAAQG,QAAUH,KAG/CA,EAAU,CAAC,CAACK,EAAOC,EAAIN,EAAS,MAG9C,IAAIO,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEPH,EAAIJ,EAASO,GAI1BF,EAAOG,QAAUR,EAAQS,QAAU,I,y2BCDnC,IAAqBC,EAArB,MAIIC,YACwCC,EACFC,EACNC,GANhC,KAAAC,WAAwDC,EAAGC,aAC3D,KAAAC,UAAqCF,EAAGG,kBAOpC,MAAMC,EAAOJ,EAAGK,gBAAgBT,EAAOQ,KAAyE,IAC1GE,EAAgBN,EAAGK,gBAAgBT,EAAOW,UAAU,GAE1DT,EAAQU,SAAS,CAACC,EAAMH,KACpB,GAAYI,MAARD,EACA,OAAOE,KAAKC,YAAYH,EAAML,EAAME,IACzC,CAACK,KAAKZ,WAAYO,IAErBN,EAAGa,oBAAoBhB,EAAKiB,QAAS,CACjC,IAAO,CACH,gBAAgB,IAErBH,MAGCC,YAAYG,EAA2BC,EAAyDV,GACpG,MAAMW,EAAUC,EAAEH,GAOlB,OALAE,EAAQE,QAAQ,CACZZ,SAAUD,EACVF,KAAMY,MAGH,CACHI,qBAAWJ,GAASL,KAAKU,YAAYJ,EAASD,GAAQ,CAACA,IAEvDI,qBAAWlB,GAAaS,KAAKW,0BAA0BL,EAASf,GAAY,CAACS,KAAKT,YAClFqB,aAAWC,YAAYP,EAAS,SAAU,IAAMN,KAAKc,0BAA0BR,IAE/E,IAAMA,EAAQE,QAAQ,YAItBE,YAAYJ,EAAoCD,GACpDC,EAAQS,QAERV,EAAMW,QAASC,IACX,GAAI,aAAcA,EAAiB,KAAAC,EAC/B,MAAMC,EAAYF,EACZG,EAAQC,SAASC,cAAc,YACrCF,EAAMG,MAAQJ,EAAUK,KAEN,OAAlBN,EAAAC,EAAUM,WAAVP,EAAoBF,QAAQU,IACxBN,EAAMO,YAAY,IAAIC,OAAOF,EAASF,KAAME,EAASG,GAAGC,YAAY,GAAO,MAG/ExB,EAAQyB,OAAOX,OACZ,CACH,MAAMM,EAAWT,EACjBX,EAAQyB,OAAO,IAAIH,OAAOF,EAASF,KAAME,EAASG,GAAGC,YAAY,GAAO,OAIhFxB,EAAQ0B,QAAQ,UAGZrB,0BAA0BL,EAAoCf,GAClE,MAAM0C,EAAmB3B,EAAQE,QAAQ,QAAQ0B,IAAIC,GAAQA,EAAKN,IAE7DO,EAAOC,cAAcJ,EAAkB1C,IACxCe,EAAQgC,IAAI/C,GAAWyC,QAAQ,UAI/BlB,0BAA0BR,GAC9BN,KAAKT,UAAUe,EAAQE,QAAQ,QAAQ0B,IAAIC,GAAQA,EAAKN,OA1E3C9C,EAASwD,EAAA,CAD7BC,cAMQC,EAAA,EAAAC,YAAOC,IAAWC,kBAClBH,EAAA,EAAAC,YAAOC,IAAWE,gBAClBJ,EAAA,EAAAC,YAAOC,IAAWxD,WAPNJ,gB,8OCjBrB,yH,+DCAA,WAOC,KAPD,aACI,MAAMqD,EAAS,EAAQ,mCAAkBU,cAEzC,OAAO,SAAUC,GACbX,EAAOY,yBAAyBD,GAC3B/B,SAAQ,SAAUlB,GAAQuB,SAAS4B,KAAKtB,YAAY7B,QAEhE,+B,8JCLDjB,EADkC,EAAQ,wDAChCqE,EAA4B,IAE9BC,KAAK,CAACzE,EAAOC,EAAI,qHAAsH,KAE/ID,EAAOG,QAAUA,G,8GCHjBH,EAAOG,QAFI","file":"251.c5c6e14f3cce565d8a5e.js","sourcesContent":["define([\n \"!!../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./select2.html\", \n \"!../../webpack/runtime/htmlExposer.js\"], function (content, expose) {\n content = content.__esModule ? content.default : content;\n expose(content);\n return content;\n });","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./select2.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","import { wccModules } from 'enums/wccModules';\r\nimport { DOMHelpers } from 'helpers/dom';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Observable, ObservableArray, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport 'libraries/select2';\r\nimport { withEffect } from 'mixins/withEffect';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport { DataFormat, GroupedDataFormat } from 'select2';\r\nimport './select2.html';\r\nimport './select2.scss';\r\n\r\nexport interface Select2VMConfig {\r\n multiple?: SubscribableOrNullableValue,\r\n data: SubscribableOrNullableValue | SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class Select2VM {\r\n selectNode: Observable = ko.observable()\r\n selection: ObservableArray = ko.observableArray()\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: Select2VMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.effects) effects: EffectsContainer\r\n ) {\r\n const data = ko.flattenComputed(config.data as SubscribableOrNullableValue, []);\r\n const isMultiSelect = ko.flattenComputed(config.multiple, false);\r\n\r\n effects.register((node, isMultiSelect) => {\r\n if (node != undefined)\r\n return this.initSelect2(node, data, isMultiSelect);\r\n }, [this.selectNode, isMultiSelect]);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'wcc-select-2': true\r\n }\r\n }, this);\r\n }\r\n\r\n private initSelect2(select: HTMLSelectElement, items: Subscribable, isMultiSelect: boolean) {\r\n const $select = $(select);\r\n\r\n $select.select2({\r\n multiple: isMultiSelect,\r\n data: items()\r\n });\r\n\r\n return [\r\n withEffect(items => this.updateItems($select, items), [items]),\r\n\r\n withEffect(selection => this.updateSelectionFromSource($select, selection), [this.selection]),\r\n DOMHelpers.onNodeEvent($select, 'change', () => this.updateSelectionFromSelect($select)),\r\n\r\n () => $select.select2('destroy')\r\n ]\r\n }\r\n\r\n private updateItems($select: JQuery, items: DataFormat[] | GroupedDataFormat[]) {\r\n $select.empty();\r\n\r\n items.forEach((itemOrGroupData: DataFormat | GroupedDataFormat) => {\r\n if ('children' in itemOrGroupData) {\r\n const groupData = itemOrGroupData as GroupedDataFormat;\r\n const group = document.createElement('optgroup');\r\n group.label = groupData.text;\r\n\r\n groupData.children?.forEach(itemData => {\r\n group.appendChild(new Option(itemData.text, itemData.id.toString(), false, false));\r\n });\r\n\r\n $select.append(group);\r\n } else {\r\n const itemData = itemOrGroupData as DataFormat;\r\n $select.append(new Option(itemData.text, itemData.id.toString(), false, false))\r\n }\r\n });\r\n\r\n $select.trigger('change');\r\n }\r\n\r\n private updateSelectionFromSource($select: JQuery, selection: Array) {\r\n const currentSelection = $select.select2('data').map(item => item.id);\r\n\r\n if (!system.isTheSameList(currentSelection, selection)) {\r\n $select.val(selection).trigger('change');\r\n }\r\n }\r\n\r\n private updateSelectionFromSelect($select: JQuery) {\r\n this.selection($select.select2('data').map(item => item.id));\r\n }\r\n}","import 'select2/dist/js/select2.min.js';\r\nimport 'select2/dist/css/select2.min.css';","define(function () {\r\n const system = require('helpers/system').SystemHelpers;\r\n\r\n return function (html) {\r\n system.getTemplatesAndResources(html)\r\n .forEach(function (node) { document.head.appendChild(node) });\r\n }\r\n});","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".wcc-select-2{display:block}.wcc-select-2 .select2-container{width:100% !important}.wcc-select-2__node{width:100%}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;"],"sourceRoot":""}