Pagbet Logon: Como Acessar A Casa De Apostas Para Apostar

Pagbet Apostas: Conheça Opções De Apostas, Cassino E Mais

Portanto, novos jogos aparecem regularmente zero cassino, ganhando popularidade rapidamente no País e do mundo. Seus jogos cependant populares incluem Aviator, Mines e uma série de diversos entretenimentos. Todos operating-system mercados de jogos se baseiam zero resultado ao final dos 90 minutos de jogo and up. tempo de acréscimo e não incluem prorrogação, gol sobre ouro ou pênaltis, a menos que seja indicado u contrário. Para la cual as apostas sejam válidas, o setor deve ser totalmente determinado. Por exemplo, mais de one, 5 gol em uma partida será salvo se dois bien gols já tiverem sido marcados no final da partida.

Desse modo, há só” “o modo de ze registrar, sendo exatamente os passos expostos anteriormente. Antes disto, releia todos os dados inseridos, conferindo se tudo está correto.”

Pagbet País E Do Mundo – Análise Llena Da Plataforma Sobre Apostas

Além disso, u site de apostas faz parte do popular grupo de empresas com foco esportivo, a NSX Sportsbetting, que conta com Betnacional, MrJack. bet e SimplesBet, entre outras casas. Na sessão sobre apostas ao vivo estão disponíveis muitos dos principais campeonatos, dos mais conocidos esportes oferecidos na plataforma. Caso você tenha alguma dúvida, problemas com u seu Pagbet sign in ou outros temas, é possível coger em contato com o atendimento ao cliente da operadora. A ferramenta está disponível na página principal, no cantar inferior direito weil tela.

Por conta disso, os fãs de modalidade podem encajar palpites durante todo o ano nas maiores ligas profissionais da atualidade. E, tendo em landscape o espaço o qual esse esporte ocupa, quando os Pagbet bônus forem lançados, provavelmente haverá opções disponíveis para futebol. Antes de operating system clientes terem acesso aos mercados ou outras opções de uma casa, é imprecindible que eles possuam contas ativas https://pagbetbrazil.com.br.

Bônus De Boas-vindas Em Pagbet

Para produzir uman aposta modestos, é necessário decidir o evento no qual desejan arriesgar, inserir uma previsão e definir uma quantia. Ao término do evento, caso an aposta sony ericsson confirme, o palpite é vencedor. Essa é a modalidade mais buscada pelos apostadores, principalmente os iniciantes, por não exigirem um noção profundo no setor. Além disso, ao fazer o seu Pagbet login electronic com saldo capacitado em conta,” “você poderá começar a great apostar e a jogar no Pagbet Casino. Lembre-se de que, para isso, é necessário arrancar os Termos e Condições definidos através da operadora. Ao falar sobre jogos para azar, é continuamente importante mencionar pagamentos seguros.

O recurso, caso não conheça, permite finalizar seu palpite aceitando uma oferta dan operadora, num canon normalmente abaixo do que as odds originais preveem. A aba de apostas ao vivo merece mais atenção, já que possui alguma lógica bem própria de funcionamento. A iniciar pelo teu mecanismo central, muchas as opções disponíveis por lá sony ericsson aplicam an eventos ocorrendo no momento. Por fim, a casa vem apresentando também uma cubierta de e-Sports e esportes virtuais. Para os e-Sports, é possível apostar nos torneios oficiais de jogos mais famosos, como League associated with Legends e algumas edições de Call of Duty, apresentando opções personalizadas para a categoria.

Proteção Aos Jogadores

Com isso, não tem que ze preocupar em digitar corretamente o endereço do site de uma PAGBET. Depois de ter feito u login no aplicativo, bastará um harmonie para retornar à casa de apostas e dar u seu palpite. Pode encontrar informações cependant detalhadas sobre políticas de Jogo Responsável” “no site oficial. Por lá, existe uma área inteira dedicada relacionada essas questões, que apresenta políticas de uma casa, dicas, opções para ativar distintos limitações, entre diversos. Na hora sobre montar um palpite, os clientes das plataformas têm the possibilidade de analisar diferentes tipos sobre dados 1xbet aviator game.

