{"version":3,"file":"kendo.gantt.editors.min.js","names":["factory","define","amd","$","kendo","ui","browser","Observable","Widget","outerWidth","keys","extend","isPlainObject","NS","CLICK","WIDTH","DOT","DIRECTIONS","TASK_DROPDOWN_TEMPLATE","ganttStyles","TaskDropDown","editors","Editor","PopupEditor","ResourceEditor","window","jQuery","support","_outerWidth","F10","down","origin","position","up","template","buttonDelete","buttonCancel","buttonSave","focused","gridContent","hovered","item","popupWrapper","popupList","popup","form","editForm","formContainer","resourcesFormContainer","message","buttonsContainer","button","buttonDefaults","editField","editLabel","resourcesField","primary","toolbar","appendButton","init","element","options","fn","call","this","_popup","direction","destroy","clearTimeout","_focusTimeout","off","list","unbind","_adjustListWidth","computedStyle","computedWidth","width","style","wrapper","listOuterWidth","data","getComputedStyle","parseFloat","mozilla","msie","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","css","fontFamily","_current","method","current","find","sibling","length","removeClass","removeAttr","addClass","trigger","that","itemSelector","actions","messages","styles","text","addChild","insertBefore","insertAfter","append","Popup","anchor","open","animation","on","e","action","attr","preventDefault","type","hover","end","close","bind","parents","first","keyCode","UP","DOWN","ENTER","click","ESC","desktop","dateRange","container","name","field","title","validationRules","model","fields","validation","appendTo","hide","resources","assignButton","readonly","value","get","createButton","plannedEditors","editor","editable","map","key","start","percentComplete","format","splice","apply","concat","plannedStart","plannedEnd","push","label","_buildEditTemplate","settings","Template","templateSettings","html","unescape","renderForm","is","editTask","task","_createPopupEditor","showDialog","buttons","popupStyles","i","eq","buttonIndex","currentTarget","index","kendoWindow","modal","autoFocus","resizable","draggable","visible","deactivate","getKendoWindow","center","editableWidget","uid","save","className","cancel","editorTitle","userTriggered","kendoForm","items","formData","buttonsTemplate","validatable","validateOnBlur","kendoEditable","clearContainer","target","cycleForm","stopPropagation","updateInfo","_initContainer","_attachHandlers","events","_dettachHandlers","grid","closeHandler","_cancelProxy","_cancel","_saveProxy","_save","row","closest","dataSource","getByUid","set","_createButtons","dom","resourcesEditorTitle","resize","_resourceGrid","Grid","columns","resourcesHeader","unitsHeader","dataItem","valueFormat","toString","height","sortable","filterable","schema","id","from","unitsValidation","values","parent","prop","_updateModel","gantt"],"sources":["kendo.gantt.editors.js"],"mappings":"CAAA,SAAWA,GACW,mBAAXC,QAAyBA,OAAOC,IAAMD,OAAO,CAAC,iBAAkB,kBAAmB,mBAAoB,uBAAwB,iBAAkB,2BAA4B,2BAA4B,oBAAqB,kBAAmBD,GACxPA,IAFJ,EAGG,WACC,IASUG,EAEFC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEAC,EAEAC,EACAC,EAEAC,EAEAC,EACAC,EAEAC,EAEAC,EAWAC,EAYAC,EAmEAC,EAqLAC,EAQAC,EAoFAC,EA2LAC,EA3jBErB,EAswBPsB,OAAOrB,MAAMsB,OApwBRtB,EAAQqB,OAAOrB,MACfC,EAAKD,EAAMC,GACXC,EAAUF,EAAMuB,QAAQrB,QACxBC,EAAaH,EAAMG,WACnBC,EAASH,EAAGG,OACZC,EAAaL,EAAMwB,YAEnBlB,EAAOP,EAAEQ,OAAO,CAAEkB,IAAK,KAAOzB,EAAMM,MAEpCC,EAASR,EAAEQ,OACXC,EAAgBT,EAAES,cAElBC,EAAK,cAELC,EAAQ,QACRC,EAAQ,QAERC,EAAM,IAENC,EAAa,CACTa,KAAQ,CACJC,OAAQ,cACRC,SAAU,YAEdC,GAAM,CACFF,OAAQ,WACRC,SAAU,gBAIlBd,EAAyBd,EAAM8B,SAAS,4WAYxCf,EAAc,CACdgB,aAAc,iBACdC,aAAc,iBACdC,WAAY,iBACZC,QAAS,UACTC,YAAa,iBACbC,QAAS,UACTC,KAAM,qBACNC,aAAc,uBACdC,UAAW,uCACXC,MAAO,CACHC,KAAM,oBACNC,SAAU,oBACVC,cAAe,wBACfC,uBAAwB,6BACxBC,QAAS,kBACTC,iBAAkB,iBAClBC,OAAQ,WACRC,eAAgB,8DAChBC,UAAW,eACXC,UAAW,eACXC,eAAgB,qBAEpBC,QAAS,yBACTC,QAAS,CACLC,aAAc,mBA0ClBtC,EAAeb,EAAWI,OAAO,CACjCgD,KAAM,SAASC,EAASC,GAEpBtD,EAAWuD,GAAGH,KAAKI,KAAKC,MAExBA,KAAKJ,QAAUA,EACfI,KAAKH,QAAUlD,GAAO,EAAM,GAAIqD,KAAKH,QAASA,GAE9CG,KAAKC,UAGTJ,QAAS,CACLK,UAAW,QAGfC,QAAS,WACLC,aAAaJ,KAAKK,eAClBL,KAAKpB,MAAMuB,UACXH,KAAKJ,QAAQU,IAAIzD,GACjBmD,KAAKO,KAAKD,IAAIzD,GACdmD,KAAKQ,UAGTC,iBAAkB,WACd,IAIIC,EACAC,EALAJ,EAAOP,KAAKO,KACZK,EAAQL,EAAK,GAAGM,MAAMD,MACtBE,EAAUd,KAAKJ,QACfmB,EAAiBtE,EAAW8D,IAI3BA,EAAKS,KAAKjE,IAAU6D,IAKzBD,GADAD,EAAgBjD,OAAOwD,iBAAmBxD,OAAOwD,iBAAiBH,EAAQ,GAAI,MAAQ,GACtDI,WAAWR,EAAcE,OAASnE,EAAWqE,GAEzEJ,IAAkBpE,EAAQ6E,SAAW7E,EAAQ8E,QAC7CT,GAAiBO,WAAWR,EAAcW,aAAeH,WAAWR,EAAcY,cAAgBJ,WAAWR,EAAca,iBAAmBL,WAAWR,EAAcc,mBASvKT,GALAH,EAD2B,eAA3BL,EAAKkB,IAAI,cACDd,GAAiBlE,EAAW8D,GAAQA,EAAKK,SAEzCD,KAIRC,EAAQG,GAGZR,EAAKkB,IAAI,CACLC,WAAYZ,EAAQW,IAAI,eACxBb,MAAOA,IAEVI,KAAKjE,EAAO6D,KAGjBe,SAAU,SAASC,GACf,IAAIC,EAAU7B,KAAKO,KACduB,KAAK9E,EAAMG,EAAYmB,SACxByD,EAAUF,EAAQD,KAElBG,EAAQC,SACRH,EACKI,YAAY9E,EAAYmB,SACxB4D,WAAW,MAChBH,EACKI,SAAShF,EAAYmB,SACrB8D,QAAQ,WAIrBnC,OAAQ,WACJ,IAAIoC,EAAOrC,KACPsC,EAAe,YACfC,EAAUvC,KAAKH,QAAQ2C,SAASD,QAEpCvC,KAAKO,KAAOpE,EAAEe,EAAuB,CACjCuF,OAAQtF,EACRoF,QAAS,CACL,CACIvB,KAAM,MACN0B,KAAMH,EAAQI,UAElB,CACI3B,KAAM,gBACN0B,KAAMH,EAAQK,cAElB,CACI5B,KAAM,eACN0B,KAAMH,EAAQM,iBAK1B7C,KAAKJ,QAAQkD,OAAO9C,KAAKO,MAEzBP,KAAKpB,MAAQ,IAAIxC,EAAMC,GAAG0G,MAAM/C,KAAKO,KACjC5D,EAAO,CACHqG,OAAQhD,KAAKJ,QACbqD,KAAM,WACFZ,EAAK5B,oBAETyC,UAAWlD,KAAKH,QAAQqD,WACzBjG,EAAW+C,KAAKH,QAAQK,aAG/BF,KAAKJ,QACAuD,GAAGrG,EAAQD,GAAI,SAASuG,GACrB,IACIC,EADSlH,EAAE6D,MACKsD,KAAKlH,EAAMkH,KAAK,WAEpCF,EAAEG,iBAEEF,EACAhB,EAAKD,QAAQ,UAAW,CAAEoB,KAAMH,KAEhChB,EAAKzD,MAAMqE,OAEXZ,EAAK9B,KACAuB,KAAK,YACLK,SAAShF,EAAYmB,SACrB8D,QAAQ,aAIzBpC,KAAKO,KACAuB,KAAKQ,GACLmB,OAAM,WACHtH,EAAE6D,MAAMmC,SAAShF,EAAYqB,YAC9B,WACCrC,EAAE6D,MAAMiC,YAAY9E,EAAYqB,YAEnCkF,MACAP,GAAGrG,EAAQD,EAAIyF,GAAc,WAC1BD,EAAKD,QAAQ,UAAW,CAAEoB,KAAMrH,EAAE6D,MAAMsD,KAAKlH,EAAMkH,KAAK,aACxDjB,EAAKzD,MAAM+E,WAGnB3D,KAAKpB,MACAgF,KAAK,SAAS,WACXvB,EAAK9B,KACAuB,KAAKQ,GACLL,YAAY9E,EAAYmB,SAE7B+D,EAAKzC,QACAiE,QAAQ,IAAMzH,EAAMkH,KAAK,QAAU,aACnCxB,KAAK9E,EAAMG,EAAYoB,YAAc,YAAYuF,QACjD1B,QAAQ,YAGrBpC,KAAKO,KACAuB,KAAK,MACLqB,GAAG,UAAYtG,GAAI,SAASuG,GAGzB,OAFUA,EAAEW,SAGR,KAAKrH,EAAKsH,GACNZ,EAAEG,iBACFlB,EAAKV,SAAS,QACd,MACJ,KAAKjF,EAAKuH,KACNb,EAAEG,iBACFlB,EAAKV,SAAS,QACd,MACJ,KAAKjF,EAAKwH,MACN7B,EAAK9B,KACAuB,KAAK9E,EAAMG,EAAYmB,SACvB6F,QACL,MACJ,KAAKzH,EAAK0H,IACNhB,EAAEG,iBACFlB,EAAKzD,MAAM+E,eAO/BtG,EAAU,CACVgH,QAAS,CACLC,UA7Nc,SAASC,EAAW1E,GACtC,IAAIyD,EAAO,CAAEkB,KAAM3E,EAAQ4E,MAAOC,MAAO7E,EAAQ6E,OAC7CC,EAAkB9E,EAAQ+E,MAAMC,OAAOhF,EAAQ4E,OAAOK,WAEtDH,GAAmB/H,EAAc+H,IAAoBA,EAAgB1F,UACrEqE,EAAKlH,EAAMkH,KAAK,oBAAsBqB,EAAgB1F,SAG1D9C,EAAE,mCACe0D,EAAQ4E,MAAQ,IACzBrI,EAAMkH,KAAK,QAAU,WACrBlH,EAAMkH,KAAK,QAAU,qBACrBlH,EAAMkH,KAAK,QAAU,WACrBzD,EAAQ4E,MAAQ,KAChBrI,EAAMkH,KAAK,YAAc,cAC5BA,KAAKA,GACLyB,SAASR,GAEdpI,EAAE,SAAWC,EAAMkH,KAAK,OAAS,KAAOzD,EAAQ4E,MAAQ,6BACnDO,OACAD,SAASR,IA0MVU,UAvMc,SAASV,EAAW1E,GACtC1D,EAAE,eAAiBgB,EAAYyB,MAAMW,eAAiB,mDAAqDM,EAAQ4C,OAAOtD,OAAS,IAAMU,EAAQ4C,OAAOrD,eAAiB,iCAAmCS,EAAQ2C,SAAS0C,aAAe,eAAe/B,GAAG,QAAStD,EAAQsE,OAAOY,SAASR,IAuM3RY,SApMa,SAASZ,EAAW1E,GACrC,IAAI4E,EAAQ5E,EAAQ4E,MAChBW,EAAQ,GAEqB,OAA7BvF,EAAQ+E,MAAMS,IAAIZ,KAClBW,EAAQvF,EAAQ+E,MAAMS,IAAIZ,IAG9BF,EAAUzB,OAAO,SAAWsC,EAAQ,cAgMpC9H,EAASlB,EAAMG,WAAWI,OAAO,CACjCgD,KAAM,SAASC,EAASC,GACpBzD,EAAMG,WAAWuD,GAAGH,KAAKI,KAAKC,MAE9BA,KAAKJ,QAAUA,EACfI,KAAKH,QAAUlD,GAAO,EAAM,GAAIqD,KAAKH,QAASA,GAC9CG,KAAKsF,aAAetF,KAAKH,QAAQyF,cAGrCT,OAAQ,SAASxH,EAASuH,EAAOW,GAC7B,IAIIV,EAJAxC,EAAOrC,KACPH,EAAUG,KAAKH,QACf2C,EAAW3C,EAAQ2C,SAASgD,OAC5BP,EAAYpF,EAAQoF,UA4CxB,OApCIpF,EAAQ4F,SAASvH,SACjB2G,EAAS1I,EAAEuJ,IAAId,EAAMC,QAAQ,SAASO,EAAOO,GACjC,MAAO,CAAElB,MAAOkB,OAG5Bd,EAAS,CACL,CAAEJ,MAAO,QAASC,MAAOlC,EAASkC,OAClC,CAAED,MAAO,QAASC,MAAOlC,EAASoD,MAAOJ,OAAQnI,EAAQiH,WACzD,CAAEG,MAAO,MAAOC,MAAOlC,EAASkB,IAAK8B,OAAQnI,EAAQiH,WACrD,CAAEG,MAAO,kBAAmBC,MAAOlC,EAASqD,gBAAiBC,OA3TrD,OA8TRP,GACAV,EAAOkB,OAAOC,MAAMnB,EAAQ,CAAC,EAAG,GAAGoB,OAAO,CACtC,CAAExB,MAAO,eAAgBC,MAAOlC,EAAS0D,aAAcV,OAAQnI,EAAQiH,WACvE,CAAEG,MAAO,aAAcC,MAAOlC,EAAS2D,WAAYX,OAAQnI,EAAQiH,cAIvEM,EAAMS,IAAIJ,EAAUR,QACpBI,EAAOuB,KAAK,CAAE3B,MAAOQ,EAAUR,MAAOC,MAAOlC,EAASyC,UAAWzC,SAAUA,EAAUgD,OAAQnI,EAAQ4H,UAAWd,MAzB5G,SAASf,GACjBA,EAAEG,iBACF0B,EAAUO,OAAOnD,EAAKkC,UAAUzC,KAAK9E,EAAMG,EAAYyB,MAAMW,gBAAiBqF,IAuBoDnC,OAAQtF,EAAYyB,QAItJiG,EAASA,EAAOa,KAAI,SAASjH,GACzB,OAAKmG,EAAMa,UAAYb,EAAMa,SAAShH,EAAKgG,OAChChG,EAEA9B,GAAO,EAAM8B,EAAM,CACtB+G,OAAQnI,EAAQ8H,eAOzBN,EAAOa,KAAI,SAASjH,GACvB,OAAO9B,GAAO,EAAM8B,EAAM,CACtB4H,MAAO5H,EAAKiG,YAKxB4B,mBAAoB,SAAS1B,GACzB,IAAI1G,EAAW8B,KAAKH,QAAQ4F,SAASvH,SACjCqI,EAAW5J,EAAO,GAAIP,EAAMoK,SAAUxG,KAAKH,QAAQ4G,kBACnDC,EAAO,GAaX,OAXIxI,GA/VC,iBAgWUA,IACPA,EAAW9B,EAAMuK,SAASzI,IAG9BwI,GAAStK,EAAM8B,SAASA,EAAUqI,EAA1B,CAAqC3B,KAE7C5E,KAAK4G,YAAa,EAClBF,GAAQ,oCAGLA,KAIXnJ,EAAcD,EAAOX,OAAO,CAC5BwD,QAAS,WACLH,KAAK2D,QACL3D,KAAKQ,UAGTmD,MAAO,WACH,IAAItB,EAAOrC,KAEPG,EAAU,WACNkC,EAAKoD,WACLpD,EAAKkC,UAAUvD,KAAK,eAAeb,UACnCkC,EAAKoD,SAAW,KAChBpD,EAAKkC,UAAY,MAGjBlC,EAAKzD,QACLyD,EAAKzD,MAAMuB,UACXkC,EAAKzD,MAAQ,OAIjByD,EAAKoD,UAAYpD,EAAKkC,UAAUsC,GAAG,aACnCxE,EAAKD,QAAQ,QAAS,CAAE3E,OAAQ4E,EAAKkC,YACrClC,EAAKkC,UAAUvD,KAAK,eAAe4C,KAAK,aAAczD,GAASwD,SAE/DxD,KAIR2G,SAAU,SAASC,EAAMxB,GACrBvF,KAAKyF,SAAWzF,KAAKgH,mBAAmBD,EAAMxB,IAGlD0B,WAAY,SAASpH,GAOjB,IANA,IAAIqH,EAAUrH,EAAQqH,QAClBC,EAAchK,EAAYyB,MAE1B8H,EAAOtK,EAAM0J,OAAO,4EACpBqB,EAAYtI,KAAMsI,EAAYpI,cAAeoI,EAAYlI,QAASY,EAAQ6C,KAAMyE,EAAYjI,kBAEvFkI,EAAI,EAAGpF,EAASkF,EAAQlF,OAAQoF,EAAIpF,EAAQoF,IACjDV,GAAQ1G,KAAKsF,aAAa4B,EAAQE,IAGtCV,GAAQ,qBAER,IAAI5F,EAAUd,KAAKJ,QAEfI,KAAKpB,OACLoB,KAAKpB,MAAMuB,UAGf,IAAIvB,EAAQoB,KAAKpB,MAAQzC,EAAEuK,GAAM3B,SAASjE,GACrCuG,GAAG,GACHlE,GAAG,QAASnG,EAAMmK,EAAYhI,QAAQ,SAASiE,GAC5CA,EAAEG,iBAEF3E,EAAM+E,QAEN,IAAI2D,EAAcnL,EAAEiH,EAAEmE,eAAeC,QAErCN,EAAQI,GAAanD,WAExBsD,YAAY,CACTC,OAAO,EACPC,WAAW,EACXC,WAAW,EACXC,WAAW,EACXnD,MAAO7E,EAAQ6E,MACfoD,SAAS,EACTC,WAAY,WACR/H,KAAKG,UACLW,EAAQsB,QAAQ,YAGvB4F,iBAELpJ,EAAMqJ,SAAShF,OAEfrE,EAAMgB,QAAQkC,KAAK,2BAA2BM,QAAQ,UAG1D4E,mBAAoB,SAASD,EAAMxB,GAC/B,IAII2C,EAJA7F,EAAOrC,KAEPwC,EAAWxC,KAAKH,QAAQ2C,SACxB2E,EAAchK,EAAYyB,MAG1B8H,EAAOtK,EAAM0J,OAAO,mDACpB1J,EAAMkH,KAAK,OAAQyD,EAAKoB,IAAKhB,EAAYtI,KAAMsI,EAAYrI,SAAUqI,EAAYpI,eAEjF8F,EAAS7E,KAAK6E,OAAOxH,EAAQgH,QAAS0C,EAAMxB,GAEhDmB,GAAQ1G,KAAKsG,mBAAmBS,GAEhCL,GAAQ,eAAiBS,EAAYjI,iBAAmB,KACxDwH,GAAQ1G,KAAKsF,aAAa,CAAEd,KAAM,SAAU9B,KAAMF,EAAS4F,KAAMC,UAAWlL,EAAYqC,UACxFkH,GAAQ1G,KAAKsF,aAAa,CAAEd,KAAM,SAAU9B,KAAMF,EAAS8F,UACrB,IAAlCjG,EAAKxC,QAAQ4F,SAAStF,UACtBuG,GAAQ1G,KAAKsF,aAAa,CAAEd,KAAM,SAAU9B,KAAMF,EAASrC,WAG/DuG,GAAQ,qBAER,IAAInC,EAAYvE,KAAKuE,UAAYpI,EAAEuK,GAAM3B,SAAS/E,KAAKJ,SAClDyH,GAAG,GACHI,YAAY9K,EAAO,CAChB+K,OAAO,EACPE,WAAW,EACXC,WAAW,EACXnD,MAAOlC,EAASgD,OAAO+C,YACvBT,SAAS,EACTnE,MAAO,SAASP,GACRA,EAAEoF,eACEnG,EAAKD,QAAQ,SAAU,CAAEmC,UAAWA,EAAWK,MAAOmC,KACtD3D,EAAEG,mBAhCR,KAkGd,OA5DIvD,KAAK4G,YACL5G,KAAKnB,KAAO0F,EAAUzC,KAAK,iBAAiB2G,UAAU,CAClDC,MAAO7D,EACP8D,SAAU5B,EACV6B,gBAAiB,GACjBC,YAAa,CACTC,gBAAgB,KAErB9H,KAAK,aAERkH,EAAiBlI,KAAKnB,KAAK4G,UAE3ByC,EAAiB3D,EAChBwE,cAAc,CACXnE,MAAOmC,EACPiC,gBAAgB,EAChBF,gBAAgB,EAChBG,OAAQ5G,EAAKxC,QAAQoJ,SAExBjI,KAAK,iBAGV5E,EAAM8M,UAAU3E,GAEXvE,KAAKoC,QAAQ,OAAQ,CAAEmC,UAAWA,EAAWK,MAAOmC,IAiCrD1E,EAAKD,QAAQ,SAAU,CAAEmC,UAAWA,EAAWK,MAAOmC,KAhCtDxC,EAAUvD,KAAK,eAAeiH,SAAShF,OAEvCsB,EAAUpB,GAAGrG,EAAQD,EAAIG,EAAMG,EAAYiB,cAAc,SAASgF,GAC9DA,EAAEG,iBACFH,EAAE+F,kBAEF9G,EAAKD,QAAQ,SAAU,CAAEmC,UAAWA,EAAWK,MAAOmC,OAG1DxC,EAAUpB,GAAGrG,EAAQD,EAAIG,EAAMG,EAAYkB,YAAY,SAAS+E,GAC5DA,EAAEG,iBACFH,EAAE+F,kBAMF,IAJA,IAEI1E,EAFAI,EAASxC,EAAKwC,OAAOxH,EAAQgH,QAAS0C,EAAMxB,GAC5C6D,EAAa,GAGRhC,EAAI,EAAGpF,EAAS6C,EAAO7C,OAAQoF,EAAIpF,EAAQoF,IAEhDgC,EADA3E,EAAQI,EAAOuC,GAAG3C,OACEsC,EAAK1B,IAAIZ,GAGjCpC,EAAKD,QAAQ,OAAQ,CAAEmC,UAAWA,EAAWK,MAAOmC,EAAMqC,WAAYA,OAG1E7E,EAAUpB,GAAGrG,EAAQD,EAAIG,EAAMG,EAAYgB,cAAc,SAASiF,GAC9DA,EAAEG,iBACFH,EAAE+F,kBAEF9G,EAAKD,QAAQ,SAAU,CAAEmC,UAAWA,EAAWK,MAAOmC,QAMvDmB,KAIX1K,EAAiBhB,EAAOG,OAAO,CAC/BgD,KAAM,SAASC,EAASC,GACpBrD,EAAOsD,GAAGH,KAAKI,KAAKC,KAAMJ,EAASC,GAEnCG,KAAKc,QAAUd,KAAKJ,QACpBI,KAAK4E,MAAQ5E,KAAKH,QAAQ+E,MAC1B5E,KAAKT,eAAiBS,KAAKH,QAAQN,eACnCS,KAAKsF,aAAetF,KAAKH,QAAQyF,aAEjCtF,KAAKqJ,iBACLrJ,KAAKsJ,mBAGTC,OAAQ,CACJ,QAGJ5F,MAAO,WACH3D,KAAKvC,OAAOmG,KAAK,aAAc5D,KAAKG,QAAQyD,KAAK5D,OAAO2D,SAG5DxD,QAAS,WACLH,KAAKwJ,mBAELxJ,KAAKyJ,KAAKtJ,UACVH,KAAKyJ,KAAO,KAEZzJ,KAAKvC,OAAO0C,UACZH,KAAKvC,OAAS,KAEdjB,EAAOsD,GAAGK,QAAQJ,KAAKC,MAEvB5D,EAAM+D,QAAQH,KAAKc,SAEnBd,KAAKJ,QAAUI,KAAKc,QAAU,MAGlCmC,KAAM,WACFjD,KAAKvC,OAAOwK,SAAShF,QAGzBqG,gBAAiB,WACb,IAAIG,EAAOzJ,KAAKyJ,KAEZC,EAAe1J,KAAK2J,aAAe3J,KAAK4J,QAAQhG,KAAK5D,MACzDA,KAAKuE,UAAUpB,GAAGrG,EAAQD,EAAIG,EAAMG,EAAYiB,aAAc4B,KAAK2J,cAEnE3J,KAAK6J,WAAa7J,KAAK8J,MAAMlG,KAAK5D,MAClCA,KAAKuE,UAAUpB,GAAGrG,EAAQD,EAAIG,EAAMG,EAAYkB,WAAY2B,KAAK6J,YAEjE7J,KAAKvC,OAAOmG,KAAK,SAAS,SAASR,GAC3BA,EAAEoF,eACFkB,EAAatG,MAIrBqG,EAAK3I,QAAQqC,GAAGrG,EAAQD,EAAI,0BAA0B,WAClD,IAAI+C,EAAUzD,EAAE6D,MACZ+J,EAAM5N,EAAEyD,GAASoK,QAAQ,MACzBpF,EAAQ6E,EAAKQ,WAAWC,SAASH,EAAIzG,KAAKlH,EAAMkH,KAAK,SACrD8B,EAAQjJ,EAAEyD,GAASiH,GAAG,YAAc,EAAI,GAE5CjC,EAAMuF,IAAI,QAAS/E,OAI3BwE,QAAS,SAASxG,GACdA,EAAEG,iBACFvD,KAAK2D,SAGTyG,eAAgB,WAIZ,IAHA,IAAIlD,EAAUlH,KAAKH,QAAQqH,QACvBR,EAAO,eAAiBvJ,EAAYyB,MAAMM,iBAAmB,KAExDkI,EAAI,EAAGpF,EAASkF,EAAQlF,OAAQoF,EAAIpF,EAAQoF,IACjDV,GAAQ1G,KAAKsF,aAAa4B,EAAQE,IAGtCV,GAAQ,SAER1G,KAAKuE,UAAUzB,OAAO4D,IAG1B8C,iBAAkB,WACdxJ,KAAK2J,aAAe,KACpB3J,KAAK6J,WAAa,KAClB7J,KAAKuE,UAAUjE,IAAIzD,GACnBmD,KAAKyJ,KAAK3I,QAAQR,OAGtB+I,eAAgB,WACZ,IAAIhH,EAAOrC,KACPmH,EAAchK,EAAYyB,MAC1ByL,EAAMjO,EAAM0J,OAAO,0DACnBqB,EAAYtI,KAAMsI,EAAYrI,SAAUqI,EAAYpI,cAAeoI,EAAYnI,wBAEnFqL,EAAMlO,EAAEkO,GAERrK,KAAKuE,UAAY8F,EAAIvI,KAAK9E,EAAMmK,EAAYnI,wBAE5CgB,KAAKvC,OAAS4M,EAAI5C,YAAY,CAC1BC,OAAO,EACPE,WAAW,EACXC,WAAW,EACXC,SAAS,EACTpD,MAAO1E,KAAKH,QAAQ2C,SAAS8H,qBAC7BrH,KAAM,WACAZ,EAAKoH,KAAKc,QAAO,MAExBvJ,KAAK,eAERhB,KAAKwK,gBACLxK,KAAKoK,kBAGTI,cAAe,WACX,IACIhI,EAAWxC,KAAKH,QAAQ2C,SACxB5C,EAAUzD,EAAE,8BAA8B4I,SAAS/E,KAAKuE,WAE5DvE,KAAKyJ,KAAO,IAAIrN,EAAMC,GAAGoO,KAAK7K,EAAS,CACnC8K,QAAS,CACL,CACIjG,MAAO,OACPC,MAAOlC,EAASmI,gBAChBzM,SACI,4HAMR,CACIuG,MAAO,QACPC,MAAOlC,EAASoI,YAChB1M,SAAU,SAAS2M,GACf,IAAIC,EAAcD,EAAS/E,OACvBV,EAA2B,OAAnByF,EAASzF,MAAiByF,EAASzF,MAAQ,GAEvD,OAAO0F,EAAc1O,EAAM2O,SAAS3F,EAAO0F,GAAe1F,KAItE4F,OAAQ,IACRC,UAAU,EACVxF,UAAU,EACVyF,YAAY,EACZjB,WAAY,CACRjJ,KAhCGhB,KAgCQH,QAAQmB,KACnBmK,OAAQ,CACJvG,MAAO,CACHwG,GAAI,KACJvG,OAAQ,CACJuG,GAAI,CAAEC,KAAM,MACZ7G,KAAM,CAAE6G,KAAM,OAAQ7H,KAAM,SAAUiC,UAAU,GAChDL,MAAO,CAAEiG,KAAM,QAAS7H,KAAM,SAAUsB,WAAY9E,KAAKH,QAAQyL,iBACjExF,OAAQ,CAAEuF,KAAM,SAAU7H,KAAM,cAKhD4E,KAAM,SAAShF,GACX,IAAIgC,IAAUhC,EAAEmI,OAAOnG,MACvBhC,EAAEmB,UAAUiH,SAAS1J,KAAK,0BAA0B2J,KAAK,UAAWrG,OAKhF0E,MAAO,SAAS1G,GACZA,EAAEG,iBAEFvD,KAAK0L,eAEA1L,KAAKc,QAAQ+F,GAAG7J,EAAMG,EAAYyB,MAAMW,iBACzCS,KAAKoC,QAAQ,OAAQ,CAAEmC,UAAWvE,KAAKc,QAAS8D,MAAO5E,KAAK4E,QAGhE5E,KAAK2D,SAGT+H,aAAc,WAKV,IAJA,IACItG,EADAH,EAAY,GAEZjE,EAAOhB,KAAKyJ,KAAKQ,WAAWjJ,OAEvBoG,EAAI,EAAGpF,EAAShB,EAAKgB,OAAQoF,EAAIpF,EAAQoF,IAEhC,QADdhC,EAAQpE,EAAKoG,GAAG/B,IAAI,WACED,EAAQ,GAC1BH,EAAUmB,KAAKpF,EAAKoG,IAI5BpH,KAAK4E,MAAM5E,KAAKT,gBAAkB0F,KAI1C7I,EAAMuP,MAAQ,CACVvO,aAAcA,EACdE,OAAQA,EACRC,YAAaA,EACbC,eAAgBA","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.data', 'kendo.popup', 'kendo.window', 'kendo.gantt.data', 'kendo.grid', 'kendo.datetimepicker', 'kendo.numerictextbox', 'kendo.textbox', 'kendo.form'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"gantt.editors\",\n name: \"GanttEditors\",\n category: \"web\",\n description: \"The Gantt component editors.\",\n depends: [ \"data\", \"popup\", \"window\", \"gantt.data\", \"grid\", \"datetimepicker\", \"numerictextbox\", \"textbox\", \"form\"],\n hidden: true\n };\n\n (function($, undefined$1) {\n\n var kendo = window.kendo,\n ui = kendo.ui,\n browser = kendo.support.browser,\n Observable = kendo.Observable,\n Widget = ui.Widget,\n outerWidth = kendo._outerWidth,\n\n keys = $.extend({ F10: 121 }, kendo.keys),\n\n extend = $.extend,\n isPlainObject = $.isPlainObject,\n\n NS = \".kendoGantt\",\n PERCENTAGE_FORMAT = \"p0\",\n CLICK = \"click\",\n WIDTH = \"width\",\n STRING = \"string\",\n DOT = \".\",\n\n DIRECTIONS = {\n \"down\": {\n origin: \"bottom left\",\n position: \"top left\"\n },\n \"up\": {\n origin: \"top left\",\n position: \"bottom left\"\n }\n },\n\n TASK_DROPDOWN_TEMPLATE = kendo.template('
' +\n '' +\n '
');\n\n var ganttStyles = {\n buttonDelete: \"k-gantt-delete\",\n buttonCancel: \"k-gantt-cancel\",\n buttonSave: \"k-gantt-update\",\n focused: \"k-focus\",\n gridContent: \"k-grid-content\",\n hovered: \"k-hover\",\n item: \"k-item k-menu-item\",\n popupWrapper: \"k-popup k-menu-popup\",\n popupList: \"k-menu-group k-menu-group-md k-reset\",\n popup: {\n form: \"k-popup-edit-form\",\n editForm: \"k-gantt-edit-form\",\n formContainer: \"k-edit-form-container\",\n resourcesFormContainer: \"k-resources-form-container\",\n message: \"k-popup-message\",\n buttonsContainer: \"k-edit-buttons\",\n button: \"k-button\",\n buttonDefaults: \"k-button-md k-rounded-md k-button-solid k-button-solid-base\",\n editField: \"k-edit-field\",\n editLabel: \"k-edit-label\",\n resourcesField: \"k-gantt-resources\"\n },\n primary: \"k-button-solid-primary\",\n toolbar: {\n appendButton: \"k-gantt-create\"\n }\n };\n\n var DATERANGEEDITOR = function(container, options) {\n var attr = { name: options.field, title: options.title };\n var validationRules = options.model.fields[options.field].validation;\n\n if (validationRules && isPlainObject(validationRules) && validationRules.message) {\n attr[kendo.attr(\"dateCompare-msg\")] = validationRules.message;\n }\n\n $('\")\n .attr(attr)\n .appendTo(container);\n\n $('')\n .hide()\n .appendTo(container);\n };\n\n var RESOURCESEDITOR = function(container, options) {\n $('
' + options.messages.assignButton + '').on(\"click\", options.click).appendTo(container);\n };\n\n var READONLYEDITOR = function(container, options) {\n var field = options.field;\n var value = '';\n\n if (options.model.get(field) !== null) {\n value = options.model.get(field);\n }\n\n container.append(\"\" + value + \"\");\n };\n\n var TaskDropDown = Observable.extend({\n init: function(element, options) {\n\n Observable.fn.init.call(this);\n\n this.element = element;\n this.options = extend(true, {}, this.options, options);\n\n this._popup();\n },\n\n options: {\n direction: \"down\"\n },\n\n destroy: function() {\n clearTimeout(this._focusTimeout);\n this.popup.destroy();\n this.element.off(NS);\n this.list.off(NS);\n this.unbind();\n },\n\n _adjustListWidth: function() {\n var list = this.list;\n var width = list[0].style.width;\n var wrapper = this.element;\n var listOuterWidth = outerWidth(list);\n var computedStyle;\n var computedWidth;\n\n if (!list.data(WIDTH) && width) {\n return;\n }\n\n computedStyle = window.getComputedStyle ? window.getComputedStyle(wrapper[0], null) : 0;\n computedWidth = computedStyle ? parseFloat(computedStyle.width) : outerWidth(wrapper);\n\n if (computedStyle && (browser.mozilla || browser.msie)) { // getComputedStyle returns different box in FF and IE.\n computedWidth += parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight) + parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth);\n }\n\n if (list.css(\"box-sizing\") !== \"border-box\") {\n width = computedWidth - (outerWidth(list) - list.width());\n } else {\n width = computedWidth;\n }\n\n if (listOuterWidth > width) {\n width = listOuterWidth;\n }\n\n list.css({\n fontFamily: wrapper.css(\"font-family\"),\n width: width\n })\n .data(WIDTH, width);\n },\n\n _current: function(method) {\n var current = this.list\n .find(DOT + ganttStyles.focused);\n var sibling = current[method]();\n\n if (sibling.length) {\n current\n .removeClass(ganttStyles.focused)\n .removeAttr(\"id\");\n sibling\n .addClass(ganttStyles.focused)\n .trigger(\"focus\");\n }\n },\n\n _popup: function() {\n var that = this;\n var itemSelector = \"li\" + DOT + \"k-item\";\n var actions = this.options.messages.actions;\n\n this.list = $(TASK_DROPDOWN_TEMPLATE({\n styles: ganttStyles,\n actions: [\n {\n data: \"add\",\n text: actions.addChild\n },\n {\n data: \"insert-before\",\n text: actions.insertBefore\n },\n {\n data: \"insert-after\",\n text: actions.insertAfter\n }\n ]\n }));\n\n this.element.append(this.list);\n\n this.popup = new kendo.ui.Popup(this.list,\n extend({\n anchor: this.element,\n open: function() {\n that._adjustListWidth();\n },\n animation: this.options.animation\n }, DIRECTIONS[this.options.direction])\n );\n\n this.element\n .on(CLICK + NS, function(e) {\n var target = $(this);\n var action = target.attr(kendo.attr(\"action\"));\n\n e.preventDefault();\n\n if (action) {\n that.trigger(\"command\", { type: action });\n } else {\n that.popup.open();\n\n that.list\n .find(\"li:first\")\n .addClass(ganttStyles.focused)\n .trigger(\"focus\");\n }\n });\n\n this.list\n .find(itemSelector)\n .hover(function() {\n $(this).addClass(ganttStyles.hovered);\n }, function() {\n $(this).removeClass(ganttStyles.hovered);\n })\n .end()\n .on(CLICK + NS, itemSelector, function() {\n that.trigger(\"command\", { type: $(this).attr(kendo.attr(\"action\")) });\n that.popup.close();\n });\n\n this.popup\n .bind(\"close\", function() {\n that.list\n .find(itemSelector)\n .removeClass(ganttStyles.focused);\n\n that.element\n .parents('[' + kendo.attr(\"role\") + '=\"gantt\"]')\n .find(DOT + ganttStyles.gridContent + \" > table\").first()\n .trigger(\"focus\");\n });\n\n this.list\n .find(\"ul\")\n .on(\"keydown\" + NS, function(e) {\n var key = e.keyCode;\n\n switch (key) {\n case keys.UP:\n e.preventDefault();\n that._current(\"prev\");\n break;\n case keys.DOWN:\n e.preventDefault();\n that._current(\"next\");\n break;\n case keys.ENTER:\n that.list\n .find(DOT + ganttStyles.focused)\n .click();\n break;\n case keys.ESC:\n e.preventDefault();\n that.popup.close();\n break;\n }\n });\n }\n });\n\n var editors = {\n desktop: {\n dateRange: DATERANGEEDITOR,\n resources: RESOURCESEDITOR,\n readonly: READONLYEDITOR\n }\n };\n\n var Editor = kendo.Observable.extend({\n init: function(element, options) {\n kendo.Observable.fn.init.call(this);\n\n this.element = element;\n this.options = extend(true, {}, this.options, options);\n this.createButton = this.options.createButton;\n },\n\n fields: function(editors, model, plannedEditors) {\n var that = this;\n var options = this.options;\n var messages = options.messages.editor;\n var resources = options.resources;\n var fields;\n\n var click = function(e) {\n e.preventDefault();\n resources.editor(that.container.find(DOT + ganttStyles.popup.resourcesField), model);\n };\n\n if (options.editable.template) {\n fields = $.map(model.fields, function(value, key) {\n return { field: key };\n });\n } else {\n fields = [\n { field: \"title\", title: messages.title },\n { field: \"start\", title: messages.start, editor: editors.dateRange },\n { field: \"end\", title: messages.end, editor: editors.dateRange },\n { field: \"percentComplete\", title: messages.percentComplete, format: PERCENTAGE_FORMAT }\n ];\n\n if (plannedEditors) {\n fields.splice.apply(fields, [1, 0].concat([\n { field: \"plannedStart\", title: messages.plannedStart, editor: editors.dateRange },\n { field: \"plannedEnd\", title: messages.plannedEnd, editor: editors.dateRange }\n ]));\n }\n\n if (model.get(resources.field)) {\n fields.push({ field: resources.field, title: messages.resources, messages: messages, editor: editors.resources, click: click, styles: ganttStyles.popup });\n }\n\n\n fields = fields.map(function(item) {\n if (!model.editable || model.editable(item.field)) {\n return item;\n } else {\n return extend(true, item, {\n editor: editors.readonly\n });\n }\n });\n\n }\n\n return fields.map(function(item) {\n return extend(true, item, {\n label: item.title\n });\n });\n },\n\n _buildEditTemplate: function(model) {\n var template = this.options.editable.template;\n var settings = extend({}, kendo.Template, this.options.templateSettings);\n var html = \"\";\n\n if (template) {\n if (typeof template === STRING) {\n template = kendo.unescape(template);\n }\n\n html += (kendo.template(template, settings))(model);\n } else {\n this.renderForm = true;\n html += '
';\n }\n\n return html;\n }\n });\n\n var PopupEditor = Editor.extend({\n destroy: function() {\n this.close();\n this.unbind();\n },\n\n close: function() {\n var that = this;\n\n var destroy = function() {\n if (that.editable) {\n that.container.data(\"kendoWindow\").destroy();\n that.editable = null;\n that.container = null;\n }\n\n if (that.popup) {\n that.popup.destroy();\n that.popup = null;\n }\n };\n\n if (that.editable && that.container.is(\":visible\")) {\n that.trigger(\"close\", { window: that.container });\n that.container.data(\"kendoWindow\").bind(\"deactivate\", destroy).close();\n } else {\n destroy();\n }\n },\n\n editTask: function(task, plannedEditors) {\n this.editable = this._createPopupEditor(task, plannedEditors);\n },\n\n showDialog: function(options) {\n var buttons = options.buttons;\n var popupStyles = ganttStyles.popup;\n\n var html = kendo.format('

{3}

',\n popupStyles.form, popupStyles.formContainer, popupStyles.message, options.text, popupStyles.buttonsContainer);\n\n for (var i = 0, length = buttons.length; i < length; i++) {\n html += this.createButton(buttons[i]);\n }\n\n html += '
';\n\n var wrapper = this.element;\n\n if (this.popup) {\n this.popup.destroy();\n }\n\n var popup = this.popup = $(html).appendTo(wrapper)\n .eq(0)\n .on(\"click\", DOT + popupStyles.button, function(e) {\n e.preventDefault();\n\n popup.close();\n\n var buttonIndex = $(e.currentTarget).index();\n\n buttons[buttonIndex].click();\n })\n .kendoWindow({\n modal: true,\n autoFocus: false,\n resizable: false,\n draggable: false,\n title: options.title,\n visible: false,\n deactivate: function() {\n this.destroy();\n wrapper.trigger(\"focus\");\n }\n })\n .getKendoWindow();\n\n popup.center().open();\n\n popup.element.find(\".k-button-solid-primary\").trigger(\"focus\");\n },\n\n _createPopupEditor: function(task, plannedEditors) {\n var that = this;\n var options = {};\n var messages = this.options.messages;\n var popupStyles = ganttStyles.popup;\n var editableWidget;\n\n var html = kendo.format('
',\n kendo.attr(\"uid\"), task.uid, popupStyles.form, popupStyles.editForm, popupStyles.formContainer);\n\n var fields = this.fields(editors.desktop, task, plannedEditors);\n\n html += this._buildEditTemplate(task);\n\n html += '
';\n html += this.createButton({ name: \"update\", text: messages.save, className: ganttStyles.primary });\n html += this.createButton({ name: \"cancel\", text: messages.cancel });\n if (that.options.editable.destroy !== false) {\n html += this.createButton({ name: \"delete\", text: messages.destroy });\n }\n\n html += '
';\n\n var container = this.container = $(html).appendTo(this.element)\n .eq(0)\n .kendoWindow(extend({\n modal: true,\n resizable: false,\n draggable: true,\n title: messages.editor.editorTitle,\n visible: false,\n close: function(e) {\n if (e.userTriggered) {\n if (that.trigger(\"cancel\", { container: container, model: task })) {\n e.preventDefault();\n }\n }\n }\n }, options));\n\n if (this.renderForm) {\n this.form = container.find(\".k-gantt-form\").kendoForm({\n items: fields,\n formData: task,\n buttonsTemplate: \"\",\n validatable: {\n validateOnBlur: true\n }\n }).data(\"kendoForm\");\n\n editableWidget = this.form.editable;\n } else {\n editableWidget = container\n .kendoEditable({\n model: task,\n clearContainer: false,\n validateOnBlur: true,\n target: that.options.target\n })\n .data(\"kendoEditable\");\n }\n\n kendo.cycleForm(container);\n\n if (!this.trigger(\"edit\", { container: container, model: task })) {\n container.data(\"kendoWindow\").center().open();\n\n container.on(CLICK + NS, DOT + ganttStyles.buttonCancel, function(e) {\n e.preventDefault();\n e.stopPropagation();\n\n that.trigger(\"cancel\", { container: container, model: task });\n });\n\n container.on(CLICK + NS, DOT + ganttStyles.buttonSave, function(e) {\n e.preventDefault();\n e.stopPropagation();\n\n var fields = that.fields(editors.desktop, task, plannedEditors);\n var updateInfo = {};\n var field;\n\n for (var i = 0, length = fields.length; i < length; i++) {\n field = fields[i].field;\n updateInfo[field] = task.get(field);\n }\n\n that.trigger(\"save\", { container: container, model: task, updateInfo: updateInfo });\n });\n\n container.on(CLICK + NS, DOT + ganttStyles.buttonDelete, function(e) {\n e.preventDefault();\n e.stopPropagation();\n\n that.trigger(\"remove\", { container: container, model: task });\n });\n } else {\n that.trigger(\"cancel\", { container: container, model: task });\n }\n\n return editableWidget;\n }\n });\n\n var ResourceEditor = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n\n this.wrapper = this.element;\n this.model = this.options.model;\n this.resourcesField = this.options.resourcesField;\n this.createButton = this.options.createButton;\n\n this._initContainer();\n this._attachHandlers();\n },\n\n events: [\n \"save\"\n ],\n\n close: function() {\n this.window.bind(\"deactivate\", this.destroy.bind(this)).close();\n },\n\n destroy: function() {\n this._dettachHandlers();\n\n this.grid.destroy();\n this.grid = null;\n\n this.window.destroy();\n this.window = null;\n\n Widget.fn.destroy.call(this);\n\n kendo.destroy(this.wrapper);\n\n this.element = this.wrapper = null;\n },\n\n open: function() {\n this.window.center().open();\n },\n\n _attachHandlers: function() {\n var grid = this.grid;\n\n var closeHandler = this._cancelProxy = this._cancel.bind(this);\n this.container.on(CLICK + NS, DOT + ganttStyles.buttonCancel, this._cancelProxy);\n\n this._saveProxy = this._save.bind(this);\n this.container.on(CLICK + NS, DOT + ganttStyles.buttonSave, this._saveProxy);\n\n this.window.bind(\"close\", function(e) {\n if (e.userTriggered) {\n closeHandler(e);\n }\n });\n\n grid.wrapper.on(CLICK + NS, \"input[type='checkbox']\", function() {\n var element = $(this);\n var row = $(element).closest(\"tr\");\n var model = grid.dataSource.getByUid(row.attr(kendo.attr(\"uid\")));\n var value = $(element).is(\":checked\") ? 1 : \"\";\n\n model.set(\"value\", value);\n });\n },\n\n _cancel: function(e) {\n e.preventDefault();\n this.close();\n },\n\n _createButtons: function() {\n var buttons = this.options.buttons;\n var html = '
';\n\n for (var i = 0, length = buttons.length; i < length; i++) {\n html += this.createButton(buttons[i]);\n }\n\n html += \"
\";\n\n this.container.append(html);\n },\n\n _dettachHandlers: function() {\n this._cancelProxy = null;\n this._saveProxy = null;\n this.container.off(NS);\n this.grid.wrapper.off();\n },\n\n _initContainer: function() {\n var that = this;\n var popupStyles = ganttStyles.popup;\n var dom = kendo.format('
\"',\n popupStyles.form, popupStyles.editForm, popupStyles.formContainer, popupStyles.resourcesFormContainer);\n\n dom = $(dom);\n\n this.container = dom.find(DOT + popupStyles.resourcesFormContainer);\n\n this.window = dom.kendoWindow({\n modal: true,\n resizable: false,\n draggable: true,\n visible: false,\n title: this.options.messages.resourcesEditorTitle,\n open: function() {\n that.grid.resize(true);\n }\n }).data(\"kendoWindow\");\n\n this._resourceGrid();\n this._createButtons();\n },\n\n _resourceGrid: function() {\n var that = this;\n var messages = this.options.messages;\n var element = $('
').appendTo(this.container);\n\n this.grid = new kendo.ui.Grid(element, {\n columns: [\n {\n field: \"name\",\n title: messages.resourcesHeader,\n template:\n \"