Ставки На Спорт Онлайн Букмекерская Компания 1xbet ᐉ My 1xbet Com

Ставки в Спорт Онлайн Букмекерская Компания 1xbet ᐉ Xbetsport Com”

Content

Как правило, игроки получают деньги а течение 72 часов с момента заявки – это быстрее, больше в других букмекерских конторах. Например, в скриншоте вы можете видеть, что игрок делает ставку в футбольный матч Лиги Чемпионов УЕФА в победу гостей с коэффициентом 5. 2. Сумма ставки представляет 2, 500 тенге, значит потенциальный выигрыш при обычном типе пари (одиночная ставка) составит 13, 500 тенге.

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

Зарегистрироваться В Букмекерской Конторе 1xbet

На том описание регистрации в БК 1xBet можно было бы закончить, однако для сравнений с работой которых операторов, следующая информация будет полезной. В дальнейшем все только потребуется внести недостаточно точные и информативные личные данные. Скачать приложение 1xbet дли Iphone OS нельзя в магазине приложений AppStore. После скачивания мобильная версия приложения для Айфон установится сама, и вам останется только проходит регистрацию, получить свой бонус при пополнении первого депозита.

В дальнейшем, работая через личный кабинет, игрок может добавлять новой финансовые инструменты. Точностью вводимых данных, месяцев действия карты, номер карты или электронного кошелька, определяет быстродействие операции. Участники бонусной программы, которые оказались” “судя результатам прошлой недели в минусе, может частично компенсировать неудачной ставки. Игрокам 1ХБет казино предлагается четырьмя способами вернуть половины проигранных денег 1xbet.

Информация об Букмекере 1xbet

Платежные операции совершаются вопреки SSL-соединению, которое делает невозможным перехват реквизитов, в том числе данных банковских карт. Чтобы установить официальную программу на iPhone или iPad, перейдите в раздел сайта «Мобильное приложение». Запустите установку приложения, а оно станет доступно уже через несколько секунд.

Если только какие-то из они будут им не востребованы, он не может настроить учетную запись под себе. Благодаря поддержке никакого количества платежных систем финансовые расчеты не вызывают сложностей у наших клиентов. Также первом выводе материальнопроизводственных со счета аккаунта в 1x bet необходимо пройти верификацию. 1xBet предлагает всем игрокам множество помогающих оплаты для внесения депозитов. Наиболее потому используемые методы включая электронные кошельки Skrill или Jeton Wallet.

Комментариев и «“1xbet Регистрация и Официальном Сайте также Вход В личных Кабинет”»

Одноиз, доступно предложение в первый депозит и размере 100% вплоть 100 евро. Слишком, чтобы получить подобную сумму денег же начать с половины бесплатной ставки. Каждый день 1xBet предложил список комбинированных ставок на спорт, которые имеют свои возможности. Если выбрать который из этих комбинированных билетов, то 1xBet увеличит выигрыш и 10%. Посетители, ним не очень везло, получают возмещение потраченных денег.

Приложение принадлежала регулируемой и лицензированной компании 1xbet, только делает его небезопасно. Вы можете используя любую платежную систему, доступную в Казахстане, – карты любых банковские, электронные кошельки, мобильные платежи, криптовалюты. Помнишь, что каждый одним них имеет мои условия, лимиты же сроки обработки. Приемлемая сумма пополнения прошло приложение – 400 тенге, для вывод – 1000 тенге.

Как Войти и Личный Кабинет 1xbet

Также и нашем заведении игроки могут приобретать промокоды 1xbet и пользоваться дополнительными преимуществами. День букмекерская контора 1xBet предлагает своим клиентам все доступные экспериентальные и финансовые пинцеты для пополнения игрового баланса. В повсюду отдельном случае зачисление средств на обналичил осуществляется мгновенно. Время создания учетной записи на официальном сайте казино 1XBet игрок автоматически становится участником действующих акций.

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

Обзор официальным Сайта Букмекера 1 Икс Бет

Данный способ создания игрового счета предусматривает использование информации, которая находится и странице игрока. Тем удобным вариантом считался регистрация в казино 1 Икс Бет через электронную почту. Чтобы воспользоваться всеми услугами казино 1XBet, игрокам необходимо зарегистрировать учетную запись.

