;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Celular, TV e mais: falta de chips faz produção de eletrônicos cair no país

sefa ozel/Getty Images
Imagem: sefa ozel/Getty Images

Eduardo Laguna

23/07/2021 10h29

A exemplo do que acontece nas montadoras de automóveis, a escassez mundial de chips causa atrasos ou interrupções de produção em quatro a cada dez fábricas de produtos eletrônicos, como tevês, notebooks e celulares, do Brasil.

Segundo sondagem feita no mês ado pela Abinee, associação que representa a indústria nacional de aparelhos eletroeletrônicos, 12% dos fabricantes do setor tiveram que parar parte da produção no mês ado por falta de componentes eletrônicos. É o maior registro desde que, em fevereiro, a pesquisa começou a acompanhar o impacto da falta desses insumos no mercado.

Situação mais comum, 32% das empresas relatam atrasos na produção e na entrega dos produtos ao cliente. Diferente das montadoras de carros, setor mais afetado pela falta de chips produzidos, principalmente, por fornecedores de Taiwan, nenhuma fábrica de aparelho eletrônico teve até agora que parar completamente a produção no Brasil.

Entre os fabricantes de produtos que contêm semicondutores, houve, no entanto, aumento de 55%, em maio, para 71%, em junho, nos relatos de dificuldade na aquisição do insumo no mercado.

Ainda que o setor tenha sido menos afetado do que a cadeia de produção automotiva pela escassez de chips no mundo, os componentes eletrônicos fornecidos pela Ásia tornaram-se o principal material em falta na indústria de eletroeletrônicos, onde também há grande dificuldade na aquisição de cobre e materiais plásticos, e 26% das empresas estão com estoques de componentes e matérias-primas em nível considerado abaixo do normal.

A maior parte das empresas do setor (42%) trabalha com a previsão de o abastecimento de chips voltar ao normal apenas em meados do ano que vem.

O retrato revelado pela sondagem da Abinee mostra ainda que, como resultado da combinação de escassez, aumento das tarifas de frete, tanto marítimo quanto aéreo, e desvalorização cambial, a pressão vinda do aumento de custo dos componentes é apontada como acima do normal por quase todos fabricantes do setor: 93% dos entrevistados.