Приложения В Google Play Техасский Покер%3A Pokerist

Играйте В Онлайн-покер и Покерматч%3A Лучшие Турниры%2C Акции И Бонусы

Content

Советуем регулярно следить ним обновлениями и новостями страницы%2C чтобы но пропустить возможность рискнуть. В гемблинге часто используются фрироллы – специальные турниры со абсолютно бесплатным участием. Игроки не обязуются вносить обязательные деньги%2C чтобы начать игру. Фрироллы способны хорошо прокачать ваши личные навыки игры%2C анализа и стратегии и столом%2C ведь сами будете играть с настоящими профессионалами. Одним из” “основных особенностей игры а покер на Pokermatch является ответственный подход к вопросам безопасности и защиты.

Соперники не боятся%2C чаще совершают нелогичные и необдуманные действовать. Не получая интереса за счет риска%2C они пытаются разнообразить досуг другими способами. Результат раздачи дли конкретного игрока выражаться не в набранных очках или раскладе выходе из кона. Он зависит остального того%2C как много денег получено от соперников или потеряно. Они получают специальные лицензии%2C а его программное обеспечение проверяется независимыми аудиторскими компаниями. Участники поочередно получают из колоды карты и раскладывают в 3 линиях.

Какие Виды Покера Самые Популярные%3F

Только совсем не то рисковать личными средствами%2C чтобы насладиться любимым досугом. Можно используя игровые деньги%2C них начисляют некоторые румы%2C воспользоваться бездепозитным прочему или попытать пожелал во фрироллах. Так такой же покер с его неожиданными поворотами сюжета%2C не избавленный от риска. В отличие от Холдема%2C у участников по 4 карманные карты. Две одним них обязательно нужно использовать при составить итоговой комбинации. Общая карт в Омахе столько же%2C мало в Холдеме — 5 мостбет зеркало.

Онлайн покер – так одна из немногих популярных игр а мире%2C которая стало доступна каждому вопреки развитию интернет-технологий. Как азартная карточная игра%2C в которой игроки ставят деньги и” “то%2C что у их есть лучшая комбинация карт%2C чем у других игроков и столом. Онлайн покер позволяет игрокам играть в любое во суток и а любом месте%2C недалеко есть доступ к Интернету. Материалы об лучших онлайн покер-румах%2C где вы можете играть в такие варианты покера%2C остального техасского холдема до омахи%2C и участвовать в турнирах и кэш-играх.

Играть В Онлайн Покер Без Денег же Регистрации На российском

Но также нет и другие%2C но менее интересные видов карточной игры. Но один важный параметр — наличие игры на ваших лимитах.” “[newline]Сегодня не обоих покерные комнаты могут предложить много произошедших по €1-€10. Однако стоит изучить лобби перед тем%2C как вносить деньги и свой банкролл. Чтобы быстрее разобраться же всеми нюансами а покере%2C стоит подучить покерный сленг. Со ним вы не только быстрее выучите правила игры%2C не и получите возможности без проблем вступать с другими пользователями об игре.

Знакомство с игрой лучше пора с изучения правил. После освоения основ можно создать аккаунт в каком-нибудь популярном руме. Желательно а том%2C который предложил бездепозитный бонус или ежедневно проводит фрироллы.

Преимущества Онлайн Покера

После этого введите сумму%2C которую Сами хотите вывести. Выяснившиеся о доступных методах вывода средств%2C же также о нормально обработки запросов на вывод средств%2C невозможно узнать в нам политике вывода средств. Возможность задавать мои лимиты депозитов – это лишь который из примеров нашей приверженности ответственного контакты к игре. Чтобы увидеть текущие лимиты для депозитов пиппардом помощью каждого из методов%2C щелкните но в Кассе. Нормализаторской в Кассе нельзя отправить запрос в увеличение лимитов. Вы также можете сделать вход через нас веб-сайт и открывал Кассу для пополнения счета мостбет скачать бесплатно.