A organizacion traz um catálogo extenso de apostas esportivas e jogos de cassino. As opções podem ser acessadas pelo menu superior ou lateral do site de apostas. A Pagbet proporciona 13 modalidades de apostas, um número relativamente menor na comparação com outras casas do setor.

Pagbet App

O cash away é um recurso de retirada antecipada que está actualidad na Pagbet apostas e em diferentes sites de apostas. Ele pode ser disponibilizado a qualquer momento para palpites selecionados, ainda em andamento no boletim. Por fim, partindo para os mercados de jogadores, mhh opção Primeiro Marcador é possível apostar em quem abrirá o placar. Por aqui, a maioria do time escalado pode receber palpites, independentemente das posições. Além disso, the última das mais importantes áreas da trampolín é o cassino ao vivo.

Combinando facilidade de uso, uma vasta gama sobre opções de apostas e pagamentos rápidos, o Pagbet Application é uma muy buena escolha para operating system apostadores. Ter alguma versão móvel carry out site é neste momento muito importante pra os jogadores brasileiros modernos. A plataforma de apostas oferece uma versão otimizada do site, que funciona em tecnologia HTML5 e accede adaptar an interface a qualquer tamanho de tela. Com o seu smart phone, é possível arriesgar em esportes, seguir” “a partidas ao festón ou jogar jogos de cassino. Não há um aplicativo específico do Pagbet para IOS electronic Android no cassino. Se você provocar criar várias conta, todas as suas contas com essa casa de apostas poderão ser bloqueadas.

Apostas Ao Palpitante Na Pagbet

“Em menos de um mês ele veio falar comigo e precisei contar a verdade. Foi horrível”, conta. Esse é um 2 muitos relatos para quem tem enfrentado problemas com dependência em jogos zero Brasil. Em uma comunidade online, quase 500 pessoas se reúnem para desabafar e buscar apoio para parar de perder dinheiro at the retomar o controle de suas vidas. Resumidamente, cash-out et saque é uma função de retirada antecipada que tem a possibilidade de ser disponibilizada pra alguns eventos esportivos selecionados. Ao servir ativado, an expresamente é cancelada at the os clientes resgatam uma porcentagem 2 valores de regreso. Confira mais informações sobre an odaie na nossa seção de perguntas at the respostas.

Contudo, uma vez que os clientes tenham noção dos orçamentos, será possível gerenciar as bancas. Tudo isso com base em critérios técnicos seguidos pelos maiores apostadores profissionais. A disponibilidade perform recurso varia muito conforme a região do usuário at the o evento escolhido. Isso se precisa a questões tais como regras de transmissão e direitos sobre acesso. Sobre a great imagem e och, ambos são de qualidade, exigindo uma conexão estável e dentro do padrão para funcionar. Também, os mercados a disposição são mais variados no início, com alguns se fechando conforme o evento se aproxima do fim.

Apostas Em Jogos Sobre Futebol

Isso não apenas eleva an experiência carry out usuário, mas também coloca a PagBet na vanguarda weil inovação tecnológica simply no setor. Também não há uma página de promoções, u que indica que no momento não tem também ofertas para quem já está cadastrado. Existem atualmente várias categorias de Pagbet apostas com diferentes características no website da operadora.

Isso acontece gra?as a facilidade de conexão e apostas de qualquer local. O aplicativo pode ser encontrado the partir do site mobile no food selection ou na part inferior do web site. Entretanto, é imprecindible acessar an proyecto utilizando aparelhos Android, visto que ela pode detectar gadgets incompatíveis e não exibir o application.

Palmeiras X Vasco – Odds

