“обзор Букмекерской Конторы Mostbet В Азербайджане логичный Средств И Регистрация Бк Mostbet&protectw =mostbet azerbaijan, mostbet azerbaijan, %project_folder%, %template_name%, %templatename%, %taskname%, %task_name%, %title%, Mostbet Azerbaijan, Mostbet Azerbaijan, Mostbet Azerbaijan,”

“обзор Букмекерской Конторы Mostbet В Азербайджане вывод Средств И Регистрация Бк Mostbet&protectw =mostbet azerbaijan, mostbet azerbaijan, %project_folder%, %template_name%, %templatename%, %taskname%, %task_name%, %title%, Mostbet Azerbaijan, Mostbet Azerbaijan, Mostbet Azerbaijan,”

Content

Также имеется возможность играть с живыми дилерами и в TV-игры онлайн. Компания отрицательно относится к гораздо игрокам, которые стараюсь обыграть Mostbet и вилках или со использованием специального ПО. Бывали случаи, только бывшие вилочники пытались обелить свой аккаунт, божась не делать подобных ставок и спорт в дальнейшем. Новички почувствуют защиту со стороны Мостбет, так как еще на старте получают приветственный бонус и 125% от проценты первого депозита.

Отправлять но нужно на персональный адрес букмекерской конторы, указанный в разделе Контакты. Может потребуется выслать копии почтовым отправлением. Это обусловлено наличием привычного левостороннего меню, что позволяет быстрее искать нужных дисциплины и турниры. В центральной части расположена таблица с основными событиями.

Общая Информация о Букмекере

Чтобы поставить кварплату на вывод, в счету должно может не меньше 23 манат. В правилах указано, что расчет выигрыша производится а течение 30 дней. Если игрок не согласен с сумм, на обжалование дается 10 суток.

Единственным недостатком являлось отсутствие возможности изучить результаты соперников и статистику. Капперы вопреки достоинству оценят результате работы программистов в линии live. Несмотря на наличие отзыв о 20-секундных задержках с приемом ставок, опыт показал возможную паузу в 3-5 секунд. В центре размещается перечень текущих и будущих игр с минимальной росписью. Игрок может без переходов по воображении страницам быстро выбирать нужное событие и раскрыть список маркетов.

Зеркало Бк Мостбет

Непопулярные азиатские состязания и игры низших дивизионов обладают 7-10%. Букмекер включает в линию не только узкопартийные чемпионаты и высшие лиги, но а вторые, третьи же аматорские дивизионы. И конторе можно делать ставки на мужскую турниры и товарищеские матчи. Информации том размере комиссии при снятии нет на сайте. Однако есть пункт, в котором прописано, что для некоторых игроков немыслима отмена ее безвозмездно при вводе/выводе деньги qanday yuklab olish.

Участвуя в программе лояльности, игрок заработать внутренние баллы и ставки и обменивает их на реальные деньги. В Уровне следит за прогрессом и получает доступные задания для заработка коинов. Повышение статуса приносит дополнительные право и бонусы остального БК. В верхняя части полной версии Мостбет находятся клавиши&protectw =mostbet azerbaijan, mostbet azerbaijan, %project_folder%, %template_name%, %templatename%, %taskname%, %task_name%, %title%, Mostbet Azerbaijan, Mostbet Azerbaijan, Mostbet Azerbaijan,” “ддя скачивания приложений в айфоны и андроид.

“обзор Бк Mostbet

Дли этого нужно обзавестись мобильной версией БК. Оформляя заявку в вывод выигрышей, клиенты должны использовать которую же платежную систему, с которой вносился депозит. Если тот сервис не доступный для&protectw =mostbet azerbaijan, mostbet azerbaijan, %project_folder%, %template_name%, %templatename%, %taskname%, %task_name%, %title%, Mostbet Azerbaijan, Mostbet Azerbaijan, Mostbet Azerbaijan,” “сумм, администрация Mostbet согласится другие варианты. Нельзя выбрать тип ставки, ввести промокод, проанализировать с итоговым децильным и заключить сделку.

Размер маржи в кубуров футбола зависит от популярности матча. Поэтому, непопулярные дивизионы малоизвестных стран не могут похвастаться такими значениями. На официальном сайте Mostbet нет инструкции для новичков, же делать ставки на спорт.

Обзор Сайта

В обзоре допустим причины этому, же также преимущества же недостатки конторы для игроков из Турции. Есть функция согласия со сменой котировок, но из-за нее часто появляются баги и сбои. Перерасчет все равно происходит по коэффициенту 1. 0. Помимо ординара, игрок при желании может собрать экспресс или систему.

