{"version":3,"sources":["select2totree.js"],"names":["$","fn","select2ToTree","options","opts","extend","treeData","$el","readPath","object","path","currentPosition","s2inst","j","length","currentPath","buildOptions","dataArr","curLevel","pup","labelPath","idPath","split","labelFld","valFld","i","data","$opt","val","String","selFld","prop","getUniqueValue","text","attr","inc","incFld","addClass","buildSelect","this","_templateResult","templateResult","container","$iteme","append","label","element","setAttribute","ele","value","className","getAttribute","window","expColMouseupHandler","evt","target","srcElement","parentNode","showHideSub","shouldShow","curEle","replace","pupEle","$options","find","dftVal","hasClass","removeClass","uniqueIdx","toggleSubOptions","each","stopPropagation","cancelBubble","preventDefault","returnValue","select2","s2data","$dropdown","$allsch","$container","inputHandler","on","jQuery"],"mappings":"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","file":"select2totree.js","sourcesContent":["/*!\n * Select2-to-Tree 1.1.1\n * https://github.com/clivezhg/select2-to-tree\n */\n(function ($) {\n\t$.fn.select2ToTree = function (options) {\n\t\tvar opts = $.extend({}, options);\n\n\t\tif (opts.treeData) {\n\t\t\tbuildSelect(opts.treeData, this);\n\t\t}\n\n\t\topts._templateResult = opts.templateResult;\n\t\topts.templateResult = function (data, container) {\n\t\t\tvar label = data.text;\n\t\t\tif (typeof opts._templateResult === \"function\") {\n\t\t\t\tlabel = opts._templateResult(data, container);\n\t\t\t}\n\t\t\tvar $iteme = $(\"\").append(label);\n\t\t\tif (data.element) {\n\t\t\t\tvar ele = data.element;\n\t\t\t\tcontainer.setAttribute(\"data-val\", ele.value);\n\t\t\t\tif (ele.className) container.className += \" \" + ele.className;\n\t\t\t\tif (ele.getAttribute(\"data-pup\")) {\n\t\t\t\t\tcontainer.setAttribute(\"data-pup\", ele.getAttribute(\"data-pup\"));\n\t\t\t\t}\n\t\t\t\tif ($(container).hasClass(\"non-leaf\")) {\n\t\t\t\t\treturn $.merge($(''), $iteme);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $iteme;\n\t\t};\n\n\t\twindow.expColMouseupHandler = function (evt) {\n\t\t\ttoggleSubOptions(evt.target || evt.srcElement);\n\t\t\t/* prevent Select2 from doing \"select2:selecting\",\"select2:unselecting\",\"select2:closing\" */\n\t\t\tevt.stopPropagation ? evt.stopPropagation() : evt.cancelBubble = true;\n\t\t\tevt.preventDefault ? evt.preventDefault() : evt.returnValue = false;\n\t\t}\n\n\t\tvar s2inst = this.select2(opts);\n\n\t\ts2inst.on(\"select2:open\", function (evt) {\n\t\t\tvar s2data = s2inst.data(\"select2\");\n\t\t\ts2data.$dropdown.addClass(\"s2-to-tree\");\n\t\t\ts2data.$dropdown.removeClass(\"searching-result\");\n\t\t\tvar $allsch = s2data.$dropdown.find(\".select2-search__field\").add( s2data.$container.find(\".select2-search__field\") );\n\t\t\t$allsch.off(\"input\", inputHandler);\n\t\t\t$allsch.on(\"input\", inputHandler);\n\t\t});\n\n\t\t/* Show search result options even if they are collapsed */\n\t\tfunction inputHandler(evt) {\n\t\t\tvar s2data = s2inst.data(\"select2\");\n\t\t\tif ($(this).val().trim().length > 0) {\n\t\t\t\ts2data.$dropdown.addClass(\"searching-result\");\n\t\t\t}\n\t\t\telse {\n\t\t\t\ts2data.$dropdown.removeClass(\"searching-result\");\n\t\t\t}\n\t\t}\n\n\t\treturn s2inst;\n\t};\n\n \t/* Build the Select Option elements */\n\tfunction buildSelect(treeData, $el) {\n\n\t\t/* Support the object path (eg: `item.label`) for 'valFld' & 'labelFld' */\n\t\tfunction readPath(object, path) {\n\t\t\tvar currentPosition = object;\n\t\t\tfor (var j = 0; j < path.length; j++) {\n\t\t\t\tvar currentPath = path[j];\n\t\t\t\tif (currentPosition[currentPath]) {\n\t\t\t\t\tcurrentPosition = currentPosition[currentPath];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\treturn 'MISSING';\n\t\t\t}\n\t\t\treturn currentPosition;\n\t\t}\n\n\t\tfunction buildOptions(dataArr, curLevel, pup) {\n\t\t\tvar labelPath;\n\t\t\tif (treeData.labelFld && treeData.labelFld.split('.').length> 1){\n\t\t\t\tlabelPath = treeData.labelFld.split('.');\n\t\t\t}\n\t\t\tvar idPath;\n\t\t\tif (treeData.valFld && treeData.valFld.split('.').length > 1) {\n\t\t\t\tidPath = treeData.valFld.split('.');\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < dataArr.length; i++) {\n\t\t\t\tvar data = dataArr[i] || {};\n\t\t\t\tvar $opt = $(\"\");\n\t\t\t\tif (labelPath) {\n\t\t\t\t\t$opt.text(readPath(data, labelPath));\n\t\t\t\t} else {\n\t\t\t\t\t$opt.text(data[treeData.labelFld || \"text\"]);\n\t\t\t\t}\n\t\t\t\tif (idPath) {\n\t\t\t\t\t$opt.val(readPath(data, idPath));\n\t\t\t\t} else {\n\t\t\t\t\t$opt.val(data[treeData.valFld || \"id\"]);\n\t\t\t\t}\n\t\t\t\tif (data[treeData.selFld || \"selected\"] && String(data[treeData.selFld || \"selected\"]) === \"true\") {\n\t\t\t\t\t$opt.prop(\"selected\", data[treeData.selFld || \"selected\"]);\n\t\t\t\t}\n\t\t\t\tif($opt.val() === \"\") {\n\t\t\t\t\t$opt.prop(\"disabled\", true);\n\t\t\t\t\t$opt.val(getUniqueValue());\n\t\t\t\t}\n\n\t\t\t\t$opt.addClass(\"l\" + curLevel);\n\t\t\t\tif (pup) $opt.attr(\"data-pup\", pup);\n\t\t\t\t$el.append($opt);\n\t\t\t\tvar inc = data[treeData.incFld || \"inc\"];\n\t\t\t\tif (inc && inc.length > 0) {\n\t\t\t\t\t$opt.addClass(\"non-leaf\");\n\t\t\t\t\tbuildOptions(inc, curLevel+1, $opt.val());\n\t\t\t\t}\n\t\t\t} // end 'for'\n\t\t} // end 'buildOptions'\n\n\t\tbuildOptions(treeData.dataArr, 1, \"\");\n\t\tif (treeData.dftVal) $el.val(treeData.dftVal);\n\t}\n\n\tvar uniqueIdx = 1;\n\tfunction getUniqueValue() {\n\t\treturn \"autoUniqueVal_\" + uniqueIdx++;\n\t}\n\n\tfunction toggleSubOptions(target) {\n\t\t$(target.parentNode).toggleClass(\"opened\");\n\t\tshowHideSub(target.parentNode);\n\t}\n\n\tfunction showHideSub(ele) {\n\t\tvar curEle = ele;\n\t\tvar $options = $(ele).parent(\".select2-results__options\");\n\t\tvar shouldShow = true;\n\t\tdo {\n\t\t\tvar pup = ($(curEle).attr(\"data-pup\") || \"\").replace(/'/g, \"\\\\'\");\n\t\t\tcurEle = null;\n\t\t\tif (pup) {\n\t\t\t\tvar pupEle = $options.find(\".select2-results__option[data-val='\" + pup + \"']\");\n\t\t\t\tif (pupEle.length > 0) {\n\t\t\t\t\tif (!pupEle.eq(0).hasClass(\"opened\")) { // hide current node if any parent node is collapsed\n\t\t\t\t\t\t$(ele).removeClass(\"showme\");\n\t\t\t\t\t\tshouldShow = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcurEle = pupEle[0];\n\t\t\t\t}\n\t\t\t}\n\t\t} while (curEle);\n\t\tif (shouldShow) $(ele).addClass(\"showme\");\n\n\t\tvar val = ($(ele).attr(\"data-val\") || \"\").replace(/'/g, \"\\\\'\");\n\t\t$options.find(\".select2-results__option[data-pup='\" + val + \"']\").each(function () {\n\t\t\tshowHideSub(this);\n\t\t});\n\t}\n})(jQuery);\n"]}