Os meios de apostas incluem vencedor do jogo, total de pontos, handicap, e apostas em quartos específicos, permitindo aos enthusiasts por basquete diferentes formas de engajamento. O que a plataforma oferece é a possibilidade para acompanhar as estatísticas e variação dieses odds em pace real. Desta maneira, você tem uma ferramenta para ght auxiliar nas apostas ao vivo. Com o registro feito, basta clicar mhh opção de depósito, que está no alto da página.

São páginas específicas de games e também ferramentas que te auxiliam na hora de apostar. Confira” “mhh sequência as principais opções disponíveis at the como funcionam cada possibilidade. Para quem já está habituado com o setor de apostas esportivas, ver bônus é algo muito comum.

Perguntas Frequentes Sobre Um Pagbet

Esta análise será útil para iniciantes ou jogadores possuindo pouca experiência no ano de jogos no website da Pagbet. Em alguns momentos, até mesmo jogadores experientes tem a possibilidade de aprender algo novo. Embora o Pagbet App seja elogiável em muitos aspectos, como sua user interface intuitiva e gama de opções para apostas, ainda há espaço para melhorias. Uma abordagem notevole seria considerar an implementação de ofertas exclusivas para os usuários do aplicativo. Mas, no app Pagbet e simply no site, você com certeza encontrará ótimas opções.

O Resultado Final é o mercado zero qual os clientes podem apostar mhh vitória de 1 dos times systems empate no game. Também conhecido asi como 1×2, ele é uma das opções de apostas mais procuradas tanto durante novatos quanto pelos veteranos. Neste dia, não existem Pagbet bônus de boas-vindas disponíveis para esportes ou cassino. Porém, os clientes tem a possibilidade de acompanhar as redes sociais da incapere para ficar atentos às notícias e novidades.

Pagbet

O internet site traz ainda muitos recursos importantes pra an experiência possuindo apostas esportivas. Porém, em alguns pontos a plataforma não atende ao que é visto em média do ramo. Parte fundamental weil avaliação do PAGBET app é que a plataforma é segura.

Muitas casas de apostas esportivas trazem ofertas para recém-lan?ados jogadores. As apostas online são atividades secundárias e aleatórias, que, assim asi como uma partida para futebol, podem conseguir resultados variados. Desse modo, além sobre estabelecer limites electronic procurar por informações adicionais, os clientes podem acessar because operadoras de maneira consciente.

Como Fazer Um Seu Cadastro Na Pagbet Pelo Celular

Confira a new seguir o passo a passo afin de baixar e hacer esse aplicativo. No Mines, os clientes têm an op??o de apostar simply no jogo de sector minado da Pag” “gamble. Nessa opção é possível programar a quantidade de bombas pra jogar uma rodada cujo objetivo é selecionar espaços zero painel quadriculado tentando evitar os explosivos. Ambas as funções estão disponíveis em mercados selecionados pelan empresa, sendo indicados por símbolos específicos.

Após submeter os documentos, an equipe weil PagBet analisará as informações. Uma sucesión que sua pagbet minha conta for verificada, você receberá uma notificação durante e-mail, e todas as funcionalidades da plataforma estarão disponíveis para seu uso. A PagBet entende profundamente a paixão dos brasileiros por jogos que combinam sorte, estratégia electronic muita emoção. Tradicionalmente amado pelas famílias brasileiras, a versão online trazida através da PagBet oferece diversas variantes que garantem horas de diversão.

Marathonbet Bônus 2024: Ganhe Até R$400

Dito isso, um chat ao vivo 24 hrs com atendimento no ano de português está disponível tanto pelo” “internet site quanto no app. O depósito no website versão de aplicativo da Pagbet pode ser efetuado sobre algumas maneiras e não é tão abrangente comparada a great outras casas para apostas. Um ponto forte é a good empresa ser muito inclusiva com teus clientes de distintos realidades e oferece baixos limites de quantia mínima. A Pagbet é uma plataforma de apostas online que atua licenciadamente no Brasil e em diferentes países do mundo. Dessa forma, mesmo sem nenhum Pagbet codigo bonus, operating system clientes registrados mhh casa podem remontar diferentes tipos para palpites.

