{"version":3,"sources":["webpack:///static/js/app.d4105ff6fec3c02725cc.js","webpack:///./src/core/storage.js","webpack:///./src/core/util.js","webpack:///./src/assets/img/carregando-mensagens.gif","webpack:///./src/assets/img/perfil.png","webpack:///./src/components/index.js","webpack:///./src/core/bootstrap.js","webpack:///./src/directives/index.js","webpack:///./src/modules/index.js","webpack:///./src/services/index.js","webpack:///./src/core/config/central-app-config.js","webpack:///./src/core/config/central-constant.js","webpack:///./src/core/config/central-interceptors.js","webpack:///./src/core/config/simditor.js","webpack:///./src/directives/icone.js","webpack:///./src/main.js","webpack:///./src/modules/abrir-chamado/abrir-chamado-config.js","webpack:///./src/modules/abrir-chamado/abrir-chamado-controller.js","webpack:///./src/modules/abrir-chamado/abrir-chamado-segmentos-controller.js","webpack:///./src/modules/autenticacao/autenticacao-config.js","webpack:///./src/modules/autenticacao/autenticacao-controller.js","webpack:///./src/modules/autenticacao/autenticacao-interceptor.js","webpack:///./src/modules/autenticacao/usuario-service.js","webpack:///./src/modules/detalhe-chamado/detalhe-chamado-api-service.js","webpack:///./src/modules/detalhe-chamado/detalhe-chamado-config.js","webpack:///./src/modules/detalhe-chamado/detalhe-chamado-controller.js","webpack:///./src/modules/layout/layout-config.js","webpack:///./src/modules/layout/layout-controller.js","webpack:///./src/modules/layout/layout-footer-component.js","webpack:///./src/modules/layout/layout-head-component.js","webpack:///./src/modules/layout/layout-sidebar-component.js","webpack:///./src/modules/meus-chamados/meus-chamados-api-service.js","webpack:///./src/modules/meus-chamados/meus-chamados-config.js","webpack:///./src/modules/meus-chamados/meus-chamados-controller.js","webpack:///./src/services/anexos-api-service.js","webpack:///./src/services/catalogo-servico-api-service.js","webpack:///./src/services/categorizacoes-api-service.js","webpack:///./src/services/chamado-api-service.js","webpack:///./src/services/chat-service.js","webpack:///./src/services/colaboradores-api-service.js","webpack:///./src/services/roteamentos-api-service.js","webpack:///./src/services/sistema-api-service.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/extensions/simditor-date-button/simditor-date-button.coffee","webpack:///./src/modules/abrir-chamado/abrir-chamado-segmentos-template.html","webpack:///./src/modules/abrir-chamado/abrir-chamado-template.html","webpack:///./src/modules/autenticacao/login.html","webpack:///./src/modules/autenticacao/modal-recuperar-senha.html","webpack:///./src/modules/detalhe-chamado/detalhe-chamado-template.html","webpack:///./src/modules/layout/layout-footer-template.html","webpack:///./src/modules/layout/layout-head-template.html","webpack:///./src/modules/layout/layout-sidebar-template.html","webpack:///./src/modules/layout/layout-template.html","webpack:///./src/modules/meus-chamados/_lista-visao-alternativa01.html","webpack:///./src/modules/meus-chamados/_lista-visao-default.html","webpack:///./src/modules/meus-chamados/_paginacao.html","webpack:///./src/modules/meus-chamados/meus-chamados-template.html","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/anexos/anexos-template.html","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/chat/atendente/atendente.html","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/chat/solicitante/solicitante.html","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/credencial-usuario/credencial-usuario-template.html","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/listas/situacoes/situacoes.html","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/painel/painel-component-template.html","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/redirecionamentos/redirecionamentos.html","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/segmento-selecionado/segmento.html","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/visualizar-arquivo/visualizar-arquivo-template.html","webpack:///./~/moment/locale ^\\.\\/.*$","webpack:///./src/core/config/central-app-env.json","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/aba/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/anexos/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/arrastavel/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/baixar-arquivo/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/bto-alternar/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/chat/atendente/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/chat/solicitante/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/credencial-usuario/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/img-usuario/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/ler-arquivo/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/listas/situacoes/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/painel/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/preview-image/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/redirecionamentos/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/segmento-selecionado/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/tempo-decorrido/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/versao/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/components/visualizar-arquivo/index.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/plugins/filters.plugin.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/plugins/menu.plugin.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/plugins/ui.plugin.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/services/event-service.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/services/notificacao-service.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/services/notificacao-stream-service.js","webpack:///../Projecao.ContactCenter.WebApp.Compartilhado/services/segmentos-api-service.js"],"names":["webpackJsonp","module","__webpack_exports__","__webpack_require__","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify__","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify___default","n","get","key","JSON","parse","localStorage","getItem","e","set","value","setItem","remove","removeItem","clear","parseQuery","query","specialValues","null","true","false","length","substr","queryArgs","split","result","forEach","arg","idx","indexOf","name","decodeURIComponent","hasOwnProperty","Array","isArray","push","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys__","exports","p","__WEBPACK_IMPORTED_MODULE_0_angular__","__WEBPACK_IMPORTED_MODULE_1_angular__","__WEBPACK_IMPORTED_MODULE_3_angular_animate__","__WEBPACK_IMPORTED_MODULE_4_angular_cookies__","__WEBPACK_IMPORTED_MODULE_5_angular_drop_image__","__WEBPACK_IMPORTED_MODULE_6_angular_i18n_pt_br__","__WEBPACK_IMPORTED_MODULE_7_angular_notification__","__WEBPACK_IMPORTED_MODULE_8_angular_resource__","__WEBPACK_IMPORTED_MODULE_9_angular_route__","__WEBPACK_IMPORTED_MODULE_10_angular_sanitize__","__WEBPACK_IMPORTED_MODULE_11_angular_strap__","__WEBPACK_IMPORTED_MODULE_12_angular_ui_router__","__WEBPACK_IMPORTED_MODULE_13_angular_ui_sortable__","__WEBPACK_IMPORTED_MODULE_14_angular_paging__","__WEBPACK_IMPORTED_MODULE_15_angular_loading_bar__","__WEBPACK_IMPORTED_MODULE_16_ngstorage__","__WEBPACK_IMPORTED_MODULE_17_ui_select__","__WEBPACK_IMPORTED_MODULE_18_ng_plugin__","window","$","jQuery","moment","_","signalr","toastr","saveAs","__WEBPACK_IMPORTED_MODULE_0__central_app_config__","__WEBPACK_IMPORTED_MODULE_2__central_interceptors__","__WEBPACK_IMPORTED_MODULE_2__icone__","directive","__WEBPACK_IMPORTED_MODULE_6_compartilhado_plugins_ui_plugin__","__WEBPACK_IMPORTED_MODULE_7_compartilhado_plugins_filters_plugin__","use","centralConfig","$stateProvider","$urlRouterProvider","$localStorageProvider","$httpProvider","$sessionStorageProvider","$locationProvider","cfpLoadingBarProvider","ngSimditorProvider","$animateProvider","classNameFilter","setToolbar","setLocale","otherwise","state","url","templateUrl","setKeyPrefix","includeSpinner","interceptors","html5Mode","enabled","requireBase","locale","balcaoRun","$rootScope","Usuario","$state","$on","event","toState","toParams","fromState","fromParams","previous","params","verificarAutorizacao","estadoMemorizado","has","data","redirecionarPara","resetarAutorizacao","memorizar","go","error","bootstrap","angular","run","config","$inject","__WEBPACK_IMPORTED_MODULE_0_lodash__","__WEBPACK_IMPORTED_MODULE_1__central_app_env__","__WEBPACK_IMPORTED_MODULE_1__central_app_env___default","constant","i","UrlApi","UrlBase","CentralAppId","CentralServicoModuloId","UrlLogin","UrlCstiApi","CstiApiId","LinkFoto","login","tamanho","a","SuporteIeItp","request","headers","factory","__WEBPACK_IMPORTED_MODULE_0_simditor_styles_simditor_css__","__WEBPACK_IMPORTED_MODULE_1_simditor_markdown_github_styles_simditor_markdown_github_css__","Simditor","icon","restrict","replace","scope","css","link","element","attrs","elem","fa","addClass","spin","fp","size","bo","class","rotate","transform","$watch","__WEBPACK_IMPORTED_MODULE_0__core_util__","template","Object","defineProperty","__WEBPACK_IMPORTED_MODULE_6_bootstrap__","app","document","strictDi","abrirChamadoConfig","controller","controllerAs","autorizacao","abrirChamadoCtrl","$stateParams","Event","notificacao","categorizacoesApi","chamadosApi","$sessionStorage","abrirChamado","chamado","formChamado","FormData","append","grupoDeSuporteSegmentoId","assunto","impactoSolicitante","impactoId","urgenciaSolicitante","urgenciaId","aberturaUnidade","escape","mensagem","each","anexos","anexo","$ctrl","api","response","sucesso","ticket","erros","erroResponse","erro","$promise","colar","$event","fire","this","Date","segmentoParametros","unidades","credencial","listarImpactos","impactos","listarUrgencias","urgencias","registroAd","unidade","abrirChamadoSegmentosCtrl","$scope","$filter","$localStorage","segmentosApi","carregarSegmentos","listarSegmentos","segmentos","errorResponse","acessarSegmento","segmento","isEqual","isNull","first","canalDeAtendimentoId","grupoDeSuporteId","alternarTipoLista","tipo","$storage","tipoListaSegmento","atualizarSegmentos","then","history","showForward","retornar","$default","isEmpty","omitBy","__WEBPACK_IMPORTED_MODULE_0__abrir_chamado_config__","__WEBPACK_IMPORTED_MODULE_1__abrir_chamado_controller__","__WEBPACK_IMPORTED_MODULE_2__abrir_chamado_segmentos_controller__","__WEBPACK_IMPORTED_MODULE_3__abrir_chamado_css__","abstract","autenticacaoCtrl","$modal","usuario","anoAtual","recuperacaoSenhaId","buscarTexto","recuperarSenha","modal","title","titulo","content","show","html","backdrop","fecharModal","recuperarSenhaContabilizar","hide","irPara","autenticacaoItp","$cookies","ConfigApp","$injector","$q","token","Authorization","responseError","rejection","status","location","reject","__WEBPACK_IMPORTED_MODULE_0__autenticacao_config__","__WEBPACK_IMPORTED_MODULE_1__autenticacao_controller__","__WEBPACK_IMPORTED_MODULE_2__autenticacao_interceptor__","__WEBPACK_IMPORTED_MODULE_3__usuario_service__","__WEBPACK_IMPORTED_MODULE_4__login_css__","usuarioSrv","$http","$timeout","NotificacaoStream","autorizado","autenticado","retirada","estado","self","grant_type","req","method","undefined","Content-Type","param","warning","logout","expires_in","put","access_token","$reset","deferred","defer","resolve","ignoreLoadingBar","conectar","canaisDeAtendimento","canais","bind","promise","post","service","detalheChamadoSrv","$resource","verificarRespostas","redirecionamentos","chamadoId","detalheChamadoConfig","detalheChamadoCtrl","detalheChamadoApi","carregar","detalhesChamado","infoChamado","map","ehImagem","test","arquivoExtensao","dimensaoArquivos","sumBy","buscarRedirecionamento","atualizarChamado","redirecionamento","on","payload","__WEBPACK_IMPORTED_MODULE_0__detalhe_chamado_config__","__WEBPACK_IMPORTED_MODULE_1__detalhe_chamado_controller__","__WEBPACK_IMPORTED_MODULE_2__detalhe_chamado_api_service__","__WEBPACK_IMPORTED_MODULE_2__layout_footer_component__","__WEBPACK_IMPORTED_MODULE_4__layout_sidebar_component__","layoutConfig","$datepickerProvider","extend","defaults","dateFormat","startWeek","__WEBPACK_IMPORTED_MODULE_0__layout_css__","__WEBPACK_IMPORTED_MODULE_1_compartilhado_plugins_menu_plugin__","layoutCtrl","menu","aberto","__WEBPACK_IMPORTED_MODULE_0__core_storage__","MENU_KEY","menuLateral","animate","left","situacao","$broadcast","footerCtrl","component","headCtrl","mensagens","envelope","messages","message","notificar","Key","Value","type","driver","menuEscondido","alternarMenu","$emit","ouvir","sidebarCtrl","__WEBPACK_IMPORTED_MODULE_0__meus_chamados_config__","__WEBPACK_IMPORTED_MODULE_1__meus_chamados_api_service__","__WEBPACK_IMPORTED_MODULE_2__meus_chamados_controller__","__WEBPACK_IMPORTED_MODULE_3__style_css__","meusChamadosSrv","listarMeusChamados","meusChamadosConfig","$templateCache","meusChamadosCtrl","meusChamadosApi","buscarMeusChamados","page","parametros","merge","clone","pesquisa","pagina","maximoRegistrosPorPagina","dataInicio","normalizarData","dataFim","buscando","seNulo","resposta","registrosEncontrados","registro","totalAnexo","contadorAnexos","chamados","paginaAtual","totalRegistrosEncontrados","atualizarPagina","valor","isDate","toISOString","slice","tipoListaChamado","atualizar","limiteMensagem","debounce","listarSituacoes","situacoes","listarCanaisDeAtendimento","anexoSrv","baixarArquivo","responseType","interceptor","resource","catalogoServicoApi","listarCategoriasAtendimento","listarCatalogosServico","categorizacoesSrv","cache","listarSituacoesEncerramento","enctype","responderAoAtendente","chatService","origemParticipante","enviar","colaboradoresApi","atendentesInicio","atendentesFim","roteamentoChamadoApi","listarEnderecos","listarMotivos","sistemaApiFactory","versao","DateButton","_ref","__hasProp","__extends","child","parent","ctor","constructor","call","prototype","__super__","_super","apply","arguments","htmlTag","needFocus","_status","command","$newBlock","$nextBlock","$rootBlock","$span","editor","selection","rootNodes","next","save","util","phBr","text","_getDate","insertAfter","setRangeAtStartOf","restore","trigger","day","fulldate","month","now","time","year","getDate","getMonth","getFullYear","join","toString","match","Button","Toolbar","addButton","webpackContext","webpackContextResolve","id","Error","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","keys","production","development","homologation","training","AbasController","abas","adicionar","aba","selecionado","selecionar","selecionada","transclude","bindings","require","icone","$onInit","anexosCtrl","adicionarAnexo","arquivo","arquivos","colarArquivo","callback","items","file","adicionarTransferido","getAsFile","nomeArquivo","format","last","arquivoTransferido","File","lastModified","calcularDimensaoArquivo","noop","dimensao","excluirArquivo","index","splice","excluido","originalEvent","handle","$apply","arquivoAnexoCtrl","excluir","__WEBPACK_IMPORTED_MODULE_0__anexos_css__","centralApp","arrastarDirective","$document","attr","mousemove","y","pageY","startY","x","pageX","startX","top","mouseup","off","mover","target","style","cursor","position","backgroundColor","preventDefault","baixarAnexoCtrl","anexoApi","baixar","baixando","arquivoNome","$element","$attr","btoAlternarCtrl","alternar","alvo","manipulador","discussaoCtrl","Chat","buscarMensagens","mensagensRequest","total","buscandoMensagens","responder","formResposta","nome","origem","unshift","respondido","exibirForm","perfil","permitirResposta","__WEBPACK_IMPORTED_MODULE_0__atendente__","__WEBPACK_IMPORTED_MODULE_1__solicitante__","__WEBPACK_IMPORTED_MODULE_2__style_css__","chamadoSituacaoId","console","log","credencialUsuarioCtrl","foto","__WEBPACK_IMPORTED_MODULE_0__credencial_usuario_css__","imgUsuarioFunc","semImg","padrao","imgUsuario","prop","$observe","$set","__WEBPACK_IMPORTED_MODULE_0__img_usuario_directive_css__","lerArquivoFunc","carregado","ngModel","$render","readFile","reader","FileReader","onload","onerror","readAsDataURL","all","files","values","multiple","$setViewValue","listaSituacoesFunc","setNgModel","definitSituacao","selecionarSituacao","$ngModelctrl","__WEBPACK_IMPORTED_MODULE_0__painel_component_css__","subtitulo","ngClass","previewImageFunc","src","$attrs","init","redraw","p1","ctx","transformedPoint","p2","canvas","width","height","clearRect","setTransform","drawImage","gkhead","$parent","clientWidth","clientHeight","getContext","trackTransforms","dragStart","dragged","lastX","lastY","addEventListener","evt","body","mozUserSelect","webkitUserSelect","userSelect","offsetX","offsetLeft","offsetY","offsetTop","$el","pt","translate","zoom","shiftKey","clicks","factor","Math","pow","scale","handleScroll","delta","wheelDelta","detail","svg","createElementNS","xform","createSVGMatrix","getTransform","savedTransforms","pop","sx","sy","scaleNonUniform","radians","PI","dx","dy","b","c","d","f","m2","multiply","createSVGPoint","matrixTransform","inverse","find","Image","setTimeout","__WEBPACK_IMPORTED_MODULE_0__style_css__","de","segmentoSelecionadoCtrl","obterDadosChamado","lerDadosChamado","segmentoSelecionado","exibir","grupoDeSuporteSegmento","grupoDeSuporte","tempoController","$interval","tempo","real","versaoSistemaCtrl","sistemaApi","visualizarArquivoCtrl","abrindo","Blob","lerArquivo","base64","exibirImagem","onHide","removeClass","install","mod","filter","dataInicial","isValid","duration","diff","humanize","colecao","item","retornoTrue","retornoFalse","tem","texto","borda","String","bytes","decimals","dm","sizes","floor","parseFloat","toFixed","procudado","fn","flatten","v","object","li","is","slideUp","slideDown","prefix","camelCase","isBefore","display","to","add","dias","opts","odometer","$eval","options","el","Odometer","update","isChrome","chrome","webstore","resize","innerHeight","parseInt","offset","overflow","ready","stop","scrollTop","documentElement","scrollTotal","parte","$digest","scroll","scrollHeight","emit","border-top","border-botton","isActive","$elem","capsLock","visible","$target","keyCode","code","charCode","shift","eventoService","handler","removeListener","once","notificacaoSrv","$alert","$notification","$window","opcoes","duracao","com","durante","segundados","alerta","aviso","info","negado","isUndefined","normalizarDriver","disparar","capitalize","criarStrapDriver","animation","placement","criarToastrDriver","closeButton","debug","newestOnTop","progressBar","positionClass","preventDuplicates","showDuration","hideDuration","extendedTimeOut","showEasing","hideEasing","showMethod","hideMethod","timeOut","criarDesktopDriver","requestPermission","permissao","focusWindowOnClick","delay","imagem","tag","kebabCase","connection","hubConnection","hubProxy","createHubProxy","registrados","em","evento","args","canal","invoke","done","$this","start","fail","segmentosSrv","listarSegmentosPorCanal"],"mappings":"AAAAA,cAAc,IACP,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACC,CAEF,SAAUC,EAAQC,EAAqBC,GAE7C,YACqB,IAAIC,GAAqED,EAAoB,KACzFE,EAA6EF,EAAoBG,EAAEF,ECjB5HF,GAAA,GACIK,IADW,SACNC,GACD,IACI,MAAOC,MAAKC,MAAMC,aAAaC,QAAQJ,IACzC,MAAOK,MAGbC,IAPW,SAONN,EAAKO,GACN,IACIJ,aAAaK,QAAQR,EAAKH,IAAeU,IAC3C,MAAOF,MAGbI,OAbW,SAaHT,GACJ,IACIG,aAAaO,WAAWV,GAC1B,MAAOK,MAGbM,MAnBW,WAoBP,IACIR,aAAaQ,QACf,MAAON,QDsBX,SAAUZ,EAAQC,EAAqBC,GAE7C,YE9CO,SAASiB,GAAWC,GACvB,GAAIC,IACAC,KAAQ,KACRC,MAAQ,EACRC,OAAS,EAEb,KAAKJ,EAAO,QACZ,IAAqB,gBAAVA,GACP,MAAOA,EAEOA,GAAMK,MACxB,IAA2B,MAAvBL,EAAMM,OAAO,EAAG,IAAmC,MAArBN,EAAMM,QAAQ,GAC5C,MAAOlB,MAAKC,MAAMW,EAGtB,IAAIO,GAAYP,EAAMQ,MAAM,UAExBC,IA6BJ,OA3BAF,GAAUG,QAAQ,SAAUC,GACxB,GAAIC,GAAMD,EAAIE,QAAQ,IACtB,IAAID,GAAO,EAAG,CACV,GAAIE,GAAOH,EAAIL,OAAO,EAAGM,GACrBlB,EAAQqB,mBAAmBJ,EAAIL,OAAOM,EAAM,GAC5CX,GAAce,eAAetB,KAC7BA,EAAQO,EAAcP,IAEF,OAApBoB,EAAKR,QAAQ,IACbQ,EAAOC,mBAAmBD,EAAKR,OAAO,EAAGQ,EAAKT,OAAS,IAClDY,MAAMC,QAAQT,EAAOK,MACtBL,EAAOK,OACXL,EAAOK,GAAMK,KAAKzB,KAElBoB,EAAOC,mBAAmBD,GAC1BL,EAAOK,GAAQpB,OAGM,MAArBiB,EAAIL,OAAO,EAAG,GACdG,EAAOM,mBAAmBJ,EAAIL,OAAO,MAAO,EAChB,MAArBK,EAAIL,OAAO,EAAG,GACrBG,EAAOM,mBAAmBJ,EAAIL,OAAO,MAAO,EAE5CG,EAAOM,mBAAmBJ,KAAQ,IAIvCF,EFCU,GAAIW,GAAkEtC,EAAoB,IACZA,GAAoBG,EAAEmC,EACxFvC,GAAuB,EAAIkB,GAmFpD,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACC,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CAEH,SAAUnB,EAAQyC,EAASvC,GG5PjCF,EAAAyC,QAAAvC,EAAAwC,EAAA,+CHkQM,SAAU1C,EAAQyC,EAASvC,GIlQjCF,EAAAyC,QAAAvC,EAAAwC,EAAA,iCJuQS,CACA,CACA,CAEH,SAAU1C,EAAQC,EAAqBC,GAE7C,YACqB,IAAIyC,GAAwCzC,EAAoB,EACZA,GAAoBG,EAAEsC,EK7Q/FA,GAAA,OAAe,qBAGfzC,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,MLmRF,SAAUF,EAAQC,EAAqBC,GAE7C,YACqB,IACI0C,IADwE1C,EAAoB,KACpDA,EAAoB,IAG5D2C,GAFgD3C,EAAoBG,EAAEuC,GAClB1C,EAAo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AC,aAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,aAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,aAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,aAAA,GACAC,gBAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,UAAA,GACAC,aAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,UAAA,GACAC,OAAA,GAC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","file":"static/js/app.d4105ff6fec3c02725cc.js","sourcesContent":["webpackJsonp([1],[\n/* 0 */,\n/* 1 */,\n/* 2 */,\n/* 3 */,\n/* 4 */,\n/* 5 */,\n/* 6 */,\n/* 7 */,\n/* 8 */,\n/* 9 */,\n/* 10 */,\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify__ = __webpack_require__(205);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify__);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n get: function get(key) {\n try {\n return JSON.parse(localStorage.getItem(key));\n } catch (e) {}\n },\n set: function set(key, value) {\n try {\n localStorage.setItem(key, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify___default()(value));\n } catch (e) {}\n },\n remove: function remove(key) {\n try {\n localStorage.removeItem(key);\n } catch (e) {}\n },\n clear: function clear() {\n try {\n localStorage.clear();\n } catch (e) {}\n }\n});\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys__ = __webpack_require__(206);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys__);\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = parseQuery;\n/* unused harmony export parseString */\n/* unused harmony export mapDirective */\n\nfunction parseQuery(query) {\n var specialValues = {\n 'null': null,\n 'true': true,\n 'false': false\n };\n if (!query) return {};\n if (typeof query !== \"string\") return query;\n\n var queryLength = query.length;\n if (query.substr(0, 1) === \"{\" && query.substr(-1) === \"}\") {\n return JSON.parse(query);\n }\n\n var queryArgs = query.split(/[,\\&]/g);\n\n var result = {};\n\n queryArgs.forEach(function (arg) {\n var idx = arg.indexOf(\"=\");\n if (idx >= 0) {\n var name = arg.substr(0, idx);\n var value = decodeURIComponent(arg.substr(idx + 1));\n if (specialValues.hasOwnProperty(value)) {\n value = specialValues[value];\n }\n if (name.substr(-2) === \"[]\") {\n name = decodeURIComponent(name.substr(0, name.length - 2));\n if (!Array.isArray(result[name])) result[name] = [];\n result[name].push(value);\n } else {\n name = decodeURIComponent(name);\n result[name] = value;\n }\n } else {\n if (arg.substr(0, 1) === \"-\") {\n result[decodeURIComponent(arg.substr(1))] = false;\n } else if (arg.substr(0, 1) === \"+\") {\n result[decodeURIComponent(arg.substr(1))] = true;\n } else {\n result[decodeURIComponent(arg)] = true;\n }\n }\n });\n return result;\n};\n\nfunction parseString(str) {\n try {\n if (str[0] === '\"') return JSON.parse(str);\n if (str[0] === \"'\" && str.substr(str.length - 1) === \"'\") {\n return parseString(str.replace(/\\\\.|\"/g, function (x) {\n if (x === '\"') return '\\\\\"';\n return x;\n }).replace(/^'|'$/g, '\"'));\n }\n return JSON.parse('\"' + str + '\"');\n } catch (e) {\n return str;\n }\n};\n\nfunction normalizeMap(map) {\n return Array.isArray(map) ? map.map(function (key) {\n return { key: key, val: key };\n }) : __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys___default()(map).map(function (key) {\n return { key: key, val: map[key] };\n });\n}\n\nfunction mapDirective(directive) {\n var normalized = normalizeMap(directive)[0];\n\n return [normalized.key, function () {\n return normalized.val;\n }];\n}\n\n/***/ }),\n/* 13 */,\n/* 14 */,\n/* 15 */,\n/* 16 */,\n/* 17 */,\n/* 18 */,\n/* 19 */,\n/* 20 */,\n/* 21 */,\n/* 22 */,\n/* 23 */,\n/* 24 */,\n/* 25 */,\n/* 26 */,\n/* 27 */,\n/* 28 */,\n/* 29 */,\n/* 30 */,\n/* 31 */,\n/* 32 */,\n/* 33 */,\n/* 34 */,\n/* 35 */,\n/* 36 */,\n/* 37 */,\n/* 38 */,\n/* 39 */,\n/* 40 */,\n/* 41 */,\n/* 42 */,\n/* 43 */,\n/* 44 */,\n/* 45 */,\n/* 46 */,\n/* 47 */,\n/* 48 */,\n/* 49 */,\n/* 50 */,\n/* 51 */,\n/* 52 */,\n/* 53 */,\n/* 54 */,\n/* 55 */,\n/* 56 */,\n/* 57 */,\n/* 58 */,\n/* 59 */,\n/* 60 */,\n/* 61 */,\n/* 62 */,\n/* 63 */,\n/* 64 */,\n/* 65 */,\n/* 66 */,\n/* 67 */,\n/* 68 */,\n/* 69 */,\n/* 70 */,\n/* 71 */,\n/* 72 */,\n/* 73 */,\n/* 74 */,\n/* 75 */,\n/* 76 */,\n/* 77 */,\n/* 78 */,\n/* 79 */,\n/* 80 */,\n/* 81 */,\n/* 82 */,\n/* 83 */,\n/* 84 */,\n/* 85 */,\n/* 86 */,\n/* 87 */,\n/* 88 */,\n/* 89 */,\n/* 90 */,\n/* 91 */,\n/* 92 */,\n/* 93 */,\n/* 94 */,\n/* 95 */,\n/* 96 */,\n/* 97 */,\n/* 98 */,\n/* 99 */,\n/* 100 */,\n/* 101 */,\n/* 102 */,\n/* 103 */,\n/* 104 */,\n/* 105 */,\n/* 106 */,\n/* 107 */,\n/* 108 */,\n/* 109 */,\n/* 110 */,\n/* 111 */,\n/* 112 */,\n/* 113 */,\n/* 114 */,\n/* 115 */,\n/* 116 */,\n/* 117 */,\n/* 118 */,\n/* 119 */,\n/* 120 */,\n/* 121 */,\n/* 122 */,\n/* 123 */,\n/* 124 */,\n/* 125 */,\n/* 126 */,\n/* 127 */,\n/* 128 */,\n/* 129 */,\n/* 130 */,\n/* 131 */,\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__.p + \"static/img/carregando-mensagens.7b20394.gif\";\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__.p + \"static/img/perfil.76fa900.png\";\n\n/***/ }),\n/* 134 */,\n/* 135 */,\n/* 136 */,\n/* 137 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n\n\n__WEBPACK_IMPORTED_MODULE_0_angular__[\"module\"]('app.components', []);\n\n__webpack_require__(304);\n__webpack_require__(305);\n__webpack_require__(306);\n__webpack_require__(307);\n__webpack_require__(308);\n__webpack_require__(312);\n__webpack_require__(313);\n__webpack_require__(314);\n__webpack_require__(316);\n__webpack_require__(320);\n__webpack_require__(322);\n__webpack_require__(317);\n__webpack_require__(318);\n__webpack_require__(319);\n__webpack_require__(315);\n__webpack_require__(321);\n__webpack_require__(310);\n\n/***/ }),\n/* 138 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_compartilhado_plugins_log_events_plugin__ = __webpack_require__(324);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_angular__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_angular__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__config_simditor_js__ = __webpack_require__(171);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_angular_animate__ = __webpack_require__(145);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_angular_animate___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_angular_animate__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_angular_cookies__ = __webpack_require__(147);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_angular_cookies___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_angular_cookies__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_angular_drop_image__ = __webpack_require__(148);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_angular_drop_image___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_angular_drop_image__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_angular_i18n_pt_br__ = __webpack_require__(150);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_angular_i18n_pt_br___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_angular_i18n_pt_br__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_angular_notification__ = __webpack_require__(153);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_angular_notification___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_angular_notification__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_angular_resource__ = __webpack_require__(156);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_angular_resource___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_angular_resource__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_angular_route__ = __webpack_require__(158);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_angular_route___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9_angular_route__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_angular_sanitize__ = __webpack_require__(160);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_angular_sanitize___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10_angular_sanitize__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_angular_strap__ = __webpack_require__(164);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_angular_strap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_11_angular_strap__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_angular_ui_router__ = __webpack_require__(165);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_angular_ui_router___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_12_angular_ui_router__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_angular_ui_sortable__ = __webpack_require__(166);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_angular_ui_sortable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_13_angular_ui_sortable__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14_angular_paging__ = __webpack_require__(154);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14_angular_paging___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_14_angular_paging__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15_angular_loading_bar__ = __webpack_require__(152);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15_angular_loading_bar___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_15_angular_loading_bar__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16_ngstorage__ = __webpack_require__(287);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16_ngstorage___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_16_ngstorage__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17_ui_select__ = __webpack_require__(300);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17_ui_select___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_17_ui_select__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18_ng_plugin__ = __webpack_require__(286);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18_ng_plugin___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_18_ng_plugin__);\n\nwindow.$ = __webpack_require__(2);\nwindow.jQuery = $;\nwindow.moment = __webpack_require__(0);\nwindow._ = __webpack_require__(16);\nwindow.signalr = __webpack_require__(288);\nwindow.toastr = __webpack_require__(298);\nwindow.saveAs = __webpack_require__(261).saveAs;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_1_angular__[\"module\"]('bootstrap', ['ngLocale', 'ui.router', 'ngResource', 'ngCookies', 'ngRoute', 'ngStorage', 'ngSanitize', 'ngDropImage', 'angular-loading-bar', 'angular-simditor', 'ui.sortable', 'notification', 'mgcrea.ngStrap', 'ui.select', 'bw.paging']);\n\n/***/ }),\n/* 139 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__central_app_config__ = __webpack_require__(168);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__central_app_config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__central_app_config__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__central_constant__ = __webpack_require__(169);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__central_interceptors__ = __webpack_require__(170);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__central_interceptors___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__central_interceptors__);\n\n\n\n\n/***/ }),\n/* 140 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__core_util__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__icone__ = __webpack_require__(172);\n\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_0_angular__[\"module\"]('app.directives', []).directive('icone', __WEBPACK_IMPORTED_MODULE_2__icone__[\"a\" /* default */]);\n\n/***/ }),\n/* 141 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__layout__ = __webpack_require__(187);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__autenticacao__ = __webpack_require__(181);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__abrir_chamado__ = __webpack_require__(177);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__detalhe_chamado__ = __webpack_require__(186);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__meus_chamados__ = __webpack_require__(193);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_compartilhado_plugins_ui_plugin__ = __webpack_require__(326);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_compartilhado_plugins_filters_plugin__ = __webpack_require__(323);\n\n\n\n\n\n\n\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_0_angular__[\"module\"]('app.modules', ['layoutMdl', 'autenticacaoMdl', 'abrirChamadoMdl', 'detalheChamadoMdl', 'meusChamadosMdl']).use(__WEBPACK_IMPORTED_MODULE_6_compartilhado_plugins_ui_plugin__[\"a\" /* default */], 'md').use(__WEBPACK_IMPORTED_MODULE_7_compartilhado_plugins_filters_plugin__[\"a\" /* default */]);\n\n/***/ }),\n/* 142 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_angular__);\n\n\n__WEBPACK_IMPORTED_MODULE_0_angular__[\"module\"]('app.services', []);\n\n__webpack_require__(329);\n__webpack_require__(328);\n__webpack_require__(327);\n__webpack_require__(330);\n\n__webpack_require__(197);\n__webpack_require__(198);\n__webpack_require__(199);\n__webpack_require__(200);\n__webpack_require__(201);\n__webpack_require__(202);\n__webpack_require__(203);\n__webpack_require__(204);\n\n/***/ }),\n/* 143 */,\n/* 144 */,\n/* 145 */,\n/* 146 */,\n/* 147 */,\n/* 148 */,\n/* 149 */,\n/* 150 */,\n/* 151 */,\n/* 152 */,\n/* 153 */,\n/* 154 */,\n/* 155 */,\n/* 156 */,\n/* 157 */,\n/* 158 */,\n/* 159 */,\n/* 160 */,\n/* 161 */,\n/* 162 */,\n/* 163 */,\n/* 164 */,\n/* 165 */,\n/* 166 */,\n/* 167 */,\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar bootstrap = angular.module('bootstrap');\n\nbootstrap.run(balcaoRun);\nbootstrap.config(centralConfig);\n\ncentralConfig.$inject = ['$stateProvider', '$urlRouterProvider', '$localStorageProvider', '$httpProvider', '$sessionStorageProvider', '$locationProvider', 'cfpLoadingBarProvider', 'ngSimditorProvider', '$animateProvider'];\n\nfunction centralConfig($stateProvider, $urlRouterProvider, $localStorageProvider, $httpProvider, $sessionStorageProvider, $locationProvider, cfpLoadingBarProvider, ngSimditorProvider, $animateProvider) {\n\n $animateProvider.classNameFilter(/animate/);\n\n ngSimditorProvider.setToolbar(['title', 'bold', 'italic', 'underline', 'alignments', 'strikethrough', '|', 'ol', 'ul', 'blockquote', 'code', 'table', '|', 'link', 'hr', '|', 'indent', 'outdent', 'markdown']).setLocale('pt-BR');\n\n $urlRouterProvider.otherwise(\"/login\");\n\n $stateProvider.state('erro', {\n url: \"/404\",\n templateUrl: \"404.html\"\n });\n\n $localStorageProvider.setKeyPrefix('central-');\n $sessionStorageProvider.setKeyPrefix('central-');\n\n cfpLoadingBarProvider.includeSpinner = false;\n\n $httpProvider.interceptors.push('SuporteIeItp');\n\n $locationProvider.html5Mode({\n enabled: true,\n requireBase: true\n });\n\n moment.locale('pt-br');\n}\n\nbalcaoRun.$inject = ['$rootScope', 'Usuario', '$state'];\nfunction balcaoRun($rootScope, Usuario, $state) {\n\n $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n\n $state.previous = { state: fromState, params: fromParams };\n\n if (!Usuario.verificarAutorizacao()) {\n if (Usuario.estadoMemorizado && (!_.has(fromState.data, 'redirecionarPara') || toState.name != fromState.data.redirecionarPara)) {\n Usuario.resetarAutorizacao();\n }\n\n if (_.has(toState.data, 'autorizacao') && _.has(toState.data, 'redirecionarPara')) {\n if (_.has(toState.data, 'memorizar') && toState.data.memorizar) {\n Usuario.estadoMemorizado = toState.name;\n }\n\n $state.go(toState.data.redirecionarPara);\n toastr.error('Acesso não autorizado', 'Autorização');\n }\n }\n });\n}\n\n/***/ }),\n/* 169 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__central_app_env__ = __webpack_require__(303);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__central_app_env___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__central_app_env__);\n\n\n\n\nangular.module('bootstrap').constant('ConfigApp', __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_lodash__[\"merge\"])({\n UrlApi: \"https://localhost:44341/ccgp/api\",\n UrlBase: \"https://localhost:44341/ccgp\",\n CentralAppId: 'BA69D4DB-2657-4152-9E30-038B686E3E66',\n CentralServicoModuloId: 'F66F079C-5896-4AF2-B7D9-8060D80DDD71',\n UrlLogin: '#/login',\n UrlCstiApi: 'https://csti.projecao.br/api',\n CstiApiId: '02C7115C-E385-406C-8BBE-9015FC5CECF0',\n LinkFoto: function LinkFoto(login, tamanho) {\n\n var dimensao = tamanho || '240x240';\n\n return 'https://webmail.projecao.br/ews/exchange.asmx/s/GetUserPhoto?email=' + login + '@projecao.br&size=HR' + dimensao;\n }\n}, __WEBPACK_IMPORTED_MODULE_1__central_app_env___default.a[\"production\"]));\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nangular.module('bootstrap').factory('SuporteIeItp', SuporteIeItp);\n\nSuporteIeItp.$inject = [];\n\nfunction SuporteIeItp() {\n return {\n request: function request(config) {\n\n config.headers = config.headers || {};\n\n return config;\n }\n };\n}\n\n/***/ }),\n/* 171 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_simditor_styles_simditor_css__ = __webpack_require__(250);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_simditor_styles_simditor_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_simditor_styles_simditor_css__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_simditor_markdown_github_styles_simditor_markdown_github_css__ = __webpack_require__(249);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_simditor_markdown_github_styles_simditor_markdown_github_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_simditor_markdown_github_styles_simditor_markdown_github_css__);\n\nwindow.Simditor = __webpack_require__(4);\n\n__webpack_require__(290);\n__webpack_require__(289);\n__webpack_require__(291);\n__webpack_require__(161);\n__webpack_require__(220);\n\n\n\n\n/***/ }),\n/* 172 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__core_util__ = __webpack_require__(12);\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = icon;\n\n\nfunction icon() {\n return {\n restrict: 'E',\n replace: true,\n scope: {\n css: '@'\n },\n link: function link(scope, element, attrs) {\n var elem = $(element[0]);\n var i = attrs;\n\n if (i.fa) {\n elem.addClass('fa fa-' + i.fa);\n }\n\n if (i.spin || i.spin == '') {\n if (i.fa) elem.addClass('fa-spin');\n if (i.fp) elem.addClass('fp-spin');\n }\n\n if (i.size) {\n if (i.fa) elem.addClass('fa-' + i.size + 'x');\n if (i.fp) elem.addClass('fp-' + i.size + 'x');\n }\n\n if (i.fp) {\n elem.addClass('fp fp-' + i.fp);\n }\n\n if (i.bo) {\n elem.addClass('glyphicon glyphicon-' + i.bo + ' ' + i.class);\n }\n\n if (i.rotate) {\n elem.css({ 'transform': 'rotate(' + i.rotate + 'deg)' });\n }\n\n if (i.css) {\n\n if (!!i.css) {\n scope.$watch('css', function (css) {\n elem.css(__WEBPACK_IMPORTED_MODULE_0__core_util__[\"a\" /* parseQuery */](css));\n });\n }\n\n elem.css(__WEBPACK_IMPORTED_MODULE_0__core_util__[\"a\" /* parseQuery */](i.css));\n }\n },\n template: ''\n };\n}\n\n/***/ }),\n/* 173 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__core_bootstrap__ = __webpack_require__(138);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__core_config__ = __webpack_require__(139);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components__ = __webpack_require__(137);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__directives__ = __webpack_require__(140);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__services__ = __webpack_require__(142);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__modules__ = __webpack_require__(141);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_bootstrap__ = __webpack_require__(143);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_bootstrap___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_bootstrap__);\n\n\n\n\n\n\n\n\n\nwindow.app = angular.module('app', ['bootstrap', 'app.components', 'app.directives', 'app.services', 'app.modules']);\n\nangular.bootstrap(document, ['app'], {\n strictDi: true\n});\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar abrirChamadoMdl = angular.module('abrirChamadoMdl', []);\nabrirChamadoMdl.config(abrirChamadoConfig);\nabrirChamadoConfig.$inject = ['$stateProvider'];\n\nfunction abrirChamadoConfig($stateProvider) {\n\n $stateProvider.state('app.abrir-chamado-segmentos', {\n url: '/abrir-chamado-segmentos/:grupoDeSuporteId/:grupoDeSuporteSegmentoId',\n controller: 'abrirChamadoSegmentosCtrl',\n controllerAs: '$ctrl',\n template: __webpack_require__(262),\n data: {\n autorizacao: true,\n redirecionarPara: 'autenticacao.login'\n }\n }).state('app.abrir-chamado', {\n url: '/abrir-chamado/grupos-suporte/:grupoDeSuporteId/grupos-suporte-segmentos/:grupoDeSuporteSegmentoId',\n controller: 'abrirChamadoCtrl',\n controllerAs: '$ctrl',\n template: __webpack_require__(263),\n data: {\n autorizacao: true,\n redirecionarPara: 'autenticacao.login'\n }\n });\n}\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar abrirChamadoMdl = angular.module('abrirChamadoMdl');\nabrirChamadoMdl.controller('abrirChamadoCtrl', abrirChamadoCtrl);\n\nabrirChamadoCtrl.$inject = ['$state', '$stateParams', 'Event', 'notificacao', 'categorizacoesApi', 'chamadosApi', '$sessionStorage'];\n\nfunction abrirChamadoCtrl($state, $stateParams, Event, notificacao, categorizacoesApi, chamadosApi, $sessionStorage) {\n\n var $ctrl = this;\n\n $ctrl.data = new Date();\n $ctrl.chamado = {};\n $ctrl.segmentoParametros = $stateParams;\n $ctrl.abrirChamado = abrirChamado;\n $ctrl.colar = colar;\n $ctrl.api = null;\n $ctrl.unidades = [];\n var credencial = $sessionStorage.credencial.data.credencial;\n\n categorizacoesApi.listarImpactos(function (impactos) {\n $ctrl.impactos = impactos;\n }, function (erros) {\n notificacao.erroResponse(erros);\n });\n\n categorizacoesApi.listarUrgencias(function (urgencias) {\n $ctrl.urgencias = urgencias;\n }, function (erros) {\n notificacao.erroResponse(erros);\n });\n\n function abrirChamado(chamado) {\n\n var formChamado = new FormData();\n\n formChamado.append('grupoDeSuporteSegmentoId', $stateParams.grupoDeSuporteSegmentoId);\n formChamado.append('aberturaAssunto', chamado.assunto);\n formChamado.append('impactoSolicitanteId', chamado.impactoSolicitante.impactoId);\n formChamado.append('urgenciaSolicitanteId', chamado.urgenciaSolicitante.urgenciaId);\n formChamado.append('aberturaUnidade', chamado.aberturaUnidade);\n formChamado.append('aberturaMensagem', _.escape(chamado.mensagem.replace(/'/g, '\"')));\n\n _.each(chamado.anexos, function (anexo) {\n formChamado.append('Files[]', anexo, anexo.name);\n });\n\n $ctrl.api = chamadosApi.abrirChamado(formChamado, function (response) {\n\n notificacao.sucesso(' Ticket de Abertura de Chamado', 'Chamado registrado com o Ticket Nº. ' + response.ticket);\n\n $state.go('app.meus-chamados');\n }, function (erros) {\n\n if (erros.data) {\n notificacao.erroResponse(erros);\n } else {\n notificacao.erro('Erro durante o envido do chamado, por gentileza tente novamente.');\n }\n }).$promise;\n }\n chamadosApi.unidades(function (unidades) {\n $ctrl.unidades = unidades;\n $ctrl.chamado.aberturaUnidade = credencial.registroAd.unidade;\n }, function (erros) {\n notificacao.erroResponse(erros);\n });\n\n function colar($event) {\n\n Event.fire('anexo.colar-arquivo', $event);\n }\n}\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar abrirChamadoMdl = angular.module('abrirChamadoMdl');\nabrirChamadoMdl.controller('abrirChamadoSegmentosCtrl', abrirChamadoSegmentosCtrl);\n\nabrirChamadoSegmentosCtrl.$inject = ['$scope', '$filter', '$state', '$stateParams', '$sessionStorage', '$localStorage', 'notificacao', 'segmentosApi'];\n\nfunction abrirChamadoSegmentosCtrl($scope, $filter, $state, $stateParams, $sessionStorage, $localStorage, notificacao, segmentosApi) {\n $scope.segmento = {};\n $scope.history = window.history;\n $scope.showForward = false;\n $scope.segmentos = $sessionStorage.segmentos || [];\n $scope.carregarSegmentos = carregarSegmentos;\n $scope.acessarSegmento = acessarSegmento;\n $scope.alternarTipoLista = alternarTipoLista;\n $scope.retornar = $state.previous;\n $scope.atualizarSegmentos = atualizarSegmentos;\n\n $scope.$storage = $localStorage.$default({\n tipoListaSegmento: 0\n });\n\n if ($scope.segmentos.length == 0) {\n $scope.carregarSegmentos();\n }\n\n if (!_.isEmpty($stateParams.grupoDeSuporteId)) {\n var params = _.omitBy($stateParams, _.isEmpty);\n\n $scope.segmento = _.first($filter('buscar')($scope.segmentos, params));\n\n $scope.segmentos = $scope.segmento.segmentos;\n }\n\n function carregarSegmentos() {\n return segmentosApi.listarSegmentos(function (segmentos) {\n $scope.segmentos = segmentos;\n $sessionStorage.segmentos = segmentos;\n }, function error(errorResponse) {\n notificacao.erroResponse(errorResponse);\n });\n }\n\n function acessarSegmento(segmento) {\n if (_.isEqual(segmento.segmentos.length, 1) && !_.isNull(_.first(segmento.segmentos).canalDeAtendimentoId)) {\n $state.go('app.abrir-chamado', {\n grupoDeSuporteId: segmento.grupoDeSuporteId,\n grupoDeSuporteSegmentoId: segmento.segmentos[0].grupoDeSuporteSegmentoId\n });\n } else if (segmento.canalDeAtendimentoId != null) {\n $state.go('app.abrir-chamado', {\n grupoDeSuporteId: segmento.grupoDeSuporteId,\n grupoDeSuporteSegmentoId: segmento.grupoDeSuporteSegmentoId\n });\n } else {\n $state.go('app.abrir-chamado-segmentos', {\n grupoDeSuporteId: segmento.grupoDeSuporteId,\n grupoDeSuporteSegmentoId: segmento.grupoDeSuporteSegmentoId\n });\n }\n }\n\n function alternarTipoLista(tipo) {\n $scope.$storage.tipoListaSegmento = tipo;\n }\n\n function atualizarSegmentos() {\n $scope.carregarSegmentos().$promise.then(function () {\n notificacao.sucesso('Cartões atualizados!');\n });\n }\n}\n\n/***/ }),\n/* 177 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__abrir_chamado_config__ = __webpack_require__(174);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__abrir_chamado_config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__abrir_chamado_config__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__abrir_chamado_controller__ = __webpack_require__(175);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__abrir_chamado_controller___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__abrir_chamado_controller__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__abrir_chamado_segmentos_controller__ = __webpack_require__(176);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__abrir_chamado_segmentos_controller___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__abrir_chamado_segmentos_controller__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__abrir_chamado_css__ = __webpack_require__(251);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__abrir_chamado_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3__abrir_chamado_css__);\n\n\n\n\n\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar autenticacaoMdl = angular.module('autenticacaoMdl', []);\n\nautenticacaoMdl.config(['$stateProvider', function ($stateProvider) {\n\n $stateProvider.state('autenticacao', {\n abstract: true,\n template: ''\n }).state('autenticacao.login', {\n url: \"/login\",\n controller: 'autenticacaoCtrl',\n template: __webpack_require__(264)\n });\n}]).config(['$httpProvider', function ($httpProvider) {\n $httpProvider.interceptors.push('AutenticacaoItp');\n}]);\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar auteticacaoMdl = angular.module('autenticacaoMdl');\nauteticacaoMdl.controller('autenticacaoCtrl', autenticacaoCtrl);\n\nautenticacaoCtrl.$inject = ['$scope', '$state', 'Usuario', '$modal'];\n\nfunction autenticacaoCtrl($scope, $state, Usuario, $modal) {\n\n $scope.usuario = {};\n $scope.anoAtual = new Date();\n\n var recuperacaoSenhaId;\n $scope.buscarTexto = function () {\n Usuario.recuperarSenha().then(function (response) {\n recuperacaoSenhaId = response.data.recuperacaoSenhaId;\n $scope.modal = $modal({\n scope: $scope,\n title: response.data.titulo,\n content: response.data.mensagem,\n show: true,\n html: true,\n backdrop: false,\n template: __webpack_require__(265)\n });\n }, function () {});\n };\n\n $scope.fecharModal = function () {\n Usuario.recuperarSenhaContabilizar(recuperacaoSenhaId).then(function (response) {\n $scope.modal.hide();\n }, function () {});\n };\n\n $scope.login = function (usuario) {\n\n Usuario.login(usuario).then(function () {\n\n Usuario.irPara('app.meus-chamados');\n }, function () {\n toastr.error(\"Você não possui permissão de acesso\", 'Autenticação');\n });\n };\n};\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar autenticacaoMdl = angular.module('autenticacaoMdl');\nautenticacaoMdl.factory('AutenticacaoItp', autenticacaoItp);\nautenticacaoItp.$inject = ['$cookies', 'ConfigApp', '$injector', '$q'];\n\nfunction autenticacaoItp($cookies, ConfigApp, $injector, $q) {\n return {\n request: function request(config) {\n config.headers = config.headers || {};\n var token = $cookies.get('api_token');\n\n if (!(config.url.indexOf(ConfigApp.UrlApi + '/token') === 0) && token) {\n config.headers.Authorization = 'Bearer ' + $cookies.get('api_token');\n }\n\n return config;\n },\n\n responseError: function responseError(rejection) {\n\n if (rejection.status == 401) {\n $cookies.remove('api_token');\n window.location = ConfigApp.UrlLogin;\n }\n\n if (rejection.status == 500) {\n toastr.error('Houve um erro interno, por gentileza informe ao setor responsável.', 'Erro 500');\n }\n\n return $q.reject(rejection);\n }\n };\n}\n\n/***/ }),\n/* 181 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__autenticacao_config__ = __webpack_require__(178);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__autenticacao_config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__autenticacao_config__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__autenticacao_controller__ = __webpack_require__(179);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__autenticacao_controller___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__autenticacao_controller__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__autenticacao_interceptor__ = __webpack_require__(180);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__autenticacao_interceptor___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__autenticacao_interceptor__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__usuario_service__ = __webpack_require__(182);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__usuario_service___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3__usuario_service__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__login_css__ = __webpack_require__(252);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__login_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4__login_css__);\n\n\n\n\n\n\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar autenticacaoMdl = angular.module('autenticacaoMdl');\n\nautenticacaoMdl.service('Usuario', usuarioSrv);\n\nusuarioSrv.$inject = ['$http', '$cookies', 'ConfigApp', '$timeout', '$state', '$sessionStorage', '$q', 'NotificacaoStream'];\n\nfunction usuarioSrv($http, $cookies, ConfigApp, $timeout, $state, $sessionStorage, $q, NotificacaoStream) {\n\n this.autorizado = false;\n this.estadoMemorizado = null;\n this.autenticado = null;\n\n this.resetarAutorizacao = function () {\n this.autorizado = false;\n this.estadoMemorizado = null;\n };\n\n this.irPara = function (retirada) {\n this.autorizado = true;\n var estado = this.estadoMemorizado ? this.estadoMemorizado : retirada;\n $state.go(estado);\n };\n\n this.login = function (usuario) {\n var self = this;\n usuario.grant_type = 'password';\n\n var req = {\n method: 'POST',\n url: ConfigApp.UrlApi + '/token?sistemaId=' + ConfigApp.CentralAppId,\n headers: {\n 'Authorization': undefined,\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n data: $.param(usuario)\n };\n\n return $http(req).then(function (response) {\n $timeout(function () {\n toastr.warning('Seu token expirou, por favor autentique novamente.', 'Autenticação');\n self.logout();\n }, response.data.expires_in * 3600);\n\n $cookies.put('api_token', response.data.access_token);\n }, function (error) {\n return $q.reject(error);\n });\n };\n\n this.logout = function () {\n this.resetarAutorizacao();\n\n $sessionStorage.$reset();\n $cookies.remove('api_token');\n window.location = ConfigApp.UrlLogin;\n };\n\n this.credencial = function () {\n var self = this,\n deferred = $q.defer();\n var credencial = $sessionStorage.credencial || this.autenticado;\n\n if (credencial) {\n deferred.resolve(credencial);\n }\n\n $http.get(ConfigApp.UrlApi + '/v1.0/seguranca/sistemas/' + ConfigApp.CentralAppId + '/credencial', {}, { ignoreLoadingBar: true }).then(function (credencial) {\n $sessionStorage.credencial = credencial;\n\n this.autenticado = credencial;\n\n NotificacaoStream.conectar().then(function () {\n\n angular.module('app').value('hubConnection', credencial.data.canaisDeAtendimento);\n\n NotificacaoStream.canais(credencial.data.canaisDeAtendimento).usuario(credencial.data.usuario);\n });\n\n deferred.resolve(credencial);\n }.bind(this));\n\n return deferred.promise;\n };\n\n this.verificarAutorizacao = function () {\n\n var credencial = $sessionStorage.credencial || true;\n\n if (credencial) {\n this.autorizado = true;\n }\n\n return this.autorizado;\n };\n\n this.recuperarSenha = function () {\n var self = this,\n deferred = $q.defer();\n\n $http.get(ConfigApp.UrlApi + '/v1.0/recuperar_senha', {}, { ignoreLoadingBar: true }).then(function (response) {\n deferred.resolve(response);\n }.bind(this));\n return deferred.promise;\n };\n\n this.recuperarSenhaContabilizar = function (recuperacaoSenhaId) {\n var self = this,\n deferred = $q.defer();\n $http.post(ConfigApp.UrlApi + '/v1.0/recuperar_senha/' + recuperacaoSenhaId, {}, { ignoreLoadingBar: true }).then(function (response) {\n deferred.resolve(response);\n }.bind(this));\n return deferred.promise;\n };\n}\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar balcaoApp = angular.module('detalheChamadoMdl');\nbalcaoApp.factory('detalheChamadoApi', detalheChamadoSrv);\ndetalheChamadoSrv.$inject = ['$resource', 'ConfigApp'];\n\nfunction detalheChamadoSrv($resource, ConfigApp) {\n return $resource(ConfigApp.UrlApi + '/v1.0/meus_chamados', {}, {\n verificarRespostas: {\n method: 'GET',\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/chamados/:chamadoId/atendimentos/:chamadoAtendimentoId/respostas'\n },\n redirecionamentos: {\n method: 'GET',\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/roteamentos/chamados/:chamadoId',\n params: { chamadoId: '@chamadoId' }\n }\n });\n};\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar detalheChamadoMdl = angular.module('detalheChamadoMdl', []);\ndetalheChamadoMdl.config(detalheChamadoConfig);\ndetalheChamadoConfig.$inject = ['$stateProvider'];\n\nfunction detalheChamadoConfig($stateProvider) {\n\n $stateProvider.state('app.detalhe-chamado', {\n url: \"/meus-chamados/detalhe/:chamadoId\",\n controller: 'detalheChamadoCtrl',\n controllerAs: '$ctrl',\n template: __webpack_require__(266),\n data: {\n autorizacao: true,\n redirecionarPara: 'autenticacao.login'\n }\n });\n}\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar detalheChamadoMdl = angular.module('detalheChamadoMdl');\ndetalheChamadoMdl.controller('detalheChamadoCtrl', detalheChamadoCtrl);\n\ndetalheChamadoCtrl.$inject = ['$scope', '$filter', '$stateParams', 'notificacao', 'detalheChamadoApi', 'chamadosApi', 'categorizacoesApi', 'Event'];\n\nfunction detalheChamadoCtrl($scope, $filter, $stateParams, notificacao, detalheChamadoApi, chamadosApi, categorizacoesApi, Event) {\n\n var $ctrl = this;\n\n $ctrl.buscarRedirecionamento = buscarRedirecionamento;\n $ctrl.atualizarChamado = atualizarChamado;\n $ctrl.carregar = carregar;\n $ctrl.redirecionamentos = [];\n $ctrl.dimensaoArquivos = 0;\n\n carregar();\n\n Event.on('chamado:atualizar', function (event, payload) {\n if (payload.chamadoId && payload.chamadoId == $ctrl.infoChamado.chamadoId) {\n $ctrl.atualizarChamado();\n }\n })($scope);\n\n function carregar() {\n $ctrl.chamado = chamadosApi.detalhesChamado({\n chamadoId: $stateParams.chamadoId\n }, function (infoChamado) {\n\n _.map(infoChamado.anexos, function (anexo) {\n anexo.ehImagem = /.png|png|.jpg|jpg|jpeg|.jpeg|.gif|gif/g.test(anexo.arquivoExtensao);\n });\n\n $ctrl.dimensaoArquivos = _.sumBy(infoChamado.anexos, 'arquivoTamanhoEmBytes');\n\n $ctrl.infoChamado = infoChamado;\n\n $ctrl.buscarRedirecionamento(infoChamado);\n\n return infoChamado;\n }, function (erros) {\n notificacao.erroResponse(erros);\n }).$promise;\n }\n\n function atualizarChamado() {\n $ctrl.carregar();\n }\n\n function buscarRedirecionamento(chamado) {\n detalheChamadoApi.redirecionamentos({\n chamadoId: chamado.chamadoId\n }, function (redirecionamento) {\n $ctrl.redirecionamentos = redirecionamento;\n }, function () {\n $ctrl.redirecionamentos = [];\n });\n }\n\n function colar($event) {\n\n Event.fire('anexo.colar-arquivo', $event);\n }\n}\n\n/***/ }),\n/* 186 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__detalhe_chamado_config__ = __webpack_require__(184);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__detalhe_chamado_config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__detalhe_chamado_config__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__detalhe_chamado_controller__ = __webpack_require__(185);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__detalhe_chamado_controller___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__detalhe_chamado_controller__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__detalhe_chamado_api_service__ = __webpack_require__(183);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__detalhe_chamado_api_service___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__detalhe_chamado_api_service__);\n\n\n\n\n/***/ }),\n/* 187 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__layout_config__ = __webpack_require__(188);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__layout_controller__ = __webpack_require__(189);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__layout_footer_component__ = __webpack_require__(190);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__layout_footer_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__layout_footer_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__layout_head_component__ = __webpack_require__(191);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__layout_sidebar_component__ = __webpack_require__(192);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__layout_sidebar_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4__layout_sidebar_component__);\n\n\n\n\n\n\n/***/ }),\n/* 188 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__layout_css__ = __webpack_require__(253);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__layout_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__layout_css__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_compartilhado_plugins_menu_plugin__ = __webpack_require__(325);\n\n\n\n\nvar layoutMdl = angular.module('layoutMdl', []);\n\n\n\nlayoutMdl.config(layoutConfig).use(__WEBPACK_IMPORTED_MODULE_1_compartilhado_plugins_menu_plugin__[\"a\" /* default */]);\n\nlayoutConfig.$inject = ['$stateProvider', '$datepickerProvider'];\nfunction layoutConfig($stateProvider, $datepickerProvider) {\n $stateProvider.state('app', {\n abstract: true,\n template: __webpack_require__(270),\n controller: 'layoutCtrl'\n });\n\n angular.extend($datepickerProvider.defaults, {\n dateFormat: 'dd/MM/yyyy',\n startWeek: 1\n });\n}\n\n/***/ }),\n/* 189 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__core_storage__ = __webpack_require__(11);\n\n\n\n\nvar MENU_KEY = 'layout:slide-menu';\n\nvar enabled = __WEBPACK_IMPORTED_MODULE_0__core_storage__[\"a\" /* default */].get(MENU_KEY);\n\nvar layoutMdl = angular.module('layoutMdl');\n\nlayoutMdl.controller('layoutCtrl', layoutCtrl);\n\nlayoutCtrl.$inject = ['$scope'];\nfunction layoutCtrl($scope) {\n\n $scope.menuLateral = true;\n $scope.menu = menu;\n\n function menu(aberto) {\n\n __WEBPACK_IMPORTED_MODULE_0__core_storage__[\"a\" /* default */].set(MENU_KEY, aberto);\n\n $scope.menuLateral = aberto;\n\n if (aberto) {\n $(\"#sidebar\").animate({ \"left\": \"0\" }, \"slow\");\n } else {\n $(\"#sidebar\").animate({ \"left\": \"-350px\" }, \"slow\");\n }\n }\n\n $scope.$on('layout.alternar-menu', function (event, situacao) {\n $scope.menu(situacao);\n });\n\n $scope.$on('layout.alternar-menu.exibir', function () {\n $scope.menu(true);\n });\n\n $scope.$on('layout.alternar-menu.esconder', function () {\n $scope.menu(false);\n });\n\n $scope.$broadcast('layout.alternar-menu', enabled == null ? true : enabled);\n}\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar layoutMdl = angular.module('layoutMdl');\n\nlayoutMdl.component('layoutFooter', {\n\n template: __webpack_require__(267)\n\n});\n\nfooterCtrl.$inject = ['$scope', '$rootScope'];\nfunction footerCtrl($scope, $rootScope) {}\n\n/***/ }),\n/* 191 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__core_storage__ = __webpack_require__(11);\n\n\n\n\nvar MENU_KEY = 'layout:slide-menu';\n\nvar enabled = __WEBPACK_IMPORTED_MODULE_0__core_storage__[\"a\" /* default */].get(MENU_KEY);\n\nvar layoutMdl = angular.module('layoutMdl');\n\nlayoutMdl.component('layoutHeader', {\n\n template: __webpack_require__(268),\n controller: headCtrl\n\n});\n\nheadCtrl.$inject = ['$scope', '$rootScope', 'Usuario', 'NotificacaoStream', 'notificacao', 'ConfigApp', 'Event'];\nfunction headCtrl($scope, $rootScope, Usuario, NotificacaoStream, notificacao, ConfigApp, Event) {\n\n $scope.logout = function () {\n Usuario.logout();\n };\n\n $scope.menu = enabled == null ? true : enabled;\n $scope.menuEscondido = $scope.menu;\n\n $scope.alternarMenu = function () {\n $scope.$emit('layout.alternar-menu', $scope.menuEscondido = !$scope.menuEscondido);\n };\n\n $scope.$on('layout.alternar-menu', function (event, aberto) {\n $scope.menu = aberto;\n });\n\n function mensagens(envelope) {\n if (Array.isArray(envelope.messages)) {\n\n envelope.messages.forEach(function (message) {\n notificacao.notificar({\n titulo: message.Key,\n mensagem: message.Value,\n tipo: message.type,\n driver: 'desktop'\n });\n });\n };\n }\n\n NotificacaoStream.ouvir('chamadoAberto', function (envelope) {\n Event.fire('meus-chamados:atualizar');\n mensagens(envelope);\n });\n\n NotificacaoStream.ouvir('atendimentoIniciado', function (envelope) {\n Event.fire('meus-chamados:atualizar').fire('chamado:atualizar', envelope.payload);\n mensagens(envelope);\n });\n\n NotificacaoStream.ouvir('respostaEnviada', function (envelope) {\n Event.fire('meus-chamados:atualizar').fire('chat:atualizar', envelope.payload);\n mensagens(envelope);\n });\n}\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar layoutMdl = angular.module('layoutMdl');\n\nlayoutMdl.component('layoutSidebar', {\n template: __webpack_require__(269)\n});\n\nsidebarCtrl.$inject = ['$scope', '$rootScope'];\nfunction sidebarCtrl($scope, $rootScope) {}\n\n/***/ }),\n/* 193 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__meus_chamados_config__ = __webpack_require__(195);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__meus_chamados_config___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__meus_chamados_config__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__meus_chamados_api_service__ = __webpack_require__(194);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__meus_chamados_api_service___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__meus_chamados_api_service__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__meus_chamados_controller__ = __webpack_require__(196);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__meus_chamados_controller___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__meus_chamados_controller__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__style_css__ = __webpack_require__(254);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__style_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3__style_css__);\n\n\n\n\n\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar balcaoApp = angular.module('meusChamadosMdl');\nbalcaoApp.factory('meusChamadosApi', meusChamadosSrv);\nmeusChamadosSrv.$inject = ['$resource', 'ConfigApp'];\n\nfunction meusChamadosSrv($resource, ConfigApp) {\n return $resource(ConfigApp.UrlApi + '/v1.0/meus_chamados', {}, {\n listarMeusChamados: {\n method: 'GET',\n isArray: false,\n url: ConfigApp.UrlApi + '/v1.0/meus_chamados'\n }\n });\n};\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar meusChamadosMdl = angular.module('meusChamadosMdl', []);\nmeusChamadosMdl.config(meusChamadosConfig).run(['$templateCache', function ($templateCache) {\n $templateCache.put('meus-chamados/_lista-visao-alternativa01.html', __webpack_require__(271));\n $templateCache.put('meus-chamados/_lista-visao-default.html', __webpack_require__(272));\n $templateCache.put('meus-chamados/_paginacao.html', __webpack_require__(273));\n}]);\nmeusChamadosConfig.$inject = ['$stateProvider'];\n\nfunction meusChamadosConfig($stateProvider) {\n\n $stateProvider.state('app.meus-chamados', {\n url: \"/meus-chamados\",\n controller: 'meusChamadosCtrl',\n controllerAs: '$ctrl',\n template: __webpack_require__(274),\n data: {\n autorizacao: true,\n redirecionarPara: 'autenticacao.login'\n }\n });\n}\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar meusChamadosMdl = angular.module('meusChamadosMdl');\nmeusChamadosMdl.controller('meusChamadosCtrl', meusChamadosCtrl);\n\nmeusChamadosCtrl.$inject = ['$scope', '$filter', '$localStorage', 'notificacao', 'categorizacoesApi', 'meusChamadosApi', 'Event'];\n\nfunction meusChamadosCtrl($scope, $filter, $localStorage, notificacao, categorizacoesApi, meusChamadosApi, Event) {\n\n var $ctrl = this;\n\n $ctrl.paginaAtual = 1;\n\n $ctrl.totalRegistrosEncontrados = 0;\n $ctrl.limiteMensagem = 130;\n\n $ctrl.buscarMeusChamados = _.debounce(buscarMeusChamados, 100);\n $ctrl.alternarTipoLista = alternarTipoLista;\n $ctrl.atualizarPagina = atualizarPagina;\n $ctrl.atualizar = atualizar;\n $ctrl.buscando = {};\n $ctrl.chamados = [];\n $ctrl.pesquisa = {};\n $ctrl.$storage = $localStorage.$default({\n tipoListaChamado: 'lista-visao-default',\n maximoRegistrosPorPagina: 5\n });\n $ctrl.maximoRegistrosPorPagina = $ctrl.$storage.maximoRegistrosPorPagina;\n\n categorizacoesApi.listarSituacoes(function (situacoes) {\n $ctrl.situacoes = situacoes;\n }, function (erros) {\n notificacao.erroResponse(erros);\n });\n\n categorizacoesApi.listarCanaisDeAtendimento(function (canaisDeAtendimento) {\n $ctrl.canaisDeAtendimento = canaisDeAtendimento;\n }, function (erros) {\n notificacao.erroResponse(erros);\n });\n\n $ctrl.buscarMeusChamados(1);\n\n Event.on('meus-chamados:atualizar', function () {\n $ctrl.buscarMeusChamados($ctrl.paginaAtual);\n })($scope);\n\n function buscarMeusChamados(page) {\n\n var parametros = _.merge(_.clone($ctrl.pesquisa), {\n pagina: page,\n maximoRegistrosPorPagina: $ctrl.maximoRegistrosPorPagina,\n dataInicio: normalizarData($ctrl.pesquisa.dataInicio),\n dataFim: normalizarData($ctrl.pesquisa.dataFim)\n });\n\n return $ctrl.buscando = meusChamadosApi.listarMeusChamados(_.omitBy(parametros, seNulo), function (resposta) {\n _.map(resposta.registrosEncontrados, function (registro) {\n registro.totalAnexo = _.sumBy(registro.contadorAnexos, 'quantidade');\n });\n\n $ctrl.chamados = resposta.registrosEncontrados;\n $ctrl.paginaAtual = resposta.pagina;\n $ctrl.totalRegistrosEncontrados = resposta.totalRegistrosEncontrados;\n $ctrl.maximoRegistrosPorPagina = resposta.maximoRegistrosPorPagina;\n }, function (erros) {\n\n $ctrl.chamados = [];\n $ctrl.paginaAtual = 1;\n $ctrl.totalRegistrosEncontrados = 0;\n\n notificacao.erroResponse(erros);\n }).$promise;\n }\n\n function atualizarPagina() {\n $ctrl.$storage.maximoRegistrosPorPagina = $ctrl.maximoRegistrosPorPagina;\n\n $ctrl.buscarMeusChamados(1);\n }\n\n function seNulo(valor) {\n return !valor;\n }\n\n function normalizarData(data) {\n return _.isDate(data) ? data.toISOString().slice(0, 10) : null;\n }\n\n function alternarTipoLista() {\n\n if ($ctrl.$storage.tipoListaChamado == 'lista-visao-alternativa01') {\n $ctrl.$storage.tipoListaChamado = 'lista-visao-default';\n } else {\n $ctrl.$storage.tipoListaChamado = 'lista-visao-alternativa01';\n }\n }\n\n function atualizar() {\n\n $ctrl.buscarMeusChamados($ctrl.paginaAtual).then(function () {\n notificacao.sucesso('Sua lista de chamados foi atualizada.');\n }, function (erros) {\n notificacao.erroResponse(erros);\n });\n };\n}\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar balcaoApp = angular.module('app.services');\nbalcaoApp.factory('anexoApi', anexoSrv);\nanexoSrv.$inject = ['$resource', 'ConfigApp'];\n\nfunction anexoSrv($resource, ConfigApp) {\n return $resource(ConfigApp.UrlApi + '/v1.0/anexos', {}, {\n baixarArquivo: {\n method: 'GET',\n isArray: false,\n url: ConfigApp.UrlApi + '/v1.0/anexos/:anexoId/chamados/:chamadoId/download',\n responseType: 'arraybuffer',\n interceptor: {\n response: function response(_response) {\n _response.resource.headers = _response.headers();\n _response.resource.data = _response.data;\n return _response.resource;\n }\n }\n }\n });\n};\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nangular.module('app.services').factory('catalogoServicoApi', catalogoServicoApi);\n\ncatalogoServicoApi.$inject = ['$resource', 'ConfigApp'];\n\nfunction catalogoServicoApi($resource, ConfigApp) {\n return $resource(ConfigApp.UrlApi + '/v1.0/catalogos_servicos', {}, {\n listarCategoriasAtendimento: {\n method: 'GET',\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/catalogos_servicos/canais_atendimentos/:canalDeAtendimentoId/categorias_atendimentos',\n ignoreLoadingBar: true\n },\n listarCatalogosServico: {\n method: 'GET',\n isArray: true,\n url: ConfigApp.UrlApi + '/v2.0/catalogos_servicos/canais_atendimentos/:canalDeAtendimentoId/categorias_atendimentos/:categoriaDeAtendimentoId',\n ignoreLoadingBar: true\n }\n });\n};\n\n/***/ }),\n/* 199 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar centralApp = angular.module('app.services');\ncentralApp.factory('categorizacoesApi', categorizacoesSrv);\ncategorizacoesSrv.$inject = ['$resource', 'ConfigApp'];\n\nfunction categorizacoesSrv($resource, ConfigApp) {\n return $resource(ConfigApp.UrlApi + '/v1.0/categorizacoes', {}, {\n listarImpactos: {\n method: 'GET',\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/categorizacoes/impactos',\n ignoreLoadingBar: true,\n cache: true\n },\n listarUrgencias: {\n method: 'GET',\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/categorizacoes/urgencias',\n ignoreLoadingBar: true,\n cache: true\n },\n listarSituacoes: {\n method: 'GET',\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/categorizacoes/situacoes',\n ignoreLoadingBar: true,\n cache: true\n },\n listarSituacoesEncerramento: {\n method: 'GET',\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/categorizacoes/situacoes_encerramento',\n ignoreLoadingBar: true,\n cache: true\n },\n listarCanaisDeAtendimento: {\n method: 'GET',\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/categorizacoes/centrais_servico/' + ConfigApp.CentralServicoModuloId + '/canais_atendimento',\n ignoreLoadingBar: true,\n cache: true\n }\n });\n};\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nangular.module('app.services').factory('chamadosApi', chamadosApi);\n\nchamadosApi.$inject = ['$resource', 'ConfigApp'];\n\nfunction chamadosApi($resource, ConfigApp) {\n return $resource(ConfigApp.UrlApi + '/v1.0/chamados', {}, {\n abrirChamado: {\n method: 'POST',\n url: ConfigApp.UrlApi + '/v1.0/chamados',\n headers: { 'Content-Type': undefined, enctype: 'multipart/form-data' }\n },\n detalhesChamado: {\n method: 'GET',\n isArray: false,\n url: ConfigApp.UrlApi + '/v1.0/chamados/:chamadoId/por_usuario'\n },\n unidades: {\n method: 'GET',\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/unidades',\n ignoreLoadingBar: true,\n cache: true\n },\n responderAoAtendente: {\n method: 'POST',\n url: ConfigApp.UrlApi + '/v1.0/chamados/:chamadoId/chat_atendimento/mensagem_ao_atendente',\n params: { chamadoId: '@chamadoId' },\n headers: { 'Content-Type': undefined, enctype: 'multipart/form-data' }\n }\n });\n};\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nangular.module('app.services').service('Chat', chatService);\n\nchatService.$inject = ['$resource', 'ConfigApp'];\n\nfunction chatService($resource, ConfigApp) {\n return {\n mensagens: function mensagens() {\n return $resource(ConfigApp.UrlApi + '/v1.0/chamados/:chamadoId/chat_atendimento/mensagens?sistemaOrigemId=' + ConfigApp.CentralAppId, { chamadoId: '@chamadoId' }, {\n get: {\n method: 'GET',\n isArray: true\n }\n });\n },\n resposta: function resposta(params) {\n return $resource(ConfigApp.UrlApi + '/v1.0/chamados/:chamadoId/chat_atendimento/mensagens?origemParticipante=:origemParticipante', { chamadoId: '@chamadoId', origemParticipante: '@origemParticipante' }, {\n enviar: {\n method: 'POST',\n headers: { 'Content-Type': undefined, enctype: 'multipart/form-data' },\n params: params\n }\n });\n }\n };\n}\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nangular.module('app.services').factory('colaboradoresApi', colaboradoresApi);\n\ncolaboradoresApi.$inject = ['$resource', 'ConfigApp'];\n\nfunction colaboradoresApi($resource, ConfigApp) {\n return $resource(ConfigApp.UrlApi + '/v1.0/colaboradores', {}, {\n atendentesInicio: {\n method: 'GET',\n params: { canalDeAtendimentoId: '@canalDeAtendimentoId' },\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/colaboradores/atendentes_inicio'\n },\n atendentesFim: {\n method: 'GET',\n params: { canalDeAtendimentoId: '@canalDeAtendimentoId' },\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/colaboradores/atendentes_fim'\n }\n });\n};\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nangular.module('app.services').factory('roteamentoChamadoApi', roteamentoChamadoApi);\n\nroteamentoChamadoApi.$inject = ['$resource', 'ConfigApp'];\n\nfunction roteamentoChamadoApi($resource, ConfigApp) {\n return $resource(ConfigApp.UrlApi + '/v1.0/roteamentos', {}, {\n redirecionarPara: {\n method: 'POST',\n url: ConfigApp.UrlApi + '/v1.0/roteamentos/redirecionar/chamados/:chamadoId'\n },\n listarEnderecos: {\n method: 'GET',\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/roteamentos/enderecos'\n },\n listarMotivos: {\n method: 'GET',\n isArray: true,\n url: ConfigApp.UrlApi + '/v1.0/roteamentos/motivos',\n cache: true\n }\n });\n};\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nangular.module('app.services').factory('sistemaApi', sistemaApiFactory);\nsistemaApiFactory.$inject = ['$resource', '$sessionStorage', '$q', 'ConfigApp'];\n\nfunction sistemaApiFactory($resource, $sessionStorage, $q, ConfigApp) {\n return {\n versao: function versao(params) {\n\n var defer = $q.defer();\n var versao = $sessionStorage.versao;\n\n if (versao) {\n defer.resolve(versao);\n return defer.promise;\n } else {\n return $resource(ConfigApp.UrlApi + '/v1.0/csti/sistemas/' + ConfigApp.CentralAppId + '/info', {}, { ignoreLoadingBar: true }).get(params).$promise.then(function (response) {\n $sessionStorage.versao = response.data;\n\n return $sessionStorage.versao;\n });\n }\n }\n };\n}\n\n/***/ }),\n/* 205 */,\n/* 206 */,\n/* 207 */,\n/* 208 */,\n/* 209 */,\n/* 210 */,\n/* 211 */,\n/* 212 */,\n/* 213 */,\n/* 214 */,\n/* 215 */,\n/* 216 */,\n/* 217 */,\n/* 218 */,\n/* 219 */,\n/* 220 */\n/***/ (function(module, exports) {\n\nvar DateButton, _ref,\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\nDateButton = (function(_super) {\n __extends(DateButton, _super);\n\n function DateButton() {\n _ref = DateButton.__super__.constructor.apply(this, arguments);\n return _ref;\n }\n\n DateButton.prototype.name = 'date';\n\n DateButton.prototype.icon = 'none fa fa-clock-o';\n\n DateButton.prototype.htmlTag = 'span';\n\n DateButton.prototype.needFocus = false;\n\n DateButton.prototype._status = function() {};\n\n DateButton.prototype.command = function() {\n var $newBlock, $nextBlock, $rootBlock, $span;\n $rootBlock = this.editor.selection.rootNodes().first();\n $nextBlock = $rootBlock.next();\n if ($nextBlock.length > 0) {\n this.editor.selection.save();\n } else {\n $newBlock = $('

').append(this.editor.util.phBr);\n }\n $span = $('').text(this._getDate()).insertAfter($rootBlock);\n if ($newBlock) {\n $newBlock.insertAfter($span);\n this.editor.selection.setRangeAtStartOf($newBlock);\n } else {\n this.editor.selection.restore();\n }\n return this.editor.trigger('valuechanged');\n };\n\n DateButton.prototype._getDate = function() {\n var day, fulldate, month, now, parse, time, year;\n now = new Date();\n day = now.getDate();\n month = now.getMonth() + 1;\n year = now.getFullYear();\n parse = function(n) {\n if (n > 9) {\n return n;\n } else {\n return \"0\" + n;\n }\n };\n fulldate = [parse(day), parse(month), year].join('/');\n time = now.toString().match(/\\d\\d:\\d\\d:\\d\\d/)[0];\n return \"\" + fulldate + \" \" + time + \" \";\n };\n\n return DateButton;\n\n})(Simditor.Button);\n\nSimditor.Toolbar.addButton(DateButton);\n\n\n/***/ }),\n/* 221 */,\n/* 222 */,\n/* 223 */,\n/* 224 */,\n/* 225 */,\n/* 226 */,\n/* 227 */,\n/* 228 */,\n/* 229 */,\n/* 230 */,\n/* 231 */,\n/* 232 */,\n/* 233 */,\n/* 234 */,\n/* 235 */,\n/* 236 */,\n/* 237 */,\n/* 238 */,\n/* 239 */,\n/* 240 */,\n/* 241 */,\n/* 242 */,\n/* 243 */,\n/* 244 */,\n/* 245 */,\n/* 246 */,\n/* 247 */,\n/* 248 */,\n/* 249 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 250 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 251 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 252 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 253 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 254 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 255 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 256 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 257 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 258 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 259 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 260 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 261 */,\n/* 262 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

{{ segmentos.length ? (segmento.nome || 'Selecione um fornecedor de serviço') : 'Segmentos' }}

{{segmento.nome}}
Abrir

{{segmento.nome}}

Nenhum cartão foi adicionado até o momento

\";\n\n/***/ }),\n/* 263 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

Abrir Chamado

{{ anexo.name }} {{ anexo.size | dimensaoArquivo }}
Total: {{ $ctrl.dimensao | dimensaoArquivo }}

Nenhum arquivo anexado

\";\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

CCGP - Contact Center Grupo Projeção
Módulo de Chamado

Projeção \\\"Central
Setor de Desenvolvimento de Sistemas - Diretoria de Tecnologia da Informação - Grupo projeção © {{::anoAtual|date: 'yyyy'}}
\";\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\";\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

Chamado: {{ ::$ctrl.infoChamado.ticket }} Abrir Novo Chamado

{{ ::$ctrl.infoChamado.aberturaAssunto | uppercase }}
{{ $ctrl.infoChamado.chamadoSituacao.nome }} {{ $ctrl.infoChamado.categoriaDeServico.nome }}


Aguarde, estamos buscando os dados do Chamado...



Chamado não iniciado

Aguarde a priorização pelo canal de atendimento com base na análise do seu chamado.

{{ ::anexo.arquivoNome | limitar : 20 }} {{ ::anexo.arquivoTamanhoEmBytes | dimensaoArquivo }}
Total: {{ $ctrl.dimensaoArquivos | dimensaoArquivo }}

Nenhum arquivo anexado


Aguarde, estamos buscando os anexos...

\";\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
Núcleo de Desenvolvimento de Sistemas - Diretoria de Tecnologia da Informação
\";\n\n/***/ }),\n/* 268 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\";\n\n/***/ }),\n/* 269 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\";\n\n/***/ }),\n/* 270 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\";\n\n/***/ }),\n/* 271 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

Impacto {{ chamado.impacto.nome }} Urgência {{ chamado.urgencia.nome }} Prioridade {{ chamado.prioridade.nome }} Prazo de atendimento {{ chamado.prioridade.prazo ? chamado.tempoSolucao + ' hora(s)' : 'Planejado' }}
Aguarde a priorização pelo canal de atendimento com base na análise do seu chamado.

{{ ::chamado.ticket }} - {{ ::chamado.aberturaAssunto | htmlLimpo: 60 }} ({{ ::chamado.totalAnexo }})

{{ ::chamado.aberturaMensagem | htmlLimpo: $ctrl.limiteMensagem }}

{{ ::chamado.categoriaDeServico.nome }} {{ ::chamado.grupoDeSuporteSegmento.canalDeAtendimento.sigla }} {{ ::chamado.grupoDeSuporteSegmento.nome }}

{{ chamado.chamadoSituacao.nome }} {{ chamado.aberturaData | date: 'dd/MM/yyyy HH:mm:ss' }}
\";\n\n/***/ }),\n/* 272 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
{{ ::chamado.ticket }}
Impacto {{ chamado.impacto.nome }} Urgência {{ chamado.urgencia.nome }} Prioridade {{ chamado.prioridade.nome }} Prazo de atendimento {{ chamado.prioridade.prazo ? chamado.tempoSolucao + ' hora(s)' : 'Planejado' }}
Aguarde a priorização pelo canal de atendimento com base na análise do seu chamado.

{{ ::chamado.aberturaAssunto | htmlLimpo: 40 }} ({{ ::chamado.totalAnexo }})

{{ ::chamado.aberturaMensagem | htmlLimpo: 380 }}

{{ ::chamado.categoriaDeServico.nome }} {{ ::chamado.grupoDeSuporteSegmento.canalDeAtendimento.sigla }} {{ ::chamado.grupoDeSuporteSegmento.nome }}

{{ chamado.aberturaData | tempoDecorrido }} {{ chamado.chamadoSituacao.nome }}
\";\n\n/***/ }),\n/* 273 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
{{ $ctrl.totalRegistrosEncontrados }} Registro(s)
\";\n\n/***/ }),\n/* 274 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

Abertos ({{ $ctrl.totalRegistrosEncontrados }}) Abrir chamado

Até

Aguarde um momento, estamos buscando os chamados...


Não encontramos nenhum chamado até o momento.


\";\n\n/***/ }),\n/* 275 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\";\n\n/***/ }),\n/* 276 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = \"
{{ ::$ctrl.credencial.nome }}



O chat ainda não foi iniciado

{{ ::mensagem.colaborador.nome }} {{ ::mensagem.data | tempoDecorrido }} atrás
{{ ::mensagem.situacao.nome }}

\\\"\\\"
Aguarde um momento, estamos buscando as mensagens...

\";\n\n/***/ }),\n/* 277 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = \"
{{ ::$ctrl.credencial.nome }}
{{ ::mensagem.colaborador.nome }} {{ ::mensagem.data | tempoDecorrido }} atrás
{{ ::mensagem.situacao.nome }}



Não há mensagens para exibir

\\\"\\\"
Aguarde um momento, estamos buscando as mensagens...

\";\n\n/***/ }),\n/* 278 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
Foto
{{ $ctrl.credencial.nome || 'Nome não informado' }}
{{ $ctrl.credencial.registroAd.cargo }}

Os seus dados são buscados no AD Corporativo, caso os mesmos estejam desatualizados, por gentileza, solicite a correção clicando aqui.

Usuário:
{{ $ctrl.credencial.usuario || 'Usuário não informado' }}
Telefones:
{{ $ctrl.credencial.telefone || 'O telefone não foi informado' }}
E-mail corporativo:
{{ $ctrl.credencial.emailCorporativo || 'O e-mail corporativo não foi criado' }}
E-mail pessoal:
{{ $ctrl.credencial.emailPessoal || 'O e-mail pessoal não foi informado' }}
Departamento:
{{ $ctrl.credencial.registroAd.departamento || 'O departamento não foi informado' }}
Empresa:
{{ $ctrl.credencial.registroAd.empresa || 'A empresa não foi informada' }}
Unidade:
{{ $ctrl.credencial.registroAd.unidade || 'A unidade não foi informada' }}


Buscando dados, aguarde... Buscando dados, aguarde...

\";\n\n/***/ }),\n/* 279 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\";\n\n/***/ }),\n/* 280 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
{{ $ctrl.titulo }} {{ $ctrl.subtitulo }}
\";\n\n/***/ }),\n/* 281 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
De {{ redirecionamento.canalDe.sigla }}
Para {{ redirecionamento.canalPara.sigla }} {{ redirecionamento.data | tempoDecorrido }} atrás

{{ redirecionamento.motivo.nome || 'Último redirecionamento' }}

\";\n\n/***/ }),\n/* 282 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
Grupo de Suporte:
{{ ::$ctrl.exibir.segmento.grupoDeSuporte.nome }}

Canal de Atendimento:
{{ ::$ctrl.exibir.segmento.canalDeAtendimento.nome }}

Serviço Solicitado:
{{ ::$ctrl.exibir.segmento.grupoDeSuporteSegmento.nome }}


Buscando dados, aguarde... Buscando dados, aguarde...

\";\n\n/***/ }),\n/* 283 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 284 */,\n/* 285 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar map = {\n\t\"./af\": 17,\n\t\"./af.js\": 17,\n\t\"./ar\": 24,\n\t\"./ar-dz\": 18,\n\t\"./ar-dz.js\": 18,\n\t\"./ar-kw\": 19,\n\t\"./ar-kw.js\": 19,\n\t\"./ar-ly\": 20,\n\t\"./ar-ly.js\": 20,\n\t\"./ar-ma\": 21,\n\t\"./ar-ma.js\": 21,\n\t\"./ar-sa\": 22,\n\t\"./ar-sa.js\": 22,\n\t\"./ar-tn\": 23,\n\t\"./ar-tn.js\": 23,\n\t\"./ar.js\": 24,\n\t\"./az\": 25,\n\t\"./az.js\": 25,\n\t\"./be\": 26,\n\t\"./be.js\": 26,\n\t\"./bg\": 27,\n\t\"./bg.js\": 27,\n\t\"./bn\": 28,\n\t\"./bn.js\": 28,\n\t\"./bo\": 29,\n\t\"./bo.js\": 29,\n\t\"./br\": 30,\n\t\"./br.js\": 30,\n\t\"./bs\": 31,\n\t\"./bs.js\": 31,\n\t\"./ca\": 32,\n\t\"./ca.js\": 32,\n\t\"./cs\": 33,\n\t\"./cs.js\": 33,\n\t\"./cv\": 34,\n\t\"./cv.js\": 34,\n\t\"./cy\": 35,\n\t\"./cy.js\": 35,\n\t\"./da\": 36,\n\t\"./da.js\": 36,\n\t\"./de\": 39,\n\t\"./de-at\": 37,\n\t\"./de-at.js\": 37,\n\t\"./de-ch\": 38,\n\t\"./de-ch.js\": 38,\n\t\"./de.js\": 39,\n\t\"./dv\": 40,\n\t\"./dv.js\": 40,\n\t\"./el\": 41,\n\t\"./el.js\": 41,\n\t\"./en-au\": 42,\n\t\"./en-au.js\": 42,\n\t\"./en-ca\": 43,\n\t\"./en-ca.js\": 43,\n\t\"./en-gb\": 44,\n\t\"./en-gb.js\": 44,\n\t\"./en-ie\": 45,\n\t\"./en-ie.js\": 45,\n\t\"./en-nz\": 46,\n\t\"./en-nz.js\": 46,\n\t\"./eo\": 47,\n\t\"./eo.js\": 47,\n\t\"./es\": 49,\n\t\"./es-do\": 48,\n\t\"./es-do.js\": 48,\n\t\"./es.js\": 49,\n\t\"./et\": 50,\n\t\"./et.js\": 50,\n\t\"./eu\": 51,\n\t\"./eu.js\": 51,\n\t\"./fa\": 52,\n\t\"./fa.js\": 52,\n\t\"./fi\": 53,\n\t\"./fi.js\": 53,\n\t\"./fo\": 54,\n\t\"./fo.js\": 54,\n\t\"./fr\": 57,\n\t\"./fr-ca\": 55,\n\t\"./fr-ca.js\": 55,\n\t\"./fr-ch\": 56,\n\t\"./fr-ch.js\": 56,\n\t\"./fr.js\": 57,\n\t\"./fy\": 58,\n\t\"./fy.js\": 58,\n\t\"./gd\": 59,\n\t\"./gd.js\": 59,\n\t\"./gl\": 60,\n\t\"./gl.js\": 60,\n\t\"./gom-latn\": 61,\n\t\"./gom-latn.js\": 61,\n\t\"./he\": 62,\n\t\"./he.js\": 62,\n\t\"./hi\": 63,\n\t\"./hi.js\": 63,\n\t\"./hr\": 64,\n\t\"./hr.js\": 64,\n\t\"./hu\": 65,\n\t\"./hu.js\": 65,\n\t\"./hy-am\": 66,\n\t\"./hy-am.js\": 66,\n\t\"./id\": 67,\n\t\"./id.js\": 67,\n\t\"./is\": 68,\n\t\"./is.js\": 68,\n\t\"./it\": 69,\n\t\"./it.js\": 69,\n\t\"./ja\": 70,\n\t\"./ja.js\": 70,\n\t\"./jv\": 71,\n\t\"./jv.js\": 71,\n\t\"./ka\": 72,\n\t\"./ka.js\": 72,\n\t\"./kk\": 73,\n\t\"./kk.js\": 73,\n\t\"./km\": 74,\n\t\"./km.js\": 74,\n\t\"./kn\": 75,\n\t\"./kn.js\": 75,\n\t\"./ko\": 76,\n\t\"./ko.js\": 76,\n\t\"./ky\": 77,\n\t\"./ky.js\": 77,\n\t\"./lb\": 78,\n\t\"./lb.js\": 78,\n\t\"./lo\": 79,\n\t\"./lo.js\": 79,\n\t\"./lt\": 80,\n\t\"./lt.js\": 80,\n\t\"./lv\": 81,\n\t\"./lv.js\": 81,\n\t\"./me\": 82,\n\t\"./me.js\": 82,\n\t\"./mi\": 83,\n\t\"./mi.js\": 83,\n\t\"./mk\": 84,\n\t\"./mk.js\": 84,\n\t\"./ml\": 85,\n\t\"./ml.js\": 85,\n\t\"./mr\": 86,\n\t\"./mr.js\": 86,\n\t\"./ms\": 88,\n\t\"./ms-my\": 87,\n\t\"./ms-my.js\": 87,\n\t\"./ms.js\": 88,\n\t\"./my\": 89,\n\t\"./my.js\": 89,\n\t\"./nb\": 90,\n\t\"./nb.js\": 90,\n\t\"./ne\": 91,\n\t\"./ne.js\": 91,\n\t\"./nl\": 93,\n\t\"./nl-be\": 92,\n\t\"./nl-be.js\": 92,\n\t\"./nl.js\": 93,\n\t\"./nn\": 94,\n\t\"./nn.js\": 94,\n\t\"./pa-in\": 95,\n\t\"./pa-in.js\": 95,\n\t\"./pl\": 96,\n\t\"./pl.js\": 96,\n\t\"./pt\": 98,\n\t\"./pt-br\": 97,\n\t\"./pt-br.js\": 97,\n\t\"./pt.js\": 98,\n\t\"./ro\": 99,\n\t\"./ro.js\": 99,\n\t\"./ru\": 100,\n\t\"./ru.js\": 100,\n\t\"./sd\": 101,\n\t\"./sd.js\": 101,\n\t\"./se\": 102,\n\t\"./se.js\": 102,\n\t\"./si\": 103,\n\t\"./si.js\": 103,\n\t\"./sk\": 104,\n\t\"./sk.js\": 104,\n\t\"./sl\": 105,\n\t\"./sl.js\": 105,\n\t\"./sq\": 106,\n\t\"./sq.js\": 106,\n\t\"./sr\": 108,\n\t\"./sr-cyrl\": 107,\n\t\"./sr-cyrl.js\": 107,\n\t\"./sr.js\": 108,\n\t\"./ss\": 109,\n\t\"./ss.js\": 109,\n\t\"./sv\": 110,\n\t\"./sv.js\": 110,\n\t\"./sw\": 111,\n\t\"./sw.js\": 111,\n\t\"./ta\": 112,\n\t\"./ta.js\": 112,\n\t\"./te\": 113,\n\t\"./te.js\": 113,\n\t\"./tet\": 114,\n\t\"./tet.js\": 114,\n\t\"./th\": 115,\n\t\"./th.js\": 115,\n\t\"./tl-ph\": 116,\n\t\"./tl-ph.js\": 116,\n\t\"./tlh\": 117,\n\t\"./tlh.js\": 117,\n\t\"./tr\": 118,\n\t\"./tr.js\": 118,\n\t\"./tzl\": 119,\n\t\"./tzl.js\": 119,\n\t\"./tzm\": 121,\n\t\"./tzm-latn\": 120,\n\t\"./tzm-latn.js\": 120,\n\t\"./tzm.js\": 121,\n\t\"./uk\": 122,\n\t\"./uk.js\": 122,\n\t\"./ur\": 123,\n\t\"./ur.js\": 123,\n\t\"./uz\": 125,\n\t\"./uz-latn\": 124,\n\t\"./uz-latn.js\": 124,\n\t\"./uz.js\": 125,\n\t\"./vi\": 126,\n\t\"./vi.js\": 126,\n\t\"./x-pseudo\": 127,\n\t\"./x-pseudo.js\": 127,\n\t\"./yo\": 128,\n\t\"./yo.js\": 128,\n\t\"./zh-cn\": 129,\n\t\"./zh-cn.js\": 129,\n\t\"./zh-hk\": 130,\n\t\"./zh-hk.js\": 130,\n\t\"./zh-tw\": 131,\n\t\"./zh-tw.js\": 131\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 285;\n\n/***/ }),\n/* 286 */,\n/* 287 */,\n/* 288 */,\n/* 289 */,\n/* 290 */,\n/* 291 */,\n/* 292 */,\n/* 293 */,\n/* 294 */,\n/* 295 */,\n/* 296 */,\n/* 297 */,\n/* 298 */,\n/* 299 */,\n/* 300 */,\n/* 301 */,\n/* 302 */,\n/* 303 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\n\t\"production\": {\n\t\t\"UrlApi\": \"https://app.projecao.br/ccgp/api\",\n\t\t\"UrlBase\": \"https://app.projecao.br/ccgp\"\n\t},\n\t\"development\": {\n\t\t\"UrlApi\": \"https://localhost:44341/ccgp/api\",\n\t\t\"UrlBase\": \"https://localhost:44341/ccgp\"\n\t},\n\t\"homologation\": {\n\t\t\"UrlApi\": \"https://app.projecao.br/ccgp_homologacao/api\",\n\t\t\"UrlBase\": \"https://app.projecao.br/ccgp_homologacao\"\n\t},\n\t\"training\": {\n\t\t\"UrlApi\": \"https://app.projecao.br/ccgp_treinamento/api\",\n\t\t\"UrlBase\": \"https://app.projecao.br/ccgp_treinamento\"\n\t}\n};\n\n/***/ }),\n/* 304 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\r\n * @ngDoc Component\r\n * @name ng.component:aba\r\n *\r\n * @description\r\n *\r\n * O componete nos permite o uso de abas\r\n * de forma simples e pratica.\r\n *\r\n * @example\r\n *\r\n * \r\n * \r\n * // corpo A\r\n * \r\n * \r\n * // corpo B\r\n * \r\n * \r\n *\r\n * @element E\r\n * @require lodash\r\n *\r\n */\r\n\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.component('abas', {\r\n transclude: true,\r\n bindings: {\r\n selecionada: '=?'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: AbasController,\r\n template: [\r\n '
',\r\n '',\r\n '
',\r\n '
'\r\n ].join('')\r\n })\r\n .component('aba', {\r\n transclude: true,\r\n require: {\r\n abas: '^abas'\r\n },\r\n bindings: {\r\n titulo: '@',\r\n icone: '@?',\r\n class: '@?'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: function () {\r\n this.$onInit = function () {\r\n this.abas.adicionar(this);\r\n };\r\n },\r\n template: [\r\n '
',\r\n '
'\r\n ].join('')\r\n });\r\n\r\nAbasController.$inject = ['Event'];\r\nfunction AbasController(Event) {\r\n\r\n var $ctrl = this;\r\n\r\n $ctrl.abas = [];\r\n\r\n // Adicionar aba\r\n $ctrl.adicionar = function (aba) {\r\n if ($ctrl.abas.length == 0) {\r\n aba.selecionado = true;\r\n }\r\n $ctrl.abas.push(aba);\r\n\r\n Event.on('aba:' + aba.titulo, function () {\r\n $ctrl.selecionar(aba)\r\n })\r\n };\r\n\r\n // Seleciona aba\r\n $ctrl.selecionar = function (aba) {\r\n _.map($ctrl.abas, function (aba) {\r\n aba.selecionado = false;\r\n });\r\n\r\n $ctrl.selecionada = aba.titulo\r\n\r\n aba.selecionado = true;\r\n };\r\n\r\n}\r\n\n\n/***/ }),\n/* 305 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__anexos_css__ = __webpack_require__(255);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__anexos_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__anexos_css__);\n\r\n\r\n\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.component('anexos', {\r\n bindings: {\r\n arquivos: '=',\r\n dimensao: '=?',\r\n excluido: '&?'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: anexosCtrl,\r\n template: __webpack_require__(275)\r\n});\r\n\r\ncentralApp.component('arquivo', {\r\n require: {\r\n anexos: '^?anexos'\r\n },\r\n bindings: {\r\n arquivo: '<',\r\n excluir: '&'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: arquivoAnexoCtrl,\r\n template: [\r\n '',\r\n '{{ ::$ctrl.arquivo.name | htmlLimpo: 30 }} ',\r\n 'x',\r\n ''\r\n ].join('')\r\n});\r\n\r\nanexosCtrl.$inject = ['$scope', '$timeout', 'Event'];\r\nfunction anexosCtrl($scope, $timeout, Event)\r\n{\r\n var $ctrl = this;\r\n\r\n $ctrl.arquivo = null;\r\n\r\n $ctrl.colarArquivo = colarArquivo;\r\n $ctrl.adicionarTransferido = adicionarTransferido;\r\n $ctrl.adicionarAnexo = adicionarAnexo;\r\n $ctrl.ehImagem = ehImagem;\r\n\r\n // Começamos verificando se o navegador suporta o \r\n // objeto Clipboard. Se não, precisamos criar um \r\n // elemento contenteditable que captura todos os \r\n // dados colados\r\n if (false /*!window.Clipboard */) {\r\n var pasteCatcher = document.createElement(\"div\");\r\n \r\n // Firefox permite que imagens sejam coladas em \r\n // elementos contenteditable\r\n pasteCatcher.setAttribute(\"contenteditable\", \"\");\r\n \r\n // Podemos esconder o elemento e anexá-lo ao body\r\n pasteCatcher.style.opacity = 0;\r\n document.body.appendChild(pasteCatcher);\r\n \r\n // Nós certifique-se que está sempre no foco\r\n pasteCatcher.focus();\r\n document.addEventListener(\"click\", function() { \r\n pasteCatcher.focus(); \r\n });\r\n\r\n // Adicinoa o outvinte de eventos colar\r\n window.addEventListener(\"paste\", $ctrl.colarArquivo);\r\n } \r\n\r\n\r\n /**\r\n * Executado após o componetes estar pronto\r\n * para renderização.\r\n */\r\n $ctrl.$onInit = function(){\r\n $ctrl.dimensao = $ctrl.dimensao || 0;\r\n $ctrl.arquivos = $ctrl.arquivos || [];\r\n }\r\n\r\n /**\r\n * Calcula a dimensao totao dos arquivos\r\n * adicionado como anexo.\r\n */\r\n $scope.calcularDimensaoArquivo = function () {\r\n $ctrl.dimensao = _.sumBy($ctrl.arquivos, 'size');\r\n };\r\n\r\n // Calcula dimensão total dos arquivos\r\n $scope.calcularDimensaoArquivo();\r\n\r\n /**\r\n * Exclui arquivo da lista de anexos\r\n * \r\n * @param object arquivo\r\n */\r\n $ctrl.excluirArquivo = function (arquivo) {\r\n \r\n var index = $ctrl.arquivos.indexOf(arquivo);\r\n $ctrl.arquivos.splice(index, 1);\r\n\r\n if ($ctrl.excluido) {\r\n $ctrl.excluido({\r\n arquivo: arquivo\r\n });\r\n }\r\n\r\n };\r\n\r\n // Vamos observar mudanças no arquivo para \r\n // adiciona-los a lista\r\n $scope.$watch('$ctrl.arquivo', function (arquivos) {\r\n\r\n if (arquivos) {\r\n if (arquivos.length > 1) {\r\n _.each(arquivos, function (arquivo) {\r\n $ctrl.adicionarAnexo(arquivo);\r\n })\r\n } else {\r\n $ctrl.adicionarAnexo(_.first(arquivos));\r\n }\r\n }\r\n\r\n $scope.calcularDimensaoArquivo();\r\n });\r\n\r\n /**\r\n * Adiciona o arquivo a lista de anexos\r\n * \r\n * @param File arquivo\r\n */\r\n function adicionarAnexo(arquivo) {\r\n arquivo.ehImagem = $ctrl.ehImagem(arquivo.type);\r\n\r\n $ctrl.arquivos.push(arquivo);\r\n }\r\n\r\n /**\r\n * Permite a adição de arquivos no campo anexo.\r\n * Mas para está função funcionar é necessário o \r\n * uso do evento paste.\r\n * \r\n * @param object event\r\n * @param handler callback\r\n */\r\n function colarArquivo(event, callback) {\r\n\r\n var items = (\r\n _.get(event, 'clipboardData', null) || \r\n _.get(event, 'originalEvent.clipboardData', {})\r\n ).items || [];\r\n\r\n var files = [].slice.call(items)\r\n\r\n files.forEach(function (file) {\r\n if($ctrl.ehImagem(file.type)) {\r\n $ctrl.adicionarTransferido(\r\n file.getAsFile(), callback\r\n );\r\n }\r\n })\r\n\r\n }\r\n\r\n function ehImagem (tipo) {\r\n return /png|jpg|jpeg|gif/g.test(tipo);\r\n }\r\n\r\n /**\r\n * Adiciona na lista de anexos o arquivo \r\n * obtido da área de transferência.\r\n * \r\n * @param Blob arquivo\r\n * @param handler callback\r\n */\r\n function adicionarTransferido(arquivo, callback) {\r\n\r\n if (arquivo) {\r\n\r\n // O arquivo obtido da área de transf~encia\r\n // não tem nome, então vamos criar um alternativo.\r\n var nomeArquivo = [\r\n 'imagem-capturada-',\r\n moment().format('DDMMYYYYHHmmss'),\r\n _.last(arquivo.type.split('/'))\r\n ].join('.');\r\n\r\n // Criamos o arquivo\r\n var arquivoTransferido = new File([arquivo], nomeArquivo, { type: arquivo.type, lastModified: moment() });\r\n\r\n // Adicionamos o arquivo da área de transferência\r\n // na lista de arquivos em anexo.\r\n $ctrl.adicionarAnexo(arquivoTransferido);\r\n\r\n $scope.calcularDimensaoArquivo();\r\n\r\n // Executamos uma função de callback\r\n (callback || _.noop)(arquivoTransferido);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Este ouvinte nos possibilita ter um recurso adicional que\r\n * permir o usuário enviar arquivos para o campo de anexo\r\n * de qualquer lugar da página com o envento paste do angular.\r\n * \r\n * @param object event\r\n * @param object originalEvent\r\n */\r\n Event.on('anexo.colar-arquivo', function (event, originalEvent, handle) {\r\n \r\n if (originalEvent) {\r\n\r\n $ctrl.colarArquivo(originalEvent, function (arquivo) {\r\n\r\n $timeout(function () {\r\n ( handle || _.noop )(arquivo);\r\n \r\n $scope.$apply();\r\n }, 100);\r\n\r\n });\r\n }\r\n\r\n });\r\n}\r\n\r\narquivoAnexoCtrl.$inject = ['$scope'];\r\n\r\n/**\r\n * Exclui o arquivo da lista\r\n */\r\nfunction arquivoAnexoCtrl($scope)\r\n{\r\n var $ctrl = this;\r\n\r\n $ctrl.excluirArquivo = function () {\r\n $ctrl.excluir($ctrl.arquivo);\r\n }\r\n}\r\n\n\n/***/ }),\n/* 306 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\r\n * Move um elemento sobre a tela\r\n *\r\n * Como usar:\r\n * 1) Adicione o attibuto arrastar no elemente que deseja mover.\r\n *
Meu elemento arrastável
\r\n *\r\n * 2) Adicione o styale com a propriedade cursor igual move para\r\n * definir o ponto responsável por arrastar o elemento.\r\n *\r\n *
\r\n *

Clique aqui para arrastar

\r\n *

Meu elemento arrastável

\r\n *
\r\n */\r\n\r\n\r\n\r\nvar balcaoApp = angular.module('app.components');\r\n\r\nbalcaoApp.directive('arrastavel', arrastarDirective);\r\n\r\narrastarDirective.$inject = ['$document'];\r\nfunction arrastarDirective($document) {\r\n\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element, attr) {\r\n var startX = 0, startY = 0, x = 0, y = 0;\r\n\r\n element.css({\r\n position: 'relative',\r\n backgroundColor: '#fff'\r\n });\r\n\r\n element.on('dblclick', function (event) {\r\n if (mover(event)) {\r\n event.preventDefault();\r\n startX = 0; startY = 0; x = 0; y = 0;\r\n element.css({\r\n top: y + 'px',\r\n left: x + 'px'\r\n });\r\n }\r\n });\r\n\r\n element.on('mousedown', function (event) {\r\n\r\n if (mover(event)) {\r\n startX = event.pageX - x;\r\n startY = event.pageY - y;\r\n $document.on('mousemove', mousemove);\r\n $document.on('mouseup', mouseup);\r\n }\r\n\r\n return;\r\n\r\n });\r\n\r\n function mousemove(event) {\r\n y = event.pageY - startY;\r\n x = event.pageX - startX;\r\n\r\n element.css({\r\n top: y + 'px',\r\n left: x + 'px',\r\n }).addClass('effect6');\r\n }\r\n\r\n function mouseup() {\r\n $document.off('mousemove', mousemove);\r\n $document.off('mouseup', mouseup);\r\n }\r\n\r\n function mover(event) {\r\n return (event.target.style.cursor == 'move');\r\n }\r\n }\r\n };\r\n\r\n}\r\n\n\n/***/ }),\n/* 307 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.directive('baixarArquivo', function () {\r\n\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n // objeto contendo chamadoId e anexoId\r\n arquivo: '=baixarArquivo'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: baixarAnexoCtrl,\r\n link: function ($scope, $element, $attr) {\r\n\r\n $element.bind('click', function (e) {\r\n e.preventDefault();\r\n\r\n $scope.baixar();\r\n });\r\n\r\n }\r\n }\r\n\r\n});\r\n\r\nbaixarAnexoCtrl.$inject = ['$scope', 'notificacao', 'anexoApi'];\r\n\r\nfunction baixarAnexoCtrl($scope, notificacao, anexoApi)\r\n{\r\n $scope.baixar = function () {\r\n $scope.arquivo.baixando = true;\r\n anexoApi.baixarArquivo( $scope.arquivo , function (resposta) {\r\n saveAs(new File([resposta.data], $scope.arquivo.arquivoNome, {\r\n type: resposta.headers['content-type']\r\n }));\r\n $scope.arquivo.baixando = false;\r\n }, function(error) {\r\n notificacao.erro('Houve um erro ao baixar o arquivo');\r\n $scope.arquivo.baixando = false;\r\n });\r\n\r\n }\r\n}\n\n/***/ }),\n/* 308 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\r\n * Componente para alternar opcao\r\n * \r\n * Exemplo: \r\n * \r\n */\r\n\r\n\r\n\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\n\r\ncentralApp.component('btoAlternar', {\r\n controllerAs: '$ctrl',\r\n bindings: {\r\n alvo: '=',\r\n cache: '=?',\r\n manipulador: '&?'\r\n },\r\n transclude: true,\r\n controller: btoAlternarCtrl,\r\n template: [\r\n '',\r\n ' ',\r\n '',\r\n ''\r\n ].join('')\r\n});\r\n\r\nbtoAlternarCtrl.$inject = ['$localStorage'];\r\nfunction btoAlternarCtrl($localStorage) {\r\n var $ctrl = this;\r\n\r\n $ctrl.alternar = function () {\r\n\r\n $ctrl.alvo = !$ctrl.alvo;\r\n\r\n ($ctrl.manipulador || _.noop)({\r\n alvo: $ctrl.alvo\r\n });\r\n\r\n }\r\n}\r\n\n\n/***/ }),\n/* 309 */\n/***/ (function(module, exports, __webpack_require__) {\n\nangular.module('app.components').component('chatAtendente', {\r\n bindings: {\r\n chamado: '=',\r\n origem: '=',\r\n total: '=?',\r\n permitirResposta: '=',\r\n respondido: '&?'\r\n },\r\n controller: discussaoCtrl,\r\n template: __webpack_require__(276)\r\n});\r\n\r\ndiscussaoCtrl.$inject = ['$scope', 'Chat', 'notificacao', 'Event', 'Usuario', 'categorizacoesApi']\r\n\r\nfunction discussaoCtrl ($scope, Chat, notificacao, Event, Usuario, categorizacoesApi) \r\n{\r\n var $ctrl = this;\r\n\r\n $ctrl.mensagens = []; \r\n $ctrl.resposta = { anexos: [] };\r\n $ctrl.buscarMensagens = buscarMensagens;\r\n $ctrl.responder = responder;\r\n $ctrl.colar = colar;\r\n $ctrl.chamadoId = null;\r\n $ctrl.credencial = {};\r\n $ctrl.situacoes = [];\r\n $ctrl.buscandoMensagens = true;\r\n $ctrl.atualizar = true;\r\n $ctrl.exibirForm = false;\r\n\r\n Event.on('chat:atualizar', function(event, payload){\r\n if( payload.chamadoId && $ctrl.chamadoId == $ctrl.chamadoId && $ctrl.atualizar){\r\n $ctrl.buscarMensagens( $ctrl.chamadoId ).then(function(){\r\n $ctrl.respondido()\r\n });\r\n }\r\n\r\n $ctrl.atualizar = true;\r\n })($scope)\r\n\r\n /**\r\n * Obtém a credencial do usuário logado\r\n */\r\n Usuario.credencial().then(function ( perfil ) {\r\n $ctrl.credencial = perfil.data.credencial;\r\n });\r\n\r\n $ctrl.$onInit = function()\r\n {\r\n $ctrl.chamado.then(function(chamado){\r\n $ctrl.chamadoId = chamado.chamadoId;\r\n\r\n // Indica que as mensagens estão sendo buscadas\r\n $ctrl.buscandoMensagens = true;\r\n\r\n $ctrl.buscarMensagens( chamado.chamadoId )\r\n });\r\n\r\n $ctrl.origem = $ctrl.origem || 0;\r\n\r\n // Indica a quantidade de mensagens\r\n $ctrl.total = $ctrl.total || 0;\r\n }\r\n\r\n /**\r\n * Busca as mensagens do chamado\r\n * \r\n * @param {string} chamadoId \r\n */\r\n function buscarMensagens ( chamadoId )\r\n {\r\n return $ctrl.mensagensRequest = Chat.mensagens().get({ chamadoId: chamadoId }, function( mensagens ){\r\n $ctrl.mensagens = mensagens;\r\n\r\n $ctrl.total = mensagens.length;\r\n\r\n $ctrl.buscandoMensagens = false;\r\n\r\n return true;\r\n }, function () {\r\n $ctrl.mensagens = [];\r\n\r\n $ctrl.buscandoMensagens = false;\r\n }).$promise;\r\n }\r\n\r\n /**\r\n * Envia uma respsota\r\n * \r\n * @param {object} resposta \r\n */\r\n function responder( resposta )\r\n {\r\n $ctrl.atualizar = false;\r\n\r\n var formResposta = new FormData();\r\n\r\n formResposta.append( 'mensagem', _.escape(resposta.mensagem.replace(/'/g, '\"')) );\r\n\r\n _.each( resposta.anexos , function (anexo) {\r\n formResposta.append('Files[]', anexo, anexo.nome);\r\n });\r\n\r\n Chat.resposta( { chamadoId: $ctrl.chamadoId, origemParticipante: $ctrl.origem } ).enviar( \r\n formResposta, \r\n function( mensagem ){\r\n $ctrl.mensagens.unshift( mensagem );\r\n\r\n $ctrl.resposta = { anexos: [] };\r\n\r\n $ctrl.respondido({\r\n mensagem: mensagem\r\n });\r\n\r\n $ctrl.exibirForm = false;\r\n }, \r\n function(error){\r\n 'error'\r\n }\r\n )\r\n } \r\n\r\n \r\n /**\r\n * Ouvinte para o evento colar no formulario\r\n * de abertura de chamado\r\n * \r\n * @param object $event\r\n */\r\n function colar($event) {\r\n Event.fire( 'anexo.colar-arquivo', $event );\r\n }\r\n\r\n}\r\n\n\n/***/ }),\n/* 310 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__atendente__ = __webpack_require__(309);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__atendente___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__atendente__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__solicitante__ = __webpack_require__(311);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__solicitante___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__solicitante__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__style_css__ = __webpack_require__(256);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__style_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__style_css__);\n\n\n\n\n\n/***/ }),\n/* 311 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\r\nangular.module('app.components').component('chatSolicitante', {\r\n bindings: {\r\n chamado: '=',\r\n origem: '=',\r\n total: '=?',\r\n permitirResposta: '=',\r\n respondido: '&?'\r\n },\r\n controller: discussaoCtrl,\r\n template: __webpack_require__(277)\r\n});\r\n\r\ndiscussaoCtrl.$inject = ['$scope', 'Chat', 'notificacao', 'Event', 'Usuario', 'categorizacoesApi']\r\n\r\nfunction discussaoCtrl ($scope, Chat, notificacao, Event, Usuario, categorizacoesApi) \r\n{\r\n var $ctrl = this;\r\n\r\n $ctrl.mensagens = []; \r\n $ctrl.resposta = { anexos: [] };\r\n $ctrl.buscarMensagens = buscarMensagens;\r\n $ctrl.responder = responder;\r\n $ctrl.colar = colar;\r\n $ctrl.chamadoId = null;\r\n $ctrl.credencial = {};\r\n $ctrl.situacoes = [];\r\n $ctrl.buscandoMensagens = true;\r\n $ctrl.atualizar = true;\r\n $ctrl.exibirForm = false;\r\n\r\n Event.on('chat:atualizar', function(event, payload){\r\n if( payload.chamadoId && $ctrl.chamadoId == $ctrl.chamadoId && $ctrl.atualizar){\r\n $ctrl.buscarMensagens( $ctrl.chamadoId ).then(function(){\r\n $ctrl.respondido()\r\n });\r\n }\r\n $ctrl.atualizar = true;\r\n })($scope)\r\n\r\n /**\r\n * Obtém a credencial do usuário logado\r\n */\r\n Usuario.credencial().then(function ( perfil ) {\r\n $ctrl.credencial = perfil.data.credencial;\r\n });\r\n\r\n $ctrl.$onInit = function()\r\n {\r\n $ctrl.chamado.then(function(chamado){\r\n $ctrl.chamadoId = chamado.chamadoId;\r\n\r\n // Indica que as mensagens estão sendo buscadas\r\n $ctrl.buscandoMensagens = true;\r\n\r\n $ctrl.buscarMensagens( chamado.chamadoId )\r\n });\r\n\r\n $ctrl.origem = $ctrl.origem || 0;\r\n\r\n // Indica a quantidade de mensagens\r\n $ctrl.total = $ctrl.total || 0;\r\n }\r\n\r\n /**\r\n * Busca as mensagens do chamado\r\n * \r\n * @param {string} chamadoId \r\n */\r\n function buscarMensagens ( chamadoId )\r\n {\r\n return $ctrl.mensagensRequest = Chat.mensagens().get({ chamadoId: chamadoId }, function( mensagens ){\r\n $ctrl.mensagens = mensagens;\r\n\r\n $ctrl.total = mensagens.length;\r\n\r\n $ctrl.buscandoMensagens = false;\r\n\r\n return true;\r\n }, function(){\r\n $ctrl.mensagens = [];\r\n\r\n $ctrl.buscandoMensagens = false;\r\n }).$promise;\r\n }\r\n\r\n\r\n /**\r\n * Envia uma respsota\r\n * \r\n * @param {object} resposta \r\n */\r\n function responder( resposta )\r\n {\r\n $ctrl.atualizar = false;\r\n\r\n var formResposta = new FormData();\r\n\r\n formResposta.append( 'mensagem', _.escape(resposta.mensagem.replace(/'/g, '\"')) );\r\n\r\n _.each( resposta.anexos , function (anexo) {\r\n formResposta.append('Files[]', anexo, anexo.nome);\r\n });\r\n\r\n if(resposta.situacao && resposta.situacao.chamadoSituacaoId ){\r\n formResposta.append(\r\n 'chamadoSituacaoRespostaSolicitanteId', \r\n resposta.situacao.chamadoSituacaoId\r\n )\r\n }\r\n\r\n Chat.resposta( { chamadoId: $ctrl.chamadoId, origemParticipante: $ctrl.origem } ).enviar( \r\n formResposta, \r\n function( mensagem ){\r\n $ctrl.mensagens.unshift( mensagem );\r\n\r\n $ctrl.resposta = { anexos: [] };\r\n\r\n $ctrl.respondido({\r\n mensagem: mensagem\r\n })\r\n\r\n $ctrl.exibirForm = false;\r\n }, \r\n function(error){\r\n console.log(error)\r\n }\r\n )\r\n } \r\n\r\n \r\n /**\r\n * Ouvinte para o evento colar no formulario\r\n * de abertura de chamado\r\n * \r\n * @param object $event\r\n */\r\n function colar($event) {\r\n Event.fire( 'anexo.colar-arquivo', $event );\r\n }\r\n\r\n}\r\n\n\n/***/ }),\n/* 312 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__credencial_usuario_css__ = __webpack_require__(257);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__credencial_usuario_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__credencial_usuario_css__);\n\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.component('credencialUsuario', {\r\n bindings: {\r\n credencial: '='\r\n },\r\n controller: credencialUsuarioCtrl,\r\n template: __webpack_require__(278)\r\n});\r\n\r\ncredencialUsuarioCtrl.$inject = ['$sessionStorage', 'Usuario', 'ConfigApp'];\r\nfunction credencialUsuarioCtrl($sessionStorage, Usuario, ConfigApp) \r\n{\r\n var $ctrl = this;\r\n\r\n Usuario.credencial().then(function ( perfil ) {\r\n var credencial = perfil.data.credencial;\r\n\r\n credencial.foto = ConfigApp.LinkFoto( credencial.usuario )\r\n\r\n $ctrl.credencial = credencial;\r\n });\r\n\r\n $ctrl.$onInit = function(){\r\n $ctrl.credencial = $ctrl.credencial || {};\r\n }\r\n}\n\n/***/ }),\n/* 313 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__img_usuario_directive_css__ = __webpack_require__(258);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__img_usuario_directive_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__img_usuario_directive_css__);\n\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.directive('imgUsuario', imgUsuarioFunc);\r\n\r\nimgUsuarioFunc.$inject = ['ConfigApp']\r\n\r\nfunction imgUsuarioFunc(ConfigApp)\r\n{\r\n var semImg = {};\r\n\r\n return {\r\n link: function($scope, $element, $attr)\r\n {\r\n var name = 'src',\r\n //foto = ConfigApp.LinkFoto,\r\n padrao = __webpack_require__(133);\r\n\r\n $element.on('error', function(){\r\n semImg[$attr.imgUsuario] = true\r\n\r\n $element.prop(name, $attr['img-padrao'] || padrao);\r\n })\r\n\r\n $attr.$observe('imgUsuario', function(usuario)\r\n {\r\n //deixar sempre a foto padrão\r\n // if (semImg[$attr.imgUsuario]) {\r\n // $attr.$set(name, $attr['img-padrao'] || padrao)\r\n\r\n // return\r\n // }\r\n \r\n $attr.$set(name, $attr['img-padrao'] || padrao)\r\n // $attr.$set(name, foto( usuario ))\r\n })\r\n\r\n }\r\n }\r\n}\n\n/***/ }),\n/* 314 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.directive('lerArquivo', lerArquivoFunc);\r\n\r\n\r\nlerArquivoFunc.$inject = ['$q'];\r\n\r\nfunction lerArquivoFunc($q) {\r\n var slice = Array.prototype.slice;\r\n\r\n return {\r\n restrict: 'A',\r\n require: '?ngModel',\r\n scope: {\r\n carregado: '=?' \r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n if (!ngModel) return;\r\n\r\n ngModel.$render = function () { };\r\n\r\n element.bind('change', function (e) {\r\n var element = e.target;\r\n\r\n $q.all(_.map(element.files, readFile))\r\n .then(function (values) {\r\n if (element.multiple) ngModel.$setViewValue(values);\r\n else ngModel.$setViewValue(values.length ? values[0] : null);\r\n });\r\n\r\n function readFile(file) {\r\n\r\n if (!scope.carregado) return file;\r\n\r\n var deferred = $q.defer();\r\n\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n deferred.resolve(e.target.result);\r\n };\r\n reader.onerror = function (e) {\r\n deferred.reject(e);\r\n };\r\n reader.readAsDataURL(file);\r\n\r\n return deferred.promise;\r\n }\r\n\r\n });\r\n\r\n }\r\n };\r\n}\n\n/***/ }),\n/* 315 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nangular.module('app.components').directive('listaSituacoes', listaSituacoesFunc);\r\n\r\nlistaSituacoesFunc.$inject = ['ConfigApp']\r\n\r\nfunction listaSituacoesFunc(ConfigApp) {\r\n return {\r\n require: '^ngModel',\r\n restrict: 'E',\r\n scope: {},\r\n controllerAs: '$ctrl',\r\n controller: ['$scope', 'categorizacoesApi',\r\n function ($scope, categorizacoesApi) {\r\n\r\n var $ctrl = this;\r\n\r\n $ctrl.situacoes = [];\r\n $ctrl.situacao = {};\r\n $ctrl.ngModel = {};\r\n\r\n $ctrl.$onInit = function () {\r\n categorizacoesApi.listarSituacoesEncerramento(function (situacoes) {\r\n $ctrl.situacoes = situacoes;\r\n }, function () {\r\n $ctrl.situacoes = [];\r\n })\r\n }\r\n\r\n $ctrl.setNgModel = function (ngModel) {\r\n $ctrl.ngModel = ngModel;\r\n\r\n $ctrl.ngModel.$render = $ctrl.definitSituacao;\r\n }\r\n\r\n $ctrl.definitSituacao = function (situacao) {\r\n $ctrl.situacao = situacao;\r\n }\r\n\r\n $ctrl.selecionarSituacao = function (situacao) {\r\n $ctrl.ngModel.$setViewValue(situacao);\r\n\r\n $ctrl.ngModel.$render(situacao)\r\n }\r\n\r\n }],\r\n link: function ($scope, $element, $attr, $ngModelctrl) {\r\n $scope.$ctrl.setNgModel($ngModelctrl)\r\n },\r\n template: __webpack_require__(279)\r\n }\r\n}\r\n\n\n/***/ }),\n/* 316 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__painel_component_css__ = __webpack_require__(259);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__painel_component_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__painel_component_css__);\n\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.component('painel', {\r\n bindings: {\r\n titulo: '@',\r\n icone: '@?',\r\n subtitulo: '@?',\r\n ngClass: '=?'\r\n },\r\n replace: true, \r\n transclude: true,\r\n template: __webpack_require__(280)\r\n});\r\n\n\n/***/ }),\n/* 317 */\n/***/ (function(module, exports) {\n\nangular.module('app.components')\r\n\r\n .directive('previewImage', previewImageFunc);\r\n\r\nfunction previewImageFunc() {\r\n return {\r\n template: 'Carregando imagem...',\r\n scope: {\r\n src: '='\r\n },\r\n link: function ($scope, $element, $attrs) {\r\n var $el = $element, $parent = $el.parent()[0];\r\n var canvas = $element.find('canvas')[0];\r\n\r\n var gkhead = new Image;\r\n\r\n setTimeout(init, 100)\r\n \r\n gkhead.src = $scope.src.toString();\r\n\r\n function init () {\r\n\r\n canvas.width = $parent.clientWidth - 35;\r\n canvas.height = $parent.clientHeight - 35;\r\n\r\n var ctx = canvas.getContext('2d');\r\n trackTransforms(ctx);\r\n\r\n function redraw() {\r\n // Clear the entire canvas\r\n var p1 = ctx.transformedPoint(0, 0);\r\n var p2 = ctx.transformedPoint(canvas.width, canvas.height);\r\n ctx.clearRect(p1.x, p1.y, p2.x - p1.x, p2.y - p1.y);\r\n\r\n ctx.save();\r\n ctx.setTransform(1, 0, 0, 1, 0, 0);\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n ctx.restore();\r\n\r\n ctx.drawImage(\r\n gkhead,\r\n (gkhead.width < canvas.width ? (canvas.width / 2) - (gkhead.width / 2) : 0 ), \r\n (gkhead.height < canvas.height ? (canvas.height / 2) - (gkhead.height / 2) : 0 ),\r\n (gkhead.width > canvas.width ? canvas.width : gkhead.width), \r\n (gkhead.height > canvas.height ? canvas.height : gkhead.height)\r\n );\r\n\r\n }\r\n redraw();\r\n\r\n var lastX = canvas.width / 2, lastY = canvas.height / 2;\r\n\r\n var dragStart, dragged;\r\n\r\n canvas.addEventListener('mousedown', function (evt) {\r\n document.body.style.mozUserSelect = document.body.style.webkitUserSelect = document.body.style.userSelect = 'none';\r\n lastX = evt.offsetX || (evt.pageX - canvas.offsetLeft);\r\n lastY = evt.offsetY || (evt.pageY - canvas.offsetTop);\r\n dragStart = ctx.transformedPoint(lastX, lastY);\r\n dragged = false;\r\n }, false);\r\n\r\n canvas.addEventListener('mousemove', function (evt) {\r\n \r\n $el.css({'cursor': 'move'})\r\n\r\n lastX = evt.offsetX || (evt.pageX - canvas.offsetLeft);\r\n lastY = evt.offsetY || (evt.pageY - canvas.offsetTop);\r\n dragged = true;\r\n if (dragStart) {\r\n var pt = ctx.transformedPoint(lastX, lastY);\r\n ctx.translate(pt.x - dragStart.x, pt.y - dragStart.y);\r\n redraw();\r\n }\r\n }, false);\r\n\r\n canvas.addEventListener('mouseup', function (evt) {\r\n dragStart = null;\r\n if (!dragged) zoom(evt.shiftKey ? -1 : 1);\r\n }, false);\r\n\r\n var scaleFactor = 1.1;\r\n\r\n var zoom = function (clicks) {\r\n\r\n if(clicks > 0){\r\n $el.css({'cursor': '-webkit-zoom-in'})\r\n } else {\r\n $el.css({'cursor': '-webkit-zoom-out'})\r\n }\r\n\r\n var pt = ctx.transformedPoint(lastX, lastY);\r\n ctx.translate(pt.x, pt.y);\r\n var factor = Math.pow(scaleFactor, clicks);\r\n ctx.scale(factor, factor);\r\n ctx.translate(-pt.x, -pt.y);\r\n redraw();\r\n\r\n }\r\n\r\n var handleScroll = function (evt) {\r\n var delta = evt.wheelDelta ? evt.wheelDelta / 40 : evt.detail ? -evt.detail : 0;\r\n if (delta) zoom(delta);\r\n return evt.preventDefault() && false;\r\n };\r\n\r\n canvas.addEventListener('DOMMouseScroll', handleScroll, false);\r\n canvas.addEventListener('mousewheel', handleScroll, false);\r\n };\r\n\r\n // Adds ctx.getTransform() - returns an SVGMatrix\r\n // Adds ctx.transformedPoint(x,y) - returns an SVGPoint\r\n function trackTransforms(ctx) {\r\n var svg = document.createElementNS(\"http://www.w3.org/2000/svg\", 'svg');\r\n var xform = svg.createSVGMatrix();\r\n ctx.getTransform = function () { return xform; };\r\n\r\n var savedTransforms = [];\r\n var save = ctx.save;\r\n ctx.save = function () {\r\n savedTransforms.push(xform.translate(0, 0));\r\n return save.call(ctx);\r\n };\r\n\r\n var restore = ctx.restore;\r\n ctx.restore = function () {\r\n xform = savedTransforms.pop();\r\n return restore.call(ctx);\r\n };\r\n\r\n var scale = ctx.scale;\r\n ctx.scale = function (sx, sy) {\r\n xform = xform.scaleNonUniform(sx, sy);\r\n return scale.call(ctx, sx, sy);\r\n };\r\n\r\n var rotate = ctx.rotate;\r\n ctx.rotate = function (radians) {\r\n xform = xform.rotate(radians * 180 / Math.PI);\r\n return rotate.call(ctx, radians);\r\n };\r\n\r\n var translate = ctx.translate;\r\n ctx.translate = function (dx, dy) {\r\n xform = xform.translate(dx, dy);\r\n return translate.call(ctx, dx, dy);\r\n };\r\n\r\n var transform = ctx.transform;\r\n ctx.transform = function (a, b, c, d, e, f) {\r\n var m2 = svg.createSVGMatrix();\r\n m2.a = a; m2.b = b; m2.c = c; m2.d = d; m2.e = e; m2.f = f;\r\n xform = xform.multiply(m2);\r\n return transform.call(ctx, a, b, c, d, e, f);\r\n };\r\n\r\n var setTransform = ctx.setTransform;\r\n ctx.setTransform = function (a, b, c, d, e, f) {\r\n xform.a = a;\r\n xform.b = b;\r\n xform.c = c;\r\n xform.d = d;\r\n xform.e = e;\r\n xform.f = f;\r\n return setTransform.call(ctx, a, b, c, d, e, f);\r\n };\r\n\r\n var pt = svg.createSVGPoint();\r\n ctx.transformedPoint = function (x, y) {\r\n pt.x = x; pt.y = y;\r\n return pt.matrixTransform(xform.inverse());\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n\n\n/***/ }),\n/* 318 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__style_css__ = __webpack_require__(260);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__style_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__style_css__);\n\r\n\r\nangular.module('app.components')\r\n\r\n.component('redirecionamentos', {\r\n bindings: {\r\n redirecionamentos: '=',\r\n de: '='\r\n },\r\n template: __webpack_require__(281)\r\n})\n\n/***/ }),\n/* 319 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nangular.module('app.components').component('segmentoSelecionado', {\r\n bindings: {\r\n parametros: '='\r\n },\r\n transclude: true,\r\n controllerAs: '$ctrl',\r\n controller: segmentoSelecionadoCtrl,\r\n template: __webpack_require__(282)\r\n});\r\n\r\nsegmentoSelecionadoCtrl.$inject = ['$sessionStorage', 'segmentosApi', 'notificacao'];\r\nfunction segmentoSelecionadoCtrl($sessionStorage, segmentosApi, notificacao) {\r\n var $ctrl = this;\r\n\r\n $ctrl.exibir = { segmento: null, credencial: null };\r\n\r\n $ctrl.$onInit = function(){\r\n if (_.has($ctrl.parametros, '$$state')) {\r\n $ctrl.parametros.then(function (chamado) {\r\n obterDadosChamado({\r\n grupoDeSuporteId: chamado.grupoDeSuporteSegmento.grupoDeSuporte.grupoDeSuporteId,\r\n grupoDeSuporteSegmentoId: chamado.grupoDeSuporteSegmento.grupoDeSuporteSegmentoId\r\n });\r\n });\r\n } else {\r\n obterDadosChamado($ctrl.parametros);\r\n }\r\n }\r\n\r\n function obterDadosChamado(parametros) {\r\n segmentosApi.lerDadosChamado(parametros, function (segmentoSelecionado) {\r\n $ctrl.exibir = {\r\n segmento: segmentoSelecionado,\r\n credencial: $sessionStorage.credencial.data\r\n };\r\n }, function error(errorResponse) {\r\n notificacao.erroResponse(errorResponse);\r\n });\r\n }\r\n}\n\n/***/ }),\n/* 320 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.component('tempoDecorrido', {\r\n bindings: {\r\n data: '=',\r\n real: '=?'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: tempoController,\r\n template: ''\r\n});\r\n\r\ntempoController.$inject = ['$interval', '$filter'];\r\nfunction tempoController($interval, $filter) {\r\n\r\n var $ctrl = this;\r\n\r\n $ctrl.tempo = $filter('tempoDecorrido')($ctrl.data);\r\n\r\n if ($ctrl.real) {\r\n $interval(function () {\r\n $ctrl.tempo = $filter('tempoDecorrido')($ctrl.data);\r\n }, 1000);\r\n }\r\n}\r\n\n\n/***/ }),\n/* 321 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.component('versao', {\r\n controllerAs: '$ctrl',\r\n controller: versaoSistemaCtrl,\r\n template: ' '\r\n});\r\n\r\nversaoSistemaCtrl.$inject = ['sistemaApi'];\r\nfunction versaoSistemaCtrl(sistemaApi) {\r\n var $ctrl = this;\r\n\r\n sistemaApi.versao().then(function (response) {\r\n console.log(response);\r\n $ctrl.versao = response;\r\n });\r\n}\n\n/***/ }),\n/* 322 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.directive('visualizarArquivo', function () {\r\n\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n arquivo: '=visualizarArquivo'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: visualizarArquivoCtrl,\r\n link: function ($scope, $element, $attr) {\r\n\r\n $element.bind('click', function (e) {\r\n e.preventDefault();\r\n\r\n if ($scope.arquivo instanceof File || $scope.arquivo instanceof Blob) {\r\n\r\n // Ler o arquivo de imagem\r\n $scope.lerArquivo($scope.arquivo).then(function (base64) {\r\n $scope.exibirImagem($scope.arquivo, base64);\r\n });\r\n\r\n } else {\r\n $scope.baixarArquivo();\r\n }\r\n\r\n });\r\n\r\n }\r\n }\r\n\r\n});\r\n\r\nvisualizarArquivoCtrl.$inject = ['$scope', '$q', '$modal', 'notificacao', 'anexoApi'];\r\n\r\nfunction visualizarArquivoCtrl($scope, $q, $modal, notificacao, anexoApi) {\r\n\r\n var $ctrl = $scope;\r\n\r\n $ctrl.baixarArquivo = baixarArquivo;\r\n $ctrl.lerArquivo = lerArquivo;\r\n $ctrl.exibirImagem = exibirImagem;\r\n\r\n\r\n /**\r\n * Realiza uma consulta na api para baixar \r\n * o arquivo solicitado\r\n */\r\n function baixarArquivo() {\r\n $ctrl.arquivo.abrindo = true;\r\n anexoApi.baixarArquivo($ctrl.arquivo, function (resposta) {\r\n \r\n // Cria a instância do arquivo\r\n var arquivo = new Blob([resposta.data], {\r\n type: resposta.headers['content-type']\r\n });\r\n\r\n // Ler o arquivo de imagem\r\n $ctrl.lerArquivo(arquivo).then(function (base64) {\r\n $ctrl.src = base64;\r\n $ctrl.exibirImagem($ctrl.arquivo, base64);\r\n });\r\n\r\n $scope.arquivo.abrindo = false;\r\n }, function (error) {\r\n notificacao.erro('Houve um erro ao baixar o arquivo');\r\n $scope.arquivo.abrindo = false;\r\n });\r\n }\r\n\r\n /**\r\n * Ler o conteúdo do arquivo\r\n * \r\n * @param Blob arquivo\r\n * \r\n * @return $promise\r\n */\r\n function lerArquivo(arquivo) {\r\n\r\n var deferred = $q.defer();\r\n\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n deferred.resolve(e.target.result);\r\n };\r\n\r\n reader.onerror = function (e) {\r\n deferred.reject(e);\r\n };\r\n\r\n reader.readAsDataURL(arquivo);\r\n\r\n return deferred.promise;\r\n }\r\n\r\n /**\r\n * Responsável por aprensentar a modal\r\n * com a imagem\r\n * \r\n * @param string base64(imagem)\r\n */\r\n function exibirImagem(arquivo, base64) {\r\n\r\n $modal({\r\n title: arquivo.arquivoNome || arquivo.name || 'Imagem',\r\n content: base64,\r\n scope: $ctrl,\r\n html: true,\r\n show: true,\r\n backdrop: true,\r\n template: __webpack_require__(283),\r\n onHide: function () {\r\n $('body').removeClass('modal-open')\r\n }\r\n });\r\n\r\n }\r\n}\n\n/***/ }),\n/* 323 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = install;\n\r\nfunction install ( mod ) {\r\n\r\n /**\r\n * Este filtro nos fornece o tempo em dias horas minutos \r\n * e segundos em relação a data que foi passada por paramentro.\r\n * \r\n * @param {object} data\r\n */\r\n mod.filter('tempoDecorrido', ['$filter', function ($filter) {\r\n return function (data) {\r\n\r\n // Define o locale\r\n moment.locale('pt-br');\r\n\r\n // Cria uma instância da data\r\n var dataInicial = moment(data);\r\n\r\n // Verifica se é uma data válida\r\n if (!dataInicial.isValid()) return;\r\n\r\n // Retorna o tempo decorrido\r\n return moment.duration(moment().diff(dataInicial))\r\n .humanize();\r\n\r\n };\r\n }])\r\n\r\n /**\r\n * Verifica se um item existe na coleção\r\n * \r\n * @param {object} data\r\n */\r\n mod.filter('tem', [function () {\r\n return function (colecao, item, retornoTrue, retornoFalse) {\r\n\r\n var tem = !!_.filter(colecao, function (i) {\r\n return i == item;\r\n }).length;\r\n\r\n if (retornoTrue && retornoFalse) {\r\n return tem ? retornoTrue : retornoFalse;\r\n }\r\n\r\n return tem;\r\n\r\n };\r\n }])\r\n\r\n /**\r\n * Limita uma sequencia de caracteres\r\n * \r\n * @param {string} texto\r\n */\r\n mod.filter('limitar', [function() {\r\n return function ( texto, tamanho, borda ) {\r\n\r\n tamanho = tamanho || 100;\r\n borda = borda || '...';\r\n\r\n if (tamanho && texto.length > tamanho) {\r\n return texto.slice(0, tamanho) + borda;\r\n }\r\n\r\n return texto;\r\n };\r\n }])\r\n\r\n /**\r\n * Limpa um determinado texto de tags html\r\n * [trocar o nome do filtro por um nome mais sugestivo]\r\n * \r\n * @param {string} texto\r\n */\r\n mod.filter('htmlLimpo', ['$filter', function ($filter) {\r\n return function (html, tamanho) {\r\n var texto = html ? String(html).replace(/<[^>]+>/gm, '').replace(/ /gm, ' ') : ' ';\r\n\r\n return $filter('limitar')( texto, tamanho );\r\n };\r\n }\r\n ])\r\n\r\n /**\r\n * Exibe a dimensão do arquivo\r\n * \r\n * @param {object} dimensao\r\n */\r\n mod.filter('dimensaoArquivo', [function () {\r\n return function (bytes, decimals) {\r\n if (!bytes) {\r\n return '';\r\n } else if (bytes == 0) {\r\n return '0 Byte'\r\n };\r\n var k = 1000;\r\n var dm = decimals + 0 || 3;\r\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n var i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return (parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]) || '';\r\n }\r\n }])\r\n\r\n /**\r\n * Busca itens de forma recurso em uma coleção\r\n * de itens ou um objeto segmentado.\r\n * \r\n * @param input (object|date)\r\n */\r\n mod.filter('buscar', ['$filter', function buscarFtr($filter) {\r\n return function (colecao, procudado) {\r\n function fn(colecao, procudado) {\r\n var find = _.find(colecao, procudado);\r\n if (find) return [find];\r\n return _.flatten(_.map(colecao, function (v) {\r\n return typeof v == \"object\" ? fn(v, procudado) : [];\r\n }), true);\r\n }\r\n return fn(colecao, procudado);\r\n };\r\n }])\r\n\r\n mod.filter('toArray', function () {\r\n return function (object) {\r\n return _.values(object)\r\n }\r\n } )\r\n\r\n}\n\n/***/ }),\n/* 324 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export default */\n\r\n\r\nfunction install ( mod ) \r\n{\r\n mod.events = mod.events || []\r\n\r\n mod.config(['$provide', function($provide){\r\n \r\n $provide.decorator('$rootScope', ['$delegate', function($delegate){\r\n var Scope = $delegate.constructor;\r\n var origBroadcast = Scope.prototype.$broadcast;\r\n var origEmit = Scope.prototype.$emit;\r\n\r\n function pushEvent(event){\r\n (mod.events[event] || (mod.events[event] = [])).push(new Date())\r\n }\r\n\r\n Scope.prototype.$broadcast = function(){\r\n pushEvent(arguments[0])\r\n return origBroadcast.apply(this, arguments)\r\n }\r\n\r\n Scope.prototype.$emit = function(){\r\n pushEvent(arguments[0])\r\n return origEmit.apply(this, arguments)\r\n }\r\n\r\n return $delegate\r\n\r\n }])\r\n\r\n }])\r\n}\n\n/***/ }),\n/* 325 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = install;\n\r\n\r\nfunction install ( mod ) \r\n{\r\n mod.directive('expandMenu', function () {\r\n\r\n return {\r\n restrict: 'A',\r\n link: function ($scope, $element) {\r\n // Obtém o menu\r\n var menu = $($element[0])\r\n\r\n // Adciona o evento click nos links\r\n menu.find('a').on('click', function( event ) {\r\n\r\n // Seleciona o menu do contexto\r\n var li = $(event.target).parent()\r\n\r\n if (li.is('.in')) {\r\n\r\n li.removeClass('in')\r\n\r\n $('ul:first', li).slideUp(100)\r\n\r\n } else {\r\n\r\n li.addClass('in')\r\n\r\n $('ul:first', li).slideDown(100)\r\n }\r\n\r\n })\r\n \r\n // Essa trigger é temporaria, deve ser removida\r\n // na versão futura desta aplicação\r\n .trigger('click')\r\n }\r\n }\r\n\r\n })\r\n}\n\n/***/ }),\n/* 326 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = install;\n\r\n\r\nfunction install ( mod, prefix ) \r\n{\r\n prefix = prefix || '';\r\n\r\n mod.directive(_.camelCase(prefix + 'ExibirDurante'), function () {\r\n return {\r\n restrict: 'A',\r\n controller: ['$scope', '$localStorage', function($scope, $localStorage){\r\n\r\n $scope.$storage = $localStorage.$default({})\r\n \r\n }],\r\n link: function($scope, $element, $attrs){\r\n\r\n var id = $attrs.id;\r\n var target = _.camelCase('exibir-'+id);\r\n\r\n if(id) {\r\n\r\n if(!$scope.$storage[target]) {\r\n $scope.$storage[target] = moment().add($attrs.dias | 2, 'days')\r\n } else {\r\n if (moment($scope.$storage[target]).isBefore(new Date())) {\r\n $element.css({ display: 'none' })\r\n } else {\r\n $attrs.$set('title', 'Este aviso será removido ' + moment().to($scope.$storage[target]))\r\n $element.css({ display: 'inline-block' })\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n }\r\n }\r\n })\r\n\r\n mod.directive(_.camelCase(prefix + 'Odometer'), [function () {\r\n return {\r\n restrict: 'A',\r\n scope: { valor: '=' },\r\n link: function ($scope, $el, $attrs) {\r\n var opts, odometer;\r\n\r\n opts = $scope.$eval($attrs.options) || {}\r\n opts.el = $el[0]\r\n odometer = new Odometer(opts);\r\n\r\n $scope.$watch('valor', function (valor) {\r\n odometer.update(valor)\r\n }, true)\r\n\r\n }\r\n }\r\n }])\r\n\r\n mod.directive(_.camelCase(prefix + 'Scroll'), ['Event', function(Event) {\r\n\r\n var cache = {};\r\n\r\n const isChrome = typeof chrome !== 'undefined' && chrome.webstore\r\n\r\n return {\r\n restrict: 'A',\r\n link: function ($scope, $element, $attrs) {\r\n\r\n var key = \"scroll-\" + ($attrs.id || 'position');\r\n\r\n var body = document.body,\r\n html = document.documentElement,\r\n top = 0, scrollTotal = 0, parte = 0,\r\n height = 0;\r\n\r\n Event.on('window.resize', function () {\r\n resize()\r\n\r\n setTimeout(function () {\r\n $scope.$digest()\r\n }, 100)\r\n })\r\n\r\n function resize () {\r\n\r\n height = window.innerHeight;\r\n\r\n $($element).css({\r\n 'height': (height - $element[0].offsetTop - 120 + (parseInt($attrs.offset || 0)) ) + 'px',\r\n 'overflow': isChrome ? 'overlay' : 'auto'\r\n }).ready(function () {\r\n\r\n $($element).stop().animate({\r\n scrollTop: cache[key]\r\n }, 1200, 'swing' );\r\n\r\n });\r\n }\r\n\r\n $($element).scroll(function () {\r\n\r\n top = $($element).scrollTop();\r\n scrollTotal =$element[0].scrollHeight;\r\n scrollTotal = scrollTotal - (scrollTotal * 0.18); // tamanho total de scroll\r\n parte = scrollTotal - ( scrollTotal * 0.10 ); // parte do scroll\r\n\r\n // 6 <- top - posicao atual\r\n // 10 <- scroll total\r\n // 10 - (10 * 0.10) = 9\r\n // 6 > 9\r\n\r\n if (top > parte ) {\r\n Event.emit('scroll:final')\r\n }\r\n\r\n cache[key] = top;\r\n\r\n if (top > 0) {\r\n $element.css({\r\n 'border-top': '4px solid #e8e8e8',\r\n 'border-botton': '1px solid #e8e8e8'\r\n });\r\n } else {\r\n $element.css({\r\n 'border-top': 'none',\r\n 'border-botton': 'none'\r\n });\r\n }\r\n });\r\n \r\n window.addEventListener('resize', _.debounce(function(){\r\n resize()\r\n\r\n $scope.$digest()\r\n }), 100);\r\n\r\n resize()\r\n\r\n }\r\n }\r\n }])\r\n\r\n var isActive = false; \r\n mod.directive(_.camelCase(prefix + 'CapsLock'), function () {\r\n return {\r\n restrict: 'A',\r\n link: function ($scope, $elem, $attrs) {\r\n\r\n var $target = '.' + ($attrs.target || 'icon-caps-lock')\r\n\r\n $(document).bind(\"keydown\", function (event) {\r\n if (event.keyCode === 20 ) { \r\n capsLock(!isActive); \r\n }\r\n });\r\n\r\n $(document).bind(\"keypress\", function (event) {\r\n var code = event.charCode || event.keyCode;\r\n var shift = event.shiftKey;\r\n\r\n if (code > 96 && code < 123) { capsLock(false); }\r\n if (code > 64 && code < 91 && !shift) { capsLock(true); }\r\n });\r\n\r\n function capsLock (visible) {\r\n if (visible) {\r\n $($target).show()\r\n } else {\r\n $($target).hide()\r\n }\r\n\r\n isActive = visible;\r\n }\r\n \r\n }\r\n }\r\n })\r\n\r\n}\r\n\r\n\n\n/***/ }),\n/* 327 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nangular.module('app.services')\r\n\r\n.service('Event', eventoService)\r\n.service('Evento', eventoService); // Atalho\r\n\r\neventoService.$inject = ['$rootScope'];\r\nfunction eventoService($rootScope) {\r\n\r\n /**\r\n * Dispara um evento\r\n */\r\n this.fire = function (/* event, arguments */)\r\n {\r\n $rootScope.$broadcast.apply($rootScope, arguments);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Dispara um evento\r\n */\r\n this.emit = function (/* event, arguments */) {\r\n this.fire.apply(this, arguments)\r\n }\r\n\r\n /**\r\n * Adiciona um ouvite para um determinado evento.\r\n * \r\n * - Adicionando ouvinte globais\r\n * Event.on('meu:evento', function(){})\r\n * \r\n * - Adicionando ouvinte locais\r\n * Event.on('meu:evento', function(){})($scope)\r\n * \r\n * @param {string} event\r\n * @param {function} handler\r\n * @return {function} \r\n */\r\n this.on = function (event, handler)\r\n {\r\n var removeListener = $rootScope.$on(event, handler);\r\n\r\n return function ($scope) {\r\n ($scope || $rootScope).$on('$destroy', function(){\r\n removeListener()\r\n })\r\n };\r\n }\r\n\r\n /**\r\n * Adicioan um ouvinte para ser disparado apenas uma\r\n * vez. Isso irá remover o ouvite após o evento ser \r\n * disparado.\r\n * \r\n * - Adicionando ouvinte globais\r\n * Event.on('meu:evento', function(){})\r\n * \r\n * - Adicionando ouvinte locais\r\n * Event.on('meu:evento', function(){})($scope)\r\n * \r\n * @param {string} event\r\n * @param {function} handler\r\n */\r\n this.once = function(event, handler)\r\n {\r\n var removeListener = $rootScope.$on(event, function(){\r\n\r\n handler.apply(this, arguments)\r\n\r\n removeListener()\r\n })\r\n\r\n return function ($scope) {\r\n ($scope || $rootScope).$on('$destroy', function(){\r\n removeListener()\r\n })\r\n };\r\n }\r\n\r\n}\n\n/***/ }),\n/* 328 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar centralApp = angular.module('app.services');\r\n\r\n// Serviço de notificação\r\ncentralApp.factory('notificacao', notificacaoSrv);\r\n\r\nnotificacaoSrv.$inject = ['$alert', '$notification', '$window'];\r\nfunction notificacaoSrv($alert, $notification, $window) {\r\n\r\n return {\r\n\r\n driver: 'toastr',\r\n\r\n opcoes: {},\r\n\r\n duracao: 5,\r\n\r\n /**\r\n * Exibe mensagens fomatadas na visão de erro. \r\n * As mensagens são disparadas pelo domínio da \r\n * aplicação através de serviços RESTful.\r\n * \r\n * @param object response\r\n */\r\n erroResponse: function (response) {\r\n if (response.status === 500) {\r\n this.com('toastr').erro('Erro', 'Ocorreu um erro, tente novamente');\r\n } else {\r\n _.each(_.get(response, 'data.errors', []),function (error) {\r\n this.erro(error.key, error.value)\r\n }.bind(this))\r\n }\r\n },\r\n\r\n /**\r\n * Fornece um meio para selecionar\r\n * qual drive será responsável por \r\n * dispara a notificação\r\n */\r\n com: function (driver, callback) {\r\n this.driver = driver || this.driver;\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Informa quanto tempo a notificação deve\r\n * ficar ativa\r\n */\r\n durante: function (segundados) {\r\n this.duracao = segundados;\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Notificação de sucesso\r\n */\r\n sucesso: function (titulo, mensagem, opcoes) {\r\n this.notificar({\r\n titulo: titulo, \r\n mensagem: mensagem,\r\n tipo: 'success',\r\n opcoes: opcoes\r\n });\r\n },\r\n\r\n /**\r\n * Notificação de alerta\r\n */\r\n alerta: function (titulo, mensagem, opcoes) {\r\n this.notificar({\r\n titulo: titulo,\r\n mensagem: mensagem,\r\n tipo: 'warning',\r\n opcoes: opcoes\r\n });\r\n },\r\n\r\n /**\r\n * Notificação de alerta\r\n */\r\n aviso: function (titulo, mensagem, opcoes) {\r\n this.notificar({\r\n titulo: titulo,\r\n mensagem: mensagem,\r\n tipo: 'warning',\r\n opcoes: opcoes\r\n });\r\n },\r\n\r\n /**\r\n * Notificação de informação\r\n */\r\n info: function (titulo, mensagem, opcoes) {\r\n this.notificar({\r\n titulo: titulo,\r\n mensagem: mensagem,\r\n tipo: 'info',\r\n opcoes: opcoes\r\n });\r\n },\r\n\r\n /**\r\n * Notificação de erro\r\n */\r\n erro: function (titulo, mensagem, opcoes) {\r\n this.notificar({\r\n titulo: titulo,\r\n mensagem: mensagem,\r\n tipo: 'error',\r\n opcoes: opcoes\r\n });\r\n },\r\n\r\n /**\r\n * Notificação de negado\r\n */\r\n negado: function (titulo, mensagem, opcoes) {\r\n this.erro(titulo, mensagem, opcoes);\r\n },\r\n\r\n /**\r\n * Dispara notificação\r\n * \r\n * Exemplo: Notificacao.notificar({\r\n * titulo: 'Importante',\r\n * mensagem: 'Verifique suas atualizações',\r\n * tipo: 'alerta',\r\n * driver: 'desktop'\r\n * });\r\n */\r\n notificar: function(notificacao){\r\n\r\n if (_.isUndefined(notificacao.mensagem)) {\r\n notificacao.mensagem = notificacao.titulo;\r\n\r\n notificacao.titulo = '';\r\n }\r\n\r\n // Normaliza algumas propriedades\r\n notificacao.tipo = _.get(notificacao, 'tipo', 'warning');\r\n notificacao.driver = _.get(notificacao, 'driver', this.driver);\r\n notificacao.opcoes = _.get(notificacao, 'opcoes', this.opcoes);\r\n\r\n switch (notificacao.tipo ){\r\n case 'info': \r\n notificacao.duracao = 10;\r\n break;\r\n case 'success':\r\n notificacao.duracao = 5;\r\n break;\r\n case 'warning': \r\n notificacao.duracao = 10;\r\n break;\r\n case 'error':\r\n case 'danger':\r\n notificacao.duracao = 15;\r\n break;\r\n default :\r\n notificacao.duracao = 3;\r\n }\r\n\r\n var driver = this.normalizarDriver(notificacao.driver);\r\n\r\n try {\r\n\r\n // Dispara notificação\r\n this[driver](notificacao);\r\n\r\n } catch(e){\r\n\r\n console.error('Houve um erro ao construir o driver de notificação!', e);\r\n\r\n }\r\n\r\n // Reseta driver\r\n this.driver = 'toastr';\r\n\r\n },\r\n\r\n /**\r\n * Dispara notificação\r\n * \r\n * @param string titulo\r\n * @param string mensagem\r\n * @param string driver\r\n */\r\n disparar: function (titulo, mensagem, driver) {\r\n this.notificar({\r\n titulo: titulo,\r\n mensagem: mensagem,\r\n driver: driver\r\n });\r\n },\r\n\r\n /**\r\n * Normaliza o nome do driver para ser criado\r\n * \r\n * @param string driver\r\n */\r\n normalizarDriver: function(driver){\r\n return 'criar' + _.capitalize(driver) + 'Driver';\r\n },\r\n\r\n /**\r\n * Cria o dirver strap de notificação\r\n */\r\n criarStrapDriver: function (notificacao) {\r\n \r\n $alert(_.merge({\r\n title: notificacao.titulo,\r\n type: notificacao.tipo,\r\n content: notificacao.mensagem,\r\n duration: notificacao.duracao,\r\n animation: 'am-fade-and-slide-top',\r\n placement: 'top-right',\r\n show: true\r\n }, notificacao.opcoes));\r\n\r\n },\r\n\r\n /**\r\n * Cria o dirver toastr de notificação\r\n */\r\n criarToastrDriver: function (notificacao) {\r\n\r\n notificacao.opcoes = {\r\n closeButton: true,\r\n debug: false,\r\n newestOnTop: true,\r\n progressBar: true,\r\n positionClass: \"toast-top-center\",\r\n preventDuplicates: true,\r\n showDuration: \"300\",\r\n hideDuration: \"1000\",\r\n extendedTimeOut: \"1000\",\r\n showEasing: \"swing\",\r\n hideEasing: \"linear\",\r\n showMethod: \"fadeIn\",\r\n hideMethod: \"fadeOut\",\r\n timeOut: (notificacao.duracao || 5) * 1000\r\n };\r\n\r\n toastr[notificacao.tipo](\r\n notificacao.mensagem, \r\n notificacao.titulo, \r\n notificacao.opcoes\r\n );\r\n\r\n },\r\n\r\n /**\r\n * Cria o dirver desktop de notificação\r\n */\r\n criarDesktopDriver: function (notificacao) {\r\n\r\n var self = this;\r\n\r\n $notification.requestPermission().then(function (permissao) {\r\n\r\n if (permissao === 'granted') {\r\n $notification(notificacao.titulo, {\r\n body: notificacao.mensagem,\r\n focusWindowOnClick: true,\r\n delay: notificacao.duracao * 1000,\r\n icon: notificacao.imagem || __webpack_require__(133),\r\n tag: _.kebabCase(notificacao.mensagem)\r\n });\r\n } else if (permissao === 'denied') {\r\n self.sucesso(notificacao.titulo, notificacao.mensagem, 'toastr');\r\n }\r\n\r\n })\r\n\r\n }\r\n\r\n }\r\n}\n\n/***/ }),\n/* 329 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nangular.module('app.services')\r\n.service('NotificacaoStream', NotificacaoStream);\r\n\r\nNotificacaoStream.$inject = ['$rootScope', 'ConfigApp', 'Event', '$q'];\r\n\r\nfunction NotificacaoStream ($rootScope, ConfigApp, Event, $q)\r\n{\r\n var connection = $.hubConnection(ConfigApp.UrlBase);\r\n var hubProxy = connection.createHubProxy('notificacaoHub');\r\n var deferred = $q.defer();\r\n\r\n var registrados = [];\r\n\r\n /**\r\n * Adiciona ouvintes para serem disparados quando o \r\n * evento for acionado\r\n * \r\n * @param string evento\r\n * @param function handle\r\n */\r\n this.em = function(evento, manipulador)\r\n {\r\n hubProxy.on(evento, function () {\r\n var args = arguments;\r\n\r\n $rootScope.$apply(function () {\r\n manipulador.apply(this, args);\r\n });\r\n });\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Adiciona ouvintes para serem disparados quando o \r\n * evento for acionado.\r\n * \r\n * @param args argumentos [event, handle]\r\n */\r\n this.ouvir = function(/* argunments */)\r\n {\r\n return this.em.apply(this, arguments);\r\n }\r\n\r\n /**\r\n * Abre um sockete de comunicação\r\n * com um canal especifico.\r\n * \r\n * @param name\r\n */\r\n this.canal = function (nome)\r\n {\r\n if( !registrados[nome] ) {\r\n hubProxy.invoke('JoinGroup', nome).done( function(e){\r\n registrados.push(nome)\r\n });\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Abre um socket de comunicação\r\n * com um usuário especifico.\r\n * \r\n * @param name\r\n */\r\n this.usuario = function( nome )\r\n {\r\n return this.canal(nome);\r\n }\r\n\r\n /**\r\n * Abre um sockete de comunicação com uma lista de\r\n * canais.\r\n * \r\n * @param {array} canais \r\n */\r\n this.canais = function ( canais )\r\n {\r\n var $this = this;\r\n\r\n canais.forEach(function (nome) {\r\n $this.canal (nome)\r\n })\r\n\r\n return $this;\r\n }\r\n\r\n /**\r\n * Conecta a aplicação \r\n */\r\n this.conectar = function ()\r\n {\r\n connection \r\n \r\n .start(function () {\r\n //deferred.resolve(arguments)\r\n })\r\n .done(function () {\r\n deferred.resolve(arguments)\r\n })\r\n .fail( function () {\r\n deferred.reject(arguments)\r\n });\r\n \r\n return deferred.promise;\r\n }\r\n}\r\n\n\n/***/ }),\n/* 330 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nvar centralApp = angular.module('app.services');\r\ncentralApp.factory('segmentosApi', segmentosSrv);\r\nsegmentosSrv.$inject = ['$resource', 'ConfigApp'];\r\n\r\nfunction segmentosSrv($resource, ConfigApp) {\r\n return $resource(ConfigApp.UrlApi + '/v1.0/segmentos',\r\n { }, {\r\n listarSegmentos: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/segmentos/centrais_servico/' + ConfigApp.CentralServicoModuloId\r\n },\r\n lerDadosChamado: {\r\n method: 'GET',\r\n isArray: false,\r\n url: ConfigApp.UrlApi + '/v1.0/segmentos/dados_chamado/grupos_suporte/:grupoDeSuporteId/grupos_suporte_segmentos/:grupoDeSuporteSegmentoId'\r\n },\r\n listarSegmentosPorCanal: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/segmentos/grupos_suporte/:grupoDeSuporteId/canais_atendimento/:canalDeAtendimentoId',\r\n ignoreLoadingBar: true\r\n }\r\n });\r\n};\r\n\n\n/***/ }),\n/* 331 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ })\n],[173]);\n\n\n// WEBPACK FOOTER //\n// static/js/app.d4105ff6fec3c02725cc.js","export default {\r\n get (key) {\r\n try {\r\n return JSON.parse(localStorage.getItem(key))\r\n } catch (e) {}\r\n },\r\n\r\n set (key, value) {\r\n try {\r\n localStorage.setItem(key, JSON.stringify(value))\r\n } catch (e) {}\r\n },\r\n\r\n remove (key) {\r\n try {\r\n localStorage.removeItem(key)\r\n } catch (e) {}\r\n },\r\n\r\n clear () {\r\n try {\r\n localStorage.clear()\r\n } catch (e) {}\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/core/storage.js","export function parseQuery(query) {\r\n var specialValues = {\r\n 'null': null,\r\n 'true': true,\r\n 'false': false\r\n };\r\n if (!query) return {};\r\n if (typeof query !== \"string\")\r\n return query;\r\n \r\n var queryLength = query.length;\r\n if (query.substr(0, 1) === \"{\" && query.substr(-1) === \"}\") {\r\n return JSON.parse(query);\r\n }\r\n\r\n var queryArgs = query.split(/[,\\&]/g);\r\n\r\n var result = {};\r\n\r\n queryArgs.forEach(function (arg) {\r\n var idx = arg.indexOf(\"=\");\r\n if (idx >= 0) {\r\n var name = arg.substr(0, idx);\r\n var value = decodeURIComponent(arg.substr(idx + 1));\r\n if (specialValues.hasOwnProperty(value)) {\r\n value = specialValues[value];\r\n }\r\n if (name.substr(-2) === \"[]\") {\r\n name = decodeURIComponent(name.substr(0, name.length - 2));\r\n if (!Array.isArray(result[name]))\r\n result[name] = [];\r\n result[name].push(value);\r\n } else {\r\n name = decodeURIComponent(name);\r\n result[name] = value;\r\n }\r\n } else {\r\n if (arg.substr(0, 1) === \"-\") {\r\n result[decodeURIComponent(arg.substr(1))] = false;\r\n } else if (arg.substr(0, 1) === \"+\") {\r\n result[decodeURIComponent(arg.substr(1))] = true;\r\n } else {\r\n result[decodeURIComponent(arg)] = true;\r\n }\r\n }\r\n });\r\n return result;\r\n};\r\n\r\nexport function parseString(str) {\r\n try {\r\n if (str[0] === '\"') return JSON.parse(str);\r\n if (str[0] === \"'\" && str.substr(str.length - 1) === \"'\") {\r\n return parseString(str.replace(/\\\\.|\"/g, function (x) {\r\n if (x === '\"') return '\\\\\"';\r\n return x;\r\n }).replace(/^'|'$/g, '\"'));\r\n }\r\n return JSON.parse('\"' + str + '\"');\r\n } catch (e) {\r\n return str;\r\n }\r\n};\r\n\r\nfunction normalizeMap (map) {\r\n return Array.isArray(map) \r\n ? map.map(key => ({ key, val: key })) \r\n : Object.keys(map).map(key => ({key, val: map[key]}))\r\n}\r\n\r\nexport function mapDirective (directive) {\r\n var normalized = normalizeMap(directive)[0]\r\n\r\n return [normalized.key, () => normalized.val ];\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/util.js","module.exports = __webpack_public_path__ + \"static/img/carregando-mensagens.7b20394.gif\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/img/carregando-mensagens.gif\n// module id = 132\n// module chunks = 1","module.exports = __webpack_public_path__ + \"static/img/perfil.76fa900.png\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/img/perfil.png\n// module id = 133\n// module chunks = 1","import * as angular from 'angular';\r\n\r\nangular.module('app.components', [])\r\n\r\n// Components compartilhado\r\nrequire('compartilhado/components/aba')\r\nrequire('compartilhado/components/anexos')\r\nrequire('compartilhado/components/arrastavel')\r\nrequire('compartilhado/components/baixar-arquivo')\r\nrequire('compartilhado/components/bto-alternar')\r\nrequire('compartilhado/components/credencial-usuario')\r\nrequire('compartilhado/components/img-usuario')\r\nrequire('compartilhado/components/ler-arquivo')\r\nrequire('compartilhado/components/painel')\r\nrequire('compartilhado/components/tempo-decorrido')\r\nrequire('compartilhado/components/visualizar-arquivo')\r\nrequire('compartilhado/components/preview-image')\r\nrequire('compartilhado/components/redirecionamentos')\r\nrequire('compartilhado/components/segmento-selecionado')\r\nrequire('compartilhado/components/listas/situacoes')\r\nrequire('compartilhado/components/versao')\r\nrequire('compartilhado/components/chat')\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/index.js","/*------------------------------------------------------\r\n * JQuery\r\n *------------------------------------------------------\r\n * Registra a biblioteca JQuery com uma dependência\r\n * gloabl\r\n */\r\nwindow.$ = require('jquery');\r\nwindow.jQuery = $;\r\nwindow.moment = require('moment');\r\nwindow._ = require('lodash');\r\nwindow.signalr = require('signalr');\r\nwindow.toastr = require('toastr');\r\nwindow.saveAs = require('file-saver').saveAs\r\n\r\nimport logEvents from 'compartilhado/plugins/log-events.plugin';\r\n\r\nimport * as angular from 'angular';\r\n\r\nimport './config/simditor.js';\r\n\r\nimport 'angular-animate';\r\nimport 'angular-cookies';\r\nimport 'angular-drop-image';\r\nimport 'angular-i18n/pt-br';\r\nimport 'angular-notification';\r\nimport 'angular-resource';\r\nimport 'angular-route';\r\nimport 'angular-sanitize';\r\nimport 'angular-strap';\r\nimport 'angular-ui-router';\r\nimport 'angular-ui-sortable';\r\nimport 'angular-paging';\r\nimport 'angular-loading-bar';\r\nimport 'ngstorage';\r\nimport 'ui-select';\r\nimport 'ng-plugin';\r\n\r\n/*------------------------------------------------------\r\n * Registra o modulo app\r\n *------------------------------------------------------\r\n * Armazenamos a instancia da plicação no container\r\n * window para podermos executar testes em tempo de\r\n * execução.\r\n */\r\nangular.module('bootstrap', [\r\n 'ngLocale',\r\n 'ui.router',\r\n 'ngResource',\r\n 'ngCookies',\r\n 'ngRoute',\r\n 'ngStorage',\r\n 'ngSanitize',\r\n 'ngDropImage',\r\n 'angular-loading-bar',\r\n 'angular-simditor',\r\n 'ui.sortable',\r\n 'notification',\r\n 'mgcrea.ngStrap',\r\n 'ui.select',\r\n 'bw.paging'\r\n]);\n\n\n// WEBPACK FOOTER //\n// ./src/core/bootstrap.js","import * as angular from 'angular';\r\n\r\nimport { mapDirective } from '@/core/util'\r\nimport icone from './icone';\r\n\r\nangular.module('app.directives', [])\r\n\r\n.directive( 'icone', icone )\n\n\n// WEBPACK FOOTER //\n// ./src/directives/index.js","import * as angular from 'angular';\r\n\r\nimport './layout';\r\nimport './autenticacao';\r\nimport './abrir-chamado';\r\nimport './detalhe-chamado';\r\nimport './meus-chamados';\r\n\r\nimport ui from 'compartilhado/plugins/ui.plugin'\r\nimport filters from 'compartilhado/plugins/filters.plugin'\r\n\r\nangular.module('app.modules', [\r\n 'layoutMdl',\r\n 'autenticacaoMdl',\r\n 'abrirChamadoMdl',\r\n 'detalheChamadoMdl',\r\n 'meusChamadosMdl'\r\n])\r\n\r\n.use( ui, 'md' )\r\n.use( filters )\n\n\n// WEBPACK FOOTER //\n// ./src/modules/index.js","import * as angular from 'angular';\r\n\r\nangular.module('app.services', []);\r\n\r\nrequire('compartilhado/services/notificacao-stream-service')\r\nrequire('compartilhado/services/notificacao-service')\r\nrequire('compartilhado/services/event-service')\r\nrequire('compartilhado/services/segmentos-api-service')\r\n\r\nrequire('./anexos-api-service')\r\nrequire('./catalogo-servico-api-service')\r\nrequire('./categorizacoes-api-service')\r\nrequire('./chamado-api-service')\r\nrequire('./chat-service')\r\nrequire('./colaboradores-api-service')\r\nrequire('./roteamentos-api-service')\r\nrequire('./sistema-api-service')\n\n\n// WEBPACK FOOTER //\n// ./src/services/index.js","'use strict';\r\n\r\nvar bootstrap = angular.module('bootstrap');\r\n\r\nbootstrap.run(balcaoRun)\r\nbootstrap.config(centralConfig);\r\n\r\ncentralConfig.$inject = [\r\n '$stateProvider', '$urlRouterProvider', '$localStorageProvider', '$httpProvider',\r\n '$sessionStorageProvider', '$locationProvider', 'cfpLoadingBarProvider','ngSimditorProvider',\r\n '$animateProvider'\r\n];\r\n\r\nfunction centralConfig($stateProvider, $urlRouterProvider, $localStorageProvider, $httpProvider,\r\n $sessionStorageProvider, $locationProvider, cfpLoadingBarProvider, ngSimditorProvider, $animateProvider) {\r\n\r\n $animateProvider.classNameFilter(/animate/);\r\n\r\n ngSimditorProvider.setToolbar([\r\n 'title', 'bold', 'italic', 'underline', 'alignments',\r\n 'strikethrough', '|', 'ol', 'ul', 'blockquote', \r\n 'code', 'table', '|', 'link', 'hr', '|', 'indent', \r\n 'outdent', 'markdown']\r\n ).setLocale('pt-BR')\r\n\r\n $urlRouterProvider.otherwise(\"/login\");\r\n\r\n $stateProvider\r\n\r\n .state('erro', {\r\n url: \"/404\",\r\n templateUrl: \"404.html\"\r\n })\r\n\r\n $localStorageProvider.setKeyPrefix('central-');\r\n $sessionStorageProvider.setKeyPrefix('central-');\r\n\r\n cfpLoadingBarProvider.includeSpinner = false;\r\n\r\n // Interceptadores de suporte\r\n $httpProvider.interceptors.push('SuporteIeItp');\r\n\r\n $locationProvider.html5Mode({\r\n enabled: true,\r\n requireBase: true\r\n });\r\n\r\n // Configurações de data\r\n moment.locale('pt-br');\r\n}\r\n\r\nbalcaoRun.$inject = ['$rootScope', 'Usuario', '$state'];\r\nfunction balcaoRun($rootScope, Usuario, $state) {\r\n\r\n $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\r\n\r\n $state.previous = { state: fromState, params: fromParams };\r\n\r\n if (!Usuario.verificarAutorizacao()) {\r\n if (Usuario.estadoMemorizado && (!_.has(fromState.data, 'redirecionarPara') || toState.name != fromState.data.redirecionarPara)) {\r\n Usuario.resetarAutorizacao();\r\n }\r\n\r\n if (_.has(toState.data, 'autorizacao') && _.has(toState.data, 'redirecionarPara')) {\r\n if (_.has(toState.data, 'memorizar') && toState.data.memorizar) {\r\n Usuario.estadoMemorizado = toState.name;\r\n }\r\n\r\n $state.go(toState.data.redirecionarPara);\r\n toastr.error('Acesso não autorizado', 'Autorização');\r\n }\r\n }\r\n });\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/core/config/central-app-config.js","import { merge } from 'lodash';\r\n\r\nimport config from './central-app-env';\r\n\r\n\r\nangular.module('bootstrap').constant('ConfigApp', merge({\r\n UrlApi: \"https://localhost:44341/ccgp/api\",\r\n UrlBase: \"https://localhost:44341/ccgp\",\r\n CentralAppId: 'BA69D4DB-2657-4152-9E30-038B686E3E66',\r\n CentralServicoModuloId: 'F66F079C-5896-4AF2-B7D9-8060D80DDD71',\r\n UrlLogin: '#/login',\r\n UrlCstiApi: 'https://csti.projecao.br/api',\r\n CstiApiId: '02C7115C-E385-406C-8BBE-9015FC5CECF0',\r\n LinkFoto: function( login, tamanho ){\r\n\r\n var dimensao = tamanho || '240x240';\r\n\r\n // https://webmail.projecao.br/ews/exchange.asmx/s/GetUserPhoto?email=usuario.login@projecao.br&size=HR240x240\r\n return 'https://webmail.projecao.br/ews/exchange.asmx/s/GetUserPhoto?email='+ login +'@projecao.br&size=HR' + dimensao\r\n }\r\n}, config[process.env.NODE_ENV]))\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/config/central-constant.js","'use strict';\r\n\r\nangular.module('bootstrap').factory('SuporteIeItp', SuporteIeItp);\r\n\r\nSuporteIeItp.$inject = [];\r\n\r\nfunction SuporteIeItp() {\r\n return {\r\n // Todos os browsers por padrão desabilitam o cache\r\n // em requisições AJAX, exceto o IE, então vamos desabilitar\r\n // para evitar incoveniência nas requisições, isso não\r\n // afetarar o funcionamento dos demais browsers.\r\n request: function (config) {\r\n\r\n config.headers = config.headers || {};\r\n\r\n //config.headers['cache-control'] = 'no-cache';\r\n\r\n return config;\r\n }\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/core/config/central-interceptors.js","\r\nwindow.Simditor = require('simditor');\r\n\r\nrequire('simditor-i18n');\r\nrequire('simditor-alignments');\r\nrequire('simditor-markdown-github');\r\nrequire('angular-simditor');\r\nrequire('compartilhado/extensions/simditor-date-button/simditor-date-button.coffee');\r\n\r\nimport 'simditor/styles/simditor.css';\r\nimport 'simditor-markdown-github/styles/simditor-markdown-github.css';\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/config/simditor.js","import * as util from '@/core/util';\r\n\r\n/**\r\n * Diretiva para icones.\r\n * \r\n * Exemplo:\r\n * \r\n * \r\n */\r\nexport default function icon (){\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n scope: {\r\n css: '@'\r\n },\r\n link: (scope, element, attrs) => {\r\n var elem = $(element[0]);\r\n var i = attrs;\r\n\r\n // Font Awesome\r\n if(i.fa){\r\n elem.addClass(`fa fa-${i.fa}`);\r\n }\r\n\r\n // Spin\r\n if(i.spin || i.spin == ''){\r\n if(i.fa) elem.addClass('fa-spin');\r\n if(i.fp) elem.addClass('fp-spin');\r\n }\r\n\r\n // Size\r\n if(i.size){\r\n if(i.fa) elem.addClass(`fa-${i.size}x`);\r\n if(i.fp) elem.addClass(`fp-${i.size}x`);\r\n }\r\n\r\n // Font Projecao\r\n if(i.fp){\r\n elem.addClass(`fp fp-${i.fp}`);\r\n }\r\n\r\n // Glyphicons\r\n if(i.bo){\r\n elem.addClass(`glyphicon glyphicon-${i.bo} ${i.class}`);\r\n }\r\n\r\n // Rotate icon\r\n if(i.rotate){\r\n elem.css({'transform': `rotate(${i.rotate}deg)`});\r\n }\r\n\r\n // Style\r\n if (i.css) {\r\n \r\n if(!!i.css){\r\n scope.$watch('css', function(css){\r\n elem.css(util.parseQuery(css));\r\n })\r\n }\r\n\r\n elem.css(util.parseQuery(i.css));\r\n }\r\n\r\n },\r\n template: ``\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/directives/icone.js","import '@/core/bootstrap';\nimport '@/core/config';\nimport '@/components';\nimport '@/directives';\nimport '@/services';\nimport '@/modules';\n\nimport 'bootstrap';\n\n/*------------------------------------------------------\n * Registra o modulo app\n *------------------------------------------------------\n * Armazenamos a instancia da plicação no container\n * window para podermos executar testes em tempo de\n * execução.\n */\nwindow.app = angular.module('app', [\n 'bootstrap',\n 'app.components',\n 'app.directives',\n 'app.services',\n 'app.modules'\n]);\n\n/*------------------------------------------------------\n * Inicializa a aplicação\n *------------------------------------------------------\n * Utilizar o bootstrap para inicializar a applicação\n * nos da mais controle sobre o gerenciamento e carregamento\n * de modulos.\n */\nangular.bootstrap(document, ['app'], {\n strictDi: true\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","'use strict';\r\n\r\nvar abrirChamadoMdl = angular.module('abrirChamadoMdl', []);\r\nabrirChamadoMdl.config(abrirChamadoConfig);\r\nabrirChamadoConfig.$inject = ['$stateProvider'];\r\n\r\nfunction abrirChamadoConfig($stateProvider) {\r\n\r\n $stateProvider\r\n\r\n .state('app.abrir-chamado-segmentos', {\r\n url: '/abrir-chamado-segmentos/:grupoDeSuporteId/:grupoDeSuporteSegmentoId',\r\n controller: 'abrirChamadoSegmentosCtrl',\r\n controllerAs: '$ctrl',\r\n template: require('./abrir-chamado-segmentos-template.html'),\r\n data: {\r\n autorizacao: true,\r\n redirecionarPara: 'autenticacao.login'\r\n }\r\n })\r\n .state('app.abrir-chamado', {\r\n url: '/abrir-chamado/grupos-suporte/:grupoDeSuporteId/grupos-suporte-segmentos/:grupoDeSuporteSegmentoId',\r\n controller: 'abrirChamadoCtrl',\r\n controllerAs: '$ctrl',\r\n template: require('./abrir-chamado-template.html'),\r\n data: {\r\n autorizacao: true,\r\n redirecionarPara: 'autenticacao.login'\r\n }\r\n });\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/abrir-chamado/abrir-chamado-config.js","'use strict';\r\n\r\n// Abrir Chamado Controller\r\n\r\nvar abrirChamadoMdl = angular.module('abrirChamadoMdl');\r\nabrirChamadoMdl.controller('abrirChamadoCtrl', abrirChamadoCtrl);\r\n\r\nabrirChamadoCtrl.$inject = [ \r\n '$state',\r\n '$stateParams',\r\n 'Event',\r\n 'notificacao',\r\n 'categorizacoesApi',\r\n 'chamadosApi',\r\n '$sessionStorage'\r\n];\r\n\r\nfunction abrirChamadoCtrl(\r\n $state,\r\n $stateParams,\r\n Event,\r\n notificacao,\r\n categorizacoesApi,\r\n chamadosApi,\r\n $sessionStorage) {\r\n\r\n var $ctrl = this;\r\n\r\n // Objetos e Propriedades\r\n $ctrl.data = new Date();\r\n $ctrl.chamado = {};\r\n $ctrl.segmentoParametros = $stateParams;\r\n $ctrl.abrirChamado = abrirChamado;\r\n $ctrl.colar = colar;\r\n $ctrl.api = null;\r\n $ctrl.unidades = []; \r\n var credencial = $sessionStorage.credencial.data.credencial;\r\n\r\n categorizacoesApi.listarImpactos(function (impactos) {\r\n $ctrl.impactos = impactos;\r\n }, function (erros) {\r\n notificacao.erroResponse(erros);\r\n });\r\n\r\n categorizacoesApi.listarUrgencias(function (urgencias) {\r\n $ctrl.urgencias = urgencias;\r\n }, function (erros) {\r\n notificacao.erroResponse(erros);\r\n });\r\n\r\n /**\r\n * Abre chamado para o usuário.\r\n * \r\n * @param object chamado\r\n */\r\n function abrirChamado(chamado) {\r\n\r\n var formChamado = new FormData();\r\n\r\n formChamado.append('grupoDeSuporteSegmentoId', $stateParams.grupoDeSuporteSegmentoId);\r\n formChamado.append('aberturaAssunto', chamado.assunto);\r\n formChamado.append('impactoSolicitanteId', chamado.impactoSolicitante.impactoId);\r\n formChamado.append('urgenciaSolicitanteId', chamado.urgenciaSolicitante.urgenciaId); \r\n formChamado.append('aberturaUnidade', chamado.aberturaUnidade);\r\n formChamado.append('aberturaMensagem', _.escape(chamado.mensagem.replace(/'/g, '\"')));\r\n\r\n _.each(chamado.anexos, function (anexo) {\r\n formChamado.append('Files[]', anexo, anexo.name);\r\n });\r\n\r\n $ctrl.api = chamadosApi.abrirChamado(formChamado,\r\n function (response) {\r\n\r\n notificacao.sucesso(\r\n ' Ticket de Abertura de Chamado',\r\n 'Chamado registrado com o Ticket Nº. ' + response.ticket);\r\n\r\n $state.go('app.meus-chamados');\r\n },\r\n function (erros) {\r\n \r\n if (erros.data) {\r\n notificacao.erroResponse(erros);\r\n } else {\r\n notificacao.erro('Erro durante o envido do chamado, por gentileza tente novamente.');\r\n }\r\n\r\n }\r\n ).$promise;\r\n\r\n }\r\n chamadosApi.unidades(function (unidades) {\r\n $ctrl.unidades = unidades;\r\n $ctrl.chamado.aberturaUnidade = credencial.registroAd.unidade;\r\n \r\n }, function (erros) {\r\n notificacao.erroResponse(erros);\r\n });\r\n /**\r\n * Ouvinte para o evento colar no formulario\r\n * de abertura de chamado\r\n * \r\n * @param object $event\r\n */\r\n function colar($event) {\r\n \r\n Event.fire('anexo.colar-arquivo', $event );\r\n\r\n }\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/modules/abrir-chamado/abrir-chamado-controller.js","'use strict';\r\n\r\n// Abrir Chamado Opções Controller\r\n\r\nvar abrirChamadoMdl = angular.module('abrirChamadoMdl');\r\nabrirChamadoMdl.controller('abrirChamadoSegmentosCtrl', abrirChamadoSegmentosCtrl);\r\n\r\nabrirChamadoSegmentosCtrl.$inject = [\r\n '$scope',\r\n '$filter',\r\n '$state',\r\n '$stateParams',\r\n '$sessionStorage',\r\n '$localStorage',\r\n 'notificacao',\r\n 'segmentosApi'\r\n];\r\n\r\nfunction abrirChamadoSegmentosCtrl(\r\n $scope,\r\n $filter,\r\n $state,\r\n $stateParams,\r\n $sessionStorage,\r\n $localStorage,\r\n notificacao,\r\n segmentosApi) {\r\n\r\n // Objetos e Propriedades\r\n $scope.segmento = {};\r\n $scope.history = window.history;\r\n $scope.showForward = false;\r\n $scope.segmentos = $sessionStorage.segmentos || []; \r\n $scope.carregarSegmentos = carregarSegmentos;\r\n $scope.acessarSegmento = acessarSegmento;\r\n $scope.alternarTipoLista = alternarTipoLista;\r\n $scope.retornar = $state.previous;\r\n $scope.atualizarSegmentos = atualizarSegmentos; \r\n\r\n $scope.$storage = $localStorage.$default({\r\n tipoListaSegmento: 0\r\n });\r\n\r\n // Caso seja o promeiro acesso a página, iremos\r\n // carregar todos os segumentos disponivel para\r\n // o usuário navegar.\r\n if ($scope.segmentos.length == 0) {\r\n $scope.carregarSegmentos();\r\n }\r\n\r\n\r\n // Aqui vamos verificar se a propriedade grupoDeSuporteId foi\r\n // passada por paramentro, se sim entendemos que um dos itens\r\n // foi selecionado e então procuramos por seus subitens para\r\n // apresentar ao usuário.\r\n if (!_.isEmpty($stateParams.grupoDeSuporteId)) {\r\n\r\n // Vamos omitir os parametros nulos\r\n var params = _.omitBy($stateParams, _.isEmpty);\r\n\r\n // Busca o segmento na coleção de segmentos\r\n $scope.segmento = _.first($filter('buscar')($scope.segmentos, params));\r\n\r\n // Obém os subsegmentos do segmento encontrado\r\n $scope.segmentos = $scope.segmento.segmentos;\r\n\r\n }\r\n\r\n // Chamadas API\r\n\r\n /**\r\n * Carrega todos os grupos de suporte ativos de uma central \r\n * de serviço com seus respectivos segmentos.\r\n */\r\n function carregarSegmentos() {\r\n return segmentosApi.listarSegmentos(function (segmentos) {\r\n $scope.segmentos = segmentos;\r\n $sessionStorage.segmentos = segmentos;\r\n }, function error(errorResponse) {\r\n notificacao.erroResponse(errorResponse);\r\n });\r\n }\r\n \r\n // Fim Chamadas API\r\n\r\n /**\r\n * Roteia o segmento selecionado pelo usuário até \r\n * o destino correto.\r\n * \r\n * @param object segmento\r\n */\r\n function acessarSegmento(segmento) {\r\n\r\n // No primeiro momento iremos verificamos se o segmento tem apenas um segmento\r\n // como filho e se esse segmento tem a propriedade canalDeAtendimentoId. Então\r\n // caso seja satifeito redirecionamos para a tela contendo os segmentos filhos.\r\n // Se não for satisfeito então verificamos se o segmento atual possui a propriedade\r\n // canalDeAtendimentoId, se satisfeito redirenamos para a tela de seguimentos filho\r\n // caso contrário redirecionamos para tela de abertura de chamado.\r\n if (_.isEqual(segmento.segmentos.length, 1) && !_.isNull(_.first(segmento.segmentos).canalDeAtendimentoId)) {\r\n $state.go('app.abrir-chamado', {\r\n grupoDeSuporteId: segmento.grupoDeSuporteId,\r\n grupoDeSuporteSegmentoId: segmento.segmentos[0].grupoDeSuporteSegmentoId\r\n });\r\n } else if (segmento.canalDeAtendimentoId != null) {\r\n $state.go('app.abrir-chamado', {\r\n grupoDeSuporteId: segmento.grupoDeSuporteId,\r\n grupoDeSuporteSegmentoId: segmento.grupoDeSuporteSegmentoId\r\n });\r\n } else {\r\n $state.go('app.abrir-chamado-segmentos', {\r\n grupoDeSuporteId: segmento.grupoDeSuporteId,\r\n grupoDeSuporteSegmentoId: segmento.grupoDeSuporteSegmentoId\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Define o tipo de apresentação dos \r\n * segmentos.\r\n * \r\n * @param string tipo\r\n */\r\n function alternarTipoLista(tipo) {\r\n $scope.$storage.tipoListaSegmento = tipo;\r\n }\r\n\r\n /**\r\n * Atualiza os segmentos\r\n */\r\n function atualizarSegmentos() {\r\n $scope.carregarSegmentos().$promise.then(function () {\r\n notificacao.sucesso('Cartões atualizados!');\r\n });\r\n }\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/modules/abrir-chamado/abrir-chamado-segmentos-controller.js","'use strict';\r\n\r\nvar autenticacaoMdl = angular.module('autenticacaoMdl', []);\r\n\r\nautenticacaoMdl\r\n\r\n/**\r\n * Configurações de rota\r\n */\r\n .config(['$stateProvider', function ($stateProvider) {\r\n\r\n $stateProvider\r\n\r\n .state('autenticacao', {\r\n abstract: true,\r\n template: ''\r\n })\r\n\r\n .state('autenticacao.login', {\r\n url: \"/login\",\r\n controller: 'autenticacaoCtrl',\r\n template: require('./login.html')\r\n });\r\n\r\n\r\n }])\r\n\r\n/**\r\n * Configurações de interceptadores\r\n */\r\n.config(['$httpProvider', function ($httpProvider) {\r\n $httpProvider.interceptors.push('AutenticacaoItp');\r\n}])\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/autenticacao/autenticacao-config.js","'use strict';\r\n\r\nvar auteticacaoMdl = angular.module('autenticacaoMdl');\r\nauteticacaoMdl.controller('autenticacaoCtrl', autenticacaoCtrl);\r\n\r\nautenticacaoCtrl.$inject = ['$scope', '$state', 'Usuario', '$modal'];\r\n\r\nfunction autenticacaoCtrl($scope, $state, Usuario, $modal) {\r\n\r\n $scope.usuario = {};\r\n $scope.anoAtual = new Date();\r\n\r\n //$scope.image = require('@/assets/img/autenticacao/fundo-default.jpg')\r\n\r\n var recuperacaoSenhaId;\r\n $scope.buscarTexto = function(){\r\n Usuario.recuperarSenha().then(function (response) {\r\n recuperacaoSenhaId = response.data.recuperacaoSenhaId;\r\n $scope.modal = $modal({\r\n scope: $scope,\r\n title: response.data.titulo,\r\n content: response.data.mensagem,\r\n show: true,\r\n html: true, \r\n backdrop: false,\r\n template: require('./modal-recuperar-senha.html') \r\n });\r\n }, function () {\r\n });\r\n }\r\n\r\n $scope.fecharModal = function () { \r\n Usuario.recuperarSenhaContabilizar( recuperacaoSenhaId ).then(function (response) {\r\n $scope.modal.hide();\r\n }, function () {\r\n });\r\n }\r\n\r\n $scope.login = function (usuario) {\r\n \r\n Usuario.login(usuario).then(function () {\r\n\r\n Usuario.irPara('app.meus-chamados');\r\n\r\n }, function () {\r\n toastr.error(\"Você não possui permissão de acesso\", 'Autenticação');\r\n });\r\n\r\n }\r\n\r\n};\n\n\n// WEBPACK FOOTER //\n// ./src/modules/autenticacao/autenticacao-controller.js","'use strict';\r\n\r\nvar autenticacaoMdl = angular.module('autenticacaoMdl');\r\nautenticacaoMdl.factory('AutenticacaoItp', autenticacaoItp);\r\nautenticacaoItp.$inject = [\r\n '$cookies',\r\n 'ConfigApp',\r\n '$injector',\r\n '$q'];\r\n\r\nfunction autenticacaoItp(\r\n $cookies,\r\n ConfigApp,\r\n $injector,\r\n $q) {\r\n return {\r\n request: function (config) {\r\n config.headers = config.headers || {};\r\n var token = $cookies.get('api_token');\r\n\r\n if (!(config.url.indexOf(ConfigApp.UrlApi + '/token') === 0) && token) {\r\n config.headers.Authorization = 'Bearer ' + $cookies.get('api_token');\r\n }\r\n\r\n return config;\r\n },\r\n\r\n responseError: function (rejection) {\r\n\r\n if (rejection.status == 401) {\r\n $cookies.remove('api_token');\r\n window.location = ConfigApp.UrlLogin;\r\n }\r\n\r\n if (rejection.status == 500) {\r\n toastr.error('Houve um erro interno, por gentileza informe ao setor responsável.', 'Erro 500');\r\n }\r\n\r\n return $q.reject(rejection);\r\n }\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/modules/autenticacao/autenticacao-interceptor.js","'use strict';\r\n\r\nvar autenticacaoMdl = angular.module('autenticacaoMdl');\r\n\r\nautenticacaoMdl.service('Usuario', usuarioSrv);\r\n\r\nusuarioSrv.$inject = [\r\n '$http',\r\n '$cookies',\r\n 'ConfigApp',\r\n '$timeout',\r\n '$state',\r\n '$sessionStorage',\r\n '$q',\r\n 'NotificacaoStream'\r\n];\r\n\r\nfunction usuarioSrv(\r\n $http,\r\n $cookies,\r\n ConfigApp,\r\n $timeout,\r\n $state,\r\n $sessionStorage,\r\n $q,\r\n NotificacaoStream) {\r\n\r\n this.autorizado = false;\r\n this.estadoMemorizado = null;\r\n this.autenticado = null;\r\n\r\n this.resetarAutorizacao = function () {\r\n this.autorizado = false;\r\n this.estadoMemorizado = null;\r\n }\r\n\r\n this.irPara = function (retirada) {\r\n this.autorizado = true;\r\n var estado = this.estadoMemorizado ? this.estadoMemorizado : retirada;\r\n $state.go(estado);\r\n }\r\n\r\n this.login = function (usuario) {\r\n var self = this;\r\n usuario.grant_type = 'password';\r\n \r\n var req = {\r\n method: 'POST',\r\n url: ConfigApp.UrlApi + '/token?sistemaId=' + ConfigApp.CentralAppId,\r\n headers: {\r\n 'Authorization': undefined,\r\n 'Content-Type': 'application/x-www-form-urlencoded'\r\n },\r\n data: $.param(usuario)\r\n };\r\n\r\n return $http(req).then(function (response) {\r\n $timeout(function () {\r\n toastr.warning('Seu token expirou, por favor autentique novamente.', 'Autenticação');\r\n self.logout();\r\n }, (response.data.expires_in * 3600));\r\n\r\n $cookies.put('api_token', response.data.access_token);\r\n }, function (error) {\r\n return $q.reject(error);\r\n });\r\n }\r\n\r\n this.logout = function () { \r\n this.resetarAutorizacao();\r\n\r\n $sessionStorage.$reset();\r\n $cookies.remove('api_token');\r\n window.location = ConfigApp.UrlLogin;\r\n }\r\n\r\n this.credencial = function () {\r\n var self = this, deferred = $q.defer();\r\n var credencial = $sessionStorage.credencial || this.autenticado;\r\n\r\n if(credencial){\r\n deferred.resolve(credencial); \r\n }\r\n\r\n $http.get(ConfigApp.UrlApi + '/v1.0/seguranca/sistemas/' + ConfigApp.CentralAppId + '/credencial', {}, { ignoreLoadingBar: true }).then(function (credencial) {\r\n $sessionStorage.credencial = credencial;\r\n\r\n this.autenticado = credencial;\r\n\r\n NotificacaoStream.conectar().then(function() {\r\n \r\n angular.module('app').value('hubConnection', credencial.data.canaisDeAtendimento )\r\n\r\n NotificacaoStream\r\n .canais( credencial.data.canaisDeAtendimento )\r\n .usuario( credencial.data.usuario );\r\n })\r\n \r\n\r\n deferred.resolve(credencial);\r\n }.bind(this));\r\n\r\n return deferred.promise;\r\n }\r\n\r\n this.verificarAutorizacao = function(){\r\n\r\n var credencial = $sessionStorage.credencial || true;\r\n\r\n if(credencial){\r\n this.autorizado = true;\r\n }\r\n\r\n return this.autorizado;\r\n }\r\n\r\n this.recuperarSenha = function () {\r\n var self = this, deferred = $q.defer();\r\n \r\n $http.get(ConfigApp.UrlApi + '/v1.0/recuperar_senha', {}, { ignoreLoadingBar: true }).then(function (response) { \r\n deferred.resolve(response);\r\n }.bind(this));\r\n return deferred.promise;\r\n }\r\n \r\n this.recuperarSenhaContabilizar = function (recuperacaoSenhaId) { \r\n var self = this, deferred = $q.defer();\r\n $http.post(ConfigApp.UrlApi + '/v1.0/recuperar_senha/' + recuperacaoSenhaId, {}, { ignoreLoadingBar: true }).then(function (response) {\r\n deferred.resolve(response);\r\n }.bind(this));\r\n return deferred.promise;\r\n }\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/modules/autenticacao/usuario-service.js","'use strict';\r\n\r\nvar balcaoApp = angular.module('detalheChamadoMdl');\r\nbalcaoApp.factory('detalheChamadoApi', detalheChamadoSrv);\r\ndetalheChamadoSrv.$inject = ['$resource', 'ConfigApp'];\r\n\r\nfunction detalheChamadoSrv($resource, ConfigApp) {\r\n return $resource(ConfigApp.UrlApi + '/v1.0/meus_chamados',\r\n { }, {\r\n verificarRespostas: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/chamados/:chamadoId/atendimentos/:chamadoAtendimentoId/respostas'\r\n },\r\n redirecionamentos: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/roteamentos/chamados/:chamadoId',\r\n params: { chamadoId: '@chamadoId' }\r\n }\r\n });\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/detalhe-chamado/detalhe-chamado-api-service.js","'use strict';\r\n\r\nvar detalheChamadoMdl = angular.module('detalheChamadoMdl', []);\r\ndetalheChamadoMdl.config(detalheChamadoConfig);\r\ndetalheChamadoConfig.$inject = ['$stateProvider'];\r\n\r\nfunction detalheChamadoConfig($stateProvider) {\r\n\r\n $stateProvider\r\n\r\n .state('app.detalhe-chamado', {\r\n url: \"/meus-chamados/detalhe/:chamadoId\",\r\n controller: 'detalheChamadoCtrl',\r\n controllerAs: '$ctrl',\r\n template: require(\"./detalhe-chamado-template.html\"),\r\n data: {\r\n autorizacao: true,\r\n redirecionarPara: 'autenticacao.login'\r\n }\r\n });\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/detalhe-chamado/detalhe-chamado-config.js","'use strict';\r\n\r\n// Detalhe meu Chamado Controller\r\n\r\nvar detalheChamadoMdl = angular.module('detalheChamadoMdl');\r\ndetalheChamadoMdl.controller('detalheChamadoCtrl', detalheChamadoCtrl);\r\n\r\ndetalheChamadoCtrl.$inject = [\r\n '$scope',\r\n '$filter',\r\n '$stateParams',\r\n 'notificacao',\r\n 'detalheChamadoApi',\r\n 'chamadosApi',\r\n 'categorizacoesApi',\r\n 'Event'\r\n];\r\n\r\nfunction detalheChamadoCtrl(\r\n $scope,\r\n $filter,\r\n $stateParams,\r\n notificacao,\r\n detalheChamadoApi,\r\n chamadosApi,\r\n categorizacoesApi,\r\n Event) {\r\n\r\n var $ctrl = this;\r\n\r\n $ctrl.buscarRedirecionamento = buscarRedirecionamento;\r\n $ctrl.atualizarChamado = atualizarChamado;\r\n $ctrl.carregar = carregar;\r\n $ctrl.redirecionamentos = [];\r\n $ctrl.dimensaoArquivos = 0;\r\n\r\n carregar();\r\n\r\n Event.on('chamado:atualizar', function(event, payload){\r\n if( payload.chamadoId && payload.chamadoId == $ctrl.infoChamado.chamadoId ){\r\n $ctrl.atualizarChamado();\r\n }\r\n })($scope)\r\n\r\n function carregar()\r\n {\r\n $ctrl.chamado = chamadosApi.detalhesChamado({\r\n chamadoId: $stateParams.chamadoId\r\n }, function (infoChamado) {\r\n\r\n _.map(infoChamado.anexos, function (anexo) {\r\n anexo.ehImagem = /.png|png|.jpg|jpg|jpeg|.jpeg|.gif|gif/g.test(anexo.arquivoExtensao);\r\n });\r\n\r\n $ctrl.dimensaoArquivos = _.sumBy(\r\n infoChamado.anexos, 'arquivoTamanhoEmBytes'\r\n );\r\n\r\n $ctrl.infoChamado = infoChamado;\r\n\r\n $ctrl.buscarRedirecionamento(infoChamado)\r\n\r\n return infoChamado;\r\n\r\n }, function (erros) {\r\n notificacao.erroResponse(erros);\r\n }).$promise;\r\n\r\n }\r\n\r\n function atualizarChamado()\r\n {\r\n $ctrl.carregar();\r\n }\r\n\r\n function buscarRedirecionamento(chamado)\r\n {\r\n detalheChamadoApi.redirecionamentos({\r\n chamadoId: chamado.chamadoId\r\n }, function(redirecionamento){\r\n $ctrl.redirecionamentos = redirecionamento;\r\n }, function(){\r\n $ctrl.redirecionamentos = [];\r\n })\r\n }\r\n \r\n /**\r\n * Ouvinte para o evento colar no formulario\r\n * de abertura de chamado\r\n * \r\n * @param object $event\r\n */\r\n function colar($event) \r\n {\r\n\r\n Event.fire('anexo.colar-arquivo', $event);\r\n\r\n }\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/modules/detalhe-chamado/detalhe-chamado-controller.js","'use strict';\r\n\r\nimport './layout.css';\r\n\r\nvar layoutMdl = angular.module('layoutMdl', []);\r\n\r\nimport menu from 'compartilhado/plugins/menu.plugin'\r\n\r\nlayoutMdl.config(layoutConfig).use(menu);\r\n\r\nlayoutConfig.$inject = ['$stateProvider', '$datepickerProvider'];\r\nfunction layoutConfig($stateProvider, $datepickerProvider) {\r\n $stateProvider\r\n .state('app', {\r\n abstract: true,\r\n template: require('./layout-template.html'),\r\n controller: 'layoutCtrl'\r\n });\r\n\r\n angular.extend($datepickerProvider.defaults, {\r\n dateFormat: 'dd/MM/yyyy',\r\n startWeek: 1\r\n });\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/layout/layout-config.js","'use strict';\r\n\r\nimport storage from '@/core/storage'\r\n\r\nconst MENU_KEY = 'layout:slide-menu'\r\n\r\nconst enabled = storage.get(MENU_KEY)\r\n\r\nvar layoutMdl = angular.module('layoutMdl');\r\n\r\nlayoutMdl.controller('layoutCtrl', layoutCtrl);\r\n\r\nlayoutCtrl.$inject = ['$scope'];\r\nfunction layoutCtrl($scope) {\r\n\r\n $scope.menuLateral = true;\r\n $scope.menu = menu;\r\n\r\n function menu(aberto) {\r\n\r\n storage.set(MENU_KEY, aberto)\r\n\r\n $scope.menuLateral = aberto;\r\n\r\n if (aberto) {\r\n\r\n // Volta o menu para a posição inicial\r\n $(\"#sidebar\").animate({ \"left\": \"0\" }, \"slow\");\r\n\r\n } else {\r\n\r\n // Esconde o menu\r\n $(\"#sidebar\").animate({ \"left\": \"-350px\" }, \"slow\");\r\n\r\n }\r\n }\r\n\r\n $scope.$on('layout.alternar-menu', function (event, situacao) {\r\n $scope.menu(situacao);\r\n });\r\n\r\n $scope.$on('layout.alternar-menu.exibir', function () {\r\n $scope.menu(true);\r\n });\r\n\r\n $scope.$on('layout.alternar-menu.esconder', function () {\r\n $scope.menu(false);\r\n });\r\n\r\n $scope.$broadcast('layout.alternar-menu', enabled == null ? true : enabled )\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/modules/layout/layout-controller.js","'use strict';\r\n\r\nvar layoutMdl = angular.module('layoutMdl');\r\n\r\nlayoutMdl.component('layoutFooter', {\r\n\r\n template: require('./layout-footer-template.html')\r\n\r\n});\r\n\r\nfooterCtrl.$inject = ['$scope', '$rootScope'];\r\nfunction footerCtrl($scope, $rootScope) {\r\n\r\n\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/modules/layout/layout-footer-component.js","'use strict';\r\n\r\nimport storage from '@/core/storage'\r\n\r\nconst MENU_KEY = 'layout:slide-menu'\r\n\r\nconst enabled = storage.get(MENU_KEY)\r\n\r\nvar layoutMdl = angular.module('layoutMdl');\r\n\r\nlayoutMdl.component('layoutHeader', {\r\n\r\n template: require('./layout-head-template.html'),\r\n controller: headCtrl\r\n\r\n});\r\n\r\nheadCtrl.$inject = [\r\n '$scope', \r\n '$rootScope', \r\n 'Usuario', \r\n 'NotificacaoStream', \r\n 'notificacao', \r\n 'ConfigApp',\r\n 'Event'];\r\nfunction headCtrl($scope, $rootScope, Usuario, NotificacaoStream, notificacao, ConfigApp, Event ) {\r\n\r\n $scope.logout = function () {\r\n Usuario.logout();\r\n }\r\n\r\n $scope.menu = enabled == null ? true : enabled;\r\n $scope.menuEscondido = $scope.menu;\r\n\r\n $scope.alternarMenu = function () {\r\n $scope.$emit('layout.alternar-menu', $scope.menuEscondido = !$scope.menuEscondido);\r\n }\r\n\r\n $scope.$on('layout.alternar-menu', function (event, aberto) {\r\n $scope.menu = aberto;\r\n });\r\n\r\n function mensagens ( envelope ){\r\n if(Array.isArray(envelope.messages)){\r\n\r\n envelope.messages.forEach(function(message){\r\n notificacao.notificar({\r\n titulo: message.Key,\r\n mensagem: message.Value,\r\n tipo: message.type,\r\n driver: 'desktop'\r\n })\r\n })\r\n\r\n };\r\n }\r\n\r\n NotificacaoStream.ouvir('chamadoAberto', function( envelope ){\r\n Event.fire('meus-chamados:atualizar');\r\n mensagens(envelope)\r\n })\r\n\r\n NotificacaoStream.ouvir('atendimentoIniciado', function( envelope ){\r\n Event.fire('meus-chamados:atualizar')\r\n .fire('chamado:atualizar', envelope.payload)\r\n mensagens(envelope)\r\n })\r\n\r\n NotificacaoStream.ouvir('respostaEnviada', function( envelope ){\r\n Event.fire('meus-chamados:atualizar')\r\n .fire('chat:atualizar', envelope.payload)\r\n mensagens(envelope)\r\n })\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/modules/layout/layout-head-component.js","'use strict';\r\n\r\nvar layoutMdl = angular.module('layoutMdl');\r\n\r\nlayoutMdl.component('layoutSidebar', {\r\n template: require('./layout-sidebar-template.html')\r\n});\r\n\r\nsidebarCtrl.$inject = ['$scope', '$rootScope']\r\nfunction sidebarCtrl($scope, $rootScope) {\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/modules/layout/layout-sidebar-component.js","'use strict';\r\n\r\nvar balcaoApp = angular.module('meusChamadosMdl');\r\nbalcaoApp.factory('meusChamadosApi', meusChamadosSrv);\r\nmeusChamadosSrv.$inject = ['$resource', 'ConfigApp'];\r\n\r\nfunction meusChamadosSrv($resource, ConfigApp) {\r\n return $resource(ConfigApp.UrlApi + '/v1.0/meus_chamados',\r\n { }, {\r\n listarMeusChamados: {\r\n method: 'GET',\r\n isArray: false,\r\n url: ConfigApp.UrlApi + '/v1.0/meus_chamados'\r\n }\r\n });\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/meus-chamados/meus-chamados-api-service.js","'use strict';\r\n\r\nvar meusChamadosMdl = angular.module('meusChamadosMdl', []);\r\nmeusChamadosMdl.config(meusChamadosConfig).run(['$templateCache', function($templateCache){\r\n $templateCache.put('meus-chamados/_lista-visao-alternativa01.html', require('./_lista-visao-alternativa01.html'))\r\n $templateCache.put('meus-chamados/_lista-visao-default.html', require('./_lista-visao-default.html'))\r\n $templateCache.put('meus-chamados/_paginacao.html', require('./_paginacao.html'))\r\n}]);\r\nmeusChamadosConfig.$inject = ['$stateProvider'];\r\n\r\nfunction meusChamadosConfig($stateProvider) {\r\n\r\n $stateProvider\r\n\r\n .state('app.meus-chamados', {\r\n url: \"/meus-chamados\",\r\n controller: 'meusChamadosCtrl',\r\n controllerAs: '$ctrl',\r\n template: require(\"./meus-chamados-template.html\"),\r\n data: {\r\n autorizacao: true,\r\n redirecionarPara: 'autenticacao.login'\r\n }\r\n });\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/meus-chamados/meus-chamados-config.js","'use strict';\r\n\r\n// Meus Chamados Controller\r\n\r\nvar meusChamadosMdl = angular.module('meusChamadosMdl');\r\nmeusChamadosMdl.controller('meusChamadosCtrl', meusChamadosCtrl);\r\n\r\nmeusChamadosCtrl.$inject = [\r\n '$scope',\r\n '$filter',\r\n '$localStorage',\r\n 'notificacao',\r\n 'categorizacoesApi',\r\n 'meusChamadosApi',\r\n 'Event'\r\n];\r\n\r\nfunction meusChamadosCtrl(\r\n $scope,\r\n $filter,\r\n $localStorage,\r\n notificacao,\r\n categorizacoesApi,\r\n meusChamadosApi,\r\n Event) {\r\n\r\n var $ctrl = this;\r\n\r\n $ctrl.paginaAtual = 1;\r\n \r\n $ctrl.totalRegistrosEncontrados = 0;\r\n $ctrl.limiteMensagem = 130;\r\n\r\n $ctrl.buscarMeusChamados = _.debounce(buscarMeusChamados, 100);\r\n $ctrl.alternarTipoLista = alternarTipoLista;\r\n $ctrl.atualizarPagina = atualizarPagina;\r\n $ctrl.atualizar = atualizar;\r\n $ctrl.buscando = {};\r\n $ctrl.chamados = [];\r\n $ctrl.pesquisa = {};\r\n $ctrl.$storage = $localStorage.$default({\r\n tipoListaChamado: 'lista-visao-default',\r\n maximoRegistrosPorPagina: 5\r\n });\r\n $ctrl.maximoRegistrosPorPagina = $ctrl.$storage.maximoRegistrosPorPagina;\r\n\r\n categorizacoesApi.listarSituacoes(function (situacoes) {\r\n $ctrl.situacoes = situacoes;\r\n }, function (erros) {\r\n notificacao.erroResponse(erros);\r\n });\r\n\r\n categorizacoesApi.listarCanaisDeAtendimento(function (canaisDeAtendimento) {\r\n $ctrl.canaisDeAtendimento = canaisDeAtendimento;\r\n }, function (erros) {\r\n notificacao.erroResponse(erros);\r\n });\r\n\r\n $ctrl.buscarMeusChamados(1);\r\n\r\n Event.on('meus-chamados:atualizar', function(){\r\n $ctrl.buscarMeusChamados($ctrl.paginaAtual);\r\n })($scope)\r\n\r\n /**\r\n * @param int page\r\n */\r\n function buscarMeusChamados(page) {\r\n\r\n var parametros = _.merge(_.clone($ctrl.pesquisa), {\r\n pagina: page,\r\n maximoRegistrosPorPagina: $ctrl.maximoRegistrosPorPagina,\r\n dataInicio: normalizarData($ctrl.pesquisa.dataInicio),\r\n dataFim: normalizarData($ctrl.pesquisa.dataFim)\r\n });\r\n\r\n\r\n return $ctrl.buscando = meusChamadosApi.listarMeusChamados(_.omitBy(parametros, seNulo), function (resposta) {\r\n // Conta os anexo\r\n _.map(resposta.registrosEncontrados, function (registro) {\r\n registro.totalAnexo = _.sumBy(registro.contadorAnexos, 'quantidade');\r\n });\r\n \r\n $ctrl.chamados = resposta.registrosEncontrados;\r\n $ctrl.paginaAtual = resposta.pagina;\r\n $ctrl.totalRegistrosEncontrados = resposta.totalRegistrosEncontrados;\r\n $ctrl.maximoRegistrosPorPagina = resposta.maximoRegistrosPorPagina;\r\n\r\n }, function (erros) {\r\n\r\n $ctrl.chamados = [];\r\n $ctrl.paginaAtual = 1;\r\n $ctrl.totalRegistrosEncontrados = 0;\r\n\r\n notificacao.erroResponse(erros);\r\n }).$promise;\r\n\r\n }\r\n\r\n function atualizarPagina() {\r\n\r\n // Salva a quantidade de registros selecionado no historico\r\n $ctrl.$storage.maximoRegistrosPorPagina = $ctrl.maximoRegistrosPorPagina;\r\n\r\n $ctrl.buscarMeusChamados(1);\r\n }\r\n\r\n\r\n /**\r\n * Verifica se o valor é nulo\r\n */\r\n function seNulo(valor) {\r\n return !valor;\r\n }\r\n\r\n /**\r\n * Normaliza a data\r\n */\r\n function normalizarData(data) {\r\n return _.isDate(data) ? data.toISOString().slice(0, 10) : null;\r\n }\r\n\r\n /**\r\n * Define o tipo de apresentação dos \r\n * segmentos.\r\n * \r\n * @param string tipo\r\n */\r\n function alternarTipoLista() {\r\n\r\n if($ctrl.$storage.tipoListaChamado == 'lista-visao-alternativa01'){\r\n $ctrl.$storage.tipoListaChamado = 'lista-visao-default';\r\n } else {\r\n $ctrl.$storage.tipoListaChamado = 'lista-visao-alternativa01';\r\n }\r\n \r\n }\r\n\r\n /**\r\n * Atualiza a llista de chamados\r\n */\r\n function atualizar() {\r\n\r\n $ctrl.buscarMeusChamados($ctrl.paginaAtual).then(function () {\r\n notificacao.sucesso('Sua lista de chamados foi atualizada.');\r\n }, function (erros) {\r\n notificacao.erroResponse(erros);\r\n });\r\n\r\n };\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/modules/meus-chamados/meus-chamados-controller.js","'use strict';\r\n\r\nvar balcaoApp = angular.module('app.services');\r\nbalcaoApp.factory('anexoApi', anexoSrv);\r\nanexoSrv.$inject = ['$resource', 'ConfigApp'];\r\n\r\nfunction anexoSrv($resource, ConfigApp) {\r\n return $resource(ConfigApp.UrlApi + '/v1.0/anexos',\r\n { }, {\r\n baixarArquivo: {\r\n method: 'GET',\r\n isArray: false,\r\n url: ConfigApp.UrlApi + '/v1.0/anexos/:anexoId/chamados/:chamadoId/download',\r\n responseType: 'arraybuffer',\r\n interceptor: {\r\n response: function (response) {\r\n response.resource.headers = response.headers();\r\n response.resource.data = response.data;\r\n return response.resource;\r\n }\r\n }\r\n }\r\n });\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/anexos-api-service.js","'use strict';\r\n\r\nangular.module('app.services')\r\n.factory('catalogoServicoApi', catalogoServicoApi);\r\n\r\ncatalogoServicoApi.$inject = ['$resource', 'ConfigApp'];\r\n\r\nfunction catalogoServicoApi($resource, ConfigApp) {\r\n return $resource(ConfigApp.UrlApi + '/v1.0/catalogos_servicos',\r\n {}, {\r\n listarCategoriasAtendimento: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/catalogos_servicos/canais_atendimentos/:canalDeAtendimentoId/categorias_atendimentos',\r\n ignoreLoadingBar: true\r\n },\r\n listarCatalogosServico: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v2.0/catalogos_servicos/canais_atendimentos/:canalDeAtendimentoId/categorias_atendimentos/:categoriaDeAtendimentoId',\r\n ignoreLoadingBar: true\r\n }\r\n });\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/catalogo-servico-api-service.js","'use strict';\r\n\r\nvar centralApp = angular.module('app.services');\r\ncentralApp.factory('categorizacoesApi', categorizacoesSrv);\r\ncategorizacoesSrv.$inject = ['$resource', 'ConfigApp'];\r\n\r\nfunction categorizacoesSrv($resource, ConfigApp) {\r\n return $resource(ConfigApp.UrlApi + '/v1.0/categorizacoes',\r\n { }, {\r\n listarImpactos: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/categorizacoes/impactos',\r\n ignoreLoadingBar: true,\r\n cache: true\r\n },\r\n listarUrgencias: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/categorizacoes/urgencias',\r\n ignoreLoadingBar: true,\r\n cache: true\r\n },\r\n listarSituacoes: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/categorizacoes/situacoes',\r\n ignoreLoadingBar: true,\r\n cache: true\r\n },\r\n listarSituacoesEncerramento: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/categorizacoes/situacoes_encerramento',\r\n ignoreLoadingBar: true,\r\n cache: true\r\n },\r\n listarCanaisDeAtendimento: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/categorizacoes/centrais_servico/' + ConfigApp.CentralServicoModuloId + '/canais_atendimento',\r\n ignoreLoadingBar: true,\r\n cache: true\r\n }\r\n });\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/categorizacoes-api-service.js","'use strict';\r\n\r\nangular.module('app.services').factory('chamadosApi', chamadosApi);\r\n\r\nchamadosApi.$inject = ['$resource', 'ConfigApp'];\r\n\r\nfunction chamadosApi($resource, ConfigApp) {\r\n return $resource(ConfigApp.UrlApi + '/v1.0/chamados',\r\n {}, {\r\n abrirChamado: {\r\n method: 'POST',\r\n url: ConfigApp.UrlApi + '/v1.0/chamados',\r\n headers: { 'Content-Type': undefined, enctype: 'multipart/form-data' }\r\n },\r\n detalhesChamado: {\r\n method: 'GET',\r\n isArray: false,\r\n url: ConfigApp.UrlApi + '/v1.0/chamados/:chamadoId/por_usuario'\r\n },\r\n unidades: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/unidades',\r\n ignoreLoadingBar: true,\r\n cache: true\r\n },\r\n responderAoAtendente: {\r\n method: 'POST',\r\n url: ConfigApp.UrlApi + '/v1.0/chamados/:chamadoId/chat_atendimento/mensagem_ao_atendente',\r\n params: { chamadoId: '@chamadoId' },\r\n headers: { 'Content-Type': undefined, enctype: 'multipart/form-data' }\r\n }\r\n });\r\n};\n\n\n// WEBPACK FOOTER //\n// ./src/services/chamado-api-service.js","'use strict';\r\n\r\nangular.module('app.services')\r\n\r\n.service('Chat', chatService)\r\n\r\nchatService.$inject = ['$resource', 'ConfigApp']\r\n\r\nfunction chatService($resource, ConfigApp)\r\n{ \r\n return {\r\n mensagens : function(){\r\n return $resource(ConfigApp.UrlApi + '/v1.0/chamados/:chamadoId/chat_atendimento/mensagens?sistemaOrigemId=' + ConfigApp.CentralAppId,\r\n { chamadoId: '@chamadoId' }, {\r\n get: {\r\n method: 'GET',\r\n isArray: true\r\n }\r\n });\r\n },\r\n resposta: function( params ){\r\n return $resource(\r\n ConfigApp.UrlApi + '/v1.0/chamados/:chamadoId/chat_atendimento/mensagens?origemParticipante=:origemParticipante', \r\n { chamadoId: '@chamadoId', origemParticipante: '@origemParticipante' }, {\r\n enviar: {\r\n method: 'POST',\r\n headers: { 'Content-Type': undefined, enctype: 'multipart/form-data' },\r\n params: params\r\n }\r\n });\r\n }\r\n }\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/services/chat-service.js","'use strict';\r\n\r\nangular.module('app.services')\r\n.factory('colaboradoresApi', colaboradoresApi);\r\n\r\ncolaboradoresApi.$inject = ['$resource', 'ConfigApp'];\r\n\r\nfunction colaboradoresApi($resource, ConfigApp) {\r\n return $resource(ConfigApp.UrlApi + '/v1.0/colaboradores',\r\n { }, {\r\n atendentesInicio: {\r\n method: 'GET',\r\n params: { canalDeAtendimentoId: '@canalDeAtendimentoId' },\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/colaboradores/atendentes_inicio'\r\n },\r\n atendentesFim: {\r\n method: 'GET',\r\n params: { canalDeAtendimentoId: '@canalDeAtendimentoId' },\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/colaboradores/atendentes_fim'\r\n }\r\n });\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/colaboradores-api-service.js","'use strict';\r\n\r\nangular.module('app.services')\r\n.factory('roteamentoChamadoApi', roteamentoChamadoApi);\r\n\r\nroteamentoChamadoApi.$inject = ['$resource', 'ConfigApp'];\r\n\r\nfunction roteamentoChamadoApi($resource, ConfigApp) {\r\n return $resource(ConfigApp.UrlApi + '/v1.0/roteamentos',\r\n {}, {\r\n redirecionarPara: {\r\n method: 'POST',\r\n url: ConfigApp.UrlApi + '/v1.0/roteamentos/redirecionar/chamados/:chamadoId'\r\n },\r\n listarEnderecos: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/roteamentos/enderecos'\r\n },\r\n listarMotivos: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/roteamentos/motivos',\r\n cache: true\r\n }\r\n });\r\n};\n\n\n// WEBPACK FOOTER //\n// ./src/services/roteamentos-api-service.js","'use strict';\r\n\r\nangular.module('app.services')\r\n\r\n.factory('sistemaApi', sistemaApiFactory);\r\nsistemaApiFactory.$inject = ['$resource', '$sessionStorage', '$q', 'ConfigApp'];\r\n\r\nfunction sistemaApiFactory($resource, $sessionStorage, $q, ConfigApp) {\r\n return {\r\n versao: function (params) {\r\n\r\n var defer = $q.defer();\r\n var versao = $sessionStorage.versao;\r\n\r\n // Verifica existe dados em cache\r\n if (versao) {\r\n defer.resolve(versao);\r\n return defer.promise;\r\n } else {\r\n // Busca dados na api\r\n return $resource(\r\n ConfigApp.UrlApi + '/v1.0/csti/sistemas/' + ConfigApp.CentralAppId + '/info', \r\n {},{ ignoreLoadingBar: true }\r\n ).get(params).$promise.then(function (response) {\r\n $sessionStorage.versao = response.data;\r\n\r\n return $sessionStorage.versao;\r\n });\r\n }\r\n }\r\n };\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/sistema-api-service.js","\r\nclass DateButton extends Simditor.Button\r\n\r\n name: 'date'\r\n\r\n icon: 'none fa fa-clock-o'\r\n\r\n htmlTag: 'span'\r\n\r\n needFocus: false\r\n\r\n _status: ->\r\n\r\n command: ->\r\n $rootBlock = @editor.selection.rootNodes().first()\r\n $nextBlock = $rootBlock.next()\r\n\r\n if $nextBlock.length > 0\r\n @editor.selection.save()\r\n else\r\n $newBlock = $('

').append @editor.util.phBr\r\n\r\n $span = $('').text(@_getDate()).insertAfter $rootBlock\r\n\r\n if $newBlock\r\n $newBlock.insertAfter $span\r\n @editor.selection.setRangeAtStartOf $newBlock\r\n else\r\n @editor.selection.restore()\r\n\r\n @editor.trigger 'valuechanged'\r\n\r\n _getDate: ->\r\n now = new Date()\r\n day = now.getDate()\r\n month = now.getMonth() + 1\r\n year = now.getFullYear()\r\n\r\n parse = (n) -> if n > 9 then n else \"0#{n}\"\r\n\r\n fulldate = [parse(day), parse(month), year].join '/'\r\n\r\n time = now.toString().match(/\\d\\d:\\d\\d:\\d\\d/)[0]\r\n\r\n \"#{fulldate} #{time} \"\r\n\r\nSimditor.Toolbar.addButton DateButton\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ../Projecao.ContactCenter.WebApp.Compartilhado/extensions/simditor-date-button/simditor-date-button.coffee","module.exports = \"

{{ segmentos.length ? (segmento.nome || 'Selecione um fornecedor de serviço') : 'Segmentos' }}

{{segmento.nome}}
Abrir

{{segmento.nome}}

Nenhum cartão foi adicionado até o momento

\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/abrir-chamado/abrir-chamado-segmentos-template.html\n// module id = 262\n// module chunks = 1","module.exports = \"

Abrir Chamado

{{ anexo.name }} {{ anexo.size | dimensaoArquivo }}
Total: {{ $ctrl.dimensao | dimensaoArquivo }}

Nenhum arquivo anexado

\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/abrir-chamado/abrir-chamado-template.html\n// module id = 263\n// module chunks = 1","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/autenticacao/login.html\n// module id = 264\n// module chunks = 1","module.exports = \"\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/autenticacao/modal-recuperar-senha.html\n// module id = 265\n// module chunks = 1","module.exports = \"

Chamado: {{ ::$ctrl.infoChamado.ticket }} Abrir Novo Chamado

{{ ::$ctrl.infoChamado.aberturaAssunto | uppercase }}
{{ $ctrl.infoChamado.chamadoSituacao.nome }} {{ $ctrl.infoChamado.categoriaDeServico.nome }}


Aguarde, estamos buscando os dados do Chamado...



Chamado não iniciado

Aguarde a priorização pelo canal de atendimento com base na análise do seu chamado.

{{ ::anexo.arquivoNome | limitar : 20 }} {{ ::anexo.arquivoTamanhoEmBytes | dimensaoArquivo }}
Total: {{ $ctrl.dimensaoArquivos | dimensaoArquivo }}

Nenhum arquivo anexado


Aguarde, estamos buscando os anexos...

\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/detalhe-chamado/detalhe-chamado-template.html\n// module id = 266\n// module chunks = 1","module.exports = \"
Núcleo de Desenvolvimento de Sistemas - Diretoria de Tecnologia da Informação
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/layout/layout-footer-template.html\n// module id = 267\n// module chunks = 1","module.exports = \"\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/layout/layout-head-template.html\n// module id = 268\n// module chunks = 1","module.exports = \"
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/layout/layout-sidebar-template.html\n// module id = 269\n// module chunks = 1","module.exports = \"
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/layout/layout-template.html\n// module id = 270\n// module chunks = 1","module.exports = \"

Impacto {{ chamado.impacto.nome }} Urgência {{ chamado.urgencia.nome }} Prioridade {{ chamado.prioridade.nome }} Prazo de atendimento {{ chamado.prioridade.prazo ? chamado.tempoSolucao + ' hora(s)' : 'Planejado' }}
Aguarde a priorização pelo canal de atendimento com base na análise do seu chamado.

{{ ::chamado.ticket }} - {{ ::chamado.aberturaAssunto | htmlLimpo: 60 }} ({{ ::chamado.totalAnexo }})

{{ ::chamado.aberturaMensagem | htmlLimpo: $ctrl.limiteMensagem }}

{{ ::chamado.categoriaDeServico.nome }} {{ ::chamado.grupoDeSuporteSegmento.canalDeAtendimento.sigla }} {{ ::chamado.grupoDeSuporteSegmento.nome }}

{{ chamado.chamadoSituacao.nome }} {{ chamado.aberturaData | date: 'dd/MM/yyyy HH:mm:ss' }}
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/meus-chamados/_lista-visao-alternativa01.html\n// module id = 271\n// module chunks = 1","module.exports = \"
{{ ::chamado.ticket }}
Impacto {{ chamado.impacto.nome }} Urgência {{ chamado.urgencia.nome }} Prioridade {{ chamado.prioridade.nome }} Prazo de atendimento {{ chamado.prioridade.prazo ? chamado.tempoSolucao + ' hora(s)' : 'Planejado' }}
Aguarde a priorização pelo canal de atendimento com base na análise do seu chamado.

{{ ::chamado.aberturaAssunto | htmlLimpo: 40 }} ({{ ::chamado.totalAnexo }})

{{ ::chamado.aberturaMensagem | htmlLimpo: 380 }}

{{ ::chamado.categoriaDeServico.nome }} {{ ::chamado.grupoDeSuporteSegmento.canalDeAtendimento.sigla }} {{ ::chamado.grupoDeSuporteSegmento.nome }}

{{ chamado.aberturaData | tempoDecorrido }} {{ chamado.chamadoSituacao.nome }}
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/meus-chamados/_lista-visao-default.html\n// module id = 272\n// module chunks = 1","module.exports = \"
{{ $ctrl.totalRegistrosEncontrados }} Registro(s)
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/meus-chamados/_paginacao.html\n// module id = 273\n// module chunks = 1","module.exports = \"

Abertos ({{ $ctrl.totalRegistrosEncontrados }}) Abrir chamado

Até

Aguarde um momento, estamos buscando os chamados...


Não encontramos nenhum chamado até o momento.


\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/meus-chamados/meus-chamados-template.html\n// module id = 274\n// module chunks = 1","module.exports = \"
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/anexos/anexos-template.html\n// module id = 275\n// module chunks = 1","module.exports = \"
{{ ::$ctrl.credencial.nome }}



O chat ainda não foi iniciado

{{ ::mensagem.colaborador.nome }} {{ ::mensagem.data | tempoDecorrido }} atrás
{{ ::mensagem.situacao.nome }}

\\\"\\\"
Aguarde um momento, estamos buscando as mensagens...

\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/chat/atendente/atendente.html\n// module id = 276\n// module chunks = 1","module.exports = \"
{{ ::$ctrl.credencial.nome }}
{{ ::mensagem.colaborador.nome }} {{ ::mensagem.data | tempoDecorrido }} atrás
{{ ::mensagem.situacao.nome }}



Não há mensagens para exibir

\\\"\\\"
Aguarde um momento, estamos buscando as mensagens...

\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/chat/solicitante/solicitante.html\n// module id = 277\n// module chunks = 1","module.exports = \"
Foto
{{ $ctrl.credencial.nome || 'Nome não informado' }}
{{ $ctrl.credencial.registroAd.cargo }}

Os seus dados são buscados no AD Corporativo, caso os mesmos estejam desatualizados, por gentileza, solicite a correção clicando aqui.

Usuário:
{{ $ctrl.credencial.usuario || 'Usuário não informado' }}
Telefones:
{{ $ctrl.credencial.telefone || 'O telefone não foi informado' }}
E-mail corporativo:
{{ $ctrl.credencial.emailCorporativo || 'O e-mail corporativo não foi criado' }}
E-mail pessoal:
{{ $ctrl.credencial.emailPessoal || 'O e-mail pessoal não foi informado' }}
Departamento:
{{ $ctrl.credencial.registroAd.departamento || 'O departamento não foi informado' }}
Empresa:
{{ $ctrl.credencial.registroAd.empresa || 'A empresa não foi informada' }}
Unidade:
{{ $ctrl.credencial.registroAd.unidade || 'A unidade não foi informada' }}


Buscando dados, aguarde... Buscando dados, aguarde...

\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/credencial-usuario/credencial-usuario-template.html\n// module id = 278\n// module chunks = 1","module.exports = \"
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/listas/situacoes/situacoes.html\n// module id = 279\n// module chunks = 1","module.exports = \"
{{ $ctrl.titulo }} {{ $ctrl.subtitulo }}
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/painel/painel-component-template.html\n// module id = 280\n// module chunks = 1","module.exports = \"
De {{ redirecionamento.canalDe.sigla }}
Para {{ redirecionamento.canalPara.sigla }} {{ redirecionamento.data | tempoDecorrido }} atrás

{{ redirecionamento.motivo.nome || 'Último redirecionamento' }}

\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/redirecionamentos/redirecionamentos.html\n// module id = 281\n// module chunks = 1","module.exports = \"
Grupo de Suporte:
{{ ::$ctrl.exibir.segmento.grupoDeSuporte.nome }}

Canal de Atendimento:
{{ ::$ctrl.exibir.segmento.canalDeAtendimento.nome }}

Serviço Solicitado:
{{ ::$ctrl.exibir.segmento.grupoDeSuporteSegmento.nome }}


Buscando dados, aguarde... Buscando dados, aguarde...

\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/segmento-selecionado/segmento.html\n// module id = 282\n// module chunks = 1","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/visualizar-arquivo/visualizar-arquivo-template.html\n// module id = 283\n// module chunks = 1","var map = {\n\t\"./af\": 17,\n\t\"./af.js\": 17,\n\t\"./ar\": 24,\n\t\"./ar-dz\": 18,\n\t\"./ar-dz.js\": 18,\n\t\"./ar-kw\": 19,\n\t\"./ar-kw.js\": 19,\n\t\"./ar-ly\": 20,\n\t\"./ar-ly.js\": 20,\n\t\"./ar-ma\": 21,\n\t\"./ar-ma.js\": 21,\n\t\"./ar-sa\": 22,\n\t\"./ar-sa.js\": 22,\n\t\"./ar-tn\": 23,\n\t\"./ar-tn.js\": 23,\n\t\"./ar.js\": 24,\n\t\"./az\": 25,\n\t\"./az.js\": 25,\n\t\"./be\": 26,\n\t\"./be.js\": 26,\n\t\"./bg\": 27,\n\t\"./bg.js\": 27,\n\t\"./bn\": 28,\n\t\"./bn.js\": 28,\n\t\"./bo\": 29,\n\t\"./bo.js\": 29,\n\t\"./br\": 30,\n\t\"./br.js\": 30,\n\t\"./bs\": 31,\n\t\"./bs.js\": 31,\n\t\"./ca\": 32,\n\t\"./ca.js\": 32,\n\t\"./cs\": 33,\n\t\"./cs.js\": 33,\n\t\"./cv\": 34,\n\t\"./cv.js\": 34,\n\t\"./cy\": 35,\n\t\"./cy.js\": 35,\n\t\"./da\": 36,\n\t\"./da.js\": 36,\n\t\"./de\": 39,\n\t\"./de-at\": 37,\n\t\"./de-at.js\": 37,\n\t\"./de-ch\": 38,\n\t\"./de-ch.js\": 38,\n\t\"./de.js\": 39,\n\t\"./dv\": 40,\n\t\"./dv.js\": 40,\n\t\"./el\": 41,\n\t\"./el.js\": 41,\n\t\"./en-au\": 42,\n\t\"./en-au.js\": 42,\n\t\"./en-ca\": 43,\n\t\"./en-ca.js\": 43,\n\t\"./en-gb\": 44,\n\t\"./en-gb.js\": 44,\n\t\"./en-ie\": 45,\n\t\"./en-ie.js\": 45,\n\t\"./en-nz\": 46,\n\t\"./en-nz.js\": 46,\n\t\"./eo\": 47,\n\t\"./eo.js\": 47,\n\t\"./es\": 49,\n\t\"./es-do\": 48,\n\t\"./es-do.js\": 48,\n\t\"./es.js\": 49,\n\t\"./et\": 50,\n\t\"./et.js\": 50,\n\t\"./eu\": 51,\n\t\"./eu.js\": 51,\n\t\"./fa\": 52,\n\t\"./fa.js\": 52,\n\t\"./fi\": 53,\n\t\"./fi.js\": 53,\n\t\"./fo\": 54,\n\t\"./fo.js\": 54,\n\t\"./fr\": 57,\n\t\"./fr-ca\": 55,\n\t\"./fr-ca.js\": 55,\n\t\"./fr-ch\": 56,\n\t\"./fr-ch.js\": 56,\n\t\"./fr.js\": 57,\n\t\"./fy\": 58,\n\t\"./fy.js\": 58,\n\t\"./gd\": 59,\n\t\"./gd.js\": 59,\n\t\"./gl\": 60,\n\t\"./gl.js\": 60,\n\t\"./gom-latn\": 61,\n\t\"./gom-latn.js\": 61,\n\t\"./he\": 62,\n\t\"./he.js\": 62,\n\t\"./hi\": 63,\n\t\"./hi.js\": 63,\n\t\"./hr\": 64,\n\t\"./hr.js\": 64,\n\t\"./hu\": 65,\n\t\"./hu.js\": 65,\n\t\"./hy-am\": 66,\n\t\"./hy-am.js\": 66,\n\t\"./id\": 67,\n\t\"./id.js\": 67,\n\t\"./is\": 68,\n\t\"./is.js\": 68,\n\t\"./it\": 69,\n\t\"./it.js\": 69,\n\t\"./ja\": 70,\n\t\"./ja.js\": 70,\n\t\"./jv\": 71,\n\t\"./jv.js\": 71,\n\t\"./ka\": 72,\n\t\"./ka.js\": 72,\n\t\"./kk\": 73,\n\t\"./kk.js\": 73,\n\t\"./km\": 74,\n\t\"./km.js\": 74,\n\t\"./kn\": 75,\n\t\"./kn.js\": 75,\n\t\"./ko\": 76,\n\t\"./ko.js\": 76,\n\t\"./ky\": 77,\n\t\"./ky.js\": 77,\n\t\"./lb\": 78,\n\t\"./lb.js\": 78,\n\t\"./lo\": 79,\n\t\"./lo.js\": 79,\n\t\"./lt\": 80,\n\t\"./lt.js\": 80,\n\t\"./lv\": 81,\n\t\"./lv.js\": 81,\n\t\"./me\": 82,\n\t\"./me.js\": 82,\n\t\"./mi\": 83,\n\t\"./mi.js\": 83,\n\t\"./mk\": 84,\n\t\"./mk.js\": 84,\n\t\"./ml\": 85,\n\t\"./ml.js\": 85,\n\t\"./mr\": 86,\n\t\"./mr.js\": 86,\n\t\"./ms\": 88,\n\t\"./ms-my\": 87,\n\t\"./ms-my.js\": 87,\n\t\"./ms.js\": 88,\n\t\"./my\": 89,\n\t\"./my.js\": 89,\n\t\"./nb\": 90,\n\t\"./nb.js\": 90,\n\t\"./ne\": 91,\n\t\"./ne.js\": 91,\n\t\"./nl\": 93,\n\t\"./nl-be\": 92,\n\t\"./nl-be.js\": 92,\n\t\"./nl.js\": 93,\n\t\"./nn\": 94,\n\t\"./nn.js\": 94,\n\t\"./pa-in\": 95,\n\t\"./pa-in.js\": 95,\n\t\"./pl\": 96,\n\t\"./pl.js\": 96,\n\t\"./pt\": 98,\n\t\"./pt-br\": 97,\n\t\"./pt-br.js\": 97,\n\t\"./pt.js\": 98,\n\t\"./ro\": 99,\n\t\"./ro.js\": 99,\n\t\"./ru\": 100,\n\t\"./ru.js\": 100,\n\t\"./sd\": 101,\n\t\"./sd.js\": 101,\n\t\"./se\": 102,\n\t\"./se.js\": 102,\n\t\"./si\": 103,\n\t\"./si.js\": 103,\n\t\"./sk\": 104,\n\t\"./sk.js\": 104,\n\t\"./sl\": 105,\n\t\"./sl.js\": 105,\n\t\"./sq\": 106,\n\t\"./sq.js\": 106,\n\t\"./sr\": 108,\n\t\"./sr-cyrl\": 107,\n\t\"./sr-cyrl.js\": 107,\n\t\"./sr.js\": 108,\n\t\"./ss\": 109,\n\t\"./ss.js\": 109,\n\t\"./sv\": 110,\n\t\"./sv.js\": 110,\n\t\"./sw\": 111,\n\t\"./sw.js\": 111,\n\t\"./ta\": 112,\n\t\"./ta.js\": 112,\n\t\"./te\": 113,\n\t\"./te.js\": 113,\n\t\"./tet\": 114,\n\t\"./tet.js\": 114,\n\t\"./th\": 115,\n\t\"./th.js\": 115,\n\t\"./tl-ph\": 116,\n\t\"./tl-ph.js\": 116,\n\t\"./tlh\": 117,\n\t\"./tlh.js\": 117,\n\t\"./tr\": 118,\n\t\"./tr.js\": 118,\n\t\"./tzl\": 119,\n\t\"./tzl.js\": 119,\n\t\"./tzm\": 121,\n\t\"./tzm-latn\": 120,\n\t\"./tzm-latn.js\": 120,\n\t\"./tzm.js\": 121,\n\t\"./uk\": 122,\n\t\"./uk.js\": 122,\n\t\"./ur\": 123,\n\t\"./ur.js\": 123,\n\t\"./uz\": 125,\n\t\"./uz-latn\": 124,\n\t\"./uz-latn.js\": 124,\n\t\"./uz.js\": 125,\n\t\"./vi\": 126,\n\t\"./vi.js\": 126,\n\t\"./x-pseudo\": 127,\n\t\"./x-pseudo.js\": 127,\n\t\"./yo\": 128,\n\t\"./yo.js\": 128,\n\t\"./zh-cn\": 129,\n\t\"./zh-cn.js\": 129,\n\t\"./zh-hk\": 130,\n\t\"./zh-hk.js\": 130,\n\t\"./zh-tw\": 131,\n\t\"./zh-tw.js\": 131\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 285;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale ^\\.\\/.*$\n// module id = 285\n// module chunks = 1","module.exports = {\n\t\"production\": {\n\t\t\"UrlApi\": \"https://app.projecao.br/ccgp/api\",\n\t\t\"UrlBase\": \"https://app.projecao.br/ccgp\"\n\t},\n\t\"development\": {\n\t\t\"UrlApi\": \"https://localhost:44341/ccgp/api\",\n\t\t\"UrlBase\": \"https://localhost:44341/ccgp\"\n\t},\n\t\"homologation\": {\n\t\t\"UrlApi\": \"https://app.projecao.br/ccgp_homologacao/api\",\n\t\t\"UrlBase\": \"https://app.projecao.br/ccgp_homologacao\"\n\t},\n\t\"training\": {\n\t\t\"UrlApi\": \"https://app.projecao.br/ccgp_treinamento/api\",\n\t\t\"UrlBase\": \"https://app.projecao.br/ccgp_treinamento\"\n\t}\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/core/config/central-app-env.json\n// module id = 303\n// module chunks = 1","/**\r\n * @ngDoc Component\r\n * @name ng.component:aba\r\n *\r\n * @description\r\n *\r\n * O componete nos permite o uso de abas\r\n * de forma simples e pratica.\r\n *\r\n * @example\r\n *\r\n * \r\n * \r\n * // corpo A\r\n * \r\n * \r\n * // corpo B\r\n * \r\n * \r\n *\r\n * @element E\r\n * @require lodash\r\n *\r\n */\r\n'use strict';\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.component('abas', {\r\n transclude: true,\r\n bindings: {\r\n selecionada: '=?'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: AbasController,\r\n template: [\r\n '
',\r\n '',\r\n '
',\r\n '
'\r\n ].join('')\r\n })\r\n .component('aba', {\r\n transclude: true,\r\n require: {\r\n abas: '^abas'\r\n },\r\n bindings: {\r\n titulo: '@',\r\n icone: '@?',\r\n class: '@?'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: function () {\r\n this.$onInit = function () {\r\n this.abas.adicionar(this);\r\n };\r\n },\r\n template: [\r\n '
',\r\n '
'\r\n ].join('')\r\n });\r\n\r\nAbasController.$inject = ['Event'];\r\nfunction AbasController(Event) {\r\n\r\n var $ctrl = this;\r\n\r\n $ctrl.abas = [];\r\n\r\n // Adicionar aba\r\n $ctrl.adicionar = function (aba) {\r\n if ($ctrl.abas.length == 0) {\r\n aba.selecionado = true;\r\n }\r\n $ctrl.abas.push(aba);\r\n\r\n Event.on('aba:' + aba.titulo, function () {\r\n $ctrl.selecionar(aba)\r\n })\r\n };\r\n\r\n // Seleciona aba\r\n $ctrl.selecionar = function (aba) {\r\n _.map($ctrl.abas, function (aba) {\r\n aba.selecionado = false;\r\n });\r\n\r\n $ctrl.selecionada = aba.titulo\r\n\r\n aba.selecionado = true;\r\n };\r\n\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/aba/index.js\n// module id = 304\n// module chunks = 1","'use strict';\r\n\r\nimport './anexos.css';\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.component('anexos', {\r\n bindings: {\r\n arquivos: '=',\r\n dimensao: '=?',\r\n excluido: '&?'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: anexosCtrl,\r\n template: require('./anexos-template.html')\r\n});\r\n\r\ncentralApp.component('arquivo', {\r\n require: {\r\n anexos: '^?anexos'\r\n },\r\n bindings: {\r\n arquivo: '<',\r\n excluir: '&'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: arquivoAnexoCtrl,\r\n template: [\r\n '',\r\n '{{ ::$ctrl.arquivo.name | htmlLimpo: 30 }} ',\r\n 'x',\r\n ''\r\n ].join('')\r\n});\r\n\r\nanexosCtrl.$inject = ['$scope', '$timeout', 'Event'];\r\nfunction anexosCtrl($scope, $timeout, Event)\r\n{\r\n var $ctrl = this;\r\n\r\n $ctrl.arquivo = null;\r\n\r\n $ctrl.colarArquivo = colarArquivo;\r\n $ctrl.adicionarTransferido = adicionarTransferido;\r\n $ctrl.adicionarAnexo = adicionarAnexo;\r\n $ctrl.ehImagem = ehImagem;\r\n\r\n // Começamos verificando se o navegador suporta o \r\n // objeto Clipboard. Se não, precisamos criar um \r\n // elemento contenteditable que captura todos os \r\n // dados colados\r\n if (false /*!window.Clipboard */) {\r\n var pasteCatcher = document.createElement(\"div\");\r\n \r\n // Firefox permite que imagens sejam coladas em \r\n // elementos contenteditable\r\n pasteCatcher.setAttribute(\"contenteditable\", \"\");\r\n \r\n // Podemos esconder o elemento e anexá-lo ao body\r\n pasteCatcher.style.opacity = 0;\r\n document.body.appendChild(pasteCatcher);\r\n \r\n // Nós certifique-se que está sempre no foco\r\n pasteCatcher.focus();\r\n document.addEventListener(\"click\", function() { \r\n pasteCatcher.focus(); \r\n });\r\n\r\n // Adicinoa o outvinte de eventos colar\r\n window.addEventListener(\"paste\", $ctrl.colarArquivo);\r\n } \r\n\r\n\r\n /**\r\n * Executado após o componetes estar pronto\r\n * para renderização.\r\n */\r\n $ctrl.$onInit = function(){\r\n $ctrl.dimensao = $ctrl.dimensao || 0;\r\n $ctrl.arquivos = $ctrl.arquivos || [];\r\n }\r\n\r\n /**\r\n * Calcula a dimensao totao dos arquivos\r\n * adicionado como anexo.\r\n */\r\n $scope.calcularDimensaoArquivo = function () {\r\n $ctrl.dimensao = _.sumBy($ctrl.arquivos, 'size');\r\n };\r\n\r\n // Calcula dimensão total dos arquivos\r\n $scope.calcularDimensaoArquivo();\r\n\r\n /**\r\n * Exclui arquivo da lista de anexos\r\n * \r\n * @param object arquivo\r\n */\r\n $ctrl.excluirArquivo = function (arquivo) {\r\n \r\n var index = $ctrl.arquivos.indexOf(arquivo);\r\n $ctrl.arquivos.splice(index, 1);\r\n\r\n if ($ctrl.excluido) {\r\n $ctrl.excluido({\r\n arquivo: arquivo\r\n });\r\n }\r\n\r\n };\r\n\r\n // Vamos observar mudanças no arquivo para \r\n // adiciona-los a lista\r\n $scope.$watch('$ctrl.arquivo', function (arquivos) {\r\n\r\n if (arquivos) {\r\n if (arquivos.length > 1) {\r\n _.each(arquivos, function (arquivo) {\r\n $ctrl.adicionarAnexo(arquivo);\r\n })\r\n } else {\r\n $ctrl.adicionarAnexo(_.first(arquivos));\r\n }\r\n }\r\n\r\n $scope.calcularDimensaoArquivo();\r\n });\r\n\r\n /**\r\n * Adiciona o arquivo a lista de anexos\r\n * \r\n * @param File arquivo\r\n */\r\n function adicionarAnexo(arquivo) {\r\n arquivo.ehImagem = $ctrl.ehImagem(arquivo.type);\r\n\r\n $ctrl.arquivos.push(arquivo);\r\n }\r\n\r\n /**\r\n * Permite a adição de arquivos no campo anexo.\r\n * Mas para está função funcionar é necessário o \r\n * uso do evento paste.\r\n * \r\n * @param object event\r\n * @param handler callback\r\n */\r\n function colarArquivo(event, callback) {\r\n\r\n var items = (\r\n _.get(event, 'clipboardData', null) || \r\n _.get(event, 'originalEvent.clipboardData', {})\r\n ).items || [];\r\n\r\n var files = [].slice.call(items)\r\n\r\n files.forEach(function (file) {\r\n if($ctrl.ehImagem(file.type)) {\r\n $ctrl.adicionarTransferido(\r\n file.getAsFile(), callback\r\n );\r\n }\r\n })\r\n\r\n }\r\n\r\n function ehImagem (tipo) {\r\n return /png|jpg|jpeg|gif/g.test(tipo);\r\n }\r\n\r\n /**\r\n * Adiciona na lista de anexos o arquivo \r\n * obtido da área de transferência.\r\n * \r\n * @param Blob arquivo\r\n * @param handler callback\r\n */\r\n function adicionarTransferido(arquivo, callback) {\r\n\r\n if (arquivo) {\r\n\r\n // O arquivo obtido da área de transf~encia\r\n // não tem nome, então vamos criar um alternativo.\r\n var nomeArquivo = [\r\n 'imagem-capturada-',\r\n moment().format('DDMMYYYYHHmmss'),\r\n _.last(arquivo.type.split('/'))\r\n ].join('.');\r\n\r\n // Criamos o arquivo\r\n var arquivoTransferido = new File([arquivo], nomeArquivo, { type: arquivo.type, lastModified: moment() });\r\n\r\n // Adicionamos o arquivo da área de transferência\r\n // na lista de arquivos em anexo.\r\n $ctrl.adicionarAnexo(arquivoTransferido);\r\n\r\n $scope.calcularDimensaoArquivo();\r\n\r\n // Executamos uma função de callback\r\n (callback || _.noop)(arquivoTransferido);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Este ouvinte nos possibilita ter um recurso adicional que\r\n * permir o usuário enviar arquivos para o campo de anexo\r\n * de qualquer lugar da página com o envento paste do angular.\r\n * \r\n * @param object event\r\n * @param object originalEvent\r\n */\r\n Event.on('anexo.colar-arquivo', function (event, originalEvent, handle) {\r\n \r\n if (originalEvent) {\r\n\r\n $ctrl.colarArquivo(originalEvent, function (arquivo) {\r\n\r\n $timeout(function () {\r\n ( handle || _.noop )(arquivo);\r\n \r\n $scope.$apply();\r\n }, 100);\r\n\r\n });\r\n }\r\n\r\n });\r\n}\r\n\r\narquivoAnexoCtrl.$inject = ['$scope'];\r\n\r\n/**\r\n * Exclui o arquivo da lista\r\n */\r\nfunction arquivoAnexoCtrl($scope)\r\n{\r\n var $ctrl = this;\r\n\r\n $ctrl.excluirArquivo = function () {\r\n $ctrl.excluir($ctrl.arquivo);\r\n }\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/anexos/index.js\n// module id = 305\n// module chunks = 1","/**\r\n * Move um elemento sobre a tela\r\n *\r\n * Como usar:\r\n * 1) Adicione o attibuto arrastar no elemente que deseja mover.\r\n *
Meu elemento arrastável
\r\n *\r\n * 2) Adicione o styale com a propriedade cursor igual move para\r\n * definir o ponto responsável por arrastar o elemento.\r\n *\r\n *
\r\n *

Clique aqui para arrastar

\r\n *

Meu elemento arrastável

\r\n *
\r\n */\r\n\r\n'use strict';\r\n\r\nvar balcaoApp = angular.module('app.components');\r\n\r\nbalcaoApp.directive('arrastavel', arrastarDirective);\r\n\r\narrastarDirective.$inject = ['$document'];\r\nfunction arrastarDirective($document) {\r\n\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element, attr) {\r\n var startX = 0, startY = 0, x = 0, y = 0;\r\n\r\n element.css({\r\n position: 'relative',\r\n backgroundColor: '#fff'\r\n });\r\n\r\n element.on('dblclick', function (event) {\r\n if (mover(event)) {\r\n event.preventDefault();\r\n startX = 0; startY = 0; x = 0; y = 0;\r\n element.css({\r\n top: y + 'px',\r\n left: x + 'px'\r\n });\r\n }\r\n });\r\n\r\n element.on('mousedown', function (event) {\r\n\r\n if (mover(event)) {\r\n startX = event.pageX - x;\r\n startY = event.pageY - y;\r\n $document.on('mousemove', mousemove);\r\n $document.on('mouseup', mouseup);\r\n }\r\n\r\n return;\r\n\r\n });\r\n\r\n function mousemove(event) {\r\n y = event.pageY - startY;\r\n x = event.pageX - startX;\r\n\r\n element.css({\r\n top: y + 'px',\r\n left: x + 'px',\r\n }).addClass('effect6');\r\n }\r\n\r\n function mouseup() {\r\n $document.off('mousemove', mousemove);\r\n $document.off('mouseup', mouseup);\r\n }\r\n\r\n function mover(event) {\r\n return (event.target.style.cursor == 'move');\r\n }\r\n }\r\n };\r\n\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/arrastavel/index.js\n// module id = 306\n// module chunks = 1","'use strict';\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.directive('baixarArquivo', function () {\r\n\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n // objeto contendo chamadoId e anexoId\r\n arquivo: '=baixarArquivo'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: baixarAnexoCtrl,\r\n link: function ($scope, $element, $attr) {\r\n\r\n $element.bind('click', function (e) {\r\n e.preventDefault();\r\n\r\n $scope.baixar();\r\n });\r\n\r\n }\r\n }\r\n\r\n});\r\n\r\nbaixarAnexoCtrl.$inject = ['$scope', 'notificacao', 'anexoApi'];\r\n\r\nfunction baixarAnexoCtrl($scope, notificacao, anexoApi)\r\n{\r\n $scope.baixar = function () {\r\n $scope.arquivo.baixando = true;\r\n anexoApi.baixarArquivo( $scope.arquivo , function (resposta) {\r\n saveAs(new File([resposta.data], $scope.arquivo.arquivoNome, {\r\n type: resposta.headers['content-type']\r\n }));\r\n $scope.arquivo.baixando = false;\r\n }, function(error) {\r\n notificacao.erro('Houve um erro ao baixar o arquivo');\r\n $scope.arquivo.baixando = false;\r\n });\r\n\r\n }\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/baixar-arquivo/index.js\n// module id = 307\n// module chunks = 1","/**\r\n * Componente para alternar opcao\r\n * \r\n * Exemplo: \r\n * \r\n */\r\n\r\n\r\n'use strict';\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\n\r\ncentralApp.component('btoAlternar', {\r\n controllerAs: '$ctrl',\r\n bindings: {\r\n alvo: '=',\r\n cache: '=?',\r\n manipulador: '&?'\r\n },\r\n transclude: true,\r\n controller: btoAlternarCtrl,\r\n template: [\r\n '',\r\n ' ',\r\n '',\r\n ''\r\n ].join('')\r\n});\r\n\r\nbtoAlternarCtrl.$inject = ['$localStorage'];\r\nfunction btoAlternarCtrl($localStorage) {\r\n var $ctrl = this;\r\n\r\n $ctrl.alternar = function () {\r\n\r\n $ctrl.alvo = !$ctrl.alvo;\r\n\r\n ($ctrl.manipulador || _.noop)({\r\n alvo: $ctrl.alvo\r\n });\r\n\r\n }\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/bto-alternar/index.js\n// module id = 308\n// module chunks = 1","angular.module('app.components').component('chatAtendente', {\r\n bindings: {\r\n chamado: '=',\r\n origem: '=',\r\n total: '=?',\r\n permitirResposta: '=',\r\n respondido: '&?'\r\n },\r\n controller: discussaoCtrl,\r\n template: require('./atendente.html')\r\n});\r\n\r\ndiscussaoCtrl.$inject = ['$scope', 'Chat', 'notificacao', 'Event', 'Usuario', 'categorizacoesApi']\r\n\r\nfunction discussaoCtrl ($scope, Chat, notificacao, Event, Usuario, categorizacoesApi) \r\n{\r\n var $ctrl = this;\r\n\r\n $ctrl.mensagens = []; \r\n $ctrl.resposta = { anexos: [] };\r\n $ctrl.buscarMensagens = buscarMensagens;\r\n $ctrl.responder = responder;\r\n $ctrl.colar = colar;\r\n $ctrl.chamadoId = null;\r\n $ctrl.credencial = {};\r\n $ctrl.situacoes = [];\r\n $ctrl.buscandoMensagens = true;\r\n $ctrl.atualizar = true;\r\n $ctrl.exibirForm = false;\r\n\r\n Event.on('chat:atualizar', function(event, payload){\r\n if( payload.chamadoId && $ctrl.chamadoId == $ctrl.chamadoId && $ctrl.atualizar){\r\n $ctrl.buscarMensagens( $ctrl.chamadoId ).then(function(){\r\n $ctrl.respondido()\r\n });\r\n }\r\n\r\n $ctrl.atualizar = true;\r\n })($scope)\r\n\r\n /**\r\n * Obtém a credencial do usuário logado\r\n */\r\n Usuario.credencial().then(function ( perfil ) {\r\n $ctrl.credencial = perfil.data.credencial;\r\n });\r\n\r\n $ctrl.$onInit = function()\r\n {\r\n $ctrl.chamado.then(function(chamado){\r\n $ctrl.chamadoId = chamado.chamadoId;\r\n\r\n // Indica que as mensagens estão sendo buscadas\r\n $ctrl.buscandoMensagens = true;\r\n\r\n $ctrl.buscarMensagens( chamado.chamadoId )\r\n });\r\n\r\n $ctrl.origem = $ctrl.origem || 0;\r\n\r\n // Indica a quantidade de mensagens\r\n $ctrl.total = $ctrl.total || 0;\r\n }\r\n\r\n /**\r\n * Busca as mensagens do chamado\r\n * \r\n * @param {string} chamadoId \r\n */\r\n function buscarMensagens ( chamadoId )\r\n {\r\n return $ctrl.mensagensRequest = Chat.mensagens().get({ chamadoId: chamadoId }, function( mensagens ){\r\n $ctrl.mensagens = mensagens;\r\n\r\n $ctrl.total = mensagens.length;\r\n\r\n $ctrl.buscandoMensagens = false;\r\n\r\n return true;\r\n }, function () {\r\n $ctrl.mensagens = [];\r\n\r\n $ctrl.buscandoMensagens = false;\r\n }).$promise;\r\n }\r\n\r\n /**\r\n * Envia uma respsota\r\n * \r\n * @param {object} resposta \r\n */\r\n function responder( resposta )\r\n {\r\n $ctrl.atualizar = false;\r\n\r\n var formResposta = new FormData();\r\n\r\n formResposta.append( 'mensagem', _.escape(resposta.mensagem.replace(/'/g, '\"')) );\r\n\r\n _.each( resposta.anexos , function (anexo) {\r\n formResposta.append('Files[]', anexo, anexo.nome);\r\n });\r\n\r\n Chat.resposta( { chamadoId: $ctrl.chamadoId, origemParticipante: $ctrl.origem } ).enviar( \r\n formResposta, \r\n function( mensagem ){\r\n $ctrl.mensagens.unshift( mensagem );\r\n\r\n $ctrl.resposta = { anexos: [] };\r\n\r\n $ctrl.respondido({\r\n mensagem: mensagem\r\n });\r\n\r\n $ctrl.exibirForm = false;\r\n }, \r\n function(error){\r\n 'error'\r\n }\r\n )\r\n } \r\n\r\n \r\n /**\r\n * Ouvinte para o evento colar no formulario\r\n * de abertura de chamado\r\n * \r\n * @param object $event\r\n */\r\n function colar($event) {\r\n Event.fire( 'anexo.colar-arquivo', $event );\r\n }\r\n\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/chat/atendente/index.js\n// module id = 309\n// module chunks = 1","\r\nangular.module('app.components').component('chatSolicitante', {\r\n bindings: {\r\n chamado: '=',\r\n origem: '=',\r\n total: '=?',\r\n permitirResposta: '=',\r\n respondido: '&?'\r\n },\r\n controller: discussaoCtrl,\r\n template: require('./solicitante.html')\r\n});\r\n\r\ndiscussaoCtrl.$inject = ['$scope', 'Chat', 'notificacao', 'Event', 'Usuario', 'categorizacoesApi']\r\n\r\nfunction discussaoCtrl ($scope, Chat, notificacao, Event, Usuario, categorizacoesApi) \r\n{\r\n var $ctrl = this;\r\n\r\n $ctrl.mensagens = []; \r\n $ctrl.resposta = { anexos: [] };\r\n $ctrl.buscarMensagens = buscarMensagens;\r\n $ctrl.responder = responder;\r\n $ctrl.colar = colar;\r\n $ctrl.chamadoId = null;\r\n $ctrl.credencial = {};\r\n $ctrl.situacoes = [];\r\n $ctrl.buscandoMensagens = true;\r\n $ctrl.atualizar = true;\r\n $ctrl.exibirForm = false;\r\n\r\n Event.on('chat:atualizar', function(event, payload){\r\n if( payload.chamadoId && $ctrl.chamadoId == $ctrl.chamadoId && $ctrl.atualizar){\r\n $ctrl.buscarMensagens( $ctrl.chamadoId ).then(function(){\r\n $ctrl.respondido()\r\n });\r\n }\r\n $ctrl.atualizar = true;\r\n })($scope)\r\n\r\n /**\r\n * Obtém a credencial do usuário logado\r\n */\r\n Usuario.credencial().then(function ( perfil ) {\r\n $ctrl.credencial = perfil.data.credencial;\r\n });\r\n\r\n $ctrl.$onInit = function()\r\n {\r\n $ctrl.chamado.then(function(chamado){\r\n $ctrl.chamadoId = chamado.chamadoId;\r\n\r\n // Indica que as mensagens estão sendo buscadas\r\n $ctrl.buscandoMensagens = true;\r\n\r\n $ctrl.buscarMensagens( chamado.chamadoId )\r\n });\r\n\r\n $ctrl.origem = $ctrl.origem || 0;\r\n\r\n // Indica a quantidade de mensagens\r\n $ctrl.total = $ctrl.total || 0;\r\n }\r\n\r\n /**\r\n * Busca as mensagens do chamado\r\n * \r\n * @param {string} chamadoId \r\n */\r\n function buscarMensagens ( chamadoId )\r\n {\r\n return $ctrl.mensagensRequest = Chat.mensagens().get({ chamadoId: chamadoId }, function( mensagens ){\r\n $ctrl.mensagens = mensagens;\r\n\r\n $ctrl.total = mensagens.length;\r\n\r\n $ctrl.buscandoMensagens = false;\r\n\r\n return true;\r\n }, function(){\r\n $ctrl.mensagens = [];\r\n\r\n $ctrl.buscandoMensagens = false;\r\n }).$promise;\r\n }\r\n\r\n\r\n /**\r\n * Envia uma respsota\r\n * \r\n * @param {object} resposta \r\n */\r\n function responder( resposta )\r\n {\r\n $ctrl.atualizar = false;\r\n\r\n var formResposta = new FormData();\r\n\r\n formResposta.append( 'mensagem', _.escape(resposta.mensagem.replace(/'/g, '\"')) );\r\n\r\n _.each( resposta.anexos , function (anexo) {\r\n formResposta.append('Files[]', anexo, anexo.nome);\r\n });\r\n\r\n if(resposta.situacao && resposta.situacao.chamadoSituacaoId ){\r\n formResposta.append(\r\n 'chamadoSituacaoRespostaSolicitanteId', \r\n resposta.situacao.chamadoSituacaoId\r\n )\r\n }\r\n\r\n Chat.resposta( { chamadoId: $ctrl.chamadoId, origemParticipante: $ctrl.origem } ).enviar( \r\n formResposta, \r\n function( mensagem ){\r\n $ctrl.mensagens.unshift( mensagem );\r\n\r\n $ctrl.resposta = { anexos: [] };\r\n\r\n $ctrl.respondido({\r\n mensagem: mensagem\r\n })\r\n\r\n $ctrl.exibirForm = false;\r\n }, \r\n function(error){\r\n console.log(error)\r\n }\r\n )\r\n } \r\n\r\n \r\n /**\r\n * Ouvinte para o evento colar no formulario\r\n * de abertura de chamado\r\n * \r\n * @param object $event\r\n */\r\n function colar($event) {\r\n Event.fire( 'anexo.colar-arquivo', $event );\r\n }\r\n\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/chat/solicitante/index.js\n// module id = 311\n// module chunks = 1","import './credencial-usuario.css';\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.component('credencialUsuario', {\r\n bindings: {\r\n credencial: '='\r\n },\r\n controller: credencialUsuarioCtrl,\r\n template: require('./credencial-usuario-template.html')\r\n});\r\n\r\ncredencialUsuarioCtrl.$inject = ['$sessionStorage', 'Usuario', 'ConfigApp'];\r\nfunction credencialUsuarioCtrl($sessionStorage, Usuario, ConfigApp) \r\n{\r\n var $ctrl = this;\r\n\r\n Usuario.credencial().then(function ( perfil ) {\r\n var credencial = perfil.data.credencial;\r\n\r\n credencial.foto = ConfigApp.LinkFoto( credencial.usuario )\r\n\r\n $ctrl.credencial = credencial;\r\n });\r\n\r\n $ctrl.$onInit = function(){\r\n $ctrl.credencial = $ctrl.credencial || {};\r\n }\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/credencial-usuario/index.js\n// module id = 312\n// module chunks = 1","import './img-usuario-directive.css';\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.directive('imgUsuario', imgUsuarioFunc);\r\n\r\nimgUsuarioFunc.$inject = ['ConfigApp']\r\n\r\nfunction imgUsuarioFunc(ConfigApp)\r\n{\r\n var semImg = {};\r\n\r\n return {\r\n link: function($scope, $element, $attr)\r\n {\r\n var name = 'src',\r\n //foto = ConfigApp.LinkFoto,\r\n padrao = require('assets/img/perfil.png');\r\n\r\n $element.on('error', function(){\r\n semImg[$attr.imgUsuario] = true\r\n\r\n $element.prop(name, $attr['img-padrao'] || padrao);\r\n })\r\n\r\n $attr.$observe('imgUsuario', function(usuario)\r\n {\r\n //deixar sempre a foto padrão\r\n // if (semImg[$attr.imgUsuario]) {\r\n // $attr.$set(name, $attr['img-padrao'] || padrao)\r\n\r\n // return\r\n // }\r\n \r\n $attr.$set(name, $attr['img-padrao'] || padrao)\r\n // $attr.$set(name, foto( usuario ))\r\n })\r\n\r\n }\r\n }\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/img-usuario/index.js\n// module id = 313\n// module chunks = 1","'use strict';\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.directive('lerArquivo', lerArquivoFunc);\r\n\r\n\r\nlerArquivoFunc.$inject = ['$q'];\r\n\r\nfunction lerArquivoFunc($q) {\r\n var slice = Array.prototype.slice;\r\n\r\n return {\r\n restrict: 'A',\r\n require: '?ngModel',\r\n scope: {\r\n carregado: '=?' \r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n if (!ngModel) return;\r\n\r\n ngModel.$render = function () { };\r\n\r\n element.bind('change', function (e) {\r\n var element = e.target;\r\n\r\n $q.all(_.map(element.files, readFile))\r\n .then(function (values) {\r\n if (element.multiple) ngModel.$setViewValue(values);\r\n else ngModel.$setViewValue(values.length ? values[0] : null);\r\n });\r\n\r\n function readFile(file) {\r\n\r\n if (!scope.carregado) return file;\r\n\r\n var deferred = $q.defer();\r\n\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n deferred.resolve(e.target.result);\r\n };\r\n reader.onerror = function (e) {\r\n deferred.reject(e);\r\n };\r\n reader.readAsDataURL(file);\r\n\r\n return deferred.promise;\r\n }\r\n\r\n });\r\n\r\n }\r\n };\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/ler-arquivo/index.js\n// module id = 314\n// module chunks = 1","'use strict';\r\n\r\nangular.module('app.components').directive('listaSituacoes', listaSituacoesFunc);\r\n\r\nlistaSituacoesFunc.$inject = ['ConfigApp']\r\n\r\nfunction listaSituacoesFunc(ConfigApp) {\r\n return {\r\n require: '^ngModel',\r\n restrict: 'E',\r\n scope: {},\r\n controllerAs: '$ctrl',\r\n controller: ['$scope', 'categorizacoesApi',\r\n function ($scope, categorizacoesApi) {\r\n\r\n var $ctrl = this;\r\n\r\n $ctrl.situacoes = [];\r\n $ctrl.situacao = {};\r\n $ctrl.ngModel = {};\r\n\r\n $ctrl.$onInit = function () {\r\n categorizacoesApi.listarSituacoesEncerramento(function (situacoes) {\r\n $ctrl.situacoes = situacoes;\r\n }, function () {\r\n $ctrl.situacoes = [];\r\n })\r\n }\r\n\r\n $ctrl.setNgModel = function (ngModel) {\r\n $ctrl.ngModel = ngModel;\r\n\r\n $ctrl.ngModel.$render = $ctrl.definitSituacao;\r\n }\r\n\r\n $ctrl.definitSituacao = function (situacao) {\r\n $ctrl.situacao = situacao;\r\n }\r\n\r\n $ctrl.selecionarSituacao = function (situacao) {\r\n $ctrl.ngModel.$setViewValue(situacao);\r\n\r\n $ctrl.ngModel.$render(situacao)\r\n }\r\n\r\n }],\r\n link: function ($scope, $element, $attr, $ngModelctrl) {\r\n $scope.$ctrl.setNgModel($ngModelctrl)\r\n },\r\n template: require('./situacoes.html')\r\n }\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/listas/situacoes/index.js\n// module id = 315\n// module chunks = 1","import './painel-component.css';\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.component('painel', {\r\n bindings: {\r\n titulo: '@',\r\n icone: '@?',\r\n subtitulo: '@?',\r\n ngClass: '=?'\r\n },\r\n replace: true, \r\n transclude: true,\r\n template: require('./painel-component-template.html')\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/painel/index.js\n// module id = 316\n// module chunks = 1","angular.module('app.components')\r\n\r\n .directive('previewImage', previewImageFunc);\r\n\r\nfunction previewImageFunc() {\r\n return {\r\n template: 'Carregando imagem...',\r\n scope: {\r\n src: '='\r\n },\r\n link: function ($scope, $element, $attrs) {\r\n var $el = $element, $parent = $el.parent()[0];\r\n var canvas = $element.find('canvas')[0];\r\n\r\n var gkhead = new Image;\r\n\r\n setTimeout(init, 100)\r\n \r\n gkhead.src = $scope.src.toString();\r\n\r\n function init () {\r\n\r\n canvas.width = $parent.clientWidth - 35;\r\n canvas.height = $parent.clientHeight - 35;\r\n\r\n var ctx = canvas.getContext('2d');\r\n trackTransforms(ctx);\r\n\r\n function redraw() {\r\n // Clear the entire canvas\r\n var p1 = ctx.transformedPoint(0, 0);\r\n var p2 = ctx.transformedPoint(canvas.width, canvas.height);\r\n ctx.clearRect(p1.x, p1.y, p2.x - p1.x, p2.y - p1.y);\r\n\r\n ctx.save();\r\n ctx.setTransform(1, 0, 0, 1, 0, 0);\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n ctx.restore();\r\n\r\n ctx.drawImage(\r\n gkhead,\r\n (gkhead.width < canvas.width ? (canvas.width / 2) - (gkhead.width / 2) : 0 ), \r\n (gkhead.height < canvas.height ? (canvas.height / 2) - (gkhead.height / 2) : 0 ),\r\n (gkhead.width > canvas.width ? canvas.width : gkhead.width), \r\n (gkhead.height > canvas.height ? canvas.height : gkhead.height)\r\n );\r\n\r\n }\r\n redraw();\r\n\r\n var lastX = canvas.width / 2, lastY = canvas.height / 2;\r\n\r\n var dragStart, dragged;\r\n\r\n canvas.addEventListener('mousedown', function (evt) {\r\n document.body.style.mozUserSelect = document.body.style.webkitUserSelect = document.body.style.userSelect = 'none';\r\n lastX = evt.offsetX || (evt.pageX - canvas.offsetLeft);\r\n lastY = evt.offsetY || (evt.pageY - canvas.offsetTop);\r\n dragStart = ctx.transformedPoint(lastX, lastY);\r\n dragged = false;\r\n }, false);\r\n\r\n canvas.addEventListener('mousemove', function (evt) {\r\n \r\n $el.css({'cursor': 'move'})\r\n\r\n lastX = evt.offsetX || (evt.pageX - canvas.offsetLeft);\r\n lastY = evt.offsetY || (evt.pageY - canvas.offsetTop);\r\n dragged = true;\r\n if (dragStart) {\r\n var pt = ctx.transformedPoint(lastX, lastY);\r\n ctx.translate(pt.x - dragStart.x, pt.y - dragStart.y);\r\n redraw();\r\n }\r\n }, false);\r\n\r\n canvas.addEventListener('mouseup', function (evt) {\r\n dragStart = null;\r\n if (!dragged) zoom(evt.shiftKey ? -1 : 1);\r\n }, false);\r\n\r\n var scaleFactor = 1.1;\r\n\r\n var zoom = function (clicks) {\r\n\r\n if(clicks > 0){\r\n $el.css({'cursor': '-webkit-zoom-in'})\r\n } else {\r\n $el.css({'cursor': '-webkit-zoom-out'})\r\n }\r\n\r\n var pt = ctx.transformedPoint(lastX, lastY);\r\n ctx.translate(pt.x, pt.y);\r\n var factor = Math.pow(scaleFactor, clicks);\r\n ctx.scale(factor, factor);\r\n ctx.translate(-pt.x, -pt.y);\r\n redraw();\r\n\r\n }\r\n\r\n var handleScroll = function (evt) {\r\n var delta = evt.wheelDelta ? evt.wheelDelta / 40 : evt.detail ? -evt.detail : 0;\r\n if (delta) zoom(delta);\r\n return evt.preventDefault() && false;\r\n };\r\n\r\n canvas.addEventListener('DOMMouseScroll', handleScroll, false);\r\n canvas.addEventListener('mousewheel', handleScroll, false);\r\n };\r\n\r\n // Adds ctx.getTransform() - returns an SVGMatrix\r\n // Adds ctx.transformedPoint(x,y) - returns an SVGPoint\r\n function trackTransforms(ctx) {\r\n var svg = document.createElementNS(\"http://www.w3.org/2000/svg\", 'svg');\r\n var xform = svg.createSVGMatrix();\r\n ctx.getTransform = function () { return xform; };\r\n\r\n var savedTransforms = [];\r\n var save = ctx.save;\r\n ctx.save = function () {\r\n savedTransforms.push(xform.translate(0, 0));\r\n return save.call(ctx);\r\n };\r\n\r\n var restore = ctx.restore;\r\n ctx.restore = function () {\r\n xform = savedTransforms.pop();\r\n return restore.call(ctx);\r\n };\r\n\r\n var scale = ctx.scale;\r\n ctx.scale = function (sx, sy) {\r\n xform = xform.scaleNonUniform(sx, sy);\r\n return scale.call(ctx, sx, sy);\r\n };\r\n\r\n var rotate = ctx.rotate;\r\n ctx.rotate = function (radians) {\r\n xform = xform.rotate(radians * 180 / Math.PI);\r\n return rotate.call(ctx, radians);\r\n };\r\n\r\n var translate = ctx.translate;\r\n ctx.translate = function (dx, dy) {\r\n xform = xform.translate(dx, dy);\r\n return translate.call(ctx, dx, dy);\r\n };\r\n\r\n var transform = ctx.transform;\r\n ctx.transform = function (a, b, c, d, e, f) {\r\n var m2 = svg.createSVGMatrix();\r\n m2.a = a; m2.b = b; m2.c = c; m2.d = d; m2.e = e; m2.f = f;\r\n xform = xform.multiply(m2);\r\n return transform.call(ctx, a, b, c, d, e, f);\r\n };\r\n\r\n var setTransform = ctx.setTransform;\r\n ctx.setTransform = function (a, b, c, d, e, f) {\r\n xform.a = a;\r\n xform.b = b;\r\n xform.c = c;\r\n xform.d = d;\r\n xform.e = e;\r\n xform.f = f;\r\n return setTransform.call(ctx, a, b, c, d, e, f);\r\n };\r\n\r\n var pt = svg.createSVGPoint();\r\n ctx.transformedPoint = function (x, y) {\r\n pt.x = x; pt.y = y;\r\n return pt.matrixTransform(xform.inverse());\r\n }\r\n }\r\n\r\n }\r\n }\r\n}\r\n\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/preview-image/index.js\n// module id = 317\n// module chunks = 1","import './style.css';\r\n\r\nangular.module('app.components')\r\n\r\n.component('redirecionamentos', {\r\n bindings: {\r\n redirecionamentos: '=',\r\n de: '='\r\n },\r\n template: require('./redirecionamentos.html')\r\n})\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/redirecionamentos/index.js\n// module id = 318\n// module chunks = 1","'use strict';\r\n\r\nangular.module('app.components').component('segmentoSelecionado', {\r\n bindings: {\r\n parametros: '='\r\n },\r\n transclude: true,\r\n controllerAs: '$ctrl',\r\n controller: segmentoSelecionadoCtrl,\r\n template: require('./segmento.html')\r\n});\r\n\r\nsegmentoSelecionadoCtrl.$inject = ['$sessionStorage', 'segmentosApi', 'notificacao'];\r\nfunction segmentoSelecionadoCtrl($sessionStorage, segmentosApi, notificacao) {\r\n var $ctrl = this;\r\n\r\n $ctrl.exibir = { segmento: null, credencial: null };\r\n\r\n $ctrl.$onInit = function(){\r\n if (_.has($ctrl.parametros, '$$state')) {\r\n $ctrl.parametros.then(function (chamado) {\r\n obterDadosChamado({\r\n grupoDeSuporteId: chamado.grupoDeSuporteSegmento.grupoDeSuporte.grupoDeSuporteId,\r\n grupoDeSuporteSegmentoId: chamado.grupoDeSuporteSegmento.grupoDeSuporteSegmentoId\r\n });\r\n });\r\n } else {\r\n obterDadosChamado($ctrl.parametros);\r\n }\r\n }\r\n\r\n function obterDadosChamado(parametros) {\r\n segmentosApi.lerDadosChamado(parametros, function (segmentoSelecionado) {\r\n $ctrl.exibir = {\r\n segmento: segmentoSelecionado,\r\n credencial: $sessionStorage.credencial.data\r\n };\r\n }, function error(errorResponse) {\r\n notificacao.erroResponse(errorResponse);\r\n });\r\n }\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/segmento-selecionado/index.js\n// module id = 319\n// module chunks = 1","'use strict';\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.component('tempoDecorrido', {\r\n bindings: {\r\n data: '=',\r\n real: '=?'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: tempoController,\r\n template: ''\r\n});\r\n\r\ntempoController.$inject = ['$interval', '$filter'];\r\nfunction tempoController($interval, $filter) {\r\n\r\n var $ctrl = this;\r\n\r\n $ctrl.tempo = $filter('tempoDecorrido')($ctrl.data);\r\n\r\n if ($ctrl.real) {\r\n $interval(function () {\r\n $ctrl.tempo = $filter('tempoDecorrido')($ctrl.data);\r\n }, 1000);\r\n }\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/tempo-decorrido/index.js\n// module id = 320\n// module chunks = 1","'use strict';\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.component('versao', {\r\n controllerAs: '$ctrl',\r\n controller: versaoSistemaCtrl,\r\n template: ' '\r\n});\r\n\r\nversaoSistemaCtrl.$inject = ['sistemaApi'];\r\nfunction versaoSistemaCtrl(sistemaApi) {\r\n var $ctrl = this;\r\n\r\n sistemaApi.versao().then(function (response) {\r\n console.log(response);\r\n $ctrl.versao = response;\r\n });\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/versao/index.js\n// module id = 321\n// module chunks = 1","'use strict';\r\n\r\nvar centralApp = angular.module('app.components');\r\n\r\ncentralApp.directive('visualizarArquivo', function () {\r\n\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n arquivo: '=visualizarArquivo'\r\n },\r\n controllerAs: '$ctrl',\r\n controller: visualizarArquivoCtrl,\r\n link: function ($scope, $element, $attr) {\r\n\r\n $element.bind('click', function (e) {\r\n e.preventDefault();\r\n\r\n if ($scope.arquivo instanceof File || $scope.arquivo instanceof Blob) {\r\n\r\n // Ler o arquivo de imagem\r\n $scope.lerArquivo($scope.arquivo).then(function (base64) {\r\n $scope.exibirImagem($scope.arquivo, base64);\r\n });\r\n\r\n } else {\r\n $scope.baixarArquivo();\r\n }\r\n\r\n });\r\n\r\n }\r\n }\r\n\r\n});\r\n\r\nvisualizarArquivoCtrl.$inject = ['$scope', '$q', '$modal', 'notificacao', 'anexoApi'];\r\n\r\nfunction visualizarArquivoCtrl($scope, $q, $modal, notificacao, anexoApi) {\r\n\r\n var $ctrl = $scope;\r\n\r\n $ctrl.baixarArquivo = baixarArquivo;\r\n $ctrl.lerArquivo = lerArquivo;\r\n $ctrl.exibirImagem = exibirImagem;\r\n\r\n\r\n /**\r\n * Realiza uma consulta na api para baixar \r\n * o arquivo solicitado\r\n */\r\n function baixarArquivo() {\r\n $ctrl.arquivo.abrindo = true;\r\n anexoApi.baixarArquivo($ctrl.arquivo, function (resposta) {\r\n \r\n // Cria a instância do arquivo\r\n var arquivo = new Blob([resposta.data], {\r\n type: resposta.headers['content-type']\r\n });\r\n\r\n // Ler o arquivo de imagem\r\n $ctrl.lerArquivo(arquivo).then(function (base64) {\r\n $ctrl.src = base64;\r\n $ctrl.exibirImagem($ctrl.arquivo, base64);\r\n });\r\n\r\n $scope.arquivo.abrindo = false;\r\n }, function (error) {\r\n notificacao.erro('Houve um erro ao baixar o arquivo');\r\n $scope.arquivo.abrindo = false;\r\n });\r\n }\r\n\r\n /**\r\n * Ler o conteúdo do arquivo\r\n * \r\n * @param Blob arquivo\r\n * \r\n * @return $promise\r\n */\r\n function lerArquivo(arquivo) {\r\n\r\n var deferred = $q.defer();\r\n\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n deferred.resolve(e.target.result);\r\n };\r\n\r\n reader.onerror = function (e) {\r\n deferred.reject(e);\r\n };\r\n\r\n reader.readAsDataURL(arquivo);\r\n\r\n return deferred.promise;\r\n }\r\n\r\n /**\r\n * Responsável por aprensentar a modal\r\n * com a imagem\r\n * \r\n * @param string base64(imagem)\r\n */\r\n function exibirImagem(arquivo, base64) {\r\n\r\n $modal({\r\n title: arquivo.arquivoNome || arquivo.name || 'Imagem',\r\n content: base64,\r\n scope: $ctrl,\r\n html: true,\r\n show: true,\r\n backdrop: true,\r\n template: require('./visualizar-arquivo-template.html'),\r\n onHide: function () {\r\n $('body').removeClass('modal-open')\r\n }\r\n });\r\n\r\n }\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/components/visualizar-arquivo/index.js\n// module id = 322\n// module chunks = 1","\r\nexport default function install ( mod ) {\r\n\r\n /**\r\n * Este filtro nos fornece o tempo em dias horas minutos \r\n * e segundos em relação a data que foi passada por paramentro.\r\n * \r\n * @param {object} data\r\n */\r\n mod.filter('tempoDecorrido', ['$filter', function ($filter) {\r\n return function (data) {\r\n\r\n // Define o locale\r\n moment.locale('pt-br');\r\n\r\n // Cria uma instância da data\r\n var dataInicial = moment(data);\r\n\r\n // Verifica se é uma data válida\r\n if (!dataInicial.isValid()) return;\r\n\r\n // Retorna o tempo decorrido\r\n return moment.duration(moment().diff(dataInicial))\r\n .humanize();\r\n\r\n };\r\n }])\r\n\r\n /**\r\n * Verifica se um item existe na coleção\r\n * \r\n * @param {object} data\r\n */\r\n mod.filter('tem', [function () {\r\n return function (colecao, item, retornoTrue, retornoFalse) {\r\n\r\n var tem = !!_.filter(colecao, function (i) {\r\n return i == item;\r\n }).length;\r\n\r\n if (retornoTrue && retornoFalse) {\r\n return tem ? retornoTrue : retornoFalse;\r\n }\r\n\r\n return tem;\r\n\r\n };\r\n }])\r\n\r\n /**\r\n * Limita uma sequencia de caracteres\r\n * \r\n * @param {string} texto\r\n */\r\n mod.filter('limitar', [function() {\r\n return function ( texto, tamanho, borda ) {\r\n\r\n tamanho = tamanho || 100;\r\n borda = borda || '...';\r\n\r\n if (tamanho && texto.length > tamanho) {\r\n return texto.slice(0, tamanho) + borda;\r\n }\r\n\r\n return texto;\r\n };\r\n }])\r\n\r\n /**\r\n * Limpa um determinado texto de tags html\r\n * [trocar o nome do filtro por um nome mais sugestivo]\r\n * \r\n * @param {string} texto\r\n */\r\n mod.filter('htmlLimpo', ['$filter', function ($filter) {\r\n return function (html, tamanho) {\r\n var texto = html ? String(html).replace(/<[^>]+>/gm, '').replace(/ /gm, ' ') : ' ';\r\n\r\n return $filter('limitar')( texto, tamanho );\r\n };\r\n }\r\n ])\r\n\r\n /**\r\n * Exibe a dimensão do arquivo\r\n * \r\n * @param {object} dimensao\r\n */\r\n mod.filter('dimensaoArquivo', [function () {\r\n return function (bytes, decimals) {\r\n if (!bytes) {\r\n return '';\r\n } else if (bytes == 0) {\r\n return '0 Byte'\r\n };\r\n var k = 1000;\r\n var dm = decimals + 0 || 3;\r\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n var i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return (parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]) || '';\r\n }\r\n }])\r\n\r\n /**\r\n * Busca itens de forma recurso em uma coleção\r\n * de itens ou um objeto segmentado.\r\n * \r\n * @param input (object|date)\r\n */\r\n mod.filter('buscar', ['$filter', function buscarFtr($filter) {\r\n return function (colecao, procudado) {\r\n function fn(colecao, procudado) {\r\n var find = _.find(colecao, procudado);\r\n if (find) return [find];\r\n return _.flatten(_.map(colecao, function (v) {\r\n return typeof v == \"object\" ? fn(v, procudado) : [];\r\n }), true);\r\n }\r\n return fn(colecao, procudado);\r\n };\r\n }])\r\n\r\n mod.filter('toArray', function () {\r\n return function (object) {\r\n return _.values(object)\r\n }\r\n } )\r\n\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/plugins/filters.plugin.js\n// module id = 323\n// module chunks = 1","\r\n\r\nexport default function install ( mod ) \r\n{\r\n mod.directive('expandMenu', function () {\r\n\r\n return {\r\n restrict: 'A',\r\n link: function ($scope, $element) {\r\n // Obtém o menu\r\n var menu = $($element[0])\r\n\r\n // Adciona o evento click nos links\r\n menu.find('a').on('click', function( event ) {\r\n\r\n // Seleciona o menu do contexto\r\n var li = $(event.target).parent()\r\n\r\n if (li.is('.in')) {\r\n\r\n li.removeClass('in')\r\n\r\n $('ul:first', li).slideUp(100)\r\n\r\n } else {\r\n\r\n li.addClass('in')\r\n\r\n $('ul:first', li).slideDown(100)\r\n }\r\n\r\n })\r\n \r\n // Essa trigger é temporaria, deve ser removida\r\n // na versão futura desta aplicação\r\n .trigger('click')\r\n }\r\n }\r\n\r\n })\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/plugins/menu.plugin.js\n// module id = 325\n// module chunks = 1","\r\n\r\nexport default function install ( mod, prefix ) \r\n{\r\n prefix = prefix || '';\r\n\r\n mod.directive(_.camelCase(prefix + 'ExibirDurante'), function () {\r\n return {\r\n restrict: 'A',\r\n controller: ['$scope', '$localStorage', function($scope, $localStorage){\r\n\r\n $scope.$storage = $localStorage.$default({})\r\n \r\n }],\r\n link: function($scope, $element, $attrs){\r\n\r\n var id = $attrs.id;\r\n var target = _.camelCase('exibir-'+id);\r\n\r\n if(id) {\r\n\r\n if(!$scope.$storage[target]) {\r\n $scope.$storage[target] = moment().add($attrs.dias | 2, 'days')\r\n } else {\r\n if (moment($scope.$storage[target]).isBefore(new Date())) {\r\n $element.css({ display: 'none' })\r\n } else {\r\n $attrs.$set('title', 'Este aviso será removido ' + moment().to($scope.$storage[target]))\r\n $element.css({ display: 'inline-block' })\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n }\r\n }\r\n })\r\n\r\n mod.directive(_.camelCase(prefix + 'Odometer'), [function () {\r\n return {\r\n restrict: 'A',\r\n scope: { valor: '=' },\r\n link: function ($scope, $el, $attrs) {\r\n var opts, odometer;\r\n\r\n opts = $scope.$eval($attrs.options) || {}\r\n opts.el = $el[0]\r\n odometer = new Odometer(opts);\r\n\r\n $scope.$watch('valor', function (valor) {\r\n odometer.update(valor)\r\n }, true)\r\n\r\n }\r\n }\r\n }])\r\n\r\n mod.directive(_.camelCase(prefix + 'Scroll'), ['Event', function(Event) {\r\n\r\n var cache = {};\r\n\r\n const isChrome = typeof chrome !== 'undefined' && chrome.webstore\r\n\r\n return {\r\n restrict: 'A',\r\n link: function ($scope, $element, $attrs) {\r\n\r\n var key = \"scroll-\" + ($attrs.id || 'position');\r\n\r\n var body = document.body,\r\n html = document.documentElement,\r\n top = 0, scrollTotal = 0, parte = 0,\r\n height = 0;\r\n\r\n Event.on('window.resize', function () {\r\n resize()\r\n\r\n setTimeout(function () {\r\n $scope.$digest()\r\n }, 100)\r\n })\r\n\r\n function resize () {\r\n\r\n height = window.innerHeight;\r\n\r\n $($element).css({\r\n 'height': (height - $element[0].offsetTop - 120 + (parseInt($attrs.offset || 0)) ) + 'px',\r\n 'overflow': isChrome ? 'overlay' : 'auto'\r\n }).ready(function () {\r\n\r\n $($element).stop().animate({\r\n scrollTop: cache[key]\r\n }, 1200, 'swing' );\r\n\r\n });\r\n }\r\n\r\n $($element).scroll(function () {\r\n\r\n top = $($element).scrollTop();\r\n scrollTotal =$element[0].scrollHeight;\r\n scrollTotal = scrollTotal - (scrollTotal * 0.18); // tamanho total de scroll\r\n parte = scrollTotal - ( scrollTotal * 0.10 ); // parte do scroll\r\n\r\n // 6 <- top - posicao atual\r\n // 10 <- scroll total\r\n // 10 - (10 * 0.10) = 9\r\n // 6 > 9\r\n\r\n if (top > parte ) {\r\n Event.emit('scroll:final')\r\n }\r\n\r\n cache[key] = top;\r\n\r\n if (top > 0) {\r\n $element.css({\r\n 'border-top': '4px solid #e8e8e8',\r\n 'border-botton': '1px solid #e8e8e8'\r\n });\r\n } else {\r\n $element.css({\r\n 'border-top': 'none',\r\n 'border-botton': 'none'\r\n });\r\n }\r\n });\r\n \r\n window.addEventListener('resize', _.debounce(function(){\r\n resize()\r\n\r\n $scope.$digest()\r\n }), 100);\r\n\r\n resize()\r\n\r\n }\r\n }\r\n }])\r\n\r\n var isActive = false; \r\n mod.directive(_.camelCase(prefix + 'CapsLock'), function () {\r\n return {\r\n restrict: 'A',\r\n link: function ($scope, $elem, $attrs) {\r\n\r\n var $target = '.' + ($attrs.target || 'icon-caps-lock')\r\n\r\n $(document).bind(\"keydown\", function (event) {\r\n if (event.keyCode === 20 ) { \r\n capsLock(!isActive); \r\n }\r\n });\r\n\r\n $(document).bind(\"keypress\", function (event) {\r\n var code = event.charCode || event.keyCode;\r\n var shift = event.shiftKey;\r\n\r\n if (code > 96 && code < 123) { capsLock(false); }\r\n if (code > 64 && code < 91 && !shift) { capsLock(true); }\r\n });\r\n\r\n function capsLock (visible) {\r\n if (visible) {\r\n $($target).show()\r\n } else {\r\n $($target).hide()\r\n }\r\n\r\n isActive = visible;\r\n }\r\n \r\n }\r\n }\r\n })\r\n\r\n}\r\n\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/plugins/ui.plugin.js\n// module id = 326\n// module chunks = 1","'use strict';\r\n\r\nangular.module('app.services')\r\n\r\n.service('Event', eventoService)\r\n.service('Evento', eventoService); // Atalho\r\n\r\neventoService.$inject = ['$rootScope'];\r\nfunction eventoService($rootScope) {\r\n\r\n /**\r\n * Dispara um evento\r\n */\r\n this.fire = function (/* event, arguments */)\r\n {\r\n $rootScope.$broadcast.apply($rootScope, arguments);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Dispara um evento\r\n */\r\n this.emit = function (/* event, arguments */) {\r\n this.fire.apply(this, arguments)\r\n }\r\n\r\n /**\r\n * Adiciona um ouvite para um determinado evento.\r\n * \r\n * - Adicionando ouvinte globais\r\n * Event.on('meu:evento', function(){})\r\n * \r\n * - Adicionando ouvinte locais\r\n * Event.on('meu:evento', function(){})($scope)\r\n * \r\n * @param {string} event\r\n * @param {function} handler\r\n * @return {function} \r\n */\r\n this.on = function (event, handler)\r\n {\r\n var removeListener = $rootScope.$on(event, handler);\r\n\r\n return function ($scope) {\r\n ($scope || $rootScope).$on('$destroy', function(){\r\n removeListener()\r\n })\r\n };\r\n }\r\n\r\n /**\r\n * Adicioan um ouvinte para ser disparado apenas uma\r\n * vez. Isso irá remover o ouvite após o evento ser \r\n * disparado.\r\n * \r\n * - Adicionando ouvinte globais\r\n * Event.on('meu:evento', function(){})\r\n * \r\n * - Adicionando ouvinte locais\r\n * Event.on('meu:evento', function(){})($scope)\r\n * \r\n * @param {string} event\r\n * @param {function} handler\r\n */\r\n this.once = function(event, handler)\r\n {\r\n var removeListener = $rootScope.$on(event, function(){\r\n\r\n handler.apply(this, arguments)\r\n\r\n removeListener()\r\n })\r\n\r\n return function ($scope) {\r\n ($scope || $rootScope).$on('$destroy', function(){\r\n removeListener()\r\n })\r\n };\r\n }\r\n\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/services/event-service.js\n// module id = 327\n// module chunks = 1","'use strict';\r\n\r\nvar centralApp = angular.module('app.services');\r\n\r\n// Serviço de notificação\r\ncentralApp.factory('notificacao', notificacaoSrv);\r\n\r\nnotificacaoSrv.$inject = ['$alert', '$notification', '$window'];\r\nfunction notificacaoSrv($alert, $notification, $window) {\r\n\r\n return {\r\n\r\n driver: 'toastr',\r\n\r\n opcoes: {},\r\n\r\n duracao: 5,\r\n\r\n /**\r\n * Exibe mensagens fomatadas na visão de erro. \r\n * As mensagens são disparadas pelo domínio da \r\n * aplicação através de serviços RESTful.\r\n * \r\n * @param object response\r\n */\r\n erroResponse: function (response) {\r\n if (response.status === 500) {\r\n this.com('toastr').erro('Erro', 'Ocorreu um erro, tente novamente');\r\n } else {\r\n _.each(_.get(response, 'data.errors', []),function (error) {\r\n this.erro(error.key, error.value)\r\n }.bind(this))\r\n }\r\n },\r\n\r\n /**\r\n * Fornece um meio para selecionar\r\n * qual drive será responsável por \r\n * dispara a notificação\r\n */\r\n com: function (driver, callback) {\r\n this.driver = driver || this.driver;\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Informa quanto tempo a notificação deve\r\n * ficar ativa\r\n */\r\n durante: function (segundados) {\r\n this.duracao = segundados;\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Notificação de sucesso\r\n */\r\n sucesso: function (titulo, mensagem, opcoes) {\r\n this.notificar({\r\n titulo: titulo, \r\n mensagem: mensagem,\r\n tipo: 'success',\r\n opcoes: opcoes\r\n });\r\n },\r\n\r\n /**\r\n * Notificação de alerta\r\n */\r\n alerta: function (titulo, mensagem, opcoes) {\r\n this.notificar({\r\n titulo: titulo,\r\n mensagem: mensagem,\r\n tipo: 'warning',\r\n opcoes: opcoes\r\n });\r\n },\r\n\r\n /**\r\n * Notificação de alerta\r\n */\r\n aviso: function (titulo, mensagem, opcoes) {\r\n this.notificar({\r\n titulo: titulo,\r\n mensagem: mensagem,\r\n tipo: 'warning',\r\n opcoes: opcoes\r\n });\r\n },\r\n\r\n /**\r\n * Notificação de informação\r\n */\r\n info: function (titulo, mensagem, opcoes) {\r\n this.notificar({\r\n titulo: titulo,\r\n mensagem: mensagem,\r\n tipo: 'info',\r\n opcoes: opcoes\r\n });\r\n },\r\n\r\n /**\r\n * Notificação de erro\r\n */\r\n erro: function (titulo, mensagem, opcoes) {\r\n this.notificar({\r\n titulo: titulo,\r\n mensagem: mensagem,\r\n tipo: 'error',\r\n opcoes: opcoes\r\n });\r\n },\r\n\r\n /**\r\n * Notificação de negado\r\n */\r\n negado: function (titulo, mensagem, opcoes) {\r\n this.erro(titulo, mensagem, opcoes);\r\n },\r\n\r\n /**\r\n * Dispara notificação\r\n * \r\n * Exemplo: Notificacao.notificar({\r\n * titulo: 'Importante',\r\n * mensagem: 'Verifique suas atualizações',\r\n * tipo: 'alerta',\r\n * driver: 'desktop'\r\n * });\r\n */\r\n notificar: function(notificacao){\r\n\r\n if (_.isUndefined(notificacao.mensagem)) {\r\n notificacao.mensagem = notificacao.titulo;\r\n\r\n notificacao.titulo = '';\r\n }\r\n\r\n // Normaliza algumas propriedades\r\n notificacao.tipo = _.get(notificacao, 'tipo', 'warning');\r\n notificacao.driver = _.get(notificacao, 'driver', this.driver);\r\n notificacao.opcoes = _.get(notificacao, 'opcoes', this.opcoes);\r\n\r\n switch (notificacao.tipo ){\r\n case 'info': \r\n notificacao.duracao = 10;\r\n break;\r\n case 'success':\r\n notificacao.duracao = 5;\r\n break;\r\n case 'warning': \r\n notificacao.duracao = 10;\r\n break;\r\n case 'error':\r\n case 'danger':\r\n notificacao.duracao = 15;\r\n break;\r\n default :\r\n notificacao.duracao = 3;\r\n }\r\n\r\n var driver = this.normalizarDriver(notificacao.driver);\r\n\r\n try {\r\n\r\n // Dispara notificação\r\n this[driver](notificacao);\r\n\r\n } catch(e){\r\n\r\n console.error('Houve um erro ao construir o driver de notificação!', e);\r\n\r\n }\r\n\r\n // Reseta driver\r\n this.driver = 'toastr';\r\n\r\n },\r\n\r\n /**\r\n * Dispara notificação\r\n * \r\n * @param string titulo\r\n * @param string mensagem\r\n * @param string driver\r\n */\r\n disparar: function (titulo, mensagem, driver) {\r\n this.notificar({\r\n titulo: titulo,\r\n mensagem: mensagem,\r\n driver: driver\r\n });\r\n },\r\n\r\n /**\r\n * Normaliza o nome do driver para ser criado\r\n * \r\n * @param string driver\r\n */\r\n normalizarDriver: function(driver){\r\n return 'criar' + _.capitalize(driver) + 'Driver';\r\n },\r\n\r\n /**\r\n * Cria o dirver strap de notificação\r\n */\r\n criarStrapDriver: function (notificacao) {\r\n \r\n $alert(_.merge({\r\n title: notificacao.titulo,\r\n type: notificacao.tipo,\r\n content: notificacao.mensagem,\r\n duration: notificacao.duracao,\r\n animation: 'am-fade-and-slide-top',\r\n placement: 'top-right',\r\n show: true\r\n }, notificacao.opcoes));\r\n\r\n },\r\n\r\n /**\r\n * Cria o dirver toastr de notificação\r\n */\r\n criarToastrDriver: function (notificacao) {\r\n\r\n notificacao.opcoes = {\r\n closeButton: true,\r\n debug: false,\r\n newestOnTop: true,\r\n progressBar: true,\r\n positionClass: \"toast-top-center\",\r\n preventDuplicates: true,\r\n showDuration: \"300\",\r\n hideDuration: \"1000\",\r\n extendedTimeOut: \"1000\",\r\n showEasing: \"swing\",\r\n hideEasing: \"linear\",\r\n showMethod: \"fadeIn\",\r\n hideMethod: \"fadeOut\",\r\n timeOut: (notificacao.duracao || 5) * 1000\r\n };\r\n\r\n toastr[notificacao.tipo](\r\n notificacao.mensagem, \r\n notificacao.titulo, \r\n notificacao.opcoes\r\n );\r\n\r\n },\r\n\r\n /**\r\n * Cria o dirver desktop de notificação\r\n */\r\n criarDesktopDriver: function (notificacao) {\r\n\r\n var self = this;\r\n\r\n $notification.requestPermission().then(function (permissao) {\r\n\r\n if (permissao === 'granted') {\r\n $notification(notificacao.titulo, {\r\n body: notificacao.mensagem,\r\n focusWindowOnClick: true,\r\n delay: notificacao.duracao * 1000,\r\n icon: notificacao.imagem || require('assets/img/perfil.png'),\r\n tag: _.kebabCase(notificacao.mensagem)\r\n });\r\n } else if (permissao === 'denied') {\r\n self.sucesso(notificacao.titulo, notificacao.mensagem, 'toastr');\r\n }\r\n\r\n })\r\n\r\n }\r\n\r\n }\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/services/notificacao-service.js\n// module id = 328\n// module chunks = 1","'use strict';\r\n\r\nangular.module('app.services')\r\n.service('NotificacaoStream', NotificacaoStream);\r\n\r\nNotificacaoStream.$inject = ['$rootScope', 'ConfigApp', 'Event', '$q'];\r\n\r\nfunction NotificacaoStream ($rootScope, ConfigApp, Event, $q)\r\n{\r\n var connection = $.hubConnection(ConfigApp.UrlBase);\r\n var hubProxy = connection.createHubProxy('notificacaoHub');\r\n var deferred = $q.defer();\r\n\r\n var registrados = [];\r\n\r\n /**\r\n * Adiciona ouvintes para serem disparados quando o \r\n * evento for acionado\r\n * \r\n * @param string evento\r\n * @param function handle\r\n */\r\n this.em = function(evento, manipulador)\r\n {\r\n hubProxy.on(evento, function () {\r\n var args = arguments;\r\n\r\n $rootScope.$apply(function () {\r\n manipulador.apply(this, args);\r\n });\r\n });\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Adiciona ouvintes para serem disparados quando o \r\n * evento for acionado.\r\n * \r\n * @param args argumentos [event, handle]\r\n */\r\n this.ouvir = function(/* argunments */)\r\n {\r\n return this.em.apply(this, arguments);\r\n }\r\n\r\n /**\r\n * Abre um sockete de comunicação\r\n * com um canal especifico.\r\n * \r\n * @param name\r\n */\r\n this.canal = function (nome)\r\n {\r\n if( !registrados[nome] ) {\r\n hubProxy.invoke('JoinGroup', nome).done( function(e){\r\n registrados.push(nome)\r\n });\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Abre um socket de comunicação\r\n * com um usuário especifico.\r\n * \r\n * @param name\r\n */\r\n this.usuario = function( nome )\r\n {\r\n return this.canal(nome);\r\n }\r\n\r\n /**\r\n * Abre um sockete de comunicação com uma lista de\r\n * canais.\r\n * \r\n * @param {array} canais \r\n */\r\n this.canais = function ( canais )\r\n {\r\n var $this = this;\r\n\r\n canais.forEach(function (nome) {\r\n $this.canal (nome)\r\n })\r\n\r\n return $this;\r\n }\r\n\r\n /**\r\n * Conecta a aplicação \r\n */\r\n this.conectar = function ()\r\n {\r\n connection \r\n \r\n .start(function () {\r\n //deferred.resolve(arguments)\r\n })\r\n .done(function () {\r\n deferred.resolve(arguments)\r\n })\r\n .fail( function () {\r\n deferred.reject(arguments)\r\n });\r\n \r\n return deferred.promise;\r\n }\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/services/notificacao-stream-service.js\n// module id = 329\n// module chunks = 1","'use strict';\r\n\r\nvar centralApp = angular.module('app.services');\r\ncentralApp.factory('segmentosApi', segmentosSrv);\r\nsegmentosSrv.$inject = ['$resource', 'ConfigApp'];\r\n\r\nfunction segmentosSrv($resource, ConfigApp) {\r\n return $resource(ConfigApp.UrlApi + '/v1.0/segmentos',\r\n { }, {\r\n listarSegmentos: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/segmentos/centrais_servico/' + ConfigApp.CentralServicoModuloId\r\n },\r\n lerDadosChamado: {\r\n method: 'GET',\r\n isArray: false,\r\n url: ConfigApp.UrlApi + '/v1.0/segmentos/dados_chamado/grupos_suporte/:grupoDeSuporteId/grupos_suporte_segmentos/:grupoDeSuporteSegmentoId'\r\n },\r\n listarSegmentosPorCanal: {\r\n method: 'GET',\r\n isArray: true,\r\n url: ConfigApp.UrlApi + '/v1.0/segmentos/grupos_suporte/:grupoDeSuporteId/canais_atendimento/:canalDeAtendimentoId',\r\n ignoreLoadingBar: true\r\n }\r\n });\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../Projecao.ContactCenter.WebApp.Compartilhado/services/segmentos-api-service.js\n// module id = 330\n// module chunks = 1"],"sourceRoot":""}