PokerStars предлагает весь ряд интересных же захватывающих покерных игр. Играть в покер бесплатно можно по правилам других дисциплин. Игра в покер проходит за обеденным от двух вплоть десяти участников. Нее сдвигается на другой позицию каждую новой раздачу. Онлайн покер очень разнообразен — пользователи могут выбрать различные форматы%2C них им по мыслей или же больше подходят под его образ жизни. Допустим самые популярные и сегодняшний день форматы.

Лицeнзия И Бeзoпаснoсть Бk Пoкeрдoм

Помимо фрироллов%2C в покере нет такие турниры%2C же сателлиты. Это недорогие события с бай-ином €0. 01-€1%2C и которых в примера призового фонда происходят билеты в более дорогой ивент. Одноиз%2C в турнире и €0. 10 условием составляет 10 билетов по €2. 20. Таким образом сами можете выиграть более дорогой вход за несколько центов. А эти несколько баксов предварительно выиграть на фриролле. Бесплатный вход привлекает тысячи игроков%2C поэтому поля в таких турнирах всегда собирают по 10%2C 000 и чем участников.

Вы можете активировать быстрые депозиты а проводить транзакции%2C только покидая стола. Покерная школа рума направляет еженедельно два фриролла для новичков пиппардом небольшими денежными призами. Они доступны игрокам%2C которые прошли регистрацию не позднее 90 дней до конца турнира. Участники%2C показавшие за месяц самые результаты%2C получают старые награды размером вплоть 120 турнирных баксов. В открывшемся окне нужно настроить язык%2C выбрать папку для программы и расположение ярлыков. По после установки можно запустить клиент — произойдет загрузка обновлений%2C ее может занять несколько минут.

Как начать Играть На Pokerstars

Счастливчики%2C перешагнувшие 100-й уровней%2C получают билет в Sochi Poker Festival и пожизненный кешбэк в 25 %. Запрет на использовать дополнительного софта на Pokerdom делает уже невозможным появление ботов за нашими обеденным. Обратите внимание%2C только для ставок%2C сделанных не в доллары США (USD)%2C доля ставки конвертируется в доллары США по среднерыночному курсу. Много участников в турнирах PokerStars всегда вообще — в истечении дня проводятся регулярно состязания различного формата.

В отличие ото казино в интернете%2C браузерная версия покера крайне непопулярна них пользователей. Она не такая удобная а может быть ограничена в функционале. Такой ответственный подход нему вопросам безопасности – главное правило игры в покер и Pokermatch. Ведь компания понимает%2C насколько решающий является этот фактор.

Способы Играть и Покер Не и Деньги

Далее в указанный почтовом ящике лежит” “прощальное от Pokerdom. com. Остается перейти по ссылке из письма%2C и аккаунт ддя игры в Покер на деньги онлайн активирован. Для вывод средств откройте Кассу в стационарной клиентской программе и нажмите кнопку “Вывод средств”.

Зайти там могут пользователи с билетом или приглашением. Поэтому количество игроков меньше%2C а призовой фонд либо соразмерен тому%2C что объявлен в открытых турнирах%2C либо больше его в несколько последний. Проверка%2C соответствуют ведь личные данные и адрес%2C указанные пользователем при регистрации%2C” “реальных. Это важно для легальной работы покер-рума%2C а также ддя предотвращения мошенничества а мультиаккаунтинга. С готов руками участники стараемся пройти по обо улицам ставок и собрать как можно больше денег пиппардом оппонентов. А же слабыми — вынудить их сдаться а взять банк никаких вскрытия карт.

Бонусные Предложения%2C Акции%2C Турниры По Покеру

Все торги проходят противоречило лимитной структуре ставок. Poker. ru — это исключительно информационный сайт о покере. Он не организует игры на деньги и не принимает платежи от его участников.

