{"version":3,"sources":["webpack:///./src/services/loadingMixin.js","webpack:///./src/domain/events/menu.js","webpack:///./src/app/installation/asset/Asset.vue?98b0","webpack:///./src/app/installation/asset/Asset.vue?401c","webpack:///src/app/installation/asset/Asset.vue","webpack:///./src/app/installation/asset/Asset.vue?7444","webpack:///./src/app/installation/asset/Asset.vue","webpack:///./src/app/installation/asset/index.vue?c780","webpack:///./src/app/installation/asset/index.vue?83de","webpack:///src/app/installation/asset/index.vue","webpack:///./src/app/installation/asset/index.vue?201d","webpack:///./src/app/installation/asset/index.vue","webpack:///./src/domain/mixins/installation/assetAccessorMixin.js","webpack:///./src/services/globalEventBus.js"],"names":["createStartFunction","loadingCountDataName","this","createEndFunction","clearLoadingMethodName","createClearFunction","createWaitFunction","startLoadingMethodName","endLoadingMethodName","promise","waitLoading","createLoadingComputedFunction","createPrototype","params","loadingComputedName","waitLoadingMethodName","data","methods","computed","build","name","capitalizedName","firstCapitalized","defaultLoadingManager","refreshMenuItems","render","_vm","_h","$createElement","_c","_self","attrs","loading","key","assetModule","id","currentAsset","currentAssetType","staticRenderFns","mixins","created","initListener","handleMenuItems","assetSubMenu","items","beforeDestroy","removeListener","component","typesWithAssets","props","Array","assetId","$route","assets","find","toUpperCase","some","validateNamespaceOneDepthLevel","term","split","length","Error","emptyEventNameValidator","EventBus","eventNameValidator","listenersCollection","eventName","fn","scope","getListeners","push","events","Object","keys","forEach","on","listeners","index","findIndex","listener","splice","clearListeners","args","hasListenersConfig","call","onEach","off","emit"],"mappings":"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","file":"js/Asset.e0c2f2ce.js","sourcesContent":["import { firstCapitalized } from './stringHelper';\r\n\r\n/**\r\n * Cria a função de iniciar carregamento.\r\n * A função gerada tem o comportamento de incrementar em 1 o contador de carregamentos.\r\n */\r\nfunction createStartFunction({\r\n loadingCountDataName,\r\n}) {\r\n return function startLoading() {\r\n this[loadingCountDataName] += 1;\r\n };\r\n}\r\n\r\n/**\r\n * Cria a função de finalizar carregamento.\r\n * A função gerada tem o comportamento de decrementar em 1 o contador de carregamentos.\r\n * Também faz a checagem para garantir que o contador não fique negativo após o decremento.\r\n */\r\nfunction createEndFunction({\r\n loadingCountDataName,\r\n clearLoadingMethodName,\r\n}) {\r\n return function endLoading() {\r\n this[loadingCountDataName] -= 1;\r\n if (this[loadingCountDataName] < 0) {\r\n this[clearLoadingMethodName]();\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Cria a função para limpar o carregamento.\r\n * A função gerada tem o comportamento de zerar o contador de carregamentos.\r\n */\r\nfunction createClearFunction({\r\n loadingCountDataName,\r\n}) {\r\n return function clearLoading() {\r\n this[loadingCountDataName] = 0;\r\n };\r\n}\r\n\r\n/**\r\n * Cria a função para aguardar um carregamento assincrono.\r\n * A função gerada tem o comportamento de esperar uma promessa recebida por parametro. Enquanto\r\n * a promessa não acaba, ela define um carregamento, removendo ele ao fim da execução.\r\n */\r\nfunction createWaitFunction({\r\n startLoadingMethodName,\r\n endLoadingMethodName,\r\n}) {\r\n return async function waitLoading(promise) {\r\n this[startLoadingMethodName]();\r\n try {\r\n await promise;\r\n } finally {\r\n this[endLoadingMethodName]();\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Cria a função para gerar a computed que fala se está havendo carregamento.\r\n * A função gerada tem a intenção de retornar verdadeira se o contador for maior do que zero.\r\n */\r\nfunction createLoadingComputedFunction({\r\n loadingCountDataName,\r\n}) {\r\n return function loading() {\r\n return !!this[loadingCountDataName];\r\n };\r\n}\r\n\r\n/**\r\n * Cria o protótipo do mixin com base nos nomes passados por parametro.\r\n */\r\nfunction createPrototype(params) {\r\n const {\r\n loadingComputedName,\r\n loadingCountDataName,\r\n startLoadingMethodName,\r\n endLoadingMethodName,\r\n clearLoadingMethodName,\r\n waitLoadingMethodName,\r\n } = params;\r\n\r\n return {\r\n data: () => ({\r\n [loadingCountDataName]: 0,\r\n }),\r\n methods: {\r\n [startLoadingMethodName]: createStartFunction(params),\r\n [endLoadingMethodName]: createEndFunction(params),\r\n [clearLoadingMethodName]: createClearFunction(params),\r\n [waitLoadingMethodName]: createWaitFunction(params),\r\n },\r\n computed: {\r\n [loadingComputedName]: createLoadingComputedFunction(params),\r\n },\r\n };\r\n}\r\n\r\n/**\r\n * Constrói um mixin de carregamento.\r\n *\r\n * @param {String} [name] Nome do carregamento para concatenar aos elementos gerados.\r\n *\r\n * Interface gerada:\r\n * {\r\n * data: () => ({\r\n * loading{name}Count: Number,\r\n * }),\r\n * methods: {\r\n * startLoading{name}(): void,\r\n * endLoading{name}(): void,\r\n * clearLoading{name}(): void,\r\n * waitLoading{name}(Promise): Promise,\r\n * },\r\n * computed: {\r\n * loading{name}: Boolean\r\n * }\r\n * }\r\n *\r\n * Exemplo:\r\n *\r\n * const mixin = build('Person');\r\n *\r\n * expect(mixin).toMatchObject({\r\n * data: () => ({\r\n * loadingPersonCount,\r\n * }),\r\n * methods: {\r\n * startLoadingPerson,\r\n * endLoadingPerson,\r\n * clearLoadingPerson,\r\n * waitLoadingPerson,\r\n * },\r\n * computed: {\r\n * loadingPerson,\r\n * }\r\n * });\r\n *\r\n * Para detalhes do funcionamento da interface gerada, veja a documentação\r\n * do mixin básico mais a abaixo.\r\n */\r\nexport function build(name = '') {\r\n const capitalizedName = firstCapitalized(name);\r\n const loadingComputedName = `loading${capitalizedName}`;\r\n const loadingCountDataName = `loading${capitalizedName}Count`;\r\n const startLoadingMethodName = `startLoading${capitalizedName}`;\r\n const endLoadingMethodName = `endLoading${capitalizedName}`;\r\n const clearLoadingMethodName = `clearLoading${capitalizedName}`;\r\n const waitLoadingMethodName = `waitLoading${capitalizedName}`;\r\n\r\n return createPrototype({\r\n loadingComputedName,\r\n loadingCountDataName,\r\n startLoadingMethodName,\r\n endLoadingMethodName,\r\n clearLoadingMethodName,\r\n waitLoadingMethodName,\r\n });\r\n}\r\n\r\n/**\r\n * Mixin básico de carregamento.\r\n *\r\n * Interface do mixin:\r\n *\r\n * {\r\n * data: () => ({\r\n * // Contagem de carregamentos definidos.\r\n * loadingCount: Number,\r\n * }),\r\n * methods: {\r\n * // Seta um carregamento.\r\n * startLoading(): void,\r\n *\r\n * // Remove um carregamento.\r\n * endLoading(): void,\r\n *\r\n * // Limpa os carregamentos, zerando tudo.\r\n * clearLoading(): void,\r\n *\r\n * // Espera uma promessa, definindo um carregamento enquanto estiver em execução.\r\n * waitLoading(Promise): Promise,\r\n * },\r\n * computed: {\r\n * // True se a contagem for diferente de zero.\r\n * loading: Boolean\r\n * }\r\n * }\r\n *\r\n * Exemplos de uso do mixin nos components Vue:\r\n *\r\n * import loadingMixin from '@/services/loadingMixin';\r\n *\r\n * export default {\r\n * mixins: [\r\n * loadingMixin,\r\n * ],\r\n * methods: {\r\n * refreshDataA() {\r\n * this.startLoading();\r\n * Service.getData().then(() => {\r\n * this.endLoading();\r\n * }).catch(() => {\r\n * this.endLoading();\r\n * });\r\n * },\r\n * async refreshDataB() {\r\n * this.startLoading();\r\n * try {\r\n * await Service.getData();\r\n * } finally {\r\n * this.endLoading();\r\n * }\r\n * },\r\n * refreshDataC() {\r\n * this.waitLoading(Service.getData());\r\n * },\r\n * }\r\n * }\r\n *\r\n * Carregando...\r\n */\r\nconst defaultLoadingManager = build();\r\nexport default defaultLoadingManager;\r\n","export default {\r\n refreshMenuItems: 'refresh.menu.items',\r\n};\r\n","import mod from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Asset.vue?vue&type=style&index=0&id=21245a6c&lang=sass&scoped=true&\"; export default mod; export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Asset.vue?vue&type=style&index=0&id=21245a6c&lang=sass&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"default-opacity-transition\",\"mode\":\"out-in\"}},[(!_vm.loading)?_c('router-view',{key:_vm.assetModule && _vm.assetModule.id,attrs:{\"asset\":_vm.currentAsset,\"asset-type\":_vm.currentAssetType,\"asset-module\":_vm.assetModule}}):_c('s-loader')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Asset.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Asset.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Asset.vue?vue&type=template&id=21245a6c&scoped=true&\"\nimport script from \"./Asset.vue?vue&type=script&lang=js&\"\nexport * from \"./Asset.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Asset.vue?vue&type=style&index=0&id=21245a6c&lang=sass&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"21245a6c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=f16ffaee&lang=sass&scoped=true&\"; export default mod; export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=f16ffaee&lang=sass&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view',{attrs:{\"types-with-assets\":_vm.typesWithAssets}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=f16ffaee&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=f16ffaee&lang=sass&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f16ffaee\",\n null\n \n)\n\nexport default component.exports","export default {\r\n props: {\r\n typesWithAssets: Array,\r\n },\r\n computed: {\r\n currentAsset() {\r\n const { assetId } = this.$route.params;\r\n return this.currentAssetType\r\n && this.currentAssetType.assets\r\n .find(({ id }) => assetId.toUpperCase() === id.toUpperCase());\r\n },\r\n currentAssetType() {\r\n const { assetId } = this.$route.params;\r\n return this.typesWithAssets\r\n .find(({ assets }) => assets\r\n .some(({ id }) => assetId.toUpperCase() === id.toUpperCase()));\r\n },\r\n },\r\n};\r\n","export function validateNamespaceOneDepthLevel(term) {\r\n if (typeof term === 'string' && term.split('.').length >= 2) {\r\n return;\r\n }\r\n\r\n throw new Error('Nome de evento inválido.\\nO nome do evento deve ser uma string com namespace'\r\n + 'com pelo 1 nível de profundidade, exemplo: \"alarms.autorefresh\", \"mySigma.nonConfiguredArea\".');\r\n}\r\n\r\nconst emptyEventNameValidator = () => null;\r\n\r\n/**\r\n * Event Bus / Barramento de eventos\r\n *\r\n * Event bus simples para ouvintes e publicadores.\r\n *\r\n * Os nome de eventos usados aqui devem ser no formato \"namespace.evento\".\r\n * O namespace deve ter pelo menos 1 nível de profundidade a fim de evitar colisão de eventos,\r\n * exemplo: \"myData.save\", \"myData.load\", \"profile.save\".\r\n *\r\n * Os ouvintes devem ser funções formato \"function(...args: any[]): void\",\r\n * podendo ter 0 ou muitos argumentos passados no evento.\r\n */\r\nexport class EventBus {\r\n /**\r\n * @private\r\n * Coleção de ouvintes de todos os eventos pendurados.\r\n */\r\n listenersCollection = null;\r\n\r\n /**\r\n * Validador de nomes de eventos;\r\n * @readonly\r\n */\r\n eventNameValidator\r\n\r\n /**\r\n * Construtor base.\r\n * @param {Function} [eventNameValidator] Função validadora de nomes de eventos.\r\n */\r\n constructor({ eventNameValidator } = {}) {\r\n this.listenersCollection = {};\r\n this.eventNameValidator = eventNameValidator || emptyEventNameValidator;\r\n }\r\n\r\n /**\r\n * Adiciona um ouvinte a um evento.\r\n * @param {String} eventName Nome do evento.\r\n * @param {Function} fn Função ouvinte do evento.\r\n * @param {Any} [scope] Escopo de execução (this) para a função ouvinte.\r\n */\r\n on(eventName, fn, scope = null) {\r\n this.eventNameValidator(eventName);\r\n this.getListeners(eventName).push({\r\n fn,\r\n scope,\r\n });\r\n }\r\n\r\n /**\r\n * Adiciona ouvintes a eventos em um objeto de definições.\r\n * @param {Object} events Object de definições no formato { eventName: fn, ... }.\r\n * @param {Any} [scope] Escopo de execução (this) para a função ouvinte.\r\n */\r\n onEach(events, scope = null) {\r\n Object.keys(events).forEach(eventName => this.on(eventName, events[eventName], scope));\r\n }\r\n\r\n /**\r\n * Remove um ouvinte de um evento. As referências passadas aqui devem ser as mesmas\r\n * usadas para adicionar o ouvinte.\r\n * @param {String} eventName Nome do evento.\r\n * @param {Function} fn Função ouvinte do evento.\r\n * @param {Any} [scope] Escopo de execução (this) para a função ouvinte.\r\n */\r\n off(eventName, fn, scope = null) {\r\n const listeners = this.getListeners(eventName);\r\n const index = listeners.findIndex(listener => listener.fn === fn\r\n && listener.scope === scope);\r\n\r\n if (index === -1) {\r\n throw new Error(`Não é possível remover o ouvinte. Ouvinte não encontrado para o evento \"${\r\n eventName\r\n }\". Verifique a referência da função e do escopo.`);\r\n }\r\n\r\n listeners.splice(index, 1);\r\n if (!listeners.length) {\r\n this.clearListeners(eventName);\r\n }\r\n }\r\n\r\n /**\r\n * Emitir um evento através do barramento para todos os ouvintes.\r\n * @param {String} eventName Nome do evento.\r\n * @param {...any} [args] Argumentos do evento. Podem ser omitidos para um evento sem\r\n * parametros.\r\n */\r\n emit(eventName, ...args) {\r\n if (this.hasListenersConfig(eventName)) {\r\n this.getListeners(eventName)\r\n .forEach(listener => listener.fn.call(listener.scope, ...args));\r\n }\r\n }\r\n\r\n /**\r\n * Método privado para uso interno.\r\n * Retorna os ouvintes de um evento de maneira segura, evitando retornos nulos.\r\n * @private\r\n * @param {String} eventName Nome do evento.\r\n * @returns {Object[]} Array de listeners do Evento.\r\n */\r\n getListeners(eventName) {\r\n if (!this.hasListenersConfig(eventName)) {\r\n this.listenersCollection[eventName] = [];\r\n }\r\n return this.listenersCollection[eventName];\r\n }\r\n\r\n /**\r\n * Método privado para uso interno.\r\n * Informa se há configuração de listeners para um evento.\r\n * @private\r\n * @param {String} eventName Nome do evento.\r\n */\r\n hasListenersConfig(eventName) {\r\n return !!this.listenersCollection[eventName];\r\n }\r\n\r\n /**\r\n * Método privado para uso interno.\r\n * Limpa todos os ouvintes de um evento.\r\n * @private\r\n * @param {String} eventName Nome do evento.\r\n */\r\n clearListeners(eventName) {\r\n delete this.listenersCollection[eventName];\r\n }\r\n\r\n /**\r\n * Cria uma interface de procurador para um eventBus, expondo apenas os métodos relacionados\r\n * a observação, como On, Off, Emit, e etc.\r\n * @returns {Object}\r\n */\r\n createObservableProxy() {\r\n return {\r\n on: (...args) => this.on(...args),\r\n onEach: (...args) => this.onEach(...args),\r\n off: (...args) => this.off(...args),\r\n emit: (...args) => this.emit(...args),\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Barramento global de eventos.\r\n */\r\nexport default new EventBus({ eventNameValidator: validateNamespaceOneDepthLevel });\r\n"],"sourceRoot":""}