{"version":3,"sources":["webpack:///./src/mixins/shared/user/principalMixin.js","webpack:///./src/mixins/shared/record/badgeableRecordMixin.js","webpack:///./src/mixins/shared/space/spaceableMixin.js","webpack:///./src/model/folder/folderModel.js","webpack:///./src/mixins/shared/record/recordIconMixin.js","webpack:///./src/mixins/shared/record/recordStateColorMixin.js","webpack:///./src/mixins/shared/navigatable/moduleRecordNavigatable.js","webpack:///./src/mixins/shared/record/recordAttributeMixin.js","webpack:///./src/mixins/shared/browsable/browsableFolderMixin.js"],"names":["mapGetters","createNamespacedHelpers","principalMixin","mixins","publicAccessMixin","computed","principal","findFeature","isAvailableApplicationModule","isAvailableProjectsModule","this","moduleNames","Projects","isAvailableMyInboxModule","Tasks","isAvailableAgendaModule","Agenda","methods","isUserStateOwner","record","isStateOwner","isAvailableFeature","name","status","featureStatus","supported","licenced","released","feature","used","total","badgeableRecordMixin","recordAttributeMixin","recordStateColorMixin","showRecordBadge","infoOnly","_this$badgeRecordFont","badgeRecordFontAwesomeIcon","iconName","isHistoryMode","badgeRecordIcon","_record$id","iconInfo","id","iconAsterisk","recordAttributeIcon","_record$id2","createFontAwesomeSolidIcon","fasIconName","info","asterisk","recordAttributeFontAwesomeIcon","badgeRecordColor","_record$id3","_record$stateId","colorTheme","colorRecordNewClass","stateId","recordState","checkedOut","recordStateColor","recordAttributeColor","spaceableMixin","data","spacingDirection","direction","spacingSize","size","spacingType","spacingClass","right","size2","Spacing","margin","getClassSpacing","folderColor","Color","colorMD","yellow","variantType","darken","variantNumber","n2","documentColor","indigo","n1","folderColorClass","getClassColor","documentColorClass","recordIconMixin","menuItemSettingsMixin","recordIcon","recordTypeId","recordType","FILE","findFileTypeIcon","extension","findRecordTypeIcon","recordTypeIcon","typeId","recordIconColorClass","_record$recordTypeId","recordTypeIconColorClass","RECORD","undefined","FOLDER","MEETING","SECTION","ITEM","DOCUMENT","menuItemColorClass","colorRecordCheckedOutClass","colorRecordLockedClass","checkedIn","colorRecordCheckedInClass","new","created","colorRecordCreatedClass","published","colorMeetingPublishedClass","submitted","colorAgendaItemSubmittedClass","recordStateTextColor","white","lighten","n3","moduleRecordNavigatable","moduleItemNavigatable","canNavigateToModuleRecord","$router","push","createModuleRecordRouteLocation","isRecordExpandable","canNavigateToModuleItem","canNavigateToModuleChildRecord","parentId","canNavigateToChildRecordById","createModuleChildRecordRouteLocationById","e","console","error","warn","appModuleName","createModuleChildRecordContentRouteLocation","_record$isLink","_record$parentId","_record$parentId2","isLink","createModuleChildRecordShortcutContentRouteLocation","_record$id4","_record$parentId3","canNavigateToModuleChildRecordById","faIconName","hasAttributeIcon","_ref","_record$localFile","isLocked","isReadOnly","isDeleted","localFile","hasFile","_ref2","_record$localFile2","_this$record$canUpdat","_this$record","iconCheck","posted","iconPostMeeting","iconGlobe","iconLock","iconReadOnly","iconTrash","iconEdit","canUpdate","_this$record2","reason","cannotUpdateReason","accessDenied","iconAccessDenied","iconFileCheckOut","locked","readOnly","onHold","iconOnHold","notInitialized","iconError","retained","iconWarning","invalidOperation","_ref3","_record$localFile3","_this$record$canUpdat2","_this$record3","IsCheckedOutForDigitalSigning","signOut","check","clock","globe","lock","eye","trash","pencil","_this$record4","eyeSlash","hand","xmark","triangleExclamation","_ref4","_record$localFile$has","_record$localFile4","_this$record$canUpdat3","_this$record5","colorMeetingPostedClass","colorRecordReadOnlyClass","colorRecordDeletedClass","colorRecordInheritedReadOnlyClass","browsableFolderMixin","iconFolder","iconFolderUpload","iconArrowUpCircle","iconArrowUpThin","iconChevronDown","iconFetchRecords","iconFolderRefresh","breadcrumbs","breadcrumbCount","itemCount","lastBreadcrumb","lastBreadcrumbId","_this$lastBreadcrumb$","_this$lastBreadcrumb","notImplementedComputed","notImplementedMethod","buildRouteToParentFolder","createModuleItemContentRoute","isExpandableRecord","tooltipSelectedRecord","_findRecordType","type","findRecordType","fullRecordName","getRouteParamId","_this$$router","currentRoute","params","isNumber","Number","getCurrentRouteParamExpandedId","_this$$router2","expandedId","isLoading","countChildren","then","response","expandedRecordChildren","log","$options","startIndex","setRecords","listItems","_this$record$id","navigateToModuleItem","navigateToModuleChildRecordById","getStoredSelectedModuleItemId","getStoredSelectedModuleExpandedId","setBreadcrumbs","paramId","breadcrumbId","handleError","watch","newRecord","_this$record$parentId","prepareNodesData","to","from","_from$name","Folder","setRecordDeleteStatus","newValue","oldValue","recordMode","view","recordDeleted"],"mappings":"gHAAA,kGASA,MAAM,WAAEA,GAAeC,eAAwB,QAOlCC,EAAiB,CAC5BC,OAAQ,CAACC,QACTC,SAAU,IACLL,EAAW,CACZM,UAAW,YACXC,YAAa,cACbC,6BAA8B,iCAOhCC,4BACE,OAAOC,KAAKF,6BAA6BG,OAAYC,WAOvDC,2BACE,OAAOH,KAAKF,6BAA6BG,OAAYG,QAOvDC,0BACE,OAAOL,KAAKF,6BAA6BG,OAAYK,UAGzDC,QAAS,CAMPC,iBAAiBC,GACf,OAAOC,eAAaD,EAAQT,KAAKJ,YAQnCe,mBAAmBC,GACjB,MAAMC,EAASb,KAAKc,cAAcF,GAClC,OAAOC,EAAOE,WAAaF,EAAOG,UAAYH,EAAOI,UAQvDH,cAAcF,GACZ,IAAIM,EAAUlB,KAAKH,YAAYe,GAQ/B,OAPKM,IACHA,EAAU,CACRN,KAAMA,EACNO,KAAM,EACNC,MAAO,IAGJN,eAAcI,O,oCCnF3B,8GAeO,MAAMG,EAAuB,CAClC5B,OAAQ,CAAC6B,OAAsBC,QAC/BhB,QAAS,CAOPiB,gBAAgBf,EAAQgB,GAAW,GAAO,IAAAC,EAExC,QACqD,QAAlDA,EAAC1B,KAAK2B,2BAA2BlB,EAAQgB,UAAS,IAAAC,IAAjDA,EAAmDE,YACpD5B,KAAK6B,eASVC,gBAAgBrB,EAAQgB,GAAW,GAAO,IAAAM,EACxC,OAAIN,EACKO,SAGS,QAAXD,EAAO,OAANtB,QAAM,IAANA,OAAM,EAANA,EAAQwB,UAAE,IAAAF,KAAK,GAAK,EACxBG,OACAlC,KAAKmC,oBAAoB1B,IAQ/BkB,2BAA2BlB,EAAQgB,GAAW,GAAO,IAAAW,EACnD,OAAIX,EACKY,eAA2BC,OAAYC,OAGjC,QAAXH,EAAO,OAAN3B,QAAM,IAANA,OAAM,EAANA,EAAQwB,UAAE,IAAAG,KAAK,GAAK,EAChBC,eAA2BC,OAAYE,UAGzCxC,KAAKyC,+BAA+BhC,IAQ7CiC,iBAAiBjC,EAAQgB,GAAW,GAAO,IAAAkB,EAAAC,EACzC,OAAInB,EACKoB,OAAWN,MAGL,QAAXI,EAAO,OAANlC,QAAM,IAANA,OAAM,EAANA,EAAQwB,UAAE,IAAAU,KAAK,GAAK,EAChBG,QAGc,QAAhBF,EAAO,OAANnC,QAAM,IAANA,OAAM,EAANA,EAAQsC,eAAO,IAAAH,KAAK,KAAOI,OAAYC,WAC3CjD,KAAKkD,iBAAiBzC,GACtBT,KAAKmD,qBAAqB1C,O,kCChFpC,kDAOO,MAAM2C,EAAiB,CAC5BC,OACE,MAAO,CACLC,iBAAkBC,OAClBC,YAAaC,OACbC,YAAaA,SAGjBnD,QAAS,CACPoD,aAAaL,EAAmBC,OAAUK,MAAOJ,EAAcC,OAAKI,OAClE,OAAO,IAAIC,OACTJ,OAAYK,OACZT,EACAE,GACAQ,sB,gGCVR,MAAMC,EAAc,IAAIC,OACtBC,OAAQC,OACRC,OAAYC,OACZC,OAAcC,IAMVC,EAAgB,IAAIP,OACxBC,OAAQO,OACRL,OAAYC,OACZC,OAAcI,IAOVC,EAAmBX,EAAYY,gBAM/BC,EAAqBL,EAAcI,gB,4BCzBlC,MAAME,EAAkB,CAC7BtF,OAAQ,CAACuF,QACTzE,QAAS,CAMP0E,WAAWxE,GACT,GAAKA,EAGL,OAAQA,EAAOyE,cAYb,KAAKC,OAAWC,KACd,OAAOC,eAAiB5E,EAAO6E,WAEjC,QACE,OAAOC,eAAmB9E,EAAOyE,gBAUvCM,eAAeC,GACb,OAAOF,eAAmBE,IAQ5BC,qBAAqBjF,GAAQ,IAAAkF,EAC3B,OAAOlF,EACHT,KAAK4F,yBACiB,QADOD,EACrB,OAANlF,QAAM,IAANA,OAAM,EAANA,EAAQyE,oBAAY,IAAAS,IAAIR,OAAWU,aAErCC,GAQNF,yBAAyBH,GACvB,OAAQA,GACN,KAAKN,OAAWY,OAChB,KAAKZ,OAAWa,QAChB,KAAKb,OAAWc,QAChB,KAAKd,OAAWe,KACd,OAAOtB,EAET,KAAKO,OAAWgB,SACd,OAAOrB,EAET,KAAKK,OAAWU,OACd,OAEF,QACE,OAAO7F,KAAKoG,wB,oCCtFtB,sFAqBO,MAAM7E,EAAwB,CACnC9B,OAAQ,CAACD,QACTe,QAAS,CAMP2C,iBAAiBzC,GAAQ,IAAAmC,EACvB,OAAuB,QAAvBA,EAAc,OAANnC,QAAM,IAANA,OAAM,EAANA,EAAQsC,eAAO,IAAAH,KAAK,GAC1B,KAAKI,OAAYC,WACf,OAAOjD,KAAKQ,iBAAiBC,GACzB4F,OACAC,OAEN,KAAKtD,OAAYuD,UACf,OAAOC,OAET,KAAKxD,OAAYyD,IACf,OAAO3D,OAET,KAAKE,OAAY0D,QACf,OAAOC,OAET,KAAK3D,OAAY4D,UACf,OAAOC,OAET,KAAK7D,OAAY8D,UACf,OAAOC,OAET,QACE,SASNC,qBAAqBvG,GACnB,GAAKA,EAEL,OAAO,IAAIyD,OACTC,OAAQ8C,MACR5C,OAAY6C,QACZ3C,OAAc4C,IACdtC,oB,sHCrDD,MAAMuC,EAA0B,CACrC3H,OAAQ,CAAC4H,QACT9G,QAAS,CAMP,6BAA6BE,GACvBA,GAAUT,KAAKsH,0BAA0B7G,UACrCT,KAAKuH,QAAQC,KAAKxH,KAAKyH,gCAAgChH,KASjE6G,0BAA0B7G,GAAQ,IAAAsB,EAChC,OAAO2F,eAAmBjH,GACtBT,KAAK2H,wBAAkC,QAAX5F,EAAO,OAANtB,QAAM,IAANA,OAAM,EAANA,EAAQwB,UAAE,IAAAF,KAAK,GAC5C/B,KAAK4H,+BAA+BnH,IAS1C,sCAAsCwB,EAAI4F,GACxC,GAAK7H,KAAK8H,6BAA6B7F,EAAI4F,GAO3C,UACQ7H,KAAKuH,QAAQC,KACjBxH,KAAK+H,yCAAyC9F,EAAI4F,IAEpD,MAAOG,GACPC,QAAQC,MAAMF,QAXdC,QAAQE,KACN,wBAAwBnI,KAAKoI,wBAAwBnG,sBAAuB4F,MAmBlFQ,4CAA4C5H,GAAQ,IAAA6H,EAAAlG,EAAAmG,EAAA5F,EAAA6F,EAClD,OAAoB,QAAbF,EAAA7H,EAAOgI,cAAM,IAAAH,KAChBI,eACE1I,KAAKoI,cACK,QADQhG,EACZ,OAAN3B,QAAM,IAANA,OAAM,EAANA,EAAQwB,UAAE,IAAAG,KAAK,EACC,QADAmG,EACV,OAAN9H,QAAM,IAANA,OAAM,EAANA,EAAQoH,gBAAQ,IAAAU,KAAK,GAEvBF,eACErI,KAAKoI,cACK,QADQzF,EACZ,OAANlC,QAAM,IAANA,OAAM,EAANA,EAAQwB,UAAE,IAAAU,KAAK,EACC,QADA6F,EACV,OAAN/H,QAAM,IAANA,OAAM,EAANA,EAAQoH,gBAAQ,IAAAW,KAAK,IAS7Bf,gCAAgChH,GAC9B,OAAOgH,eAAgCzH,KAAKoI,cAAe3H,IAS7DsH,yCAAyC9F,EAAI4F,GAC3C,OAAOQ,eACLrI,KAAKoI,cACLnG,EACA4F,IASJD,+BAA+BnH,GAAQ,IAAAkI,EAAAC,EACrC,OAAO5I,KAAK8H,6BACV9H,KAAKoI,cACK,QADQO,EACZ,OAANlI,QAAM,IAANA,OAAM,EAANA,EAAQwB,UAAE,IAAA0G,KAAK,EACC,QADAC,EACV,OAANnI,QAAM,IAANA,OAAM,EAANA,EAAQoH,gBAAQ,IAAAe,KAAK,IAUzBC,mCAAmC5G,EAAI4F,GACrC,OAAO7H,KAAK8H,6BACV9H,KAAKoI,cACLnG,EACA4F,O,kCChIR,kGAmCA,MAAM,WAAEvI,GAAeC,eAAwB,QAElC+B,EAAuB,CAClC+B,OACE,MAAO,CACLyF,WAAYxG,SAGhB3C,SAAU,IACLL,EAAW,CACZM,UAAW,eAGfW,QAAS,CACPwI,iBAAiBtI,GAAQ,IAAAuI,EAAAC,EACvB,IAAKxI,EAAQ,OAAO,EAEpB,GAAIA,EAAOyI,SAAU,OAAO,EAC5B,GAAIzI,EAAO0I,WAAY,OAAO,EAC9B,GAAI1I,EAAO2I,UAAW,OAAO,EAC7B,GAE6C,QAF7CJ,GACS,OAANvI,QAAM,IAANA,GAAiB,QAAXwI,EAANxI,EAAQ4I,iBAAS,IAAAJ,OAAA,EAAjBA,EAAmBK,UAClB7I,EAAOsC,UAAYC,OAAYC,kBAAU,IAAA+F,KAG3C,OAAO,EAGT,OAAQvI,EAAOsC,SACb,KAAKC,OAAYC,WACf,OAAO,EAET,KAAKD,OAAY4D,UACjB,KAAK5D,OAAY8D,UACf,OAAO,EAET,QACE,OAAO,IAIb3E,oBAAoB1B,GAAQ,IAAA8I,EAAAC,EAAAC,EAAAC,EAC1B,IAAKjJ,EAAQ,MAAO,YAGpB,OAAQA,EAAOsC,SACb,KAAKC,OAAYC,WACf,OAAO0G,OAET,KAAK3G,OAAY4G,OACf,OAAOC,QAET,KAAK7G,OAAY4D,UACjB,KAAK5D,OAAY8D,UACf,OAAOgD,QAIX,GAAIrJ,EAAOyI,SAAU,OAAOa,QAC5B,GAAItJ,EAAO0I,WAAY,OAAOa,QAC9B,GAAIvJ,EAAO2I,UAAW,OAAOa,QAC7B,GAE6C,QAF7CV,GACS,OAAN9I,QAAM,IAANA,GAAiB,QAAX+I,EAAN/I,EAAQ4I,iBAAS,IAAAG,OAAA,EAAjBA,EAAmBF,UAClB7I,EAAOsC,UAAYC,OAAYC,kBAAU,IAAAsG,KAG3C,OAAOW,OAGT,GAA4B,QAAxBT,EAAa,QAAbC,EAAE1J,KAAKS,cAAM,IAAAiJ,OAAA,EAAXA,EAAaS,iBAAS,IAAAV,MAAY,KAAAW,EAEtC,MAAMC,EAAoB,QAAdD,EAAGpK,KAAKS,cAAM,IAAA2J,OAAA,EAAXA,EAAaE,mBAC5B,GAAID,EAAQ,CACV,GAAIA,EAAOE,aAAc,OAAOC,OAC3B,GAAIH,EAAOpH,WAAY,OAAOwH,QAC9B,GAAIJ,EAAOK,OAAQ,OAAOX,QAC1B,GAAIM,EAAOM,SAAU,OAAOX,QAC5B,GAAIK,EAAOO,OAAQ,OAAOC,QAC1B,GAAIR,EAAOS,eAAgB,OAAOC,OAClC,GAAIV,EAAOW,SAAU,OAAOC,QAC5B,GAAIZ,EAAOa,iBAAkB,OAAOH,UAW/CtI,+BAA+BhC,GAAQ,IAAA0K,EAAAC,EAAAC,EAAAC,EACrC,IAAK7K,EAAQ,OAAO4B,eAA2B,IAG/C,OAAQ5B,EAAOsC,SACb,KAAKC,OAAYC,WACf,OAAOsI,eAA8B9K,GACjC4B,eAA2BC,OAAYkJ,SACvCnJ,eAA2BC,OAAYmJ,OAE7C,KAAKzI,OAAY4G,OACf,OAAOvH,eAA2BC,OAAYoJ,OAEhD,KAAK1I,OAAY4D,UACjB,KAAK5D,OAAY8D,UACf,OAAOzE,eAA2BC,OAAYqJ,OAIlD,GAAIlL,EAAOyI,SAAU,OAAO7G,eAA2BC,OAAYsJ,MACnE,GAAInL,EAAO0I,WAAY,OAAO9G,eAA2BC,OAAYuJ,KACrE,GAAIpL,EAAO2I,UACT,OAAO/G,eAA2BC,OAAYwJ,OAChD,GAE6C,QAF7CX,GACS,OAAN1K,QAAM,IAANA,GAAiB,QAAX2K,EAAN3K,EAAQ4I,iBAAS,IAAA+B,OAAA,EAAjBA,EAAmB9B,UAClB7I,EAAOsC,UAAYC,OAAYC,kBAAU,IAAAkI,KAG3C,OAAO9I,eAA2BC,OAAYyJ,QAEhD,GAA4B,QAAxBV,EAAa,QAAbC,EAAEtL,KAAKS,cAAM,IAAA6K,OAAA,EAAXA,EAAanB,iBAAS,IAAAkB,MAAY,KAAAW,EAEtC,MAAM3B,EAAoB,QAAd2B,EAAGhM,KAAKS,cAAM,IAAAuL,OAAA,EAAXA,EAAa1B,mBAC5B,GAAID,EAAQ,CACV,GAAIA,EAAOE,aACT,OAAOlI,eAA2BC,OAAY2J,UAC3C,GAAI5B,EAAOpH,WACd,OAAOZ,eAA2BC,OAAYmJ,OAC3C,GAAIpB,EAAOK,OACd,OAAOrI,eAA2BC,OAAYsJ,MAC3C,GAAIvB,EAAOM,SACd,OAAOtI,eAA2BC,OAAYuJ,KAC3C,GAAIxB,EAAOO,OACd,OAAOvI,eAA2BC,OAAY4J,MAC3C,GAAI7B,EAAOS,eACd,OAAOzI,eAA2BC,OAAY6J,OAC3C,GAAI9B,EAAOW,SACd,OAAO3I,eAA2BC,OAAY8J,qBAC3C,GAAI/B,EAAOa,iBACd,OAAO7I,eAA2BC,OAAY6J,QAIpD,OAAO9J,eAA2B,KAEpCc,qBAAqB1C,GAAQ,IAAA4L,EAAAC,EAAAC,EAAA3J,EAAA4J,EAAAC,EAC3B,GAAKhM,EAAL,CAKA,OAAQA,EAAOsC,SACb,KAAKC,OAAY4G,OACf,OAAO8C,OACT,KAAK1J,OAAY4D,UACf,OAAOC,OAET,KAAK7D,OAAY8D,UACf,OAAOC,OAIX,OAAItG,EAAO0I,WAAmBwD,OAC1BlM,EAAOyI,SAAiB5C,OACxB7F,EAAO2I,UAAkBwD,OAGwB,QAFrDP,EAC6B,QAA1BC,EAAiB,QAAjBC,EAAC9L,EAAO4I,iBAAS,IAAAkD,OAAA,EAAhBA,EAAkBjD,eAAO,IAAAgD,OACV,QAAf1J,EAACnC,EAAOsC,eAAO,IAAAH,KAAK,KAAOI,OAAYC,kBAAU,IAAAoJ,KAG5ChG,OAGmB,QAAxBmG,EAAa,QAAbC,EAAEzM,KAAKS,cAAM,IAAAgM,OAAA,EAAXA,EAAatC,iBAAS,IAAAqC,UAA5B,EACSK,Y,kCClNf,0KA0CO,MAAMC,EAAuB,CAClCrN,OAAQ,CACNsF,OACA3B,OACA5D,OACA4H,QAEF/D,OACE,MAAO,CACL0J,WAAYA,QACZC,iBAAkBA,QAClBC,kBAAmBA,OACnBC,gBAAiBA,OACjBC,gBAAiBA,OACjBC,iBAAkBC,UAGtB1N,SAAU,CAKR2N,cACE,MAAO,IAMTC,kBACE,OAAOC,eAAUxN,KAAKsN,cAOxBG,iBACE,OAAOzN,KAAKuN,gBAAkB,EAC1BvN,KAAKsN,YAAYtN,KAAKuN,gBAAkB,QACxCzH,GAON4H,mBAAmB,IAAAC,EAAAC,EACjB,OAA8B,QAA9BD,EAA0B,QAA1BC,EAAO5N,KAAKyN,sBAAc,IAAAG,OAAA,EAAnBA,EAAqB3L,UAAE,IAAA0L,KAAK,GAQrClN,SACEwH,QAAQE,KAAK,GAAG0F,eAAuB,aAI3CtN,QAAS,CAMP,gBAAgBsH,GACdI,QAAQE,KAAK2F,eAAqB,uBAAuBjG,KAO3DkG,2BACE,OAAO/N,KAAKgO,6BAA6BhO,KAAK0N,mBAQhDO,mBAAmBxN,GACjB,OAAOiH,eAAmBjH,IAQ5ByN,sBAAsBzN,GAAQ,IAAA0N,EAAAxI,EAC5B,MAAMyI,EAAgE,QAA5DD,EAAGE,eAAmC,QAArB1I,EAAO,OAANlF,QAAM,IAANA,OAAM,EAANA,EAAQyE,oBAAY,IAAAS,IAAIR,OAAWU,eAAO,IAAAsI,OAAA,EAAzDA,EACTvN,KAEJ,MAAO,UAAUwN,MAASE,eAAe7N,MAQ3C6N,eAAe7N,GACb,OAAO6N,eAAe7N,IAkBxB8N,kBAAkB,IAAAC,EAChB,MAAMvM,EAAiB,QAAfuM,EAAGxO,KAAKuH,eAAO,IAAAiH,GAAc,QAAdA,EAAZA,EAAcC,oBAAY,IAAAD,GAAQ,QAARA,EAA1BA,EAA4BE,cAAM,IAAAF,OAAA,EAAlCA,EAAoCvM,GAE/C,OAAO0M,eAAS1M,GAAM2M,OAAO3M,IAAO,GAOtC4M,iCAAiC,IAAAC,EAC/B,MAAMC,EAAyB,QAAfD,EAAG9O,KAAKuH,eAAO,IAAAuH,GAAc,QAAdA,EAAZA,EAAcL,oBAAY,IAAAK,GAAQ,QAARA,EAA1BA,EAA4BJ,cAAM,IAAAI,OAAA,EAAlCA,EAAoCC,WAEvD,OAAOJ,eAASI,GAAcH,OAAOG,IAAe,GAQtD,uBAAuB9M,GACrB,IACE,GAAIA,EAAK,EAAG,OAEZjC,KAAKgP,WAAY,QAEXC,eAAchN,GAAIiN,KAAKC,IAE3BnP,KAAKoP,uBAAiC,OAARD,QAAQ,IAARA,OAAQ,EAARA,EAAU9L,OAG1C4E,QAAQoH,IACHrP,KAAKsP,SAAS1O,KAAjB,8CACAZ,KAAKoP,wBAGPpP,KAAKuP,WAAa,EAClBvP,KAAKwP,WAAW,UACVxP,KAAKyP,UAAUxN,GACrB,MAAO+F,GACPC,QAAQC,MAAMF,GACd,QACAhI,KAAKgP,WAAY,KAKvB,gBACE,IAWE,GAVA/G,QAAQoH,IACHrP,KAAKsP,SAAS1O,KAAjB,wCACAZ,KAAKuH,QAAQkH,cAQXzO,KAAKuH,QAAQkH,aAAa7N,OAASZ,KAAKoI,cAQ1C,GAPAH,QAAQoH,IACN,GAAGrP,KAAKsP,SAAS1O,kDAAkDZ,KAAKuH,QAAQkH,aAAa7N,gCAAgCZ,KAAKoI,iBAMhIpI,KAAKuN,gBAAkB,GAAKvN,KAAK0N,kBAAoB,EAAG,KAAAgC,EAAAhG,EAI1DzB,QAAQoH,IACN,GAAGrP,KAAKsP,SAAS1O,iEAAiEZ,KAAKuN,2CAA2CvN,KAAK0N,oBAGzI,MAAMzL,EAAoB,QAAlByN,EAAc,QAAdhG,EAAG1J,KAAKS,cAAM,IAAAiJ,OAAA,EAAXA,EAAazH,UAAE,IAAAyN,KAAK,EAE/B,GAAIzN,IAAOjC,KAAK0N,iBACV1N,KAAK2H,wBAAwB3H,KAAK0N,yBAC9B1N,KAAK2P,qBAAqB3P,KAAK0N,sBAElC,CACL,MAAMqB,EAAa/O,KAAK0N,iBAGtB1N,KAAK8H,6BACH9H,KAAKoI,cACLnG,EACA8M,UAGI/O,KAAK4P,gCAAgC3N,EAAI8M,QAG9C,CAIL,IAAI9M,EAAKjC,KAAK6P,gCACV5N,EAAK,IACPA,EAAK,GAGP,MAAM8M,EAAa/O,KAAK8P,oCACxB7H,QAAQoH,IACN,GAAGrP,KAAKsP,SAAS1O,0DAA0DqB,kBAAmB8M,MAM5FA,GAAc,GAChB9G,QAAQoH,IACHrP,KAAKsP,SAAS1O,KAAjB,oDACAmO,SAGI/O,KAAK+P,eAAehB,GAGxB/O,KAAK8H,6BACH9H,KAAKoI,cACLnG,EACA8M,UAGI/O,KAAK4P,gCAAgC3N,EAAI8M,KAGjD9G,QAAQoH,IACHrP,KAAKsP,SAAS1O,KAAjB,2CACAqB,SAGIjC,KAAK+P,eAAe9N,GAEtBjC,KAAK2H,wBAAwB1F,UACzBjC,KAAK2P,qBAAqB1N,QAIjC,CAML,MAAM+N,EAAUhQ,KAAKuO,kBACfQ,EAAa/O,KAAK6O,iCAExB5G,QAAQoH,IACN,GAAGrP,KAAKsP,SAAS1O,4BAA4BoP,kBAAwBjB,MAGvE,MAAMkB,EAAelB,GAAc,EAAIA,EAAaiB,EAChDC,GAAgB,IAClBhI,QAAQoH,IACN,GAAGrP,KAAKsP,SAAS1O,kDAAkDqP,WAE/DjQ,KAAK+P,eAAeE,KAG9B,MAAOjI,GACPhI,KAAKkQ,YAAYlI,KAIrBmI,MAAO,CAML,aAAaC,GACX,IACE,MAAMnO,EAAc,OAATmO,QAAS,IAATA,OAAS,EAATA,EAAWnO,GAEtBgG,QAAQoH,IACN,SAASrP,KAAKsP,SAAS1O,kBAAkBqB,gCACzCjC,KAAKuH,QAAQkH,cAGf,MAAMuB,EAAUhQ,KAAKuO,kBACfQ,EAAa/O,KAAK6O,iCAMxB,GAJA5G,QAAQoH,IACN,SAASrP,KAAKsP,SAAS1O,kBAAkBqB,gBAAiB+N,kBAAwBjB,MAGhFA,GAAc,EAAG,KAAAsB,EAAAjG,EACnB,MAAMvC,EAAgC,QAAxBwI,EAAc,QAAdjG,EAAGpK,KAAKS,cAAM,IAAA2J,OAAA,EAAXA,EAAavC,gBAAQ,IAAAwI,KAAK,EAO3C,GANItB,IAAelH,GACjBI,QAAQoH,IACN,SAASrP,KAAKsP,SAAS1O,kBAAkBqB,kBAAmB8M,mBAA4BlH,MAIxFkH,IAAe/O,KAAK0N,iBAItB,YAHAzF,QAAQoH,IACN,cAAcrP,KAAKsP,SAAS1O,kBAAkBqB,yBAA0B8M,gCAAyC/O,KAAK0N,oBAK1HzF,QAAQoH,IACN,SAASrP,KAAKsP,SAAS1O,kBAAkBqB,6CACzC8M,SAGI/O,KAAK+P,eAAehB,OACrB,CAOL,GANIiB,IAAY/N,GACdgG,QAAQE,KACN,SAASnI,KAAKsP,SAAS1O,kBAAkBqB,eAAgB+N,aAAmB/N,MAI5E+N,IAAYhQ,KAAK0N,iBAInB,YAHAzF,QAAQoH,IACN,cAAcrP,KAAKsP,SAAS1O,kBAAkBqB,sBAAuB+N,gCAAsChQ,KAAK0N,oBAKpHzF,QAAQoH,IACN,SAASrP,KAAKsP,SAAS1O,kBAAkBqB,0CACzC+N,SAGIhQ,KAAK+P,eAAeC,IAE5B,MAAOhI,GACPhI,KAAKkQ,YAAYlI,KAQrB,oBACE,IACEC,QAAQoH,IACN,SAASrP,KAAKsP,SAAS1O,0CACvBZ,KAAK0N,kBAEH1N,KAAK0N,kBAAoB,SAGrB1N,KAAKsQ,iBAAiBtQ,KAAK0N,kBAEnC,MAAO1F,GACPhI,KAAKkQ,YAAYlI,KAIrB,aAAauI,EAAIC,GAAM,IAAAC,GAGN,QAAXA,EAAK,OAAJD,QAAI,IAAJA,OAAI,EAAJA,EAAM5P,YAAI,IAAA6P,IAAIxQ,OAAYyQ,UAAYzQ,OAAYyQ,SACrD1Q,KAAK2Q,uBAAsB,SACrB3Q,KAAKsQ,iBAAiBtQ,KAAK0N,oBAUrC,iBAAiBkD,EAAUC,GACrBD,IAAaE,OAAWC,MAAQF,IAAaC,OAAWrK,MACrDiB,eAAmB1H,KAAKS,eACrBT,KAAKsQ,iBAAiBtQ,KAAK0N,oBAQvC,sBACM1N,KAAKgR,gBACPhR,KAAK2Q,uBAAsB,SACrB3Q,KAAKsQ,iBAAiBtQ,KAAK0N","file":"js/chunk-529f1a4e.946d80d6.js","sourcesContent":["// services\r\nimport { isStateOwner } from \"@/services/record/recordService\";\r\n\r\n// model\r\nimport { featureStatus } from \"@/model/features/featuresModel\";\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapGetters } = createNamespacedHelpers(\"user\");\r\n\r\nimport { publicAccessMixin } from \"@/mixins/public/publicAccessMixin\";\r\n\r\n/**\r\n * Encapsulate Questys principal\r\n */\r\nexport const principalMixin = {\r\n mixins: [publicAccessMixin],\r\n computed: {\r\n ...mapGetters({\r\n principal: \"principal\",\r\n findFeature: \"findFeature\",\r\n isAvailableApplicationModule: \"isAvailableApplicationModule\"\r\n }),\r\n\r\n /**\r\n * compute whether workflow projects module is available (licensed, supported, enabled)\r\n * @return {boolean} true if workflow projects module is available\r\n */\r\n isAvailableProjectsModule() {\r\n return this.isAvailableApplicationModule(moduleNames.Projects);\r\n },\r\n\r\n /**\r\n * compute whether workflow my inbox (tasks) module is available (licensed, supported, enabled)\r\n * @return {boolean} true if workflow my inbox (tasks) module is available\r\n */\r\n isAvailableMyInboxModule() {\r\n return this.isAvailableApplicationModule(moduleNames.Tasks);\r\n },\r\n\r\n /**\r\n * compute whether Agenda module is available (licensed, supported, enabled)\r\n * @return {boolean} true if Agenda module is available\r\n */\r\n isAvailableAgendaModule() {\r\n return this.isAvailableApplicationModule(moduleNames.Agenda);\r\n }\r\n },\r\n methods: {\r\n /**\r\n * determines whether the current user (principal) is State Owner of specified record\r\n * @param {{id: number, name: string, stateOwnerId: number}} record\r\n * @return {boolean} returns true if current user (principal) is State Owner of specified record\r\n */\r\n isUserStateOwner(record) {\r\n return isStateOwner(record, this.principal);\r\n },\r\n\r\n /**\r\n * is Available Feature\r\n * @param {string} name Feature name\r\n * @return {boolean} true if Feature is Available (supported, licenced, released)\r\n */\r\n isAvailableFeature(name) {\r\n const status = this.featureStatus(name);\r\n return status.supported && status.licenced && status.released;\r\n },\r\n\r\n /**\r\n * get feature Status\r\n * @param name\r\n * @return {{licenced: boolean, released: boolean, statusText: string, supported: boolean, notSupportedReason: string}}\r\n */\r\n featureStatus(name) {\r\n let feature = this.findFeature(name);\r\n if (!feature) {\r\n feature = {\r\n name: name,\r\n used: 1,\r\n total: 1\r\n };\r\n }\r\n return featureStatus(feature);\r\n }\r\n }\r\n};\r\n","// model\r\nimport { recordState } from \"@/model/record/recordModel\";\r\nimport { colorRecordNewClass } from \"@/model/record/recordModel\";\r\n\r\n// plugins\r\nimport { createFontAwesomeSolidIcon, fasIconName } from \"@/plugins/fontawesome\";\r\n\r\n// design\r\nimport { colorTheme } from \"@/design/colors/mdColors\";\r\nimport { iconAsterisk, iconInfo } from \"@/design/icon/iconConst\";\r\n\r\n// mixins\r\nimport { recordAttributeMixin } from \"@/mixins/shared/record/recordAttributeMixin\";\r\nimport { recordStateColorMixin } from \"@/mixins/shared/record/recordStateColorMixin\";\r\n\r\nexport const badgeableRecordMixin = {\r\n mixins: [recordAttributeMixin, recordStateColorMixin],\r\n methods: {\r\n /**\r\n * Show Record Badge\r\n * @param {{id:number, isReadOnly:boolean, isLocked:boolean}} record\r\n * @param {boolean} infoOnly display information Badge\r\n * @return {boolean}\r\n */\r\n showRecordBadge(record, infoOnly = false) {\r\n //return !!this.badgeRecordIcon(record, infoOnly);\r\n return (\r\n !!this.badgeRecordFontAwesomeIcon(record, infoOnly)?.iconName &&\r\n !this.isHistoryMode\r\n );\r\n },\r\n /**\r\n * Badge Record Icon\r\n * @param {{id:number, isReadOnly:boolean, isLocked:boolean}} record\r\n * @param {boolean} infoOnly display information Badge icon\r\n * @return {string|undefined}\r\n */\r\n badgeRecordIcon(record, infoOnly = false) {\r\n if (infoOnly) {\r\n return iconInfo;\r\n }\r\n\r\n return (record?.id ?? -1) < 0\r\n ? iconAsterisk\r\n : this.recordAttributeIcon(record);\r\n },\r\n /**\r\n * badge Record Font Awesome Icon\r\n * @param record\r\n * @param {boolean} infoOnly display information Badge icon\r\n * @return {{iconName: string, prefix: string}|undefined}\r\n */\r\n badgeRecordFontAwesomeIcon(record, infoOnly = false) {\r\n if (infoOnly) {\r\n return createFontAwesomeSolidIcon(fasIconName.info);\r\n }\r\n\r\n if ((record?.id ?? -1) < 0) {\r\n return createFontAwesomeSolidIcon(fasIconName.asterisk);\r\n }\r\n\r\n return this.recordAttributeFontAwesomeIcon(record);\r\n },\r\n /**\r\n * Badge Record Color\r\n * @param {{id:number, isReadOnly:boolean, isLocked:boolean, stateId:number}} record\r\n * @param {boolean} infoOnly display information Badge\r\n * @return {string|*|undefined}\r\n */\r\n badgeRecordColor(record, infoOnly = false) {\r\n if (infoOnly) {\r\n return colorTheme.info;\r\n }\r\n\r\n if ((record?.id ?? -1) < 0) {\r\n return colorRecordNewClass;\r\n }\r\n\r\n return (record?.stateId ?? -1) === recordState.checkedOut\r\n ? this.recordStateColor(record)\r\n : this.recordAttributeColor(record);\r\n }\r\n }\r\n};\r\n","import {\r\n direction,\r\n size,\r\n Spacing,\r\n spacingType\r\n} from \"@/design/spacing/Spacing\";\r\n\r\nexport const spaceableMixin = {\r\n data() {\r\n return {\r\n spacingDirection: direction,\r\n spacingSize: size,\r\n spacingType: spacingType\r\n };\r\n },\r\n methods: {\r\n spacingClass(spacingDirection = direction.right, spacingSize = size.size2) {\r\n return new Spacing(\r\n spacingType.margin,\r\n spacingDirection,\r\n spacingSize\r\n ).getClassSpacing();\r\n }\r\n }\r\n};\r\n","import {\r\n Color,\r\n colorMD,\r\n variantNumber,\r\n variantType\r\n} from \"@/design/colors/Color\";\r\n\r\n/**\r\n * Get Material Design folder Color\r\n * @returns {{name:string, variant: string, variantNumber:number}}\r\n */\r\nconst folderColor = new Color(\r\n colorMD.yellow,\r\n variantType.darken,\r\n variantNumber.n2\r\n);\r\n\r\n/**\r\n * Get Material Design compound document Color\r\n */\r\nconst documentColor = new Color(\r\n colorMD.indigo,\r\n variantType.darken,\r\n variantNumber.n1\r\n);\r\n\r\n/**\r\n * Folder Color Class\r\n * @returns {string|*}\r\n */\r\nconst folderColorClass = folderColor.getClassColor();\r\n\r\n/**\r\n * Compound document Color Class\r\n * @type {string|*}\r\n */\r\nconst documentColorClass = documentColor.getClassColor();\r\n\r\nexport { folderColor, documentColor, folderColorClass, documentColorClass };\r\n","// model\r\nimport { recordType, findRecordTypeIcon } from \"@/model/record/recordModel\";\r\nimport {\r\n documentColorClass,\r\n folderColorClass\r\n} from \"@/model/folder/folderModel\";\r\nimport { findFileTypeIcon } from \"@/model/record/fileModel\";\r\n\r\n// mixins\r\nimport { menuItemSettingsMixin } from \"../base/settings/menuItemSettingsMixin\";\r\n\r\nexport const recordIconMixin = {\r\n mixins: [menuItemSettingsMixin],\r\n methods: {\r\n /**\r\n * Get record Icon name\r\n * @param {{recordTypeId:number, children:number, extension:string}} record\r\n * @return {string|string}\r\n */\r\n recordIcon(record) {\r\n if (!record) {\r\n return undefined;\r\n }\r\n switch (record.recordTypeId) {\r\n // case recordType.FOLDER:\r\n // case recordType.DOCUMENT: {\r\n // return (record?.children ?? 0) > 0\r\n // ? iconFolderPlus\r\n // : findRecordTypeIcon(type);\r\n // }\r\n // case recordType.SECTION: {\r\n // return (record?.children ?? 0) > 0\r\n // ? iconAgendaSectionPlus\r\n // : findRecordTypeIcon(type);\r\n // }\r\n case recordType.FILE: {\r\n return findFileTypeIcon(record.extension);\r\n }\r\n default: {\r\n return findRecordTypeIcon(record.recordTypeId);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Get record Type Icon\r\n * @param {Number|number} typeId\r\n * @return {string}\r\n */\r\n recordTypeIcon(typeId) {\r\n return findRecordTypeIcon(typeId);\r\n },\r\n\r\n /**\r\n * Get record Icon Color Class\r\n * @param {{recordTypeId:number}} record\r\n * @return {undefined|string}\r\n */\r\n recordIconColorClass(record) {\r\n return record\r\n ? this.recordTypeIconColorClass(\r\n record?.recordTypeId ?? recordType.RECORD\r\n )\r\n : undefined;\r\n },\r\n\r\n /**\r\n * record Type Icon Color Class\r\n * @param {Number|number} typeId\r\n * @return {undefined|string}\r\n */\r\n recordTypeIconColorClass(typeId) {\r\n switch (typeId) {\r\n case recordType.FOLDER:\r\n case recordType.MEETING:\r\n case recordType.SECTION:\r\n case recordType.ITEM: {\r\n return folderColorClass;\r\n }\r\n case recordType.DOCUMENT: {\r\n return documentColorClass;\r\n }\r\n case recordType.RECORD: {\r\n return undefined;\r\n }\r\n default: {\r\n return this.menuItemColorClass;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","// model\r\nimport {\r\n colorRecordCheckedInClass,\r\n colorRecordCheckedOutClass,\r\n colorRecordCreatedClass,\r\n colorRecordLockedClass,\r\n colorRecordNewClass,\r\n colorMeetingPublishedClass,\r\n colorAgendaItemSubmittedClass,\r\n recordState\r\n} from \"@/model/record/recordModel\";\r\n\r\n// design\r\nimport { Color } from \"@/design/colors/Color\";\r\n\r\n// design\r\nimport { colorMD, variantNumber, variantType } from \"@/design/colors/mdColors\";\r\n\r\n// mixins\r\nimport { principalMixin } from \"../user/principalMixin\";\r\n\r\nexport const recordStateColorMixin = {\r\n mixins: [principalMixin],\r\n methods: {\r\n /**\r\n * Record State Color\r\n * @param record\r\n * @return {string|undefined}\r\n */\r\n recordStateColor(record) {\r\n switch (record?.stateId ?? -1) {\r\n case recordState.checkedOut: {\r\n return this.isUserStateOwner(record)\r\n ? colorRecordCheckedOutClass\r\n : colorRecordLockedClass;\r\n }\r\n case recordState.checkedIn: {\r\n return colorRecordCheckedInClass;\r\n }\r\n case recordState.new: {\r\n return colorRecordNewClass;\r\n }\r\n case recordState.created: {\r\n return colorRecordCreatedClass;\r\n }\r\n case recordState.published: {\r\n return colorMeetingPublishedClass;\r\n }\r\n case recordState.submitted: {\r\n return colorAgendaItemSubmittedClass;\r\n }\r\n default: {\r\n return undefined;\r\n }\r\n }\r\n },\r\n /**\r\n * Record State Text Color\r\n * @param record\r\n * @return {string|undefined}\r\n */\r\n recordStateTextColor(record) {\r\n if (!record) return undefined;\r\n\r\n return new Color(\r\n colorMD.white,\r\n variantType.lighten,\r\n variantNumber.n3\r\n ).getClassColor();\r\n }\r\n }\r\n};\r\n","// services\r\nimport { isRecordExpandable } from \"@/services/record/recordService\";\r\n\r\n// mixins\r\nimport { moduleItemNavigatable } from \"@/mixins/shared/navigatable/moduleItemNavigatable\";\r\nimport {\r\n createModuleChildRecordContentRouteLocation,\r\n createModuleChildRecordShortcutContentRouteLocation,\r\n createModuleRecordRouteLocation\r\n} from \"@/router/solution/solutionRoutes\";\r\n\r\n/**\r\n * Contains options (adhere to the DRY principle) & code re-usability\r\n * for components that needs Application module record navigatable behavior\r\n */\r\nexport const moduleRecordNavigatable = {\r\n mixins: [moduleItemNavigatable],\r\n methods: {\r\n /**\r\n * navigate To Module Record\r\n * @param record\r\n * @return {Promise}\r\n */\r\n async navigateToModuleRecord(record) {\r\n if (record && this.canNavigateToModuleRecord(record)) {\r\n await this.$router.push(this.createModuleRecordRouteLocation(record));\r\n }\r\n },\r\n\r\n /**\r\n * can Navigate To Module Record\r\n * @param {{id:number, name:string, categoryId:number, parentId:number, children:number, createdBy:string, creationDate:string, isDeleted:boolean, isDraft:boolean, isComposite:boolean, isLink:boolean, isLocked:boolean, isReadOnly:boolean, recordTypeId:number, stateId:number, state:string, version:number, versionDate:string, versionOwner:string, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @return {boolean|Boolean}\r\n */\r\n canNavigateToModuleRecord(record) {\r\n return isRecordExpandable(record)\r\n ? this.canNavigateToModuleItem(record?.id ?? -1)\r\n : this.canNavigateToModuleChildRecord(record);\r\n },\r\n\r\n /**\r\n * navigate To Module Child Record By id\r\n * @param {Number|number} id record id\r\n * @param {Number|number} parentId parent record id\r\n * @return {Promise}\r\n */\r\n async navigateToModuleChildRecordById(id, parentId) {\r\n if (!this.canNavigateToChildRecordById(id, parentId)) {\r\n console.warn(\r\n `Couldn't navigate to ${this.appModuleName} by id: ${id} and expanded Id: ${parentId}`\r\n );\r\n return;\r\n }\r\n\r\n try {\r\n await this.$router.push(\r\n this.createModuleChildRecordRouteLocationById(id, parentId)\r\n );\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * create Module Child Record Content Route\r\n * @param {{id:number, name:string, categoryId:number, parentId:number, children:number, createdBy:string, creationDate:string, isDeleted:boolean, isDraft:boolean, isComposite:boolean, isLink:boolean, isLocked:boolean, isReadOnly:boolean, recordTypeId:number, stateId:number, state:string, version:number, versionDate:string, versionOwner:string, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @return {{name: (String|string), params: {expandedId: (Number|number), id: (Number|number)}}}\r\n */\r\n createModuleChildRecordContentRouteLocation(record) {\r\n return record.isLink ?? false\r\n ? createModuleChildRecordShortcutContentRouteLocation(\r\n this.appModuleName,\r\n record?.id ?? -1,\r\n record?.parentId ?? -1\r\n )\r\n : createModuleChildRecordContentRouteLocation(\r\n this.appModuleName,\r\n record?.id ?? -1,\r\n record?.parentId ?? -1\r\n );\r\n },\r\n\r\n /**\r\n * create Module Record Route Location\r\n * @param {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @return {{name: (String|string), params: {id}}|{name: (String|string), params: {expandedId: (Number|number), id: (Number|number)}}}\r\n */\r\n createModuleRecordRouteLocation(record) {\r\n return createModuleRecordRouteLocation(this.appModuleName, record);\r\n },\r\n\r\n /**\r\n * create Module Child Record Target Route\r\n * @param {Number|number} id Record id\r\n * @param {Number|number} parentId parent record id\r\n * @return {{name: (String|string), params: {expandedId: (Number|number), id: (Number|number)}}}\r\n */\r\n createModuleChildRecordRouteLocationById(id, parentId) {\r\n return createModuleChildRecordContentRouteLocation(\r\n this.appModuleName,\r\n id,\r\n parentId\r\n );\r\n },\r\n\r\n /**\r\n * can Navigate To Current Module child Record\r\n * @param {{id:number, name:string, categoryId:number, parentId:number, children:number, createdBy:string, creationDate:string, isDeleted:boolean, isDraft:boolean, isComposite:boolean, isLink:boolean, isLocked:boolean, isReadOnly:boolean, recordTypeId:number, stateId:number, state:string, version:number, versionDate:string, versionOwner:string, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @return {Boolean|boolean}\r\n */\r\n canNavigateToModuleChildRecord(record) {\r\n return this.canNavigateToChildRecordById(\r\n this.appModuleName,\r\n record?.id ?? -1,\r\n record?.parentId ?? -1\r\n );\r\n },\r\n\r\n /**\r\n * can Navigate To Module Child Record By id\r\n * @param {Number|Number} id record id\r\n * @param {Number|Number} parentId parent record id\r\n * @return {boolean} true if navigatable To Module Tree Item\r\n */\r\n canNavigateToModuleChildRecordById(id, parentId) {\r\n return this.canNavigateToChildRecordById(\r\n this.appModuleName,\r\n id,\r\n parentId\r\n );\r\n }\r\n }\r\n};\r\n","// design\r\nimport {\r\n iconLock,\r\n iconReadOnly,\r\n iconCheck,\r\n iconTrash,\r\n iconEdit,\r\n iconGlobe,\r\n iconPostMeeting,\r\n iconAccessDenied,\r\n iconFileCheckOut,\r\n iconOnHold,\r\n iconError,\r\n iconWarning\r\n} from \"@/design/icon/iconConst\";\r\n\r\n// plugins\r\nimport { createFontAwesomeSolidIcon, fasIconName } from \"@/plugins/fontawesome\";\r\n\r\n// model\r\nimport {\r\n colorRecordDeletedClass,\r\n colorRecordLockedClass,\r\n colorRecordReadOnlyClass,\r\n colorRecordCheckedOutClass,\r\n recordState,\r\n colorMeetingPublishedClass,\r\n colorAgendaItemSubmittedClass,\r\n colorMeetingPostedClass,\r\n colorRecordInheritedReadOnlyClass\r\n} from \"@/model/record/recordModel\";\r\nimport { IsCheckedOutForDigitalSigning } from \"@/services/record/recordService\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapGetters } = createNamespacedHelpers(\"user\");\r\n\r\nexport const recordAttributeMixin = {\r\n data() {\r\n return {\r\n faIconName: fasIconName\r\n };\r\n },\r\n computed: {\r\n ...mapGetters({\r\n principal: \"principal\"\r\n })\r\n },\r\n methods: {\r\n hasAttributeIcon(record) {\r\n if (!record) return false;\r\n\r\n if (record.isLocked) return true;\r\n if (record.isReadOnly) return true;\r\n if (record.isDeleted) return true;\r\n if (\r\n (record?.localFile?.hasFile &&\r\n record.stateId !== recordState.checkedOut) ??\r\n false\r\n ) {\r\n return true;\r\n }\r\n\r\n switch (record.stateId) {\r\n case recordState.checkedOut: {\r\n return true;\r\n }\r\n case recordState.published:\r\n case recordState.submitted: {\r\n return true;\r\n }\r\n default: {\r\n return false;\r\n }\r\n }\r\n },\r\n recordAttributeIcon(record) {\r\n if (!record) return \"undefined\";\r\n\r\n // record.state takes priority\r\n switch (record.stateId) {\r\n case recordState.checkedOut: {\r\n return iconCheck;\r\n }\r\n case recordState.posted: {\r\n return iconPostMeeting;\r\n }\r\n case recordState.published:\r\n case recordState.submitted: {\r\n return iconGlobe;\r\n }\r\n }\r\n\r\n if (record.isLocked) return iconLock;\r\n if (record.isReadOnly) return iconReadOnly;\r\n if (record.isDeleted) return iconTrash;\r\n if (\r\n (record?.localFile?.hasFile &&\r\n record.stateId !== recordState.checkedOut) ??\r\n false\r\n ) {\r\n return iconEdit;\r\n }\r\n\r\n if (!(this.record?.canUpdate ?? false)) {\r\n // accessDenied, checkedOut, inherited, invalidOperation, locked, notInitialized, onHold, readOnly, retained\r\n const reason = this.record?.cannotUpdateReason;\r\n if (reason) {\r\n if (reason.accessDenied) return iconAccessDenied;\r\n else if (reason.checkedOut) return iconFileCheckOut;\r\n else if (reason.locked) return iconLock;\r\n else if (reason.readOnly) return iconReadOnly;\r\n else if (reason.onHold) return iconOnHold;\r\n else if (reason.notInitialized) return iconError;\r\n else if (reason.retained) return iconWarning;\r\n else if (reason.invalidOperation) return iconError;\r\n }\r\n }\r\n\r\n return undefined;\r\n },\r\n /**\r\n * record Attribute Font Awesome Icon\r\n * @param record\r\n * @return {{iconName: string, prefix: string}|undefined}\r\n */\r\n recordAttributeFontAwesomeIcon(record) {\r\n if (!record) return createFontAwesomeSolidIcon(\"\");\r\n\r\n // record.state takes priority\r\n switch (record.stateId) {\r\n case recordState.checkedOut: {\r\n return IsCheckedOutForDigitalSigning(record)\r\n ? createFontAwesomeSolidIcon(fasIconName.signOut)\r\n : createFontAwesomeSolidIcon(fasIconName.check);\r\n }\r\n case recordState.posted: {\r\n return createFontAwesomeSolidIcon(fasIconName.clock);\r\n }\r\n case recordState.published:\r\n case recordState.submitted: {\r\n return createFontAwesomeSolidIcon(fasIconName.globe);\r\n }\r\n }\r\n\r\n if (record.isLocked) return createFontAwesomeSolidIcon(fasIconName.lock);\r\n if (record.isReadOnly) return createFontAwesomeSolidIcon(fasIconName.eye);\r\n if (record.isDeleted)\r\n return createFontAwesomeSolidIcon(fasIconName.trash);\r\n if (\r\n (record?.localFile?.hasFile &&\r\n record.stateId !== recordState.checkedOut) ??\r\n false\r\n )\r\n return createFontAwesomeSolidIcon(fasIconName.pencil);\r\n\r\n if (!(this.record?.canUpdate ?? false)) {\r\n // accessDenied, checkedOut, inherited, invalidOperation, locked, notInitialized, onHold, readOnly, retained\r\n const reason = this.record?.cannotUpdateReason;\r\n if (reason) {\r\n if (reason.accessDenied)\r\n return createFontAwesomeSolidIcon(fasIconName.eyeSlash);\r\n else if (reason.checkedOut)\r\n return createFontAwesomeSolidIcon(fasIconName.check);\r\n else if (reason.locked)\r\n return createFontAwesomeSolidIcon(fasIconName.lock);\r\n else if (reason.readOnly)\r\n return createFontAwesomeSolidIcon(fasIconName.eye);\r\n else if (reason.onHold)\r\n return createFontAwesomeSolidIcon(fasIconName.hand);\r\n else if (reason.notInitialized)\r\n return createFontAwesomeSolidIcon(fasIconName.xmark);\r\n else if (reason.retained)\r\n return createFontAwesomeSolidIcon(fasIconName.triangleExclamation);\r\n else if (reason.invalidOperation)\r\n return createFontAwesomeSolidIcon(fasIconName.xmark);\r\n }\r\n }\r\n\r\n return createFontAwesomeSolidIcon(\"\");\r\n },\r\n recordAttributeColor(record) {\r\n if (!record) {\r\n return undefined;\r\n }\r\n\r\n // record.state takes priority\r\n switch (record.stateId) {\r\n case recordState.posted:\r\n return colorMeetingPostedClass;\r\n case recordState.published: {\r\n return colorMeetingPublishedClass;\r\n }\r\n case recordState.submitted: {\r\n return colorAgendaItemSubmittedClass;\r\n }\r\n }\r\n\r\n if (record.isReadOnly) return colorRecordReadOnlyClass;\r\n if (record.isLocked) return colorRecordLockedClass;\r\n if (record.isDeleted) return colorRecordDeletedClass;\r\n if (\r\n ((record.localFile?.hasFile ?? false) &&\r\n (record.stateId ?? -1) !== recordState.checkedOut) ??\r\n false\r\n ) {\r\n return colorRecordCheckedOutClass;\r\n }\r\n\r\n if (!(this.record?.canUpdate ?? false)) {\r\n return colorRecordInheritedReadOnlyClass;\r\n }\r\n\r\n return undefined;\r\n }\r\n }\r\n};\r\n","// model\r\nimport {\r\n findRecordType,\r\n recordMode,\r\n recordType\r\n} from \"@/model/record/recordModel\";\r\n\r\n// utils\r\nimport { itemCount, isNumber } from \"@/utils\";\r\n\r\n// services\r\nimport {\r\n fullRecordName,\r\n isRecordExpandable\r\n} from \"@/services/record/recordService\";\r\nimport {\r\n notImplementedComputed,\r\n notImplementedMethod\r\n} from \"@/services/error/errorMessages\";\r\n\r\n// design\r\nimport {\r\n iconFolder,\r\n iconFolderUpload,\r\n iconChevronDown,\r\n iconArrowUpCircle,\r\n iconArrowUpThin,\r\n iconFolderRefresh\r\n} from \"@/design/icon/iconConst\";\r\n\r\n// mixins\r\nimport { recordIconMixin } from \"@/mixins/shared/record/recordIconMixin\";\r\nimport { spaceableMixin } from \"@/mixins/shared/space/spaceableMixin\";\r\nimport { principalMixin } from \"@/mixins/shared/user/principalMixin\";\r\nimport { moduleRecordNavigatable } from \"@/mixins/shared/navigatable/moduleRecordNavigatable\";\r\nimport { countChildren } from \"@/services/api/apiContent\";\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n/**\r\n * Contains options (adhere to the DRY principle) & code re-usability\r\n * for components that needs Application module browsable record navigatable behavior\r\n */\r\nexport const browsableFolderMixin = {\r\n mixins: [\r\n recordIconMixin,\r\n spaceableMixin,\r\n principalMixin,\r\n moduleRecordNavigatable\r\n ],\r\n data() {\r\n return {\r\n iconFolder: iconFolder,\r\n iconFolderUpload: iconFolderUpload,\r\n iconArrowUpCircle: iconArrowUpCircle,\r\n iconArrowUpThin: iconArrowUpThin,\r\n iconChevronDown: iconChevronDown,\r\n iconFetchRecords: iconFolderRefresh\r\n };\r\n },\r\n computed: {\r\n /**\r\n * Abstract get breadcrumbs\r\n * @return {*[]}\r\n */\r\n breadcrumbs() {\r\n return [];\r\n },\r\n /**\r\n * Get Breadcrumb Count\r\n * @return {Number|number}\r\n */\r\n breadcrumbCount() {\r\n return itemCount(this.breadcrumbs);\r\n },\r\n\r\n /**\r\n * last Breadcrumb\r\n * @return {*|undefined}\r\n */\r\n lastBreadcrumb() {\r\n return this.breadcrumbCount > 0\r\n ? this.breadcrumbs[this.breadcrumbCount - 1]\r\n : undefined;\r\n },\r\n\r\n /**\r\n * Get selected Breadcrumb id\r\n * @return {Number|number}\r\n */\r\n lastBreadcrumbId() {\r\n return this.lastBreadcrumb?.id ?? -1;\r\n },\r\n\r\n /**\r\n * Abstract\r\n * selected record\r\n * @return {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n record() {\r\n console.warn(`${notImplementedComputed(\"record\")}`);\r\n return undefined;\r\n }\r\n },\r\n methods: {\r\n /**\r\n * list Items\r\n * @param {Number|number} parentId\r\n * @return {Promise}\r\n */\r\n async listItems(parentId) {\r\n console.warn(notImplementedMethod(`listItems() parent: ${parentId}`));\r\n },\r\n\r\n /**\r\n * build Route To Paren tFolder\r\n * @return {undefined|{name: String|string, params: {id: string}}}\r\n */\r\n buildRouteToParentFolder() {\r\n return this.createModuleItemContentRoute(this.lastBreadcrumbId);\r\n },\r\n\r\n /**\r\n * is Expandable Record\r\n * @param {{id:number, name:string, categoryId:number, parentId:number, children:number, createdBy:string, creationDate:string, isDeleted:boolean, isDraft:boolean, isComposite:boolean, isLink:boolean, isLocked:boolean, isReadOnly:boolean, recordTypeId:number, stateId:number, state:string, version:number, versionDate:string, versionOwner:string, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @return {boolean}\r\n */\r\n isExpandableRecord(record) {\r\n return isRecordExpandable(record);\r\n },\r\n\r\n /**\r\n * tooltip Selected Record\r\n * @param record\r\n * @return {string} tooltip text\r\n */\r\n tooltipSelectedRecord(record) {\r\n const type = findRecordType(record?.recordTypeId ?? recordType.RECORD)\r\n ?.name;\r\n\r\n return `Select ${type}: ${fullRecordName(record)}`;\r\n },\r\n\r\n /**\r\n * Get Full Record Name\r\n * @param {{id:number, name:string, categoryId:number, parentId:number, children:number, createdBy:string, creationDate:string, isDeleted:boolean, isDraft:boolean, isComposite:boolean, isLink:boolean, isLocked:boolean, isReadOnly:boolean, recordTypeId:number, stateId:number, state:string, version:number, versionDate:string, versionOwner:string, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @return {string} Full Record Name\r\n */\r\n fullRecordName(record) {\r\n return fullRecordName(record);\r\n },\r\n\r\n // /**\r\n // * Determines whether Module (Record) Item exists by its id\r\n // * @param {Number|number} id\r\n // * @return {Boolean|boolean}\r\n // */\r\n // existsModuleItem(id) {\r\n // return id === 0\r\n // ? true\r\n // : !!(this.items?.find(el => el.id === id) ?? undefined);\r\n // },\r\n\r\n /**\r\n * get current Route params.id\r\n * @return {number|number}\r\n */\r\n getRouteParamId() {\r\n const id = this.$router?.currentRoute?.params?.id;\r\n\r\n return isNumber(id) ? Number(id) : -1;\r\n },\r\n\r\n /**\r\n * get current Route params.expandedId\r\n * @return {number|number}\r\n */\r\n getCurrentRouteParamExpandedId() {\r\n const expandedId = this.$router?.currentRoute?.params?.expandedId;\r\n\r\n return isNumber(expandedId) ? Number(expandedId) : -1;\r\n },\r\n\r\n /**\r\n * Prepare Data to load the records List\r\n * @param id\r\n * @return {Promise}\r\n */\r\n async prepareNodesData(id) {\r\n try {\r\n if (id < 0) return;\r\n\r\n this.isLoading = true;\r\n\r\n await countChildren(id).then(response => {\r\n // Get and Set Expanded Record Children\r\n this.expandedRecordChildren = response?.data;\r\n });\r\n\r\n console.log(\r\n `${this.$options.name}.prepareNodesData() expandedRecordChildren:`,\r\n this.expandedRecordChildren\r\n );\r\n\r\n this.startIndex = 1; //Reset\r\n this.setRecords([]); // Reset records list\r\n await this.listItems(id);\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n },\r\n\r\n async created() {\r\n try {\r\n console.log(\r\n `${this.$options.name}.created() this.$router.currentRoute:`,\r\n this.$router.currentRoute\r\n );\r\n\r\n //\r\n // check currentRoute\r\n // if currentRoute is equal to this.appModuleName (no params - no record selected), then\r\n // try to auto-select (navigate to) a record\r\n //\r\n if (this.$router.currentRoute.name === this.appModuleName) {\r\n console.log(\r\n `${this.$options.name}.created() this.$router.currentRoute.name: ${this.$router.currentRoute.name} === this.appModuleName: ${this.appModuleName}`\r\n );\r\n\r\n //\r\n // try to use Folder store\r\n //\r\n if (this.breadcrumbCount > 0 && this.lastBreadcrumbId >= 0) {\r\n //\r\n // Folder store preserved, ensure Selected Item\r\n //\r\n console.log(\r\n `${this.$options.name}.created() (Folder store preserved) this.breadcrumbCount: ${this.breadcrumbCount}; this.lastBreadcrumbId: ${this.lastBreadcrumbId}`\r\n );\r\n\r\n const id = this.record?.id ?? -1;\r\n\r\n if (id === this.lastBreadcrumbId) {\r\n if (this.canNavigateToModuleItem(this.lastBreadcrumbId)) {\r\n await this.navigateToModuleItem(this.lastBreadcrumbId);\r\n }\r\n } else {\r\n const expandedId = this.lastBreadcrumbId;\r\n\r\n if (\r\n this.canNavigateToChildRecordById(\r\n this.appModuleName,\r\n id,\r\n expandedId\r\n )\r\n ) {\r\n await this.navigateToModuleChildRecordById(id, expandedId);\r\n }\r\n }\r\n } else {\r\n //\r\n // Folder store not preserved, so load from local store\r\n //\r\n let id = this.getStoredSelectedModuleItemId();\r\n if (id < 0) {\r\n id = 0;\r\n }\r\n\r\n const expandedId = this.getStoredSelectedModuleExpandedId();\r\n console.log(\r\n `${this.$options.name}.created() Folder store not preserved. Stored (id: ${id}; expandedId: ${expandedId})`\r\n );\r\n\r\n //\r\n // Navigate to Module Item (Folder Tree record)\r\n //\r\n if (expandedId >= 0) {\r\n console.log(\r\n `${this.$options.name}.created() set Breadcrumbs by stored expanded id:`,\r\n expandedId\r\n );\r\n\r\n await this.setBreadcrumbs(expandedId);\r\n\r\n if (\r\n this.canNavigateToChildRecordById(\r\n this.appModuleName,\r\n id,\r\n expandedId\r\n )\r\n ) {\r\n await this.navigateToModuleChildRecordById(id, expandedId);\r\n }\r\n } else {\r\n console.log(\r\n `${this.$options.name}.created() set Breadcrumbs by stored id:`,\r\n id\r\n );\r\n\r\n await this.setBreadcrumbs(id);\r\n\r\n if (this.canNavigateToModuleItem(id)) {\r\n await this.navigateToModuleItem(id);\r\n }\r\n }\r\n }\r\n } else {\r\n //\r\n // build UI (list drawer items), when this component is created using paramId & getCurrentRouteParamExpandedId\r\n // (setBreadcrumbs by corresponding breadcrumbId in f(paramId, expandedId))\r\n //\r\n\r\n const paramId = this.getRouteParamId();\r\n const expandedId = this.getCurrentRouteParamExpandedId();\r\n\r\n console.log(\r\n `${this.$options.name}.created() (paramId: ${paramId}, expandedId: ${expandedId})`\r\n );\r\n\r\n const breadcrumbId = expandedId >= 0 ? expandedId : paramId;\r\n if (breadcrumbId >= 0) {\r\n console.log(\r\n `${this.$options.name}.created() setBreadcrumbs by breadcrumbId: ${breadcrumbId}`\r\n );\r\n await this.setBreadcrumbs(breadcrumbId);\r\n }\r\n }\r\n } catch (e) {\r\n this.handleError(e);\r\n }\r\n },\r\n\r\n watch: {\r\n /**\r\n * watch selected record change\r\n * @param newRecord\r\n * @return {Promise}\r\n */\r\n async record(newRecord) {\r\n try {\r\n const id = newRecord?.id;\r\n\r\n console.log(\r\n `watch ${this.$options.name}.record(id:${id}) this.$router.currentRoute:`,\r\n this.$router.currentRoute\r\n );\r\n\r\n const paramId = this.getRouteParamId();\r\n const expandedId = this.getCurrentRouteParamExpandedId();\r\n\r\n console.log(\r\n `watch ${this.$options.name}.record(id:${id}) (paramId: ${paramId}, expandedId: ${expandedId})`\r\n );\r\n\r\n if (expandedId >= 0) {\r\n const parentId = this.record?.parentId ?? -1;\r\n if (expandedId !== parentId) {\r\n console.log(\r\n `watch ${this.$options.name}.record(id:${id}) expandedId: ${expandedId} !== parentId: ${parentId} `\r\n );\r\n }\r\n\r\n if (expandedId === this.lastBreadcrumbId) {\r\n console.log(\r\n `Exit watch ${this.$options.name}.record(id:${id}), since expandedId: ${expandedId} === this.lastBreadcrumbId: ${this.lastBreadcrumbId}`\r\n );\r\n return;\r\n }\r\n\r\n console.log(\r\n `watch ${this.$options.name}.record(id:${id}) going to set breadcrumbs by expandedId:`,\r\n expandedId\r\n );\r\n\r\n await this.setBreadcrumbs(expandedId);\r\n } else {\r\n if (paramId !== id) {\r\n console.warn(\r\n `watch ${this.$options.name}.record(id:${id}) paramId: ${paramId} !== id: ${id} `\r\n );\r\n }\r\n\r\n if (paramId === this.lastBreadcrumbId) {\r\n console.log(\r\n `Exit watch ${this.$options.name}.record(id:${id}), since paramId: ${paramId} === this.lastBreadcrumbId: ${this.lastBreadcrumbId}`\r\n );\r\n return;\r\n }\r\n\r\n console.log(\r\n `watch ${this.$options.name}.record(id:${id}) going to set breadcrumbs by paramId:`,\r\n paramId\r\n );\r\n\r\n await this.setBreadcrumbs(paramId);\r\n }\r\n } catch (e) {\r\n this.handleError(e);\r\n }\r\n },\r\n\r\n /**\r\n * watch breadcrumbs changes\r\n * @return {Promise}\r\n */\r\n async breadcrumbs() {\r\n try {\r\n console.log(\r\n `watch ${this.$options.name}.breadcrumbs this.lastBreadcrumbId:`,\r\n this.lastBreadcrumbId\r\n );\r\n if (this.lastBreadcrumbId >= 0) {\r\n // This is called every time expanded record is changed\r\n // TODO: Needs to be Confirmed\r\n await this.prepareNodesData(this.lastBreadcrumbId);\r\n }\r\n } catch (e) {\r\n this.handleError(e);\r\n }\r\n },\r\n\r\n async $route(to, from) {\r\n //This condition makes sure when we switch to Folder Tab from another ( Category,Project etc), data is updated\r\n // Todo: DISCUSS\r\n if ((from?.name ?? moduleNames.Folder) === moduleNames.Folder) {\r\n this.setRecordDeleteStatus(false);\r\n await this.prepareNodesData(this.lastBreadcrumbId);\r\n }\r\n },\r\n\r\n /**\r\n * When a new record is created, update expanded record children count\r\n * @param newValue\r\n * @param oldValue\r\n * @return {Promise}\r\n */\r\n async recordMode(newValue, oldValue) {\r\n if (newValue === recordMode.view && oldValue === recordMode.new) {\r\n if (!isRecordExpandable(this.record))\r\n await this.prepareNodesData(this.lastBreadcrumbId);\r\n }\r\n },\r\n\r\n /**\r\n * When a record is deleted, update list and update child count of record\r\n * @return {Promise}\r\n */\r\n async recordDeleted() {\r\n if (this.recordDeleted) {\r\n this.setRecordDeleteStatus(false);\r\n await this.prepareNodesData(this.lastBreadcrumbId);\r\n }\r\n }\r\n }\r\n};\r\n"],"sourceRoot":""}