Com alguma biblioteca vasta la cual inclui títulos globais e jogos desenvolvidos especialmente para u público brasileiro, since slots são the definição de diversidade e entretenimento. Temas variados, desde aventuras amazônicas até festividades de carnaval, garantem que haja piza para todos. Jogos com jackpots progressivos, por sua sucesión, oferecem a chance de ganhos substanciais, adicionando uma caterva extra de excitação.

Bônus Disponível E Como Abrir Uma Conta Para Obtê-lo

Desde o seu início, foram lançadas plans regulatória e mais quatro portarias, entre as quais since de Meios de Pagamento e para Autorização. Estão previstas pelo menos também sete portarias, entre elas as de Direitos e Obrigações e a para Jogo Responsável, o qual são focadas em questões das externalidades negativas do jogo. Além disso, diz Benites, as plataformas utilizam ferramentas individualizadas para evitar excessos.

Nesse sentido, os clientes precisam seguir em territórios válidos e possuir fundos válidos de Pagbet apostas nas conta. Diferentes categorias sobre apostas ligadas ao resultado, total de pontos e jogadores estão disponíveis nas modalidades cobertas pelan empresa. Assim, ela pode ser uma opção útil pra apostadores com distintas estilos e preferências. Entretanto, quando the casa começar an oferecer Pagbet bônus de boas-vindas at the outras ofertas, estes recursos podem assumir diferentes formatos e possuir distintos custos.

Como Falar Possuindo O Suporte De Uma Pagbet?

Dessa forma, confira, a new seguir, um andatura a passo modestos para baixar u aplicativo da odaie de apostas. Assim, faça seus palpites e curta operating-system games mais populares do mercado zero seu dispositivo móvel. As Pagbet apostas são os principais serviços disponibilizados através da operadora para operating-system clientes brasileiros no site oficial at the app. Assim, quaisquer jogadores com mais de 18 anos têm a possibilidade de acessar operating system jogos, mesas ao vivo e mercados esportivos da incapere. Após fazer u seu Pagbet logon na operadora, você estará apto a realizar um depósito e começar an apostar.

Assim, os clientes o qual procuram por estas promoções podem ficar atentos às novidades e notícias pelas redes sociais lalu empresa. Não, a great empresa ainda não planejou nenhuma promoção ou bônus Pagbet para seus recém-lan?ados usuários. Mas isto não impede la cual, futuramente, an companhia decida realizar um marketing com vantagens e benefícios para os seus usuários. Ao utilizar um pix, a quantidade mínima disponibilizada para o usuário depositar é surpreendente, possuindo valor de R$1, 00. A companhia oferece para operating system seus clientes 1 saque mínimo sobre R$20, 00, assim como o valor é processado em até 1h, após confirmação.

Dafabet Application: Aprenda A Baixar No Android E Ios

Neste momento, os novos apostadores que se registrarem utilizando o código promocional Pagbet tem a possibilidade de resgatar ofertas. Dito isso, no venidero, diferentes Pagbet bônus de boas-vindas têm a possibilidade para serem lançados para esportes e cassino. Basta se deliberar no site, realizar o seu 1º depósito e procurar a competição la cual você deseja dar. Após isso, escolha uma partida, ou mais, e selecione as opções sobre mercados oferecidas pra sua aposta. A plataforma oferece opção para filtrar since partidas que estão acontecendo ao palpitante e estão totalmente disponíveis para apostas em tempo genuine.

Você pode encontrar essa informação no canto excellent direito do site, ao lado do número de usuário. O site da Pagbet é otimizado para todos operating-system tipos de dispositivos móveis. Para utilizar a versão móvel, basta acessar o recurso a fastidiar do gadget. Todas as opções de pagamento estão mhh moda entre os jogadores do Brasil.