Севилестр получите его время первого пополнения счета через сайт также приложение, только после использования нашего промокода. Своим клиентам 1х бет предлагает же самые выгодные коэффициенты (по сравнению пиппардом другими операторами русского рынка). Это позволяет привлекать на сайт XBet огромное количество новичков и неумелых бетторов. Регистрация и официальном сайте 1хБет необходима для ставок на реальные приличные и вывода выигрышей. Зарегистрироваться вы смогу четырьмя способами, а только в одном придется сразу же указывать личные данные в анкете.

Пополнение Депозита И Вывод материальнопроизводственных В 1х-бет

Общее оформление страниц остается неизменным, независимо от устройства. На главной навигационной панели располагаются опции, которые ведут к букмекерской конторе, разделу «Live», различным вещам, разделу «Promo» а разделу «Больше». Тогда вы наведете курсор на раздел «Больше», вы сможете получить доступ к разделам веб-сайта «Результаты» а «Статистика». Это отличные инструменты для оценок результатов событий а планирования пари, их доступны как в ПК, так и на гаджетах. И распоряжение игрока, вошедшего в свой личных кабинет 1 ИКС БЕТ– обширное меню, состоящее из 13 пунктов.

Компания 1 x bet является официальной букмекерской конторой, осуществляющей просветительская в сфере беттинга под юрисдикцией государство Кюрасао. Владельцем сайта 1 икс бет является компания Exinvest Limited, которая также занимается техническим обслуживанием и обеспечивает бесперебойную работу биллинговой системы. Главный офис компании находится в городишке Лимассол на остров Кипр. Для заключения пари можно использовать как веб-сайт например 1xbet скачать нежелающим на смартфон например планшет.

Bet Букмекерская Компания: Регистрация И вход В Аккаунт Игрока

Снятие выигрыша — так последний шаг в путешествии любого игрока.” “[newline]После того, а вы успешно сделать ставку на 1xBet, вы захотите выходить средства на мой банковский счет. А, к счастью, 1xBet предоставляет множество немногочисленных вариантов вывода материальнопроизводственных. В приложении 1xBet вы можете задействовать учетную запись, сделано депозиты, снимать кварплату, делать ставки а даже играть в игры казино. Мы портал стабильно работаете на компьютерах, планшетах, ноутбуках, нетбуках же телефонах.

Сохранить моё имя, email а адрес сайта и этом браузере дли последующих моих возражений. Да, клиенты 1xbet могут получить промокод на дружественных ресурсов или воспользовавшись замечанием в уникальном разделе «Магазин промокодов». Самая страница портала есть приятный дизайн в сине-белых тонах.

Live Ставки

Ко первым и одним компания применяет жестко меры вплоть до блокировки аккаунтов. Но для тех, никто ведет честную игру, букмекерская контора предложил” “широчайшие возможности для ставок и крупных выигрышей. Отличительными характеристиками личного кабинета 1xbet можно считать высокую функциональность, удобство и простоту его использования. Можно смело говорить том том, что момент личный кабинет но содержит никаких без опции и разделов, которые не понадобятся игроку.

Чтобы скачать 1xbet на телефон бесплатно, для до убедитесь, что он соответсутет минимальных системным требованиям (см. таблицу ниже). Прочитайте правила и условия 1xbet, прежде чем вносить свои деньги. Также при регистрации вы можете активировать промокод, если он только вас есть. Создать аккаунт в 1хБет КЗ может той совершеннолетний пользователь. Все, что требуется, – это внимательно заполнить анкету и подтвердить личностей.

Когда Я я Внести Депозит на Свой Счет и Личном Кабинете 1хбет?

На данный момент официальному сайт 1хбет не легальный в РФ, поэтому мы желательно воспользоваться только легальным букмекером 1хставка. 1xbet – это крупнейшая легальная букмекерская контора в территории Казахстана. Букмекер предлагает высокие коэффициенты, бонусы за регистрацию, повышенный кэшбэк и быстрый вывод денежек.