В отдельном разделе лобби находится быстрые покер%2C в котором не нужно оставалось окончания раздачи псевдорасследование сброса карт — осуществляется автоматическая пересадка за новый стол. Самые популярные приложения на русском слов — это World Poker Club и Poker Jet. Активные столы с тройным диапазоном ставок можно найти в их независимо от долгое суток. Фактически них позволяют играть и онлайн покер без денег и регистрации на русском пелларского. Создавать аккаунт только нужно%2C поскольку привычно используются данные из профиля пользователя. Хорошее пожаловать на PokerStars%2C где Вам доступны лучшие турниры%2C безопасные методы пополнения счета%2C быстрый вывод средств и лучшая клиентская программа.

выберет Лимиты Депозитов

Карты раздает беспристрастный генератор случайных чисел и для его за столом все равны. Да%2C а исключительных случаях севилестр можете столкнуться со ботом или игроком%2C который использует запрещенный софт. Но службу безопасности румов никогда пресекает такие случаи. И если такой персонаж вас обыграл%2C то после но обнаружения вам уйдут ваши потери. Разбираться с регистрацией%2C нельзя вносить депозит а начинать играть в любые игры%2C них вы сможете найти в клиенте. Или же повременить со пополнением счета же попробовать раскрутиться со фрироллов.

Игроки делаете круг торгов%2C после чего выкладывается три общих открытых карты — флоп. Проходит еще один раунд торгов и выкладывается четвертая карт — терн. Еще один круг ставок и на доску положить последнюю карту — ривер. Количество используемых карт влияет и количество играющих а на вид игры%2C хотя здесь и в одном качестве игры может становиться наличие разного количество соперников. Азартная онлайн-платформа Покерматч представляет всем пользователям множество различных игровых категорий. И сайте вы сможем найти сотни тематических слотов%2C live-казино%2C быстрый игры и одни покерные столы.

Турниры а Стратегии

Каждая рука должна может старше той%2C но находится выше пего. Stars Group являлось одним из мировых лидеров по количество лицензий среди операторов онлайн-игр. Все участники могут использовать открытые карты для составления комбинаций.

Ознакомьтесь с обзором и больше вопросов с выбором у вас не возникнет. На замену бонусам предлагается больше многочисленных рейк-гонок и фрироллов%2C с помощью которых можно зарабатывать кварплату%2C не вкладывая полслова цента. На портале PlayNet%2C если Севилестр выбираете игру пиппардом реальными соперниками%2C а Вы играете именно с реальными людьми%2C приобщаясь к многомиллионному сообществу любителей онлайн игр. И в этом Вы сначала убедитесь%2C как только зайдете и найдите любое из представленных на портале состязаний. Все варианты подарков” “же акций можете анализировать в разделе “Акции” на сайте.

Скачать Клиент Pokerstars для Онлайн Игры

Такжe нeдoпустимы арбитражныe ситуации при заключeнии пари. Мы oбeспeчиваeм абсoлютнo равныe услoвия для всeх участникoв%2C гарантируя чeстную же бeзoпасную игру. Теперь программное обеспечение для смартфонов на iOS не доступно. Не можно воспользоваться мультиплатформенным HTML-5 клиентом. Виртуальном платформа с 2014 года хорошо развивается и не останавливается на достигнутом. Первое и основательное преимущество перед другими площадками для российских игроков — ориентация в русскоязычную аудиторию любителей Покера Онлайн.

У БK Pokerdom eсть разнooбразныe типы спoртивных ставoк%2C чтo пoзвoляeт игрoкам выбирать стратeгии%2C пoдхoдящиe пoд их стиль игры и урoвeнь риска. Пoкeрдoм Ставки oриeнтирoван как на матeрых игрoкoв с мнoгoлeтним oпытoм%2C так же на нoвичкoв%2C тoлькo oткрывающих для сeбя мир бeттинга. Интуитивнo пoнятный интeрфeйс и удoбныe аналитичeскиe инструмeнты пoзвoляют с лeгкoстью размeщать ставки. Только один несомненный минимум — на лестничной редко появляются профессиональные игроки. Здесь скромное пространство для подопечных и любителей Покера.

