{"version":3,"sources":["webpack:///./src/services/loadingMixin.js","webpack:///C:/agent/_work/77/s/node_modules/lodash/_cloneArrayBuffer.js","webpack:///C:/agent/_work/77/s/node_modules/lodash/_cloneBuffer.js","webpack:///C:/agent/_work/77/s/node_modules/lodash/_copyObject.js","webpack:///C:/agent/_work/77/s/node_modules/lodash/_copyArray.js","webpack:///C:/agent/_work/77/s/node_modules/lodash/_assignValue.js","webpack:///C:/agent/_work/77/s/node_modules/lodash/_baseKeysIn.js","webpack:///C:/agent/_work/77/s/node_modules/lodash/_initCloneObject.js","webpack:///C:/agent/_work/77/s/node_modules/lodash/_baseCreate.js","webpack:///./src/services/globalEventBus.js","webpack:///C:/agent/_work/77/s/node_modules/lodash/keysIn.js","webpack:///C:/agent/_work/77/s/node_modules/lodash/_cloneTypedArray.js","webpack:///C:/agent/_work/77/s/node_modules/lodash/_nativeKeysIn.js","webpack:///C:/agent/_work/77/s/node_modules/lodash/_getPrototype.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","Uint8Array","cloneArrayBuffer","arrayBuffer","result","constructor","byteLength","set","module","exports","freeExports","nodeType","freeModule","moduleExports","Buffer","root","undefined","allocUnsafe","cloneBuffer","buffer","isDeep","slice","length","copy","assignValue","baseAssignValue","copyObject","source","props","object","customizer","isNew","index","key","newValue","copyArray","array","Array","eq","objectProto","Object","prototype","hasOwnProperty","value","objValue","call","isObject","isPrototype","nativeKeysIn","baseKeysIn","isProto","push","baseCreate","getPrototype","initCloneObject","objectCreate","create","proto","validateNamespaceOneDepthLevel","term","split","Error","emptyEventNameValidator","EventBus","eventNameValidator","listenersCollection","eventName","fn","scope","getListeners","events","keys","forEach","on","listeners","findIndex","listener","splice","clearListeners","args","hasListenersConfig","onEach","off","emit","arrayLikeKeys","isArrayLike","keysIn","cloneTypedArray","typedArray","byteOffset","overArg","getPrototypeOf"],"mappings":"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","file":"js/losses.34009616.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","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\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","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n"],"sourceRoot":""}