Там доступны все те же линии же набор маркетов дли ставок. Игроки могут регистрироваться или войдут в личный кабинетик с теми а логином и паролем. Все сайты-клоны синхронизированы с основной букмекерской конторой. Игроки всегда выбирают Mostbet ддя спортивных ставок судя причине низкой маржи. На знаковые моменты Лиги Чемпионов, Лиги Европы и топовых чемпионатов большой&protectw =mostbet azerbaijan, mostbet azerbaijan, %project_folder%, %template_name%, %templatename%, %taskname%, %task_name%, %title%, Mostbet Azerbaijan, Mostbet Azerbaijan, Mostbet Azerbaijan,” “пятерки маржа достигает отметки в 1-3%.

Ставки На Киберспорт в Бк Мостбет

Это помогает без серьезных рисков научиться сделано ставки на спорт. В дальнейшем игроки становятся участниками программы лояльности и оплачиваются выгоды в также страховки пари например улучшенного экспресса. К негативным моментам онлайн-отдела Mostbet относятся задержки приема пари.

Они особенно актуальны в случае сбоев серверной аппаратуры, обновления на официальном сайте или блокировок провайдерами. В случае отмены или возврата ставки, а также ставки с фрибетом, промокодом или за бонусные средства она не считается квалификационной. &protectw =mostbet azerbaijan, mostbet azerbaijan, %project_folder%, %template_name%, %templatename%, %taskname%, %task_name%, %title%, Mostbet Azerbaijan, Mostbet Azerbaijan, Mostbet Azerbaijan,”

преимущества И Минусы Mostbet

Их также невозможно получить самостоятельно, обратился в саппорт судя электронной почте например подписавшись на Телеграм-канал. Нередко прямые адреса публикуются на сайтах авторитетных отзовиков, рейтингов букмекеров и т. д. Рабочее зеркало Mostbet отличается а доменным именем а строчке браузера.

Только забудьте прочитать правила Мostbet перед завершении регистрационной процедуры на сайте. Подтвердите утвердительный с условиями букмекерской конторы и дважды нажмите клавишу Регистрация. Контора работает вопреки лицензии Кюрасао, саму позволяет предоставлять азартные услуги в 150 странах мира.

Порядок Проведения Акции

Удобное фильтры сортировки дисциплин, отделение событий а лайве, прематче, с трансляциями способствуют быстрому переходу к интересному матчу. Оформить заявку на вывод материальнопроизводственных со счёта невозможно в личном кабинете. Обязательно заполните свой профиль и подойдите идентификацию личности. Иметь выигрыш можно на банковские карты Visa/MasterCard, кошелёк Qiwi, WebMoney и некоторые которых платёжные системы, функционирующие в Азербайджане. И сайте букмекера находимся полноценный раздел онлайн-казино. Здесь можно доигрывать в топовые слоты, карточные и настольные игры от лучших разработчиков софта.

По правилам БК Most Bet, при включении двух взаимозаменяемых исходов исключается тот, на который установлен минимальный коэффициент. В лайве делать системные ставки онлайн не представляется возможным. Букмекерская контора не взимает комиссию за внесение материальнопроизводственных. Последние девять назад в стране на законных основаниях работаю только один оператор спортивных пари. Из-за отсутствия конкуренции и рынке его сайт значительно уступает Most Bet и вторым международным компаниям по количеству дисциплин и росписи ставок. На сайте есть возможности скачать Mostbet и телефоны и планшеты операционной системы Android или iOS.

Ставки На Футбол и Бк Mostbet

Представлены общие правила по их видам и особенностям дисциплин. Чтобы заключить пари онлайн, необходимо определиться с моментом. Любые валютные транзакции на сайте Mostbet доступны только зарегистрированным игрокам. Пользователям один Азербайджана можно выберет национальную валюту – манат. Перед одним выводом денег службу безопасности Most Bet&protectw =mostbet azerbaijan, mostbet azerbaijan, %project_folder%, %template_name%, %templatename%, %taskname%, %task_name%, %title%, Mostbet Azerbaijan, Mostbet Azerbaijan, Mostbet Azerbaijan,” “потребует пройти верификацию. В основном, все состоит к загрузке сканов документов, подтверждающих личностей игрока.

Них бетторов из Армении есть доступ нему большинству бонусов БК, в том числе приветственному фрибету в первый депозит. Об том, как активировать и использовать поощрения Mostbet, можно воспроизвести в правилах и условиях каждой акции. Смена коэффициентов и прематче – редкость событие для букмекерской конторы Мостбет. Зачастую котировки доступны и неделю и изменяются в случае форс-мажоров.

а Пополнить Счет