(function () { var searchreplace = (function () { 'use strict'; var Cell = function (initial) { var value = initial; var get = function () { return value; }; var set = function (v) { value = v; }; var clone = function () { return Cell(get()); }; return { get: get, set: set, clone: clone }; }; var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); function isContentEditableFalse(node) { return node && node.nodeType === 1 && node.contentEditable === 'false'; } function findAndReplaceDOMText(regex, node, replacementNode, captureGroup, schema) { var m; var matches = []; var text, count = 0, doc; var blockElementsMap, hiddenTextElementsMap, shortEndedElementsMap; doc = node.ownerDocument; blockElementsMap = schema.getBlockElements(); hiddenTextElementsMap = schema.getWhiteSpaceElements(); shortEndedElementsMap = schema.getShortEndedElements(); function getMatchIndexes(m, captureGroup) { captureGroup = captureGroup || 0; if (!m[0]) { throw new Error('findAndReplaceDOMText cannot handle zero-length matches'); } var index = m.index; if (captureGroup > 0) { var cg = m[captureGroup]; if (!cg) { throw new Error('Invalid capture group'); } index += m[0].indexOf(cg); m[0] = cg; } return [ index, index + m[0].length, [m[0]] ]; } function getText(node) { var txt; if (node.nodeType === 3) { return node.data; } if (hiddenTextElementsMap[node.nodeName] && !blockElementsMap[node.nodeName]) { return ''; } txt = ''; if (isContentEditableFalse(node)) { return '\n'; } if (blockElementsMap[node.nodeName] || shortEndedElementsMap[node.nodeName]) { txt += '\n'; } if (node = node.firstChild) { do { txt += getText(node); } while (node = node.nextSibling); } return txt; } function stepThroughMatches(node, matches, replaceFn) { var startNode, endNode, startNodeIndex, endNodeIndex, innerNodes = [], atIndex = 0, curNode = node, matchLocation = matches.shift(), matchIndex = 0; out: while (true) { if (blockElementsMap[curNode.nodeName] || shortEndedElementsMap[curNode.nodeName] || isContentEditableFalse(curNode)) { atIndex++; } if (curNode.nodeType === 3) { if (!endNode && curNode.length + atIndex >= matchLocation[1]) { endNode = curNode; endNodeIndex = matchLocation[1] - atIndex; } else if (startNode) { innerNodes.push(curNode); } if (!startNode && curNode.length + atIndex > matchLocation[0]) { startNode = curNode; startNodeIndex = matchLocation[0] - atIndex; } atIndex += curNode.length; } if (startNode && endNode) { curNode = replaceFn({ startNode: startNode, startNodeIndex: startNodeIndex, endNode: endNode, endNodeIndex: endNodeIndex, innerNodes: innerNodes, match: matchLocation[2], matchIndex: matchIndex }); atIndex -= endNode.length - endNodeIndex; startNode = null; endNode = null; innerNodes = []; matchLocation = matches.shift(); matchIndex++; if (!matchLocation) { break; } } else if ((!hiddenTextElementsMap[curNode.nodeName] || blockElementsMap[curNode.nodeName]) && curNode.firstChild) { if (!isContentEditableFalse(curNode)) { curNode = curNode.firstChild; continue; } } else if (curNode.nextSibling) { curNode = curNode.nextSibling; continue; } while (true) { if (curNode.nextSibling) { curNode = curNode.nextSibling; break; } else if (curNode.parentNode !== node) { curNode = curNode.parentNode; } else { break out; } } } } function genReplacer(nodeName) { var makeReplacementNode; if (typeof nodeName !== 'function') { var stencilNode_1 = nodeName.nodeType ? nodeName : doc.createElement(nodeName); makeReplacementNode = function (fill, matchIndex) { var clone = stencilNode_1.cloneNode(false); clone.setAttribute('data-mce-index', matchIndex); if (fill) { clone.appendChild(doc.createTextNode(fill)); } return clone; }; } else { makeReplacementNode = nodeName; } return function (range) { var before; var after; var parentNode; var startNode = range.startNode; var endNode = range.endNode; var matchIndex = range.matchIndex; if (startNode === endNode) { var node_1 = startNode; parentNode = node_1.parentNode; if (range.startNodeIndex > 0) { before = doc.createTextNode(node_1.data.substring(0, range.startNodeIndex)); parentNode.insertBefore(before, node_1); } var el = makeReplacementNode(range.match[0], matchIndex); parentNode.insertBefore(el, node_1); if (range.endNodeIndex < node_1.length) { after = doc.createTextNode(node_1.data.substring(range.endNodeIndex)); parentNode.insertBefore(after, node_1); } node_1.parentNode.removeChild(node_1); return el; } before = doc.createTextNode(startNode.data.substring(0, range.startNodeIndex)); after = doc.createTextNode(endNode.data.substring(range.endNodeIndex)); var elA = makeReplacementNode(startNode.data.substring(range.startNodeIndex), matchIndex); for (var i = 0, l = range.innerNodes.length; i < l; ++i) { var innerNode = range.innerNodes[i]; var innerEl = makeReplacementNode(innerNode.data, matchIndex); innerNode.parentNode.replaceChild(innerEl, innerNode); } var elB = makeReplacementNode(endNode.data.substring(0, range.endNodeIndex), matchIndex); parentNode = startNode.parentNode; parentNode.insertBefore(before, startNode); parentNode.insertBefore(elA, startNode); parentNode.removeChild(startNode); parentNode = endNode.parentNode; parentNode.insertBefore(elB, endNode); parentNode.insertBefore(after, endNode); parentNode.removeChild(endNode); return elB; }; } text = getText(node); if (!text) { return; } if (regex.global) { while (m = regex.exec(text)) { matches.push(getMatchIndexes(m, captureGroup)); } } else { m = text.match(regex); matches.push(getMatchIndexes(m, captureGroup)); } if (matches.length) { count = matches.length; stepThroughMatches(node, matches, genReplacer(replacementNode)); } return count; } var FindReplaceText = { findAndReplaceDOMText: findAndReplaceDOMText }; var getElmIndex = function (elm) { var value = elm.getAttribute('data-mce-index'); if (typeof value === 'number') { return '' + value; } return value; }; var markAllMatches = function (editor, currentIndexState, regex) { var node, marker; marker = editor.dom.create('span', { 'data-mce-bogus': 1 }); marker.className = 'mce-match-marker'; node = editor.getBody(); done(editor, currentIndexState, false); return FindReplaceText.findAndReplaceDOMText(regex, node, marker, false, editor.schema); }; var unwrap = function (node) { var parentNode = node.parentNode; if (node.firstChild) { parentNode.insertBefore(node.firstChild, node); } node.parentNode.removeChild(node); }; var findSpansByIndex = function (editor, index) { var nodes; var spans = []; nodes = global$1.toArray(editor.getBody().getElementsByTagName('span')); if (nodes.length) { for (var i = 0; i < nodes.length; i++) { var nodeIndex = getElmIndex(nodes[i]); if (nodeIndex === null || !nodeIndex.length) { continue; } if (nodeIndex === index.toString()) { spans.push(nodes[i]); } } } return spans; }; var moveSelection = function (editor, currentIndexState, forward) { var testIndex = currentIndexState.get(); var dom = editor.dom; forward = forward !== false; if (forward) { testIndex++; } else { testIndex--; } dom.removeClass(findSpansByIndex(editor, currentIndexState.get()), 'mce-match-marker-selected'); var spans = findSpansByIndex(editor, testIndex); if (spans.length) { dom.addClass(findSpansByIndex(editor, testIndex), 'mce-match-marker-selected'); editor.selection.scrollIntoView(spans[0]); return testIndex; } return -1; }; var removeNode = function (dom, node) { var parent = node.parentNode; dom.remove(node); if (dom.isEmpty(parent)) { dom.remove(parent); } }; var find = function (editor, currentIndexState, text, matchCase, wholeWord) { text = text.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); text = text.replace(/\s/g, '[^\\S\\r\\n]'); text = wholeWord ? '\\b' + text + '\\b' : text; var count = markAllMatches(editor, currentIndexState, new RegExp(text, matchCase ? 'g' : 'gi')); if (count) { currentIndexState.set(-1); currentIndexState.set(moveSelection(editor, currentIndexState, true)); } return count; }; var next = function (editor, currentIndexState) { var index = moveSelection(editor, currentIndexState, true); if (index !== -1) { currentIndexState.set(index); } }; var prev = function (editor, currentIndexState) { var index = moveSelection(editor, currentIndexState, false); if (index !== -1) { currentIndexState.set(index); } }; var isMatchSpan = function (node) { var matchIndex = getElmIndex(node); return matchIndex !== null && matchIndex.length > 0; }; var replace = function (editor, currentIndexState, text, forward, all) { var i, nodes, node, matchIndex, currentMatchIndex, nextIndex = currentIndexState.get(), hasMore; forward = forward !== false; node = editor.getBody(); nodes = global$1.grep(global$1.toArray(node.getElementsByTagName('span')), isMatchSpan); for (i = 0; i < nodes.length; i++) { var nodeIndex = getElmIndex(nodes[i]); matchIndex = currentMatchIndex = parseInt(nodeIndex, 10); if (all || matchIndex === currentIndexState.get()) { if (text.length) { nodes[i].firstChild.nodeValue = text; unwrap(nodes[i]); } else { removeNode(editor.dom, nodes[i]); } while (nodes[++i]) { matchIndex = parseInt(getElmIndex(nodes[i]), 10); if (matchIndex === currentMatchIndex) { removeNode(editor.dom, nodes[i]); } else { i--; break; } } if (forward) { nextIndex--; } } else if (currentMatchIndex > currentIndexState.get()) { nodes[i].setAttribute('data-mce-index', currentMatchIndex - 1); } } currentIndexState.set(nextIndex); if (forward) { hasMore = hasNext(editor, currentIndexState); next(editor, currentIndexState); } else { hasMore = hasPrev(editor, currentIndexState); prev(editor, currentIndexState); } return !all && hasMore; }; var done = function (editor, currentIndexState, keepEditorSelection) { var i, nodes, startContainer, endContainer; nodes = global$1.toArray(editor.getBody().getElementsByTagName('span')); for (i = 0; i < nodes.length; i++) { var nodeIndex = getElmIndex(nodes[i]); if (nodeIndex !== null && nodeIndex.length) { if (nodeIndex === currentIndexState.get().toString()) { if (!startContainer) { startContainer = nodes[i].firstChild; } endContainer = nodes[i].firstChild; } unwrap(nodes[i]); } } if (startContainer && endContainer) { var rng = editor.dom.createRng(); rng.setStart(startContainer, 0); rng.setEnd(endContainer, endContainer.data.length); if (keepEditorSelection !== false) { editor.selection.setRng(rng); } return rng; } }; var hasNext = function (editor, currentIndexState) { return findSpansByIndex(editor, currentIndexState.get() + 1).length > 0; }; var hasPrev = function (editor, currentIndexState) { return findSpansByIndex(editor, currentIndexState.get() - 1).length > 0; }; var Actions = { done: done, find: find, next: next, prev: prev, replace: replace, hasNext: hasNext, hasPrev: hasPrev }; var get = function (editor, currentIndexState) { var done = function (keepEditorSelection) { return Actions.done(editor, currentIndexState, keepEditorSelection); }; var find = function (text, matchCase, wholeWord) { return Actions.find(editor, currentIndexState, text, matchCase, wholeWord); }; var next = function () { return Actions.next(editor, currentIndexState); }; var prev = function () { return Actions.prev(editor, currentIndexState); }; var replace = function (text, forward, all) { return Actions.replace(editor, currentIndexState, text, forward, all); }; return { done: done, find: find, next: next, prev: prev, replace: replace }; }; var Api = { get: get }; var open = function (editor, currentIndexState) { var last = {}, selectedText; editor.undoManager.add(); selectedText = global$1.trim(editor.selection.getContent({ format: 'text' })); function updateButtonStates() { win.statusbar.find('#next').disabled(Actions.hasNext(editor, currentIndexState) === false); win.statusbar.find('#prev').disabled(Actions.hasPrev(editor, currentIndexState) === false); } function notFoundAlert() { editor.windowManager.alert('Could not find the specified string.', function () { win.find('#find')[0].focus(); }); } var win = editor.windowManager.open({ layout: 'flex', pack: 'center', align: 'center', onClose: function () { editor.focus(); Actions.done(editor, currentIndexState); editor.undoManager.add(); }, onSubmit: function (e) { var count, caseState, text, wholeWord; e.preventDefault(); caseState = win.find('#case').checked(); wholeWord = win.find('#words').checked(); text = win.find('#find').value(); if (!text.length) { Actions.done(editor, currentIndexState, false); win.statusbar.items().slice(1).disabled(true); return; } if (last.text === text && last.caseState === caseState && last.wholeWord === wholeWord) { if (!Actions.hasNext(editor, currentIndexState)) { notFoundAlert(); return; } Actions.next(editor, currentIndexState); updateButtonStates(); return; } count = Actions.find(editor, currentIndexState, text, caseState, wholeWord); if (!count) { notFoundAlert(); } win.statusbar.items().slice(1).disabled(count === 0); updateButtonStates(); last = { text: text, caseState: caseState, wholeWord: wholeWord }; }, buttons: [ { text: 'Find', subtype: 'primary', onclick: function () { win.submit(); } }, { text: 'Replace', disabled: true, onclick: function () { if (!Actions.replace(editor, currentIndexState, win.find('#replace').value())) { win.statusbar.items().slice(1).disabled(true); currentIndexState.set(-1); last = {}; } } }, { text: 'Replace all', disabled: true, onclick: function () { Actions.replace(editor, currentIndexState, win.find('#replace').value(), true, true); win.statusbar.items().slice(1).disabled(true); last = {}; } }, { type: 'spacer', flex: 1 }, { text: 'Prev', name: 'prev', disabled: true, onclick: function () { Actions.prev(editor, currentIndexState); updateButtonStates(); } }, { text: 'Next', name: 'next', disabled: true, onclick: function () { Actions.next(editor, currentIndexState); updateButtonStates(); } } ], title: 'Find and replace', items: { type: 'form', padding: 20, labelGap: 30, spacing: 10, items: [ { type: 'textbox', name: 'find', size: 40, label: 'Find', value: selectedText }, { type: 'textbox', name: 'replace', size: 40, label: 'Replace with' }, { type: 'checkbox', name: 'case', text: 'Match case', label: ' ' }, { type: 'checkbox', name: 'words', text: 'Whole words', label: ' ' } ] } }); }; var Dialog = { open: open }; var register = function (editor, currentIndexState) { editor.addCommand('SearchReplace', function () { Dialog.open(editor, currentIndexState); }); }; var Commands = { register: register }; var showDialog = function (editor, currentIndexState) { return function () { Dialog.open(editor, currentIndexState); }; }; var register$1 = function (editor, currentIndexState) { editor.addMenuItem('searchreplace', { text: 'Find and replace', shortcut: 'Meta+F', onclick: showDialog(editor, currentIndexState), separator: 'before', context: 'edit' }); editor.addButton('searchreplace', { tooltip: 'Find and replace', onclick: showDialog(editor, currentIndexState) }); editor.shortcuts.add('Meta+F', '', showDialog(editor, currentIndexState)); }; var Buttons = { register: register$1 }; global.add('searchreplace', function (editor) { var currentIndexState = Cell(-1); Commands.register(editor, currentIndexState); Buttons.register(editor, currentIndexState); return Api.get(editor, currentIndexState); }); function Plugin () { } return Plugin; }()); })();