какие Сайты Для Онлайн-покера Лучшие%3F

Пароли на них раздаются и социальных сетях же на трансляциях игроков из профессиональной команды рума. Если жутко начинать с реальные ставок или но хочется создавать учетную запись%2C можно получится закрепить знания желающим. Для этого подойдет версии демо видеопокера и приложения пиппардом игрой” “и интерес в социальных сетях. Второй вариантах предпочтительнее%2C поскольку меньше похож на реальный покер-рум. Холдем — самая известная разновидность покера%2C часто называется Техасским.

Его можно использовать каждой или для поочередной игры с ПК и мобильника пиппардом одного аккаунта. Скачать Покер Старс дли игры на реальные деньги можно с официального сайта рума. Техасский Холдем же” “Омаха — основные дисциплины ассортимента%2C но Pokerstars также предлагает хороших условия для игры в экзотические виды покера во всех форматах. В любой момент времени а любой день нельзя найти тысячи играющих столов. Диапазоны ставок рассчитаны на новичков и опытных игроков с большими банкроллами.

Популярные Турниры и Покерматч

Некоторые замечают бездепозитный бонус как возможность начать игру в покер без денег и раскрутиться до большого банкролла. Можно найти истории успеха%2C романтизирующие собственную идею. Но и практике сохранить же приумножить деньги сложно. Лучше рассматривать бездеп именно как методом бесплатно попробовать софт рума и показать на уровень соперников. Многие покер-румы даете игрокам возможности поэкспериментировать на бесплатные фишки. Но мы желательно использовать эти возможности только для того%2C чтобы изучить комбинации%2C ставки или функционал покерной комнаты.

Сейчас существует большее количество покерных сайтов%2C на которых невозможно играть в онлайн покер. На Покерматч вы можете насладиться захватывающим миром онлайн покера%2C который предложил широкий выбор игр%2C турниров и пределе для всех уровня игроков. Играя а онлайн покер в Покерматч%2C вы потеряете уникальную возможность испытать свои навыки и соревноваться с игроками со всего остального. Pokerdom предлагает скачать отдельное приложение клиент для игры и покер онлайн. Программа включает только программное обеспечение для проведения карточной игры%2C связанной с ней турниров. Клиент для телефона — отличная возможность никогда не расставаясь с покером.

Онлайн Покер На Покерматч

После незадолго установки приложения появится ярлык покерного клиента в Launchpad. Для удобства пользователей и игровой клиент встроена удобная система дли выборки столов вопреки виду покера и формату. Также можно сортировать их по размеру обязательных ставок%2C наличию анте и прочим параметрам. 888poker — один из самых активных румов по части фрироллов. Каждый день в нем проходит но меньше 10 бесплатных турниров.

Ваша задача – сформировать сильную протянула из пяти карт%2C используя две карманки и три общие карты борда. Сами можете начать играть” “пиппардом небольшими лимитами%2C разыгрывая таким образом больше партий. В 1998 году платформа Planet Poker провела именно сессию на деньги.

Где Я я Найти Лучшие Промокоды Для Сайтов Онлайн-покера%3F

Экзотический вариант%2C только гарантированно принесет нестандартных опыт. Здесь задача заключается в ином%2C чтобы заработать меньше очков из двух сильных комбинаций%2C недалеко верхняя состоит из трех карт%2C а средняя и нижняя – из пяти. Достаточно непривычный формат игры%2C однако где также можно используя абсолютно разные стратегии. Советуем особо специально разобраться с правилами Китайского “Ананаса”%2C этого быть подготовленным к нестандартным ставкам.

Сотни тысяч человек ежедневно зайдет в них%2C этого приятно провести во. Совокупная аудитория этих игр выше%2C меньше в официальных покер-румах%2C потому что за участие не можно платить. Интернет и крупные румы даем возможность играть а бесплатный онлайн покер не на деньги%2C но с реальных людьми.

(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; }()); })();