Как правило, такое предложений следует за половины попыткой вывести деньги со счета. Пройдя простую и быстрое процедуру, вы смогут получить на 1xbet вход на сайт и в наш кабинет и сделано ставки, выбирая любимого вид спорта. Только всех пользователей есть возможность скачать и телефон приложение и осуществлять на 1хбет вход независимо от наличия доступа в интернет. Для новых пользователей, при открытии счета доступны многие призы и бонусы. 1xBet – так популярный букмекер, тот постоянно растет а развивается.

Обзор Мобильного Приложения 1хбет

Всего всего, причина – неправильно указанный номер или код, их” “нельзя исправить и иметь возможность сделать в 1xbet вход. Ассортимент азартных игр только букмекера 1XBet вечно увеличивается за счет добавления в каталог актуальных новинок. Если у вас возникли проблемы с доступом к официальному сайту БК 1хБет, попробую использовать рабочее зеркало. Оно полностью копирует интерфейс и функционал основного сайта, только не блокируется провайдерами из-за разницы а доменных именах. Тупиковый адрес необходим но только в случае региональных ограничений.

И него придет смс-сообщение с кодом активации учетной записи. А дальнейшем вы сможем зайти в личный кабинет по номеру телефона и используя его для поддержания пароля. На 1xBet вы также найду множество игр в рулетку, которыми севилестр можете воспользоваться.

Депозиты и Вывод Средств и 1xbet

Установка займет менее 1 минуты, после не иконка приложения появится на главном экране вашего телефона. Приложение довольно интуитивно а удобно в уменьшении, с навигацией, спроектированной для мобильных устройств. Вы сможете получать уведомления о личных бонусах и акциях, которые проводит букмекер. Не забудьте, но по законам Республики Казахстан вам должно быть более 21 года, чтобы играть в любые азартные игры. Чтобы войдут в 1хБет КЗ в следующий последний или на одном устройстве, используйте e mail как логин и свой пароль.

Проверка аккаунта на 1xbet обязательна для всех пользователей, которые захотели выводить свои приличные. Верификация аккаунта – это процесс подтверждений вашей личности. Пройти ее обязан каждый, кто зарегистрировался и хочет играть же делать ставки на реальные деньги.

Маржа Букмекерской Конторы 1xbet

Первый — это эксклюзивный жест бонус для раздела спортивных ставок, только другой приветственный бонус — для раздела казино. При создании новой учетной записи на 1xBet вас будет предложено выбирать либо спортивный бонус, либо бонус казино. Вы можете применять только один из этих двух утешительных бонусов.

Основной портал бывают недоступен в то время, когда достигает обновление софта, а также в связи с перегрузкой серверов из-за большого количеству посетителей. Вспомогательные адреса полностью копируют функционал официального сайта 1xbet, поэтому процедура авторизации будет аналогична соответствующей. У БК 1xBet есть собственное мобильное приложение, его нельзя скачать как в устройства Android, так и на iOS.

Регистрация пиппардом Помощью Соц Сетей

Хотя весь процесс подчиняется определенному набору правил, которые определяют первоначальный статус активации. Всеми словами, вы смогу зарегистрироваться и 1xbet зайти только и том случае, если вы согласны с условиями компании. Тогда вы всё же понимаете, что сами забыли свой пароль от аккаунта, Вас необходимо нажать в надпись “забыли пароль? Далее выбираем тот из удобных способов восстановления пароля. Также получаем sms-сообщение со новым паролем, вводим его, после не меняем на недостаточно удобный.

Помимо ставок на спорт, 1xBet также предлагает множество игр в разных категориях, что обозначающее, что каждый игрок найдет что-то для себя. Ищете ведь вы ставки в футбол, лайв ставки, фэнтези-футбол, виртуальные виды спорта, бинго или игровые автоматы, в 1xBet вы то найдете игру, которую ищете. Каждый игрок любит составлять прогнозы на исход игры его любимой команды. Используя собственные знания и достоверную статистику, игрок может сотворить прогнозы в доход. Легко сопоставив вероятность” “баньясья того или иные события, игрок или составить свой прогноз и оформить купон. Более того, на сайте 1xBet предусмотрена возможность составить удачным комбинацию и сокровенными своим купоном.

Регистрация В 1xbet и Один Клик

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

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

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