{"version":3,"sources":["webpack:///./node_modules/react-select/async/dist/react-select.browser.cjs.js","webpack:///./app/components/AccountSelector/index.js","webpack:///./app/containers/SearchResults/ChangeImportanceModal.js","webpack:///./app/containers/MonitoredResources/constants.js","webpack:///./app/containers/MonitoredResources/reducer.js","webpack:///./app/containers/MonitoredResources/actions.js","webpack:///./app/containers/MonitoredResources/sagas.js","webpack:///./app/containers/MonitoredResources/selectors.js","webpack:///./app/containers/MonitoredResources/MonitoredResourcesFilter.js","webpack:///./app/containers/MonitoredResources/index.js"],"names":["_interopDefault","ex","Object","defineProperty","exports","value","_objectWithoutProperties","_extends","_classCallCheck","_createClass","_possibleConstructorReturn","_getPrototypeOf","_inherits","_assertThisInitialized","_defineProperty","React","React__default","__chunk_1","reactSelect","__chunk_3","defaultProps","cacheOptions","defaultOptions","filterOption","makeAsyncSelect","SelectComponent","_class","_temp","_Component","Async","props","_this","this","call","newValue","actionMeta","_this$props","onInputChange","inputValue","handleInputChange","lastRequest","setState","loadedInputValue","loadedOptions","isLoading","passEmptyOptions","optionsCache","request","state","loadOptions","options","mounted","Array","isArray","undefined","key","_this2","nextProps","select","focus","blur","callback","loader","then","_this3","_this$props2","_this$state","createElement","ref","_ref","Component","manageState","Select","default","triggerAsyncLimit","asyncSlice","AccountSelector","id","accounts","find","a","get","endsWith","Map","toJS","account","friendlyName","name","getAccountIdFromAccountSrn","srn","accountId","getAccountForAccountId","toLowerCase","hasTooltip","accountSrn","hasAccountNumber","data","lower","label","includes","selectedOptions","onChange","map","opt","getAccountDisplayName","filter","i","slice","sort","b","localeCompare","size","enableAsync","accountOptions","isEmpty","getOptionLabel","option","getAccountBadge","isClearable","creatable","styles","isMulti","isDisabled","disabled","getOptionValue","getNewOptionData","ChangeImportanceModal","importance","newImportance","toggle","setImportance","from","length","num","isOpen","handleChange","placeholder","color","onClick","close","GET_MONITORED_RESOURCES","SET_IMPORTANCE_MULTI","DISABLE_MONITORING_MULTI","initialState","fromJS","monitoredResources","error","isLoadingImportanceMulti","isLoadingDisableMonitoringMulti","handleActions","set","payload","getMonitoredResources","createAction","setMonitoredResources","setImportanceMulti","setImportanceMultiSuccess","disableMonitoringMulti","disableMonitoringMultiSuccess","setMonitoredResourcesError","monitoredResourcesSaga","client","getClient","filters","and","createdDate","push","join","cloud","tags","tag","query","forceFetch","fetchPolicy","gql","result","Resources","items","Error","resources","highestAlertSeverity","put","console","message","action","srns","level","queryString","forEach","mutate","mutation","all","takeLatest","selectMonitoredResourcesDomain","selectMonitoredResources","createSelector","List","selectIsLoading","selectIsLoadingImportanceMulti","selectIsLoadingDisableMonitoringMulti","selectHasError","FILTERS_AVAILABLE","MonitoredResourcesFilter","prevState","filterMenuExpanded","_","date","moment","subtract","format","currentFilters","filtersModified","finalFilters","filterType","setFilter","refetchResources","toggleFilterBubble","clearFilters","serverTags","sortBy","additionalOptions","tagStr","concat","filterList","gridArea","paddingTop","paddingLeft","fontFamily","fontSize","marginRight","marginLeft","filterTitle","marginBottom","display","filterHeader","width","alignItems","justifyContent","padding","filterPanelFooter","margin","Popover","onToggle","filtersEmpty","Icon","style","fa","theme","emphasis","fontWeight","TextLink","cursor","handleCreatedDateFilter","getAccountSelectorValue","handleAccountFilterChange","handleCloudFilterChange","handleTagFilterChange","getTagOptions","paddingRight","Button","applyFilters","themeable","SectionHeader","SquareLoadingAnimation","MonitoredResources","selectedResources","type","nav","getNodeViewPushParams","search","nodeId","Tooltip","trigger","anchor","BorderlessButton","neutralMedium","tooltipContent","tooltip","position","showPanel","newFilters","keys","exists","evnt","api","getSelectedRows","row","isImportanceModalOpen","hasPermission","userHasPermission","permissionName","fetchTags","container","gridTemplateColumns","overflow","height","containerWithPanel","gridTemplateAreas","wrapper","gridTemplateRows","flexDirection","loading","prevProps","updateData","errorMessage","title","description","canEdit","paddingBottom","getHelpIcon","BorderedCard","DataTable","checkboxSelectedRows","crm","hasCheckBoxes","onClickNodeView","handleRowDoubleClick","onSingleClickNodeView","handleSlideOut","selectionChanged","handleSelectionChange","bulkActionWorking","bulkActions","handleMultiDisableMonitoring","iconName","toggleChangeImportanceModal","customFilter","swimlanes","toList","centered","changeImportanceMulti","SlideoutPanel","visible","toggleVisible","actions","to","goToSelectedNodeView","NodeSolutionCenter","horizontal","mapStateToProps","createStructuredSelector","selectSwimlanes","selectAccounts","selectTags","withConnect","connect","dispatch","bindActionCreators","withReducer","injectReducer","reducer","withSaga","injectSaga","saga","compose","permissionChecker"],"mappings":"yHAMA,SAASA,gBAAgBC,IACvB,OAAOA,IAAoB,iBAAPA,IAAmB,YAAaA,GAAKA,GAAY,QAAIA,GAL3EC,OAAOC,eAAeC,QAAS,aAAc,CAC3CC,OAAO,IAOT,IAAIC,yBAA2BN,gBAAgB,oBAAQ,MAEnDO,SAAWP,gBAAgB,oBAAQ,MAEvC,oBAAQ,KAER,oBAAQ,KAER,IAAIQ,gBAAkBR,gBAAgB,oBAAQ,MAE1CS,aAAeT,gBAAgB,oBAAQ,MAEvCU,2BAA6BV,gBAAgB,oBAAQ,MAErDW,gBAAkBX,gBAAgB,oBAAQ,MAE1CY,UAAYZ,gBAAgB,oBAAQ,MAEpCa,uBAAyBb,gBAAgB,oBAAQ,MAEjDc,gBAAkBd,gBAAgB,oBAAQ,MAE1Ce,MAAQ,oBAAQ,GAEhBC,eAAiBhB,gBAAgBe,OAErC,oBAAQ,KAER,oBAAQ,KAER,oBAAQ,IAER,oBAAQ,GAER,oBAAQ,KAER,IAAIE,UAAY,oBAAQ,KAExB,oBAAQ,KAER,IAAIC,YAAc,oBAAQ,KAE1B,oBAAQ,KAER,oBAAQ,KAER,oBAAQ,KAER,IAAIC,UAAY,oBAAQ,KAEpBC,aAAe,CACjBC,cAAc,EACdC,gBAAgB,EAChBC,aAAc,MAGZC,gBAAkB,SAAyBC,iBAC7C,IAAIC,OAAQC,MAEZ,OAAOA,MAAQD,OAEf,SAAUE,YAGR,SAASC,MAAMC,OACb,IAAIC,MAiFJ,OA/EAvB,gBAAgBwB,KAAMH,OAEtBE,MAAQrB,2BAA2BsB,KAAMrB,gBAAgBkB,OAAOI,KAAKD,OAErElB,gBAAgBD,uBAAuBA,uBAAuBkB,QAAS,cAAU,GAEjFjB,gBAAgBD,uBAAuBA,uBAAuBkB,QAAS,mBAAe,GAEtFjB,gBAAgBD,uBAAuBA,uBAAuBkB,QAAS,WAAW,GAElFjB,gBAAgBD,uBAAuBA,uBAAuBkB,QAAS,eAAgB,IAEvFjB,gBAAgBD,uBAAuBA,uBAAuBkB,QAAS,qBAAqB,SAAUG,SAAUC,YAC9G,IAAIC,YAAcL,MAAMD,MACpBT,aAAee,YAAYf,aAC3BgB,cAAgBD,YAAYC,cAE5BC,WAAarB,UAAUsB,kBAAkBL,SAAUC,WAAYE,eAEnE,IAAKC,WAWH,cAVOP,MAAMS,iBAEbT,MAAMU,SAAS,CACbH,WAAY,GACZI,iBAAkB,GAClBC,cAAe,GACfC,WAAW,EACXC,kBAAkB,IAMtB,GAAIxB,cAAgBU,MAAMe,aAAaR,YACrCP,MAAMU,SAAS,CACbH,WAAYA,WACZI,iBAAkBJ,WAClBK,cAAeZ,MAAMe,aAAaR,YAClCM,WAAW,EACXC,kBAAkB,QAEf,CACL,IAAIE,QAAUhB,MAAMS,YAAc,GAElCT,MAAMU,SAAS,CACbH,WAAYA,WACZM,WAAW,EACXC,kBAAmBd,MAAMiB,MAAMN,mBAC9B,WACDX,MAAMkB,YAAYX,YAAY,SAAUY,SACjCnB,MAAMoB,UAEPD,UACFnB,MAAMe,aAAaR,YAAcY,SAG/BH,UAAYhB,MAAMS,qBACfT,MAAMS,YAEbT,MAAMU,SAAS,CACbG,WAAW,EACXF,iBAAkBJ,WAClBK,cAAeO,SAAW,GAC1BL,kBAAkB,YAM1B,OAAOP,cAGTP,MAAMiB,MAAQ,CACZ1B,eAAgB8B,MAAMC,QAAQvB,MAAMR,gBAAkBQ,MAAMR,oBAAiBgC,EAC7EhB,gBAAwC,IAArBR,MAAMQ,WAA6BR,MAAMQ,WAAa,GACzEM,WAAoC,IAAzBd,MAAMR,eACjBqB,cAAe,GACfE,kBAAkB,GAEbd,MA8FT,OAlLAnB,UAAUiB,MAAOD,YAuFjBnB,aAAaoB,MAAO,CAAC,CACnB0B,IAAK,oBACLlD,MAAO,WACL,IAAImD,OAASxB,KAEbA,KAAKmB,SAAU,EACf,IAAI7B,eAAiBU,KAAKF,MAAMR,eAC5BgB,WAAaN,KAAKgB,MAAMV,YAEL,IAAnBhB,gBACFU,KAAKiB,YAAYX,YAAY,SAAUY,SACrC,GAAKM,OAAOL,QAAZ,CACA,IAAIP,YAAcY,OAAOhB,YAEzBgB,OAAOf,SAAS,CACdnB,eAAgB4B,SAAW,GAC3BN,UAAWA,kBAKlB,CACDW,IAAK,mCACLlD,MAAO,SAA0CoD,WAE3CA,UAAUpC,eAAiBW,KAAKF,MAAMT,eACxCW,KAAKc,aAAe,IAGlBW,UAAUnC,iBAAmBU,KAAKF,MAAMR,gBAC1CU,KAAKS,SAAS,CACZnB,eAAgB8B,MAAMC,QAAQI,UAAUnC,gBAAkBmC,UAAUnC,oBAAiBgC,MAI1F,CACDC,IAAK,uBACLlD,MAAO,WACL2B,KAAKmB,SAAU,IAEhB,CACDI,IAAK,QACLlD,MAAO,WACL2B,KAAK0B,OAAOC,UAEb,CACDJ,IAAK,OACLlD,MAAO,WACL2B,KAAK0B,OAAOE,SAEb,CACDL,IAAK,cACLlD,MAAO,SAAqBiC,WAAYuB,UACtC,IAAIZ,YAAcjB,KAAKF,MAAMmB,YAC7B,IAAKA,YAAa,OAAOY,WACzB,IAAIC,OAASb,YAAYX,WAAYuB,UAEjCC,QAAiC,mBAAhBA,OAAOC,MAC1BD,OAAOC,KAAKF,UAAU,WACpB,OAAOA,gBAIZ,CACDN,IAAK,SACLlD,MAAO,WACL,IAAI2D,OAAShC,KAETiC,aAAejC,KAAKF,MAEpBA,OADcmC,aAAahB,YACnB3C,yBAAyB2D,aAAc,CAAC,iBAEhDC,YAAclC,KAAKgB,MACnB1B,eAAiB4C,YAAY5C,eAC7BgB,WAAa4B,YAAY5B,WACzBM,UAAYsB,YAAYtB,UACxBF,iBAAmBwB,YAAYxB,iBAC/BC,cAAgBuB,YAAYvB,cAE5BO,QADmBgB,YAAYrB,iBACF,GAAKP,YAAcI,iBAAmBC,cAAgBrB,gBAAkB,GACzG,OAAON,eAAemD,cAAc1C,gBAAiBlB,SAAS,GAAIuB,MAAO,CACvEsC,IAAK,SAAaC,MAChBL,OAAON,OAASW,MAElBnB,QAASA,QACTN,UAAWA,UACXP,cAAeL,KAAKO,yBAKnBV,MAnLT,CAoLEd,MAAMuD,WAAYxD,gBAAgBY,OAAQ,eAAgBN,cAAeO,OAKzEE,MAAQL,gBAFML,UAAUoD,YAAYrD,YAAYsD,SAGpDpE,QAAQqE,QAAU5C,MAClBzB,QAAQgB,aAAeA,aACvBhB,QAAQoB,gBAAkBA,iB,qvFCzP1B,IAAMkD,kBAAoB,IACpBC,WAAa,IAEbC,gB,2BACJ,yBAAY9C,OAAO,U,UAAA,O,8HAAA,uB,KACjB,K,KAAA,2CAAMA,OAAN,O,0FADiB,wEAqBM,SAAA+C,IACvB,OAAO,MAAK/C,MAAMgD,SACfC,MAAK,SAAAC,GAAC,OAAIA,EAAEC,IAAI,OAAOC,SAASL,MAAK,KAAMM,sDAC3CC,UAxBc,uEA2BK,SAAAC,SACtB,OACEA,QAAQC,cACRD,QAAQE,MACRC,yDAA2BH,QAAQI,MACnCJ,QAAQI,OAhCO,iEAoCD,SAAAC,WAChB,IAAML,QAAU,MAAKM,uBAAuBD,UAAUE,eACtD,OAAKP,QAAQI,IAKX,KAAC,uDAAD,CACEI,YAAU,EACVC,WAAYT,QAAQI,IACpBM,iBAAkB,MAAKjE,MAAMiE,mBAPxBL,aAvCQ,8DAmDJ,cAAWpD,YAAe,IAAvB0D,KAAuB,KAAvBA,KACVC,MAAQ3D,WAAWsD,cAEzB,OACEI,KAAKE,MAAMN,cAAcO,SAASF,QAClCD,KAAK3F,MAAMuF,cAAcO,SAASF,UAxDnB,0DA4DR,SAAAG,iBACJA,gBAKL,MAAKtE,MAAMuE,SAASD,gBAAgBE,KAAI,SAAAC,KAAG,OAAIA,IAAIlG,UAJjD,MAAKyB,MAAMuE,SAAS,OA9DL,kEAqEA,SAAA/D,YACjB,MAAO,CAAEjC,MAAOiC,WAAY4D,MAAO5D,eAtElB,6DAyEL,SAACA,WAAYuB,UACzBA,SACE,MAAK/B,MAAMgD,SACRM,OACAkB,KAAI,SAAAjB,SAAO,MAAK,CACfa,MAAO,MAAKM,sBAAsBnB,SAClChF,MAAOmF,yDAA2BH,QAAQI,SAE3CgB,QACC,SAAAC,GAAC,OACCA,EAAER,MAAMN,cAAcO,SAAS7D,WAAWsD,gBAC1Cc,EAAErG,MAAMuF,cAAcO,SAAS7D,WAAWsD,kBAE7Ce,MAAM,EAAGhC,YACTiC,MAAK,SAAC5B,EAAG6B,GAAJ,OAAU7B,EAAEkB,MAAMY,cAAcD,EAAEX,cArFxCpE,MAAMgD,SAASiC,KAAOrC,kBACxB,MAAK1B,MAAQ,CACXgE,aAAa,EACbC,eAAgBnF,MAAMgD,SACnBM,OACAkB,KAAI,SAAAjB,SAAO,MAAK,CACfa,MAAO,MAAKM,sBAAsBnB,SAClChF,MAAOmF,yDAA2BH,QAAQI,SAE3CmB,MAAK,SAAC5B,EAAG6B,GAAJ,OAAU7B,EAAEkB,MAAMY,cAAcD,EAAEX,UACvCS,MAAM,EAAGhC,aAGd,MAAK3B,MAAQ,CACXgE,aAAa,GAhBA,M,oeA2FV,gBAEP,GAAIhF,KAAKgB,MAAMgE,YACb,OACE,KAAC,0DAAD,CACE3F,cAAY,EACZ4B,YAAajB,KAAKiB,YAClB3B,gBAAc,EACdsB,UAAWZ,KAAKF,MAAMgD,SAASoC,UAC/Bb,SAAUrE,KAAKqE,SACfnD,QAASlB,KAAKgB,MAAMiE,eACpBE,eAAgB,SAAAC,QAAM,OAAI,OAAKC,gBAAgBD,OAAO/G,QACtDiH,aAAW,EACXC,WAAS,EACTlH,MAAO2B,KAAKF,MAAMzB,MAClBmH,OAAQxF,KAAKF,MAAM0F,OACnBC,QAASzF,KAAKF,MAAM2F,QACpBC,WAAY1F,KAAKF,MAAM6F,WAK7B,IAAMV,eAAiBjF,KAAKF,MAAMgD,SAC/BM,OACAkB,KAAI,SAAAjB,SAAO,MAAK,CACfa,MAAO,OAAKM,sBAAsBnB,SAClChF,MAAOmF,yDAA2BH,QAAQI,SAE3CmB,MAAK,SAAC5B,EAAG6B,GAAJ,OAAU7B,EAAEkB,MAAMY,cAAcD,EAAEX,UAE1C,OACE,KAAC,8DAAD,CACEuB,QAASzF,KAAKF,MAAM2F,QACpB7E,UAAWZ,KAAKF,MAAMgD,SAASoC,UAC/BhE,QAAS+D,eACT5G,MAAO2B,KAAKF,MAAMzB,MAClBgG,SAAUrE,KAAKqE,SACfkB,WAAS,EACTK,eAAgB,SAAAR,QAAM,OAAIA,OAAO/G,OACjC8G,eAAgB,SAAAC,QAAM,OAAI,OAAKC,gBAAgBD,OAAO/G,QACtDkB,aAAcS,KAAKT,aACnBsG,iBAAkB7F,KAAK6F,iBACvBP,aAAW,EACXE,OAAQxF,KAAKF,MAAM0F,OACnBE,WAAY1F,KAAKF,MAAM6F,gB,6HAxID5G,6CAAMuD,WA8IpCM,gBAAgBxD,aAAe,CAC7BqG,SAAS,GAYI7C,uC,urFCjKf,I,KAkCQ,KAAC,0CAAD,+BAhCKkD,sBAAb,uF,yIAAA,0I,KAAA,K,MAAA,iH,0FAAA,sDACU,CACNC,WAAY,OAFhB,8DAKiB,SAAAC,eACb,MAAKvF,SAAS,CAAEsF,WAAYC,mBANhC,4DASe,WACX,OAAiC,OAA1B,MAAKhF,MAAM+E,YAAuB,MAAKjG,MAAMc,aAVxD,uDAaU,WACN,MAAKH,SAAS,CAAEsF,WAAY,OAC5B,MAAKjG,MAAMmG,YAff,+DAkBkB,WACd,MAAKnG,MAAMoG,cAAc,MAAKlF,MAAM+E,WAAW1H,OAC/C,MAAKyB,MAAMmG,YApBf,M,uCAAA,O,2UAAA,yC,YAAA,uB,WAAA,gCAwBI,IAAM/E,QAAUE,MAAM+E,KACpB,CAAEC,OA3BiB,KA4BnB,SAAC/H,MAAOkD,KAAR,OAAgBA,OAChB+C,KAAI,SAAA+B,KACJ,MAAO,CAAEnC,MAAOmC,IAAM,EAAGhI,MAAOgI,IAAM,MAExC,OACE,KAAC,0CAAD,CAAOC,OAAQtG,KAAKF,MAAMwG,aAA1B,OAEE,KAAC,0CAAD,UACE,KAAC,oDAAD,CACEjI,MAAO2B,KAAKgB,MAAM+E,WAClB1B,SAAUrE,KAAKuG,aACfrF,QAASA,QACTsF,YAAa,mCAGjB,KAAC,0CAAD,UACE,KAAC,mDAAD,CAAUC,MAAM,YAAYC,QAAS1G,KAAK2G,YAA1C,YAGA,KAAC,iDAAD,CACED,QAAS1G,KAAKkG,cACdO,MAAM,UACNd,SAAU3F,KAAK0F,mBAHjB,mB,4GA7CV,uBAA2C3G,6CAAMuD,WAiElCwD,6C,wtBCpEFc,wBACX,iDAKWC,qBACX,8CAKWC,yBACX,kD,oKCAF,IAAMC,aAAeC,yBAAO,CAC1BpG,WAAW,EACXqG,mBAAoB,GACpBC,MAAO,KACPC,0BAA0B,EAC1BC,iCAAiC,IAwBpBH,QArBYI,yCAAa,kCAEnCT,yBAA0B,SAAA5F,OAAK,OAC9BA,MAAMsG,IAAI,aAAa,GAAMA,IAAI,QAAS,SAHR,+BDjBtC,kDCqB6B,SAACtG,MAAD,UAAUuG,QAAV,KAAUA,QAAV,OACzBvG,MAAMsG,IAAI,aAAa,GAAOA,IAAI,qBAAsBN,yBAAOO,aAL7B,+BAMnCV,sBAAuB,SAAA7F,OAAK,OAC3BA,MAAMsG,IAAI,4BAA4B,MAPJ,+BDXtC,uDCmBkC,SAAAtG,OAAK,OACnCA,MAAMsG,IAAI,4BAA4B,MATJ,+BAUnCR,0BAA2B,SAAA9F,OAAK,OAC/BA,MAAMsG,IAAI,mCAAmC,MAXX,+BDLtC,2DCiBsC,SAAAtG,OAAK,OACvCA,MAAMsG,IAAI,mCAAmC,MAbX,+BDFtC,wDCgBmC,SAACtG,MAAD,WAAUuG,QAAV,MAAUA,QAAV,OAC/BvG,MAAMsG,IAAI,aAAa,GAAOA,IAAI,QAASC,YAfT,gBAkBtCR,c,sIClCWS,sBAAwBC,uCAAab,yBACrCc,sBAAwBD,uCFFnC,kDEGWE,mBAAqBF,uCAAaZ,sBAClCe,0BAA4BH,uCFEvC,uDEEWI,uBAAyBJ,uCAAaX,0BACtCgB,8BAAgCL,uCFG3C,2DEAWM,2BAA6BN,uCFGxC,wD,kfGVQD,6B,iCAuHAG,0B,iCAgCAE,8B,iCAwBAG,wB,2hCA/KV,SAAUR,4BAAV,4KA8DmB,OA9DeD,QAAlC,KAAkCA,QAC1BU,OAASC,yBADjB,iBAG2BX,QAAjBY,QACJC,IAAM,IADFD,aAHV,qBAGoB,GAHpB,kBAKcE,aAAeF,QAAQE,YAAYhK,OAC7C+J,IAAIE,KAAJ,2CACsCH,QAAQE,YAAYhK,MAD1D,SAKE8J,QAAQ9E,SAAW8E,QAAQ9E,QAAQ+C,QAAU,GAC/CgC,IAAIE,KAAJ,4CAA8CH,QAAQ9E,QACnDiB,KAAI,SAAAjB,SAAO,iBAAQA,QAAR,QACXkF,KAAK,MAFR,cAMEJ,QAAQK,OAAkC,IAAzBL,QAAQK,MAAMpC,OACjCgC,IAAIE,KAAJ,wEAGgBH,QAAQK,MAAM,GAAGnK,MAHjC,oBAKS8J,QAAQK,OAASL,QAAQK,MAAMpC,OAAS,GACjDgC,IAAIE,KAAJ,0CAEUH,QAAQK,MACPlE,KACC,SAAAkE,OAAK,0FAGGA,MAAMnK,MAHT,0BAMNkK,KAAK,MAVhB,6BAcEJ,QAAQM,MAAgC,IAAxBN,QAAQM,KAAKrC,OAC/BgC,IAAIE,KAAJ,2EAGgBH,QAAQM,KAAK,GAAGpK,MAHhC,oBAKS8J,QAAQM,MAAQN,QAAQM,KAAKrC,OAAS,GAC/CgC,IAAIE,KAAJ,0CAEUH,QAAQM,KACPnE,KACC,SAAAoE,KAAG,6FAGKA,IAAIrK,MAHT,0BAMJkK,KAAK,MAVhB,6BA9CJ,iCA8DyBN,OAAOU,MAAM,CAChCC,YAAY,EACZC,YAAa,WACbF,MAAOG,cAAF,kBAUSV,IAAIG,KAAK,SA3E7B,aA8DUQ,OA9DV,eAmGe/E,KAAKgF,WAA6C,OAAhCD,OAAO/E,KAAKgF,UAAUC,MAnGvD,8BAoGY,IAAIC,MAAM,yDApGtB,QA+GI,OARMC,UAAYJ,OAAO/E,KAAKgF,UAAUC,MAAMrE,MAAK,SAAC5B,EAAG6B,GAAJ,OACjD7B,EAAEoG,qBAAuBvE,EAAEuE,qBACvB,EACAvE,EAAEuE,qBAAuBpG,EAAEoG,sBAC1B,EACD,KA5GV,iBA+GUC,kBAAI3B,sBAAsByB,YA/GpC,uCAmHI,OAnHJ,+CAkHIG,QAAQpC,MAAM,qCAAd,aAlHJ,iBAmHUmC,kBAAItB,2BAA2B,YAAEwB,UAnH3C,mEAuHA,SAAU5B,yBAAmB6B,QAA7B,4JAmBI,OAnBJ,gBAC0BA,OAAOjC,QAAvBkC,KADV,gBACUA,KAAMC,MADhB,gBACgBA,MACVC,YAAc,2BACdjF,EAAI,EACR+E,KAAKG,SAAQ,SAAAnG,KACXkG,aAAe,YAAJ,OACNjF,EADM,iCACoBjB,IADpB,0BACyCiG,MADzC,uDAMXhF,OAEFiF,aAAe,cAbjB,iBAkBU1B,OAASC,yBAlBnB,iBAmBUD,OAAO4B,OAAO,CAClBC,SAAUhB,cAAF,mBACJa,eArBV,OAyBI,OAzBJ,kBAyBUN,kBAAIzB,6BAzBd,0FA4BI0B,QAAQpC,MAAM,2BAAd,cA5BJ,qEAgCA,SAAUW,6BAAuB2B,QAAjC,mHAGI,OAHJ,iBAEUvB,OAASC,yBAFnB,iBAGU6B,kBACJP,OAAOjC,QAAQjD,KAAI,SAAAb,KACjB,OAAOwE,OAAO4B,OAAO,CACnBC,SAAUhB,cAAF,mBAEkCrF,WARpD,OAiBI,OAjBJ,iBAiBU4F,kBAAIvB,iCAjBd,uFAoBIwB,QAAQpC,MAAM,6BAAd,cApBJ,oEAwBA,SAAUc,yBAAV,wGACE,OADF,iBACQ+B,kBAAI,CACRC,kBAAWpD,wBAAyBY,6BACpCwC,kBAAWnD,qBAAsBc,0BACjCqC,kBAAWlD,yBAA0Be,gCAJzC,sDAQeG,I,mBAAAA,6BCnMFiC,yCAAiC,SAAAjJ,OAAK,OACjDA,MAAMiC,IAAI,qBAAsBE,0BAAUA,yBAE/B+G,yBAA2BC,aACtCF,0CACA,SAAAjG,MAAI,OAAIA,KAAKf,IAAI,uBAAyBmH,4BAG/BC,gBAAkBF,aAC7BF,0CACA,SAAAjG,MAAI,OAAIA,KAAKf,IAAI,gBAGNqH,+BAAiCH,aAC5CF,0CACA,SAAAjG,MAAI,OAAIA,KAAKf,IAAI,+BAGNsH,sCAAwCJ,aACnDF,0CACA,SAAAjG,MAAI,OAAIA,KAAKf,IAAI,sCAGNuH,eAAiBL,aAC5BF,0CACA,SAAAjG,MAAI,OAAIA,KAAKf,IAAI,Y,uxGCfnB,I,sCAAMwH,kBAAoB,CAAC,QAAS,cAAe,UAAW,QACjDC,kDAAb,2BACE,kCAAY5K,OAAO,U,UAAA,O,8HAAA,gC,KACjB,K,KAAA,oDAAMA,OAAN,O,0FADiB,4FA8CE,WACnB,MAAKW,UAAS,SAAAkK,WAAS,MAAK,CAC1BC,oBAAqBD,UAAUC,mBAC/BpC,WAAOlH,EACP+G,iBAAa/G,EACb+B,aAAS/B,SAnDM,+FAuDK,SAAAjD,OACR,OAAVA,OAAkBwM,iBAAE3F,QAAQ7G,OAC9B,MAAKoC,SAAS,CACZgI,KAAM,OAGR,MAAKhI,SAAS,CACZgI,KAAMpK,WA9DO,mGAmES,SAAAA,OACZ,OAAVA,OAAkBwM,iBAAE3F,QAAQ7G,OAC9B,MAAKoC,SAAS,CACZ4C,QAAS,OAGX,MAAK5C,SAAS,CACZ4C,QAAShF,WA1EI,iGA+EO,SAAAA,OACV,OAAVA,OAAkBwM,iBAAE3F,QAAQ7G,OAC9B,MAAKoC,SAAS,CACZ+H,MAAO,OAGT,MAAK/H,SAAS,CACZ+H,MAAOnK,WAtFM,iGA2FO,SAAAA,OACxB,GAAIA,MAAO,CACT,IACIyM,KAAOC,yBACRC,SAAS3M,MAAMA,MAAO,QACtB4M,OAHY,cAIf,MAAKxK,SAAS,CACZ4H,YAAa,CAAEnE,MAAO7F,MAAM6F,MAAO7F,MAAOyM,aAG5C,MAAKrK,SAAS,CACZ4H,YAAa,UAtGA,sFA2GJ,WACb,IAAM6C,eAAiB,MAAKpL,MAAMqI,QAAQ/E,OACpC+H,gBAAkBV,kBAAkBhG,QACxC,SAAAlD,KAAG,YAAwBD,IAApB,MAAKN,MAAMO,QAEd6J,aAAe,CACnB5C,MAAO0C,eAAe1C,MACtBH,YAAa6C,eAAe7C,YAC5BhF,QAAS6H,eAAe7H,QACxBoF,KAAMyC,eAAezC,MAEvB0C,gBAAgBvB,SAAQ,SAAAyB,YACtBD,aAAaC,YAAc,MAAKrK,MAAMqK,YACtC,MAAKvL,MAAMwL,UAAU,CACnBD,sBACAhN,MAAO,MAAK2C,MAAMqK,iBAGtB,MAAKvL,MAAMyL,iBAAiBH,cAC5B,MAAK3K,SAAS,CACZmK,oBAAoB,OA/HL,sFAmIJ,WACb,IAAMzC,QAAU,MAAKrI,MAAMqI,QAAQ/E,OAanC,OAXqBqH,kBAAkBnG,KAAI,SAAAG,QACzC,OAAI0D,QAAQ1D,UACNrD,MAAMC,QAAQ8G,QAAQ1D,UACnBoG,iBAAE3F,QAAQiD,QAAQ1D,UACd,MAOMN,UAAS,MAjJb,sFAoJJ,WACb,MAAKqH,qBACL,MAAK1L,MAAM2L,kBAtJM,iGAyJO,WACxB,IAAMtD,QAAU,MAAKrI,MAAMqI,QAAQ/E,OACnC,YAA2B9B,IAAvB,MAAKN,MAAMqC,QACN8E,QAAQ9E,QACX8E,QAAQ9E,QAAQiB,KAAI,SAAAjB,SAAO,MAAK,CAC9Ba,MAAOb,QAAQhF,OAASgF,QACxBhF,MAAOgF,QAAQhF,OAASgF,YAE1B8E,QAAQ9E,QAEe,OAAvB,MAAKrC,MAAMqC,QACN,UAEP,MAAKrC,MAAMqC,QAAQiB,KAAI,SAAAjB,SAAO,MAAK,CACjCa,MAAOb,QAAQhF,OAASgF,QACxBhF,MAAOgF,QAAQhF,OAASgF,eAxKb,oFA8KN,kBAAM,KA9KA,uFAgLH,WACd,IAAMqI,WAAa,MAAK5L,MAAM2I,KAC3BhE,QAAO,SAAAiE,KAAG,QAAMA,IAAIzF,IAAI,UACxB0I,QAAO,SAAAjD,KAAG,OAAIA,IAAIzF,IAAI,OAAOW,iBAC7BR,OACAkB,KAAI,SAAAoE,KAAG,MAAK,CAAErK,MAAOqK,IAAInH,IAAK2C,MAAOwE,IAAInH,QAEtCqK,kBAAoB,MAAK5K,MAAMyH,KACjC,MAAKzH,MAAMyH,KAAKnE,KAAI,SAAAuH,QAAM,MAAK,CAC7BxN,MAAOwN,OACP3H,MAAO2H,WAET,GAEJ,OAAOH,WAAWI,OAAOF,sBA5LzB,MAAK5K,MAAQ,CACX4J,oBAAoB,EACpBvH,aAAS/B,EACTkH,WAAOlH,EACPmH,UAAMnH,EACN+G,iBAAa/G,GAGf,MAAKkE,OAAS,CACZuG,WAAY,CACVC,SAAU,aACVC,WAAY,SACZC,YAAa,MACbC,WAAY,gBACZC,SAAU,OACV3F,MAAO,WAET7B,KAAM,CACJyH,YAAa,SAEf5H,OAAQ,CACN6H,WAAY,SAEdC,YAAa,CACXC,aAAc,QACdC,QAAS,SAEXC,aAAc,CACZC,MAAO,OACPF,QAAS,OACTG,WAAY,SACZC,eAAgB,gBAChBC,QAAS,iCAEXC,kBAAmB,CACjBJ,MAAO,OACPK,OAAQ,sBACRP,QAAS,OACTI,eAAgB,WAChBD,WAAY,WAzCC,M,uCADrB,O,2UAAA,4C,YAAA,0B,WAAA,gCAmMI,IAAMzE,QAAUnI,KAAKF,MAAMqI,QAAQ/E,OACnC,OACE,KAAC6J,QAAA,EAAD,CACE3G,OAAQtG,KAAKgB,MAAM4J,mBACnBsC,SAAUlN,KAAKwL,yBAFjB,EAIE,KAACyB,QAAA,EAAD,UACGjN,KAAKmN,eACJ,KAACC,KAAA,EAAD,CAAMC,MAAOrN,KAAKwF,OAAOf,OAAQ6I,IAAE,EAAC/J,KAAK,WAEzC,KAAC6J,KAAA,EAAD,CACEC,MAAK,iBACArN,KAAKwF,OAAOf,OADZ,CAEHgC,MAAOzG,KAAKF,MAAMyN,MAAMC,WAE1BF,IAAE,EACF/J,KAAK,kBAIX,KAAC0J,QAAA,EAAD,UACE,YAAKI,MAAO,CAAEV,MAAO,eAArB,EACE,YAAKU,MAAOrN,KAAKwF,OAAOkH,mBAAxB,EACE,YACEW,MAAO,CACLjB,SAAU,UACVqB,WAAY,aAHhB,aAQA,KAACC,SAAA,EAAD,CACEhH,QAAS1G,KAAKyL,aACdhF,MAAM,UACN4G,MAAO,CACLM,OAAQ,iBAJZ,wBAWF,YAAKN,MAAO,CAAEL,OAAQ,eAAtB,EACE,aAAMK,MAAOrN,KAAKwF,OAAO+G,kBAAzB,mBACA,KAAC,mCAAD,CACE/F,YAAY,eACZnC,SAAUrE,KAAK4N,wBACfvP,WAC6BiD,IAA3BtB,KAAKgB,MAAMqH,YACPF,QAAQE,YACRrI,KAAKgB,MAAMqH,YAEjB/C,aAAW,EACXpE,QAAS,CACP,CAAE7C,MAAO,EAAG6F,MAAO,4BACnB,CAAE7F,MAAO,EAAG6F,MAAO,0BACnB,CAAE7F,MAAO,GAAI6F,MAAO,2BACpB,CAAE7F,MAAO,GAAI6F,MAAO,2BACpB,CAAE7F,MAAO,GAAI6F,MAAO,+BAI1B,YAAKmJ,MAAO,CAAEL,OAAQ,eAAtB,EACE,aAAMK,MAAOrN,KAAKwF,OAAO+G,kBAAzB,eACA,KAAC3J,gBAAA,EAAD,CACEvE,MAAO2B,KAAK6N,0BACZpI,SAAO,EACPpB,SAAUrE,KAAK8N,0BACfhL,SAAU9C,KAAKF,MAAMgD,YAGzB,YAAKuK,MAAO,CAAEL,OAAQ,eAAtB,EACE,aAAMK,MAAOrN,KAAKwF,OAAO+G,kBAAzB,aACA,KAAC,mCAAD,CACE/F,YAAY,eACZnC,SAAUrE,KAAK+N,wBACftI,SAAO,EACPpH,WACuBiD,IAArBtB,KAAKgB,MAAMwH,MACPL,QAAQK,MACRxI,KAAKgB,MAAMwH,MAEjBtH,QAAS,CACP,CAAE7C,MAAO,MAAO6F,MAAO,OACvB,CAAE7F,MAAO,QAAS6F,MAAO,SACzB,CAAE7F,MAAO,MAAO6F,MAAO,WAI7B,YAAKmJ,MAAO,CAAEL,OAAQ,gBAAtB,EACE,aAAMK,MAAOrN,KAAKwF,OAAO+G,kBAAzB,WACA,KAAC,mCAAD,CACE/F,YAAY,OACZnC,SAAUrE,KAAKgO,sBACfvI,SAAO,EACPpH,WACsBiD,IAApBtB,KAAKgB,MAAMyH,KAAqBN,QAAQM,KAAOzI,KAAKgB,MAAMyH,KAE5DvH,QAASlB,KAAKiO,oBAIpB,YAAKZ,MAAOrN,KAAKwF,OAAOuH,wBAAxB,EACE,KAACW,SAAA,EAAD,CACEhH,QAAS1G,KAAKwL,mBACd/E,MAAM,UACN4G,MAAO,CACLM,OAAQ,UACRO,aAAc,cALlB,YAUA,KAACC,OAAA,EAAD,CACE1H,MAAM,UACNd,SAAU3F,KAAK0F,aACfgB,QAAS1G,KAAKoO,mBAHhB,mB,4GApTZ,0BAA8CrP,gBAAMuD,WA4UrC+L,gEAAU3D,mD,ywECvLb,kY,MAmHA,uBAAC4D,cAAA,EAAD,qC,MAMI,uBAACC,uBAAA,EAAD,IA3OVC,sC,qBACJ,4BAAY1O,OAAO,U,UAAA,O,8HAAA,0B,KACjB,K,KAAA,gEAAMA,OAAN,O,8HADiB,gGAiEN,WACX,MAAKW,SAAS,CACZgO,kBAAmB,KAErB,MAAK3O,MAAM0H,sBAAsB,CAAEW,QAAS,QArE3B,0GAmFI,SAAC1E,IAAKiL,MAC3B,IAAIC,IAAMC,sBAAsBnL,IAAKiL,MACrCC,IAAIE,OAAJ,UAAgBF,IAAIE,OAApB,eAEA,MAAK/O,MAAMwI,KAAKqG,QAvFC,0GA0FI,WAAM,gBACF,MAAK3N,MAAtB8N,OADmB,YACnBA,OAAQJ,KADW,YACXA,KACZC,IAAMC,sBAAsBE,OAAQJ,MAExC,OADAC,IAAIE,OAAJ,UAAgBF,IAAIE,OAApB,eACOF,OA9FU,iGAiGL,kBACZ,8BAAKtB,MAAO,CAAEP,QAAS,MAAOR,WAAY,gBAA1C,EACE,uBAACyC,QAAA,EAAD,CACEC,QAAS,QACTC,OACE,uBAACC,iBAAA,EAAD,UACE,uBAAC9B,KAAA,EAAD,CACEE,IAAE,EACF/J,KAAK,OACLkD,MAAO,MAAK3G,MAAMyN,MAAM4B,cACxB9B,MAAO,CAAEjB,SAAU,WAIzBgD,eACE,8BAAK/B,MAAO,MAAK7H,OAAO6J,cAAxB,0BAWFC,SAAS,cA3HI,oGAgIF,SAACR,OAAQJ,MACxB,MAAKjO,SAAS,CACZqO,cACAJ,UACAa,WAAW,OApII,sGAwIA,SAAApH,SACjB,IAAIqH,WAAa,GACjB3E,iBAAE4E,KAAKtH,SAASyB,SAAQ,SAAArI,KAClBmO,sBAAOvH,QAAQ5G,QACjBiO,WAAWjO,KAAO4G,QAAQ5G,SAI9B,MAAKzB,MAAM0H,sBAAsB,CAC/BW,QAASqH,gBAjJM,2GAqJK,SAAAG,MACtB,MAAKlP,SAAS,CACZgO,kBAAmBkB,KAAKC,IAAIC,kBAAkBvL,KAAI,SAAAwL,KAAG,OAAIA,IAAIrM,YAvJ9C,+FA2JP,SAAAgB,QACV,MAAKhE,SAAL,qCACGgE,OAAO4G,WAAa5G,OAAOpG,YAASiD,OA7JtB,kGAiKJ,WACb,MAAKb,SAAS,CACZ4H,iBAAa/G,EACbkH,WAAOlH,EACP+B,aAAS/B,EACTmH,UAAMnH,IAER,MAAKiK,iBAAiB,OAxKL,iHA2KW,WAC5B,MAAK9K,UAAS,SAAAkK,WACZ,MAAO,CAAEoF,uBAAwBpF,UAAUoF,6BA7K5B,2GAiLK,SAAArG,OACtB,MAAK5J,MAAM6H,mBAAmB,CAC5B+B,MAAOA,MACPD,KAAM,MAAKzI,MAAMyN,kBAAkBnK,KAAI,SAAAb,KAAG,OAAIA,YApL/B,kHAwLY,kBAC7B,MAAK3D,MAAM+H,uBAAuB,MAAK7G,MAAMyN,sBAtL7C,MAAKuB,cAAgBlQ,MAAMmQ,kBAAkB,CAC3CC,eAAgB,cAGd,MAAKF,gBACHlQ,MAAM2I,KAAKvD,WACbpF,MAAMqQ,YAGRrQ,MAAM0H,sBAAsB,CAAEW,QAAS,MAEzC,MAAK3C,OAAS,CACZ4K,UAAW,CACT3D,QAAS,OACT4D,oBAAqB,OACrBC,SAAU,SACVC,OAAQ,QAEVC,mBAAoB,CAClB/D,QAAS,OACT4D,oBAAqB,UACrBI,kBAAmB,oBACnBH,SAAU,SACVC,OAAQ,QAEVG,QAAS,CACPH,OAAQ,OACR5D,MAAO,OACPF,QAAS,OACTK,QAAS,MACT6D,iBAAkB,WAClBF,kBAAmB,yBAErBpB,QAAS,CACP5C,QAAS,OACTmE,cAAe,SACf9D,QAAS,OAEX3E,QAAS,CACPsE,QAAS,OACTG,WAAY,UAEdiE,QAAS,CACPN,OAAQ,OACR9D,QAAS,OACTG,WAAY,SACZC,eAAgB,WAGpB,MAAK7L,MAAQ,CACXqH,iBAAa/G,EACbkH,WAAOlH,EACP+B,aAAS/B,EACTmH,UAAMnH,EACNmN,kBAAmB,GACnBsB,uBAAuB,EACvBR,WAAW,EACXb,KAAM,KACNI,OAAQ,MA7DO,M,ggBAwEAgC,YAEdA,UAAU3J,2BACRnH,KAAKF,MAAMqH,0BACb2J,UAAU1J,kCACRpH,KAAKF,MAAMsH,kCAEdpH,KAAK+Q,e,+BA4GA,gBACP,IAAK/Q,KAAKgQ,cACR,OACE,8BACE3C,MAAO,CACLZ,QAAS,OACTE,MAAO,OACP4D,OAAQ,OACR1D,eAAgB,SAChBD,WAAY,gBANhB,EASG,IATH,sDAUsD,KAK1D,GAAI5M,KAAKF,MAAMkR,aACb,OACE,uBAAC,mBAAD,CACEC,MAAO,2CACPC,YAAalR,KAAKF,MAAMkR,eAK9B,IAAMG,QAAUnR,KAAKF,MAAMmQ,kBAAkB,CAC3CC,eAAgB,qBAGlB,OACE,8BACE7C,MACGrN,KAAKgB,MAAMuO,UAERvP,KAAKwF,OAAOgL,mBADZxQ,KAAKwF,OAAO4K,gBAHpB,EAOE,8BAAK/C,MAAOrN,KAAKwF,OAAOkL,cAAxB,EACE,8BAAKrD,MAAO,CAAEZ,QAAS,OAAQ2E,cAAe,cAA9C,QAEGpR,KAAKqR,eAER,uBAACC,aAAA,EAAD,CAAcjE,MAAO,CAAEkD,OAAQ,cAA/B,EACGvQ,KAAKF,MAAMc,UACV,8BAAKyM,MAAOrN,KAAKwF,OAAOqL,cAAxB,SAIA,uBAACU,UAAA,EAAD,CACEvN,KAAMhE,KAAKF,MAAMmH,mBAAmB7D,OACpCoO,qBAAsBxR,KAAKgB,MAAMyN,kBACjCgD,KAAG,EACHC,cAAeP,QACfQ,gBAAiB3R,KAAK4R,qBACtBC,sBAAuB7R,KAAK8R,eAC5BC,iBAAkB/R,KAAKgS,sBACvBC,qBACEjS,KAAKF,MAAMsH,kCACXpH,KAAKF,MAAMqH,0BAIb+K,YAAa,CACX,uBAAC,oBAAD,CACEhC,eAAe,mBAEfxJ,QAAS1G,KAAKmS,6BACdC,SAAS,MACTzM,SAC0C,IAAxC3F,KAAKgB,MAAMyN,kBAAkBrI,QAC7BpG,KAAKF,MAAMsH,iCALT,UAFN,sBAYA,uBAAC,oBAAD,CACE8I,eAAe,mBAEfkC,SAAU,QACV1L,QAAS1G,KAAKqS,4BACd1M,SAC0C,IAAxC3F,KAAKgB,MAAMyN,kBAAkBrI,QAC7BpG,KAAKF,MAAMqH,0BALT,aAFN,sBAaFmL,aAAc,kBACZ,8BAAKjF,MAAO,OAAK7H,OAAO2C,cAAxB,EACE,uBAAC,4CAAD,CACEoD,iBAAkB,OAAKA,iBACvBpD,QAASnB,yBAAO,OAAKhG,OACrBsK,UAAW,OAAKA,UAChBiH,UAAW,OAAKzS,MAAMyS,UAAUC,SAChC1P,SAAU,OAAKhD,MAAMgD,SACrB2F,KAAM,OAAK3I,MAAM2I,KACjBgD,aAAc,OAAKA,oBAO/B,uBAAC3F,sBAAA,EAAD,CACEQ,OAAQtG,KAAKgB,MAAM+O,sBACnB0C,UAAU,EACVxM,OAAQjG,KAAKqS,4BACbnM,cAAelG,KAAK0S,sBACpB9R,UAAWZ,KAAKF,MAAMqH,4BAG1B,uBAACwL,cAAA,EAAD,CACEC,QAAS5S,KAAKgB,MAAMuO,UACpBsD,cAAe,kBAAM,OAAKpS,SAAS,CAAE8O,WAAW,KAChDuD,QACE,uBAACpF,SAAA,EAAD,CAAUjH,MAAM,UAAUsM,GAAI/S,KAAKgT,2BAAnC,gCAJJ,EASGhT,KAAKgB,MAAMuO,WACV,uBAAC0D,mBAAA,QAAD,CACEvE,KAAM1O,KAAKgB,MAAM0N,KACjBI,OAAQ9O,KAAKgB,MAAM8N,OACnBoE,YAAU,W,oKA3TS5Q,iBAsV3B6Q,gBAAkBC,aAAyB,CAC/CpC,aAAcxG,eACdvD,mBAAoBiD,yBACpBtJ,UAAWyJ,gBACXkI,UAAWc,YACXvQ,SAAUwQ,YACV7K,KAAM8K,YACNpM,yBAA0BmD,+BAC1BlD,gCAAiCmD,wCAgBnC,IAAMiJ,YAAcC,oBAAQN,iBAb5B,SAA4BO,UAC1B,OAAOC,oCACL,CACEnM,4CACAc,qCACA6H,oBACAxI,sCACAE,+CAEF6L,aAKEE,YAAcC,wBAAc,CAAEtS,IAAK,qBAAsBuS,kBACzDC,SAAWC,qBAAW,CAAEzS,IAAK,KAAM0S,KAAMA,QAEhCC,qDACbN,YACAG,SACAP,YACAW,oBAJaD,CAKb7F,oBAAUG","file":"32.0354fe00a88c77b5ed97.chunk.js","sourcesContent":["'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar _objectWithoutProperties = _interopDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _extends = _interopDefault(require(\"@babel/runtime/helpers/extends\"));\n\nrequire(\"@babel/runtime/helpers/toConsumableArray\");\n\nrequire(\"@babel/runtime/helpers/objectSpread\");\n\nvar _classCallCheck = _interopDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass = _interopDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn = _interopDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf = _interopDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits = _interopDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _assertThisInitialized = _interopDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _defineProperty = _interopDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\n\nrequire('memoize-one');\n\nrequire('@emotion/core');\n\nrequire('react-dom');\n\nrequire('prop-types');\n\nrequire(\"@babel/runtime/helpers/typeof\");\n\nvar __chunk_1 = require('../../dist/chunk-f83207f0.browser.cjs.js');\n\nrequire('../../dist/chunk-efbed3c1.browser.cjs.js');\n\nvar reactSelect = require('../../dist/base/dist/react-select-306fdb60.browser.cjs.js');\n\nrequire('@emotion/css');\n\nrequire(\"@babel/runtime/helpers/taggedTemplateLiteral\");\n\nrequire('react-input-autosize');\n\nvar __chunk_3 = require('../../dist/chunk-185dfbdc.browser.cjs.js');\n\nvar defaultProps = {\n cacheOptions: false,\n defaultOptions: false,\n filterOption: null\n};\n\nvar makeAsyncSelect = function makeAsyncSelect(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inherits(Async, _Component);\n\n function Async(props) {\n var _this;\n\n _classCallCheck(this, Async);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Async).call(this));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"select\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"lastRequest\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"mounted\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"optionsCache\", {});\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (newValue, actionMeta) {\n var _this$props = _this.props,\n cacheOptions = _this$props.cacheOptions,\n onInputChange = _this$props.onInputChange; // TODO\n\n var inputValue = __chunk_1.handleInputChange(newValue, actionMeta, onInputChange);\n\n if (!inputValue) {\n delete _this.lastRequest;\n\n _this.setState({\n inputValue: '',\n loadedInputValue: '',\n loadedOptions: [],\n isLoading: false,\n passEmptyOptions: false\n });\n\n return;\n }\n\n if (cacheOptions && _this.optionsCache[inputValue]) {\n _this.setState({\n inputValue: inputValue,\n loadedInputValue: inputValue,\n loadedOptions: _this.optionsCache[inputValue],\n isLoading: false,\n passEmptyOptions: false\n });\n } else {\n var request = _this.lastRequest = {};\n\n _this.setState({\n inputValue: inputValue,\n isLoading: true,\n passEmptyOptions: !_this.state.loadedInputValue\n }, function () {\n _this.loadOptions(inputValue, function (options) {\n if (!_this.mounted) return;\n\n if (options) {\n _this.optionsCache[inputValue] = options;\n }\n\n if (request !== _this.lastRequest) return;\n delete _this.lastRequest;\n\n _this.setState({\n isLoading: false,\n loadedInputValue: inputValue,\n loadedOptions: options || [],\n passEmptyOptions: false\n });\n });\n });\n }\n\n return inputValue;\n });\n\n _this.state = {\n defaultOptions: Array.isArray(props.defaultOptions) ? props.defaultOptions : undefined,\n inputValue: typeof props.inputValue !== 'undefined' ? props.inputValue : '',\n isLoading: props.defaultOptions === true,\n loadedOptions: [],\n passEmptyOptions: false\n };\n return _this;\n }\n\n _createClass(Async, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n this.mounted = true;\n var defaultOptions = this.props.defaultOptions;\n var inputValue = this.state.inputValue;\n\n if (defaultOptions === true) {\n this.loadOptions(inputValue, function (options) {\n if (!_this2.mounted) return;\n var isLoading = !!_this2.lastRequest;\n\n _this2.setState({\n defaultOptions: options || [],\n isLoading: isLoading\n });\n });\n }\n }\n }, {\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n // if the cacheOptions prop changes, clear the cache\n if (nextProps.cacheOptions !== this.props.cacheOptions) {\n this.optionsCache = {};\n }\n\n if (nextProps.defaultOptions !== this.props.defaultOptions) {\n this.setState({\n defaultOptions: Array.isArray(nextProps.defaultOptions) ? nextProps.defaultOptions : undefined\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n }\n }, {\n key: \"loadOptions\",\n value: function loadOptions(inputValue, callback) {\n var loadOptions = this.props.loadOptions;\n if (!loadOptions) return callback();\n var loader = loadOptions(inputValue, callback);\n\n if (loader && typeof loader.then === 'function') {\n loader.then(callback, function () {\n return callback();\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props2 = this.props,\n loadOptions = _this$props2.loadOptions,\n props = _objectWithoutProperties(_this$props2, [\"loadOptions\"]);\n\n var _this$state = this.state,\n defaultOptions = _this$state.defaultOptions,\n inputValue = _this$state.inputValue,\n isLoading = _this$state.isLoading,\n loadedInputValue = _this$state.loadedInputValue,\n loadedOptions = _this$state.loadedOptions,\n passEmptyOptions = _this$state.passEmptyOptions;\n var options = passEmptyOptions ? [] : inputValue && loadedInputValue ? loadedOptions : defaultOptions || [];\n return React__default.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this3.select = _ref;\n },\n options: options,\n isLoading: isLoading,\n onInputChange: this.handleInputChange\n }));\n }\n }]);\n\n return Async;\n }(React.Component), _defineProperty(_class, \"defaultProps\", defaultProps), _temp;\n};\n\nvar SelectState = __chunk_3.manageState(reactSelect.Select);\n\nvar Async = makeAsyncSelect(SelectState);\nexports.default = Async;\nexports.defaultProps = defaultProps;\nexports.makeAsyncSelect = makeAsyncSelect;\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\nimport { Map } from 'immutable'\nimport Creatable from 'react-select/creatable'\nimport AsyncSelect from 'react-select/async'\n\nimport CloudAccount from 'components/CloudAccount'\nimport { getAccountIdFromAccountSrn } from 'utils/sonraiUtils'\n\nconst triggerAsyncLimit = 100\nconst asyncSlice = 100\n\nclass AccountSelector extends React.Component {\n constructor(props) {\n super(props)\n if (props.accounts.size > triggerAsyncLimit) {\n this.state = {\n enableAsync: true,\n accountOptions: props.accounts\n .toJS()\n .map(account => ({\n label: this.getAccountDisplayName(account),\n value: getAccountIdFromAccountSrn(account.srn),\n }))\n .sort((a, b) => a.label.localeCompare(b.label))\n .slice(0, asyncSlice),\n }\n } else {\n this.state = {\n enableAsync: false,\n }\n }\n }\n\n getAccountForAccountId = id => {\n return this.props.accounts\n .find(a => a.get('srn').endsWith(id), null, Map())\n .toJS()\n }\n\n getAccountDisplayName = account => {\n return (\n account.friendlyName ||\n account.name ||\n getAccountIdFromAccountSrn(account.srn) ||\n account.srn\n )\n }\n\n getAccountBadge = accountId => {\n const account = this.getAccountForAccountId(accountId.toLowerCase())\n if (!account.srn) {\n return accountId\n }\n\n return (\n \n )\n }\n\n filterOption = ({ data }, inputValue) => {\n const lower = inputValue.toLowerCase()\n\n return (\n data.label.toLowerCase().includes(lower) ||\n data.value.toLowerCase().includes(lower)\n )\n }\n\n onChange = selectedOptions => {\n if (!selectedOptions) {\n this.props.onChange([])\n return\n }\n\n this.props.onChange(selectedOptions.map(opt => opt.value))\n }\n\n getNewOptionData = inputValue => {\n return { value: inputValue, label: inputValue }\n }\n\n loadOptions = (inputValue, callback) => {\n callback(\n this.props.accounts\n .toJS()\n .map(account => ({\n label: this.getAccountDisplayName(account),\n value: getAccountIdFromAccountSrn(account.srn),\n }))\n .filter(\n i =>\n i.label.toLowerCase().includes(inputValue.toLowerCase()) ||\n i.value.toLowerCase().includes(inputValue.toLowerCase())\n )\n .slice(0, asyncSlice)\n .sort((a, b) => a.label.localeCompare(b.label))\n )\n }\n\n render() {\n // if there are over triggerAsyncLimit accounts we can load the results async... or adjust this later\n if (this.state.enableAsync) {\n return (\n this.getAccountBadge(option.value)}\n isClearable\n creatable\n value={this.props.value}\n styles={this.props.styles}\n isMulti={this.props.isMulti}\n isDisabled={this.props.disabled}\n />\n )\n }\n // under triggerAsyncLimit just do yo thang\n const accountOptions = this.props.accounts\n .toJS()\n .map(account => ({\n label: this.getAccountDisplayName(account),\n value: getAccountIdFromAccountSrn(account.srn),\n }))\n .sort((a, b) => a.label.localeCompare(b.label))\n\n return (\n option.value}\n getOptionLabel={option => this.getAccountBadge(option.value)}\n filterOption={this.filterOption}\n getNewOptionData={this.getNewOptionData}\n isClearable\n styles={this.props.styles}\n isDisabled={this.props.disabled}\n />\n )\n }\n}\n\nAccountSelector.defaultProps = {\n isMulti: true,\n}\n\nAccountSelector.propTypes = {\n accounts: ImmutablePropTypes.iterable.isRequired,\n value: PropTypes.any,\n onChange: PropTypes.func.isRequired,\n isMulti: PropTypes.bool,\n styles: PropTypes.object,\n disabled: PropTypes.bool,\n hasAccountNumber: PropTypes.bool,\n}\nexport default AccountSelector\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap'\nimport Select from 'react-select'\nimport TextLink from 'components/TextLink'\nimport Button from 'components/Button'\n\nconst importanceLevels = 10\n\nexport class ChangeImportanceModal extends React.Component {\n state = {\n importance: null,\n }\n\n handleChange = newImportance => {\n this.setState({ importance: newImportance })\n }\n\n isDisabled = () => {\n return this.state.importance === null || this.props.isLoading\n }\n\n close = () => {\n this.setState({ importance: null })\n this.props.toggle()\n }\n\n setImportance = () => {\n this.props.setImportance(this.state.importance.value)\n this.props.toggle()\n }\n\n render() {\n const options = Array.from(\n { length: importanceLevels },\n (value, key) => key\n ).map(num => {\n return { label: num + 1, value: num + 1 }\n })\n return (\n \n Change importance\n \n \n \n \n \n Cancel\n \n \n Change\n \n \n \n )\n }\n}\n\nChangeImportanceModal.propTypes = {\n isOpen: PropTypes.bool,\n setImportance: PropTypes.func.isRequired,\n isLoading: PropTypes.func,\n toggle: PropTypes.func,\n}\n\nexport default ChangeImportanceModal\n","/*\n *\n * MonitoredResources constants\n *\n */\n\nexport const GET_MONITORED_RESOURCES =\n 'app/MonitoredResources/GET_MONITORED_RESOURCES'\n\nexport const SET_MONITORED_RESOURCES =\n 'app/MonitoredResources/SET_MONITORED_RESOURCES'\n\nexport const SET_IMPORTANCE_MULTI =\n 'app/MonitoredResources/SET_IMPORTANCE_MULTI'\n\nexport const SET_IMPORTANCE_MULTI_SUCCESS =\n 'app/MonitoredResources/SET_IMPORTANCE_MULTI_SUCCESS'\n\nexport const DISABLE_MONITORING_MULTI =\n 'app/MonitoredResources/DISABLE_MONITORING_MULTI'\n\nexport const DISABLE_MONITORING_MULTI_SUCCESS =\n 'app/MonitoredResources/DISABLE_MONITORING_MULTI_SUCCESS'\n\nexport const SET_MONITORED_RESOURCES_ERROR =\n 'app/MonitoredResources/SET_MONITORED_RESOURCES_ERROR'\n","/*\n *\n * MonitoredResources reducer\n *\n */\n\nimport { fromJS } from 'immutable'\nimport { handleActions } from 'redux-actions'\n\nimport {\n GET_MONITORED_RESOURCES,\n SET_MONITORED_RESOURCES,\n SET_IMPORTANCE_MULTI,\n SET_IMPORTANCE_MULTI_SUCCESS,\n DISABLE_MONITORING_MULTI,\n DISABLE_MONITORING_MULTI_SUCCESS,\n SET_MONITORED_RESOURCES_ERROR,\n} from './constants'\n\nconst initialState = fromJS({\n isLoading: false,\n monitoredResources: [],\n error: null,\n isLoadingImportanceMulti: false,\n isLoadingDisableMonitoringMulti: false,\n})\n\nconst monitoredResources = handleActions(\n {\n [GET_MONITORED_RESOURCES]: state =>\n state.set('isLoading', true).set('error', null),\n [SET_MONITORED_RESOURCES]: (state, { payload }) =>\n state.set('isLoading', false).set('monitoredResources', fromJS(payload)),\n [SET_IMPORTANCE_MULTI]: state =>\n state.set('isLoadingImportanceMulti', true),\n [SET_IMPORTANCE_MULTI_SUCCESS]: state =>\n state.set('isLoadingImportanceMulti', false),\n [DISABLE_MONITORING_MULTI]: state =>\n state.set('isLoadingDisableMonitoringMulti', true),\n [DISABLE_MONITORING_MULTI_SUCCESS]: state =>\n state.set('isLoadingDisableMonitoringMulti', false),\n [SET_MONITORED_RESOURCES_ERROR]: (state, { payload }) =>\n state.set('isLoading', false).set('error', payload),\n },\n\n initialState\n)\n\nexport default monitoredResources\n","import { createAction } from 'redux-actions'\nimport {\n GET_MONITORED_RESOURCES,\n SET_MONITORED_RESOURCES,\n SET_IMPORTANCE_MULTI,\n SET_IMPORTANCE_MULTI_SUCCESS,\n DISABLE_MONITORING_MULTI,\n DISABLE_MONITORING_MULTI_SUCCESS,\n SET_MONITORED_RESOURCES_ERROR,\n} from './constants'\n\nexport const getMonitoredResources = createAction(GET_MONITORED_RESOURCES)\nexport const setMonitoredResources = createAction(SET_MONITORED_RESOURCES)\nexport const setImportanceMulti = createAction(SET_IMPORTANCE_MULTI)\nexport const setImportanceMultiSuccess = createAction(\n SET_IMPORTANCE_MULTI_SUCCESS\n)\n\nexport const disableMonitoringMulti = createAction(DISABLE_MONITORING_MULTI)\nexport const disableMonitoringMultiSuccess = createAction(\n DISABLE_MONITORING_MULTI_SUCCESS\n)\nexport const setMonitoredResourcesError = createAction(\n SET_MONITORED_RESOURCES_ERROR\n)\n","import { all, put, takeLatest } from 'redux-saga/effects'\nimport gql from 'graphql-tag'\nimport { getClient } from 'apolloClient'\nimport {\n setMonitoredResources,\n setMonitoredResourcesError,\n setImportanceMultiSuccess,\n disableMonitoringMultiSuccess,\n} from './actions'\nimport {\n GET_MONITORED_RESOURCES,\n SET_IMPORTANCE_MULTI,\n DISABLE_MONITORING_MULTI,\n} from './constants'\n\nfunction* getMonitoredResources({ payload }) {\n const client = getClient()\n\n const { filters = {} } = payload\n let and = []\n if (filters.createdDate && filters.createdDate.value) {\n and.push(\n `{ createdDate: { op: GT value: \"${filters.createdDate.value}\"} }`\n )\n }\n\n if (filters.account && filters.account.length >= 1) {\n and.push(`{ account: { op: IN_LIST values: [${filters.account\n .map(account => `\"${account}\"`)\n .join(', ')}]\n }}`)\n }\n\n if (filters.cloud && filters.cloud.length === 1) {\n and.push(`{\n cloudType:{\n op: EQ\n value: \"${filters.cloud[0].value}\"\n }}`)\n } else if (filters.cloud && filters.cloud.length > 1) {\n and.push(`{\n or: [\n ${filters.cloud\n .map(\n cloud => `{\n cloudType:{\n op: EQ\n value: \"${cloud.value}\"\n }}`\n )\n .join(', ')}\n ]\n }`)\n }\n if (filters.tags && filters.tags.length === 1) {\n and.push(`{\n tagSet:{\n op: CONTAINS\n value: \"${filters.tags[0].value}\"\n }}`)\n } else if (filters.tags && filters.tags.length > 1) {\n and.push(`{\n or: [\n ${filters.tags\n .map(\n tag => `{\n tagSet:{\n op: CONTAINS\n value: \"${tag.value}\"\n }}`\n )\n .join(', ')}\n ]\n }`)\n }\n\n try {\n const result = yield client.query({\n forceFetch: true,\n fetchPolicy: 'no-cache',\n query: gql`\n query getAllMonitoredResources{\n Resources (\n where: {\n and: [\n {\n sonraiConfig:{\n value: MONITORED\n }\n },\n ${and.join(', ')}\n ]\n }\n ) {\n items {\n sonraiConfig,\n name,\n account,\n cloudType,\n lastAlertDate,\n importance,\n region,\n label,\n friendlyName,\n country,\n highestAlertSeverity,\n srn,\n active,\n }\n }\n }\n `,\n })\n\n if (result.data.Resources && result.data.Resources.items === null) {\n throw new Error('Bad formatting of response from server: items is null')\n }\n\n const resources = result.data.Resources.items.sort((a, b) =>\n a.highestAlertSeverity < b.highestAlertSeverity\n ? 1\n : b.highestAlertSeverity < a.highestAlertSeverity\n ? -1\n : 0\n )\n\n yield put(setMonitoredResources(resources))\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('error getting monitored resources ', e)\n yield put(setMonitoredResourcesError(e.message))\n }\n}\n\nfunction* setImportanceMulti(action) {\n const { srns, level } = action.payload\n let queryString = 'mutation setImportance {'\n let i = 0\n srns.forEach(srn => {\n queryString += `\n s${i}: setImportance(srn: \"${srn}\", importance: ${level}) {\n srn\n importance\n }\n `\n i++\n })\n queryString += `\n }\n `\n\n try {\n const client = getClient()\n yield client.mutate({\n mutation: gql`\n ${queryString}\n `,\n })\n\n yield put(setImportanceMultiSuccess())\n } catch (e) {\n //eslint-disable-next-line no-console\n console.error('Error setting importance', e)\n }\n}\n\nfunction* disableMonitoringMulti(action) {\n try {\n const client = getClient()\n yield all(\n action.payload.map(srn => {\n return client.mutate({\n mutation: gql`\n mutation toggleResourceMonitoring {\n setMonitor(monitorStatusBySrn: {srn: \"${srn}\", monitor: false }){\n srn\n monitor\n }\n }\n `,\n })\n })\n )\n yield put(disableMonitoringMultiSuccess())\n } catch (e) {\n //eslint-disable-next-line no-console\n console.error('Error disabling monitoring', e)\n }\n}\n\nfunction* monitoredResourcesSaga() {\n yield all([\n takeLatest(GET_MONITORED_RESOURCES, getMonitoredResources),\n takeLatest(SET_IMPORTANCE_MULTI, setImportanceMulti),\n takeLatest(DISABLE_MONITORING_MULTI, disableMonitoringMulti),\n ])\n}\n\nexport default monitoredResourcesSaga\n","import { createSelector } from 'reselect'\nimport { Map, List } from 'immutable'\n\nexport const selectMonitoredResourcesDomain = state =>\n state.get('monitoredResources', Map()) || Map()\n\nexport const selectMonitoredResources = createSelector(\n selectMonitoredResourcesDomain,\n data => data.get('monitoredResources') || List()\n)\n\nexport const selectIsLoading = createSelector(\n selectMonitoredResourcesDomain,\n data => data.get('isLoading')\n)\n\nexport const selectIsLoadingImportanceMulti = createSelector(\n selectMonitoredResourcesDomain,\n data => data.get('isLoadingImportanceMulti')\n)\n\nexport const selectIsLoadingDisableMonitoringMulti = createSelector(\n selectMonitoredResourcesDomain,\n data => data.get('isLoadingDisableMonitoringMulti')\n)\n\nexport const selectHasError = createSelector(\n selectMonitoredResourcesDomain,\n data => data.get('error')\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\nimport _ from 'lodash'\nimport themeable, { themeShape } from 'containers/ThemeManager/Themeable'\nimport Button from 'components/Button'\nimport Popover, { PopoverBody, PopoverAnchor } from 'components/Popover'\nimport Icon from 'components/Icon'\nimport Select from 'react-select'\nimport moment from 'moment'\nimport TextLink from 'components/TextLink'\nimport AccountSelector from 'components/AccountSelector'\n\nconst FILTERS_AVAILABLE = ['cloud', 'createdDate', 'account', 'tags']\nexport class MonitoredResourcesFilter extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n filterMenuExpanded: false,\n account: undefined,\n cloud: undefined,\n tags: undefined,\n createdDate: undefined,\n }\n\n this.styles = {\n filterList: {\n gridArea: 'filterList',\n paddingTop: '0.75em',\n paddingLeft: '1em',\n fontFamily: 'Roboto-Italic',\n fontSize: '14px',\n color: '#777777',\n },\n sort: {\n marginRight: '0.5em',\n },\n filter: {\n marginLeft: '0.5em',\n },\n filterTitle: {\n marginBottom: '0.5em',\n display: 'block',\n },\n filterHeader: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '0.25rem 0.5rem 0.25rem 0.5rem',\n },\n filterPanelFooter: {\n width: '100%',\n margin: '1rem 0rem 0rem 0rem',\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n },\n }\n }\n\n toggleFilterBubble = () => {\n this.setState(prevState => ({\n filterMenuExpanded: !prevState.filterMenuExpanded,\n cloud: undefined,\n createdDate: undefined,\n account: undefined,\n }))\n }\n\n handleTagFilterChange = value => {\n if (value === null || _.isEmpty(value)) {\n this.setState({\n tags: null,\n })\n } else {\n this.setState({\n tags: value,\n })\n }\n }\n\n handleAccountFilterChange = value => {\n if (value === null || _.isEmpty(value)) {\n this.setState({\n account: null,\n })\n } else {\n this.setState({\n account: value,\n })\n }\n }\n\n handleCloudFilterChange = value => {\n if (value === null || _.isEmpty(value)) {\n this.setState({\n cloud: null,\n })\n } else {\n this.setState({\n cloud: value,\n })\n }\n }\n\n handleCreatedDateFilter = value => {\n if (value) {\n const format = 'YYYY-MM-DD'\n let date = moment()\n .subtract(value.value, 'days')\n .format(format)\n this.setState({\n createdDate: { label: value.label, value: date },\n })\n } else {\n this.setState({\n createdDate: null,\n })\n }\n }\n\n applyFilters = () => {\n const currentFilters = this.props.filters.toJS()\n const filtersModified = FILTERS_AVAILABLE.filter(\n key => this.state[key] !== undefined\n )\n const finalFilters = {\n cloud: currentFilters.cloud,\n createdDate: currentFilters.createdDate,\n account: currentFilters.account,\n tags: currentFilters.tags,\n }\n filtersModified.forEach(filterType => {\n finalFilters[filterType] = this.state[filterType]\n this.props.setFilter({\n filterType,\n value: this.state[filterType],\n })\n })\n this.props.refetchResources(finalFilters)\n this.setState({\n filterMenuExpanded: false,\n })\n }\n\n filtersEmpty = () => {\n const filters = this.props.filters.toJS()\n\n const emptyFilters = FILTERS_AVAILABLE.map(filter => {\n if (filters[filter]) {\n if (Array.isArray(filters[filter])) {\n if (!_.isEmpty(filters[filter])) {\n return false\n }\n }\n return false\n }\n return true\n })\n return !emptyFilters.includes(false)\n }\n\n clearFilters = () => {\n this.toggleFilterBubble()\n this.props.clearFilters()\n }\n\n getAccountSelectorValue = () => {\n const filters = this.props.filters.toJS()\n if (this.state.account === undefined) {\n return filters.account\n ? filters.account.map(account => ({\n label: account.value || account,\n value: account.value || account,\n }))\n : filters.account\n } else {\n if (this.state.account === null) {\n return null\n } else {\n this.state.account.map(account => ({\n label: account.value || account,\n value: account.value || account,\n }))\n }\n }\n }\n\n isDisabled = () => false\n\n getTagOptions = () => {\n const serverTags = this.props.tags\n .filter(tag => !!tag.get('key'))\n .sortBy(tag => tag.get('key').toLowerCase())\n .toJS()\n .map(tag => ({ value: tag.key, label: tag.key }))\n\n const additionalOptions = this.state.tags\n ? this.state.tags.map(tagStr => ({\n value: tagStr,\n label: tagStr,\n }))\n : []\n\n return serverTags.concat(additionalOptions)\n }\n\n render() {\n const filters = this.props.filters.toJS()\n return (\n \n \n {this.filtersEmpty() ? (\n \n ) : (\n \n )}\n \n \n
\n
\n \n Filters\n
\n \n Clear All Filters\n \n
\n\n
\n Created Date:\n \n
\n
\n Accounts:\n \n
\n
\n Clouds:\n \n
\n
\n Tags:\n \n
\n \n
\n \n Cancel\n \n \n Apply\n \n
\n
\n \n )\n }\n}\n\nMonitoredResourcesFilter.propTypes = {\n filters: ImmutablePropTypes.map,\n clearFilters: PropTypes.func,\n setFilter: PropTypes.func.isRequired,\n refetchResources: PropTypes.func.isRequired,\n accounts: ImmutablePropTypes.iterable,\n tags: ImmutablePropTypes.iterable,\n theme: themeShape,\n}\n\nexport default themeable(MonitoredResourcesFilter)\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\nimport { connect } from 'react-redux'\nimport { createStructuredSelector } from 'reselect'\nimport { compose, bindActionCreators } from 'redux'\nimport _ from 'lodash'\nimport Tooltip from 'components/Tooltip'\nimport TextLink from 'components/TextLink'\nimport BorderlessButton from 'components/BorderlessButton'\nimport SquareLoadingAnimation from 'components/SquareLoadingAnimation'\nimport { fromJS } from 'immutable'\nimport Icon from 'components/Icon'\nimport { push } from 'connected-react-router'\nimport reducer from './reducer'\nimport saga from './sagas'\nimport {\n selectMonitoredResources,\n selectHasError,\n selectIsLoading,\n selectIsLoadingImportanceMulti,\n selectIsLoadingDisableMonitoringMulti,\n} from './selectors'\nimport {\n getMonitoredResources,\n setImportanceMulti,\n disableMonitoringMulti,\n} from './actions'\nimport injectReducer from 'utils/injectReducer'\nimport injectSaga from 'utils/injectSaga'\nimport permissionChecker from 'containers/PermissionChecker'\nimport themeable, { themeShape } from 'containers/ThemeManager/Themeable'\nimport BorderedCard from 'components/BorderedCard'\nimport DataTable from 'components/DataTable'\nimport { getNodeViewPushParams } from 'utils/sonraiUtils'\nimport { ToolbarItem } from 'components/BulkActionToolbar'\nimport SectionHeader from 'components/SectionHeader'\nimport { fetchTags } from 'containers/SonraiData/actions'\nimport {\n selectSwimlanes,\n selectTags,\n selectAccounts,\n} from 'containers/SonraiData/selectors'\nimport MonitoredResourcesFilter from './MonitoredResourcesFilter'\nimport { exists } from 'utils/sonraiUtils'\nimport ChangeImportanceModal from 'containers/SearchResults/ChangeImportanceModal'\nimport SlideoutPanel from 'components/SlideoutPanel'\nimport NodeSolutionCenter from 'containers/NodeSolutionCenter'\nimport Error from 'components/Error'\nclass MonitoredResources extends Component {\n constructor(props) {\n super(props)\n\n this.hasPermission = props.userHasPermission({\n permissionName: 'view.data',\n })\n\n if (this.hasPermission) {\n if (props.tags.isEmpty()) {\n props.fetchTags()\n }\n\n props.getMonitoredResources({ filters: {} })\n }\n this.styles = {\n container: {\n display: 'grid',\n gridTemplateColumns: '100%',\n overflow: 'hidden',\n height: '100%',\n },\n containerWithPanel: {\n display: 'grid',\n gridTemplateColumns: '50% 50%',\n gridTemplateAreas: \"'results details'\",\n overflow: 'hidden',\n height: '100%',\n },\n wrapper: {\n height: '100%',\n width: '100%',\n display: 'grid',\n padding: '1em',\n gridTemplateRows: 'auto 1fr',\n gridTemplateAreas: '\"pagetitle\" \"content\"',\n },\n tooltip: {\n display: 'flex',\n flexDirection: 'column',\n padding: '5px',\n },\n filters: {\n display: 'flex',\n alignItems: 'center',\n },\n loading: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n }\n this.state = {\n createdDate: undefined,\n cloud: undefined,\n account: undefined,\n tags: undefined,\n selectedResources: [],\n isImportanceModalOpen: false,\n showPanel: false,\n type: null,\n nodeId: null,\n }\n }\n\n updateData = () => {\n this.setState({\n selectedResources: [],\n })\n this.props.getMonitoredResources({ filters: {} })\n }\n\n componentDidUpdate(prevProps) {\n if (\n (prevProps.isLoadingImportanceMulti &&\n !this.props.isLoadingImportanceMulti) ||\n (prevProps.isLoadingDisableMonitoringMulti &&\n !this.props.isLoadingDisableMonitoringMulti)\n ) {\n this.updateData()\n }\n }\n\n handleRowDoubleClick = (srn, type) => {\n let nav = getNodeViewPushParams(srn, type)\n nav.search = `${nav.search}&alert=true`\n\n this.props.push(nav)\n }\n\n goToSelectedNodeView = () => {\n const { nodeId, type } = this.state\n let nav = getNodeViewPushParams(nodeId, type)\n nav.search = `${nav.search}&alert=true`\n return nav\n }\n\n getHelpIcon = () => (\n
\n \n \n \n }\n tooltipContent={\n
\n \n These are the critical resources you have defined to have change\n detections recorded for. To add additional resources to the list,\n build or use a search result to find identities and data\n resources. Then \"Enable Monitoring\" or add \"Change Detection\" from\n the top right corner of the node view results after clicking on a\n result in the search.\n \n
\n }\n position=\"right\"\n />\n
\n )\n\n handleSlideOut = (nodeId, type) => {\n this.setState({\n nodeId,\n type,\n showPanel: true,\n })\n }\n\n refetchResources = filters => {\n let newFilters = {}\n _.keys(filters).forEach(key => {\n if (exists(filters[key])) {\n newFilters[key] = filters[key]\n }\n })\n\n this.props.getMonitoredResources({\n filters: newFilters,\n })\n }\n\n handleSelectionChange = evnt => {\n this.setState({\n selectedResources: evnt.api.getSelectedRows().map(row => row.srn),\n })\n }\n\n setFilter = filter => {\n this.setState({\n [filter.filterType]: filter.value || undefined,\n })\n }\n\n clearFilters = () => {\n this.setState({\n createdDate: undefined,\n cloud: undefined,\n account: undefined,\n tags: undefined,\n })\n this.refetchResources({})\n }\n\n toggleChangeImportanceModal = () => {\n this.setState(prevState => {\n return { isImportanceModalOpen: !prevState.isImportanceModalOpen }\n })\n }\n\n changeImportanceMulti = level => {\n this.props.setImportanceMulti({\n level: level,\n srns: this.state.selectedResources.map(srn => srn),\n })\n }\n\n handleMultiDisableMonitoring = () =>\n this.props.disableMonitoringMulti(this.state.selectedResources)\n\n render() {\n if (!this.hasPermission) {\n return (\n \n {' '}\n Insufficent Permissions to view Monitored Resources{' '}\n \n )\n }\n\n if (this.props.errorMessage) {\n return (\n \n )\n }\n\n const canEdit = this.props.userHasPermission({\n permissionName: 'edit.crmsettings',\n })\n\n return (\n \n
\n
\n All Monitored Resources\n {this.getHelpIcon()}\n
\n \n {this.props.isLoading ? (\n
\n \n
\n ) : (\n \n Disable Monitoring\n ,\n \n Change Importance\n ,\n ]}\n customFilter={() => (\n
\n \n
\n )}\n />\n )}\n
\n \n
\n this.setState({ showPanel: false })}\n actions={\n \n Go to full node view\n \n }\n >\n {this.state.showPanel && (\n \n )}\n \n \n )\n }\n}\n\nMonitoredResources.propTypes = {\n theme: themeShape,\n getMonitoredResources: PropTypes.func.isRequired,\n monitoredResources: ImmutablePropTypes.iterable,\n isLoading: PropTypes.bool,\n push: PropTypes.func.isRequired,\n swimlanes: ImmutablePropTypes.iterable,\n accounts: ImmutablePropTypes.iterable,\n tags: ImmutablePropTypes.iterable,\n fetchTags: PropTypes.func,\n setImportanceMulti: PropTypes.func,\n isLoadingImportanceMulti: PropTypes.bool,\n disableMonitoringMulti: PropTypes.func,\n isLoadingDisableMonitoringMulti: PropTypes.bool,\n userHasPermission: PropTypes.func.isRequired,\n errorMessage: PropTypes.string,\n}\n\nconst mapStateToProps = createStructuredSelector({\n errorMessage: selectHasError,\n monitoredResources: selectMonitoredResources,\n isLoading: selectIsLoading,\n swimlanes: selectSwimlanes,\n accounts: selectAccounts,\n tags: selectTags,\n isLoadingImportanceMulti: selectIsLoadingImportanceMulti,\n isLoadingDisableMonitoringMulti: selectIsLoadingDisableMonitoringMulti,\n})\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n getMonitoredResources,\n push,\n fetchTags,\n setImportanceMulti,\n disableMonitoringMulti,\n },\n dispatch\n )\n}\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps)\nconst withReducer = injectReducer({ key: 'monitoredResources', reducer })\nconst withSaga = injectSaga({ key: 'mR', saga: saga })\n\nexport default compose(\n withReducer,\n withSaga,\n withConnect,\n permissionChecker\n)(themeable(MonitoredResources))\n"],"sourceRoot":""}