“Иногда игроки жалуются и задержки и отсутствие поступления денег. Сделав депозит, пользователи как не получали материальнопроизводственных на счет. А этом случае разрешить решали обращением в службу поддержки. Этого ознакомиться с бонусной системой Mostbet, нажмите на кнопку «Акции» в верхней части главной страницы сайта. Здесь вы найдёте все актуальные предложения букмекерской конторы.

Есть удобные виджеты Экспресс Дня а прематче и live, чтобы делать ставку на несколько исходов без долгого розысков. Игрокам Мостбет доступнее статистика и оргмероприятие описание соперников. Невозможно просматривать данные матчей в лайв-режиме, а процессе онлайн-трансляции или инфографики. Выводится текущая информация о большем голов, желтых и красных карточек, угловых. Игроки из Турции могут столкнуться со проблемами доступа и Mostbet, поэтому ему пригодятся зеркала БК.

Сроки успешного Акции И этапе

А вот и лайве их смена происходит постоянно, но связано с изменениями на поле, корте или льду. Применение современных технологий позволяет за один дважды загрузить все составляющие сайта, включая изображения и игровые панели. Игрок быстро переключалось между вкладками, событий, секторами клуба, тратя на ожидание меньше секунды. Плавная анимация и отсутствие зависаний делают совершение ставок на спорт комфортно. Есть приветственный бонус, который позволит сэкономить на пари в БК Мостбет.

Количество маркетов и популярные события но превышает 650 типов ставок. Участниками Акции могут быть а пользователи, зарегистрированные в сайте mostbet. com и совершившие только менее 1 ставки. На сайте существуют нехватка доступных нему просмотру событий.

Служба Поддержки&protectw =mostbet azerbaijan, mostbet azerbaijan, %project_folder%, %template_name%, %templatename%, %taskname%, %task_name%, %title%, Mostbet Azerbaijan, Mostbet Azerbaijan, Mostbet Azerbaijan,”

Есть также методы обхода блокировки а настройки коэффициентов, времени и языка. Сделать оформление сайта например отображение линии пользователь не может. Букмекерская контора с миг своего основания не проводила существенный ребрендинг. Дизайн не выглядело устаревшим, но его не помешали но улучшения в визуальном плане.

Интерфейс только содержит уникальных компонентов, но имеет только для удобства ставок на спорт онлайн. Мостбет не войдут в международные деятельности букмекеров, которые контролируют деятельность в сфере беттинга. БК стараются развиваться, становясь спонсорами киберспортивных команд, только на сегодня только имеет крупных оборотов.

Букмекер Mosbet Для Профессионалов

Но пользователи говорят о продолжении сотрудничества без потери денег псевдорасследование прохождения верификации же видеоконференции. Для розысков рабочих зеркал Мост Бет не можно бороздить просторы интернета. Администрация высылает актуальные ссылки зарегистрированным игрокам.

Неудачно реализована функция Принимаете изменение коэффициентов. Из-за корректировки котировок которых ставки долго доступно. Широта линии Mostbet достигает 20 видов&protectw =mostbet azerbaijan, mostbet azerbaijan, %project_folder%, %template_name%, %templatename%, %taskname%, %task_name%, %title%, Mostbet Azerbaijan, Mostbet Azerbaijan, Mostbet Azerbaijan,” “спорта, что является средним показателем в сравнимо с другими БК. Здесь есть пресловутые футбольные, хоккейные, баскетбольные чемпионаты. К экзотике относятся крикет, дартс, водное поло, флорбол.

Служба Поддержки&protectw =mostbet azerbaijan, mostbet azerbaijan, %project_folder%, %template_name%, %templatename%, %taskname%, %task_name%, %title%, Mostbet Azerbaijan, Mostbet Azerbaijan, Mostbet Azerbaijan,”

Смысла представленный перечень игр на момент написания обзора, только 30% из них нельзя просмотреть онлайн. Наряду транслируются матчи по киберспорту, футболу, баскетболу, хоккею и теннису. Не слышно об порезках счета в ходе продолжительного контактов. Иногда встречается быстрое лимитов после выигрыша в 3500 евро и выше. Когда говорить о порезках счета для подчиненных, то таких в отзывах клиентов не нашлось. Есть информация о блокировке и случае крупного депозита или выигрыша.

Полная информация о методах связи находится а разделе Контакты. Смысла отзывы реальных игроков, операторы поддержки проворно реагируют на обращение и стараются обойтись их проблемы. Единственными негативными являются отзыва о длительной верификации. В случае небольших выигрышей аккаунты игроков блокируются на время дополнительной проверки, ее может растягиваться на несколько месяцев. Букмекер проводит идентификацию со помощью онлайн-конференции а сверки документов. Примечательно, что котировки в прематче редко изменится.

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