{"version":3,"sources":["inif.ts","inif.js"],"names":["InifContext","constructor","target","condition","this","resolve","indexOf","resolveColonCondition","error","console","log","bindClassToTarget","klass","updateTargetClass","master","data","on","$","currentValue","toggleClass","parts","split","container","findContainer","findMaster","checkCondition","closest","length","masterPart","masterSelector","find","conditionPart","is","selectorCondition","masterValue","val","isNegetive","substr","toString"],"mappings":"AAcA,MAAMA,YAMF,WAAAC,CAAmBC,EAA6BC,GAC5CC,KAAKF,OAASA,EACdE,KAAKD,UAAYA,CACrB,CAEO,OAAAE,GAGH,IAGI,IAAqC,IAAjCD,KAAKD,UAAUG,QAAQ,KAGvB,KAAM,yBAA2BF,KAAKD,UAG1C,OALaC,KAAKG,uBCFtB,CDQE,MAAOC,GAGL,OAFAC,QAAQC,IAAIF,IAEL,CCPX,CDSJ,CAEO,iBAAAG,CAAkBC,GACrBR,KAAKS,kBAAkBD,GAEvBR,KAAKU,OAAOC,KAAK,sBAAuBX,MACxCA,KAAKU,OAAOE,GAAG,UAAU,WACVC,EAAEb,MAAMW,KAAK,uBACnBF,kBAAkBD,EAC3B,GACJ,CAEQ,iBAAAC,CAAkBD,GACtB,IAAIM,EAAed,KAAKC,UAExBD,KAAKF,OAAOiB,YAAYP,EAAOM,EACnC,CAEQ,qBAAAX,GACJ,IACIa,EAAQhB,KAAKD,UAAUkB,MAAM,KAOjC,OALAjB,KAAKkB,UAAYlB,KAAKmB,gBACtBnB,KAAKU,OAASV,KAAKoB,WAAWJ,EAAM,IAE3BhB,KAAKqB,eAAeL,EAAM,GAGvC,CAEQ,aAAAG,GACJ,IAAID,EAAYlB,KAAKF,OAAOwB,QAAQ,QACpC,GAAyB,IAArBJ,EAAUK,OACV,KAAM,oCAAsCvB,KAAKF,OAGrD,OAAOoB,CACX,CAEQ,UAAAE,CAAWI,GACf,IAAIC,EAAiB,SAAWD,EAAa,IACzCd,EAASV,KAAKkB,UAAUQ,KAAKD,GACjC,GAAsB,IAAlBf,EAAOa,OACP,KAAM,iCAAmCvB,KAAKkB,UAAY,kBAAoBO,EAGlF,OAAOf,CACX,CAEQ,cAAAW,CAAeM,GACnB,GAAI3B,KAAKU,OAAOkB,GAAG,mBAAoB,CACnC,IAAIC,EAAoB,IAAMF,EAC9B,OAAO3B,KAAKU,OAAOkB,GAAGC,ECpB1B,CDsBO,GAAI7B,KAAKU,OAAOkB,GAAG,UAAW,CACjC,IAAIE,EAAc9B,KAAKU,OAAOqB,MAC1BC,EAAkC,MAArBL,EAAc,GAO/B,OALIK,IACAL,EAAgBA,EAAcM,OAAO,IAG7BH,EAAYI,aAAeP,GACvBK,CCtBpB,CDyBI,KAAM,2BAA6BhC,KAAKU,MAEhD","file":"inif.min.js","sourcesContent":["// inif: Inline If\r\n// a library for writing simple inline conditions targeting html elements\r\n//\r\n//\r\n// supported scenarios:\r\n//\r\n// checkbox: \r\n// X:checked\r\n// X:unchecked\r\n//\r\n// select:\r\n// X:somevalue\r\n// X:!somevalue\r\n\r\nclass InifContext {\r\n private target: JQuery;\r\n private condition: string;\r\n private container: JQuery;\r\n private master: JQuery;\r\n\r\n public constructor(target: JQuery, condition: string) {\r\n this.target = target;\r\n this.condition = condition;\r\n }\r\n\r\n public resolve(): boolean {\r\n var result: boolean;\r\n\r\n try {\r\n // Colon conditions\r\n // X:Y\r\n if (this.condition.indexOf(':') !== -1) {\r\n result = this.resolveColonCondition();\r\n } else {\r\n throw \"unsopprted condition: \" + this.condition;\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n console.log(error);\r\n\r\n return false;\r\n }\r\n }\r\n\r\n public bindClassToTarget(klass: string): void {\r\n this.updateTargetClass(klass);\r\n\r\n this.master.data('inif-master-context', this);\r\n this.master.on('change', function () {\r\n var inif = $(this).data('inif-master-context');\r\n inif.updateTargetClass(klass);\r\n });\r\n }\r\n\r\n private updateTargetClass(klass: string): void {\r\n var currentValue = this.resolve();\r\n\r\n this.target.toggleClass(klass, currentValue);\r\n }\r\n\r\n private resolveColonCondition(): boolean {\r\n var result: boolean;\r\n var parts = this.condition.split(':');\r\n\r\n this.container = this.findContainer();\r\n this.master = this.findMaster(parts[0]);\r\n\r\n result = this.checkCondition(parts[1]);\r\n\r\n return result;\r\n }\r\n\r\n private findContainer(): JQuery {\r\n var container = this.target.closest('form');\r\n if (container.length === 0) {\r\n throw \"can not found inif container for \" + this.target;\r\n }\r\n\r\n return container;\r\n }\r\n\r\n private findMaster(masterPart: string): JQuery {\r\n var masterSelector = '[name=' + masterPart + ']';\r\n var master = this.container.find(masterSelector);\r\n if (master.length === 0) {\r\n throw \"can not found inif master for \" + this.container + \" with selector \" + masterSelector;\r\n }\r\n\r\n return master;\r\n }\r\n\r\n private checkCondition(conditionPart: string): boolean {\r\n if (this.master.is('[type=checkbox]')) {\r\n var selectorCondition = ':' + conditionPart;\r\n return this.master.is(selectorCondition);\r\n\r\n } else if (this.master.is('select')) {\r\n var masterValue = this.master.val();\r\n var isNegetive = conditionPart[0] === '!';\r\n\r\n if (isNegetive) {\r\n conditionPart = conditionPart.substr(1);\r\n }\r\n\r\n var match = masterValue.toString() === conditionPart;\r\n return match != isNegetive;\r\n\r\n } else {\r\n throw \"unsupported master type \" + this.master;\r\n }\r\n }\r\n};\r\n","// inif: Inline If\n// a library for writing simple inline conditions targeting html elements\n//\n//\n// supported scenarios:\n//\n// checkbox: \n// X:checked\n// X:unchecked\n//\n// select:\n// X:somevalue\n// X:!somevalue\nclass InifContext {\n constructor(target, condition) {\n this.target = target;\n this.condition = condition;\n }\n resolve() {\n var result;\n try {\n // Colon conditions\n // X:Y\n if (this.condition.indexOf(':') !== -1) {\n result = this.resolveColonCondition();\n }\n else {\n throw \"unsopprted condition: \" + this.condition;\n }\n return result;\n }\n catch (error) {\n console.log(error);\n return false;\n }\n }\n bindClassToTarget(klass) {\n this.updateTargetClass(klass);\n this.master.data('inif-master-context', this);\n this.master.on('change', function () {\n var inif = $(this).data('inif-master-context');\n inif.updateTargetClass(klass);\n });\n }\n updateTargetClass(klass) {\n var currentValue = this.resolve();\n this.target.toggleClass(klass, currentValue);\n }\n resolveColonCondition() {\n var result;\n var parts = this.condition.split(':');\n this.container = this.findContainer();\n this.master = this.findMaster(parts[0]);\n result = this.checkCondition(parts[1]);\n return result;\n }\n findContainer() {\n var container = this.target.closest('form');\n if (container.length === 0) {\n throw \"can not found inif container for \" + this.target;\n }\n return container;\n }\n findMaster(masterPart) {\n var masterSelector = '[name=' + masterPart + ']';\n var master = this.container.find(masterSelector);\n if (master.length === 0) {\n throw \"can not found inif master for \" + this.container + \" with selector \" + masterSelector;\n }\n return master;\n }\n checkCondition(conditionPart) {\n if (this.master.is('[type=checkbox]')) {\n var selectorCondition = ':' + conditionPart;\n return this.master.is(selectorCondition);\n }\n else if (this.master.is('select')) {\n var masterValue = this.master.val();\n var isNegetive = conditionPart[0] === '!';\n if (isNegetive) {\n conditionPart = conditionPart.substr(1);\n }\n var match = masterValue.toString() === conditionPart;\n return match != isNegetive;\n }\n else {\n throw \"unsupported master type \" + this.master;\n }\n }\n}\n;\n"]}