Yeganə fərq ondan ibarətdir ki, zibilliklər olduğu kimi geri çəkilmə eyni vaxtda həyata keçirilmir. Ən yaxşı prosedurlar və təkliflərinizlə mənfəəti geri götürmək asan olacaq. Başqa bir nəşrdə Mostbet-dən öz mənfəətinizi necə çıxarmaq barədə hərəkətlər üzrə təlimatlar veriləcək. İstifadəçilər nəzərə alırlar ki, onlar adətən ödənişləri asanlıqla qiymətləndirirlər, bunun üçün sadəcə olaraq bu saytın qaydalarına əməl etməlisiniz. Fond çıxarmazdan əvvəl, siz görünməni tamamlamalı, yaşınızın faktiki olduğundan əmin olmaq üçün sənədlərin skanını təmin etməlisiniz.

Əsas bəyənmə əslində mərc oynamaqdırsa, siz bu onlayn oyundan əylənməzsiniz. Bununla belə, siz də canlı qumar müəssisəsi kimi olduğunuzda, MostBet-i izləmək bir az xəyal qırıqlığına səbəb ola bilər. Bu MostBet şərhindən ən çox məmnun olduğum bəzi digər şəhərlər yeni mobil bahis hissidir. Yepyeni mobil internet brauzeri heyrətamiz şəkildə işləyir və bu, hər kəs üçün 100 faiz optimallaşdırılmışdır – idman hadisələri və ya onlayn kazino oyunları. Pulun çıxarılması ilə bağlı hər hansı sualı olan və sonra depozit qoyanlar üçün yeni Mostbet müştəri xidməti ilə əlaqə saxlaya bilərsiniz. Pulun çıxarılmasına gəldikdə, nəzərə alın ki, maliyyənin tanınması təzə bukmeker kontoruna deyil, maliyyə institutuna əsaslanır.

Mostbet app bangladesh Ən yeni ən aşağı depozit məbləği əslində dosdur, eləcə də limit seçilmiş yeni faiz seçimindən asılıdır. Bütün böyük valyutalar Hindistan rupisi, dollar və siz avro kimi Asiyadan kənar iştirakçılara satılır. Ən yeni bukmeyker kontorunun verdiyi yeni təşviqlər və siz ola bilər promosyonları maddi cəhətdən çox faydalıdır və insanlar arasında müasir meyarlara cavab verir. Şirkət yeni oyunçuları cəlb etmək və köhnə iştirakçılardan uzaqlaşmaq üçün bütün növ mükafat yollarını sərf edir.

mostbet casino

Yeni bukker Curacao lisenziyaları altında fəaliyyət göstərir və siz onun faiz proqramını təmin etmək üçün mütərəqqi kodlaşdırma texnologiyası (SSL) sərf edəcəksiniz. Beləliklə, oyunçulara saytdan daxil olduqdan sonra təhlükəsizlik və təhlükəsizlikdən uzaq bir zəmanət verilir. MostBet Qumar təşkilatı 18+ təhlükəsizliyə cəhd edir, ona görə də sadəcə olaraq oyunçular məhkəmə zalında onilliklər ərzində iştirakçılar bunu sınayın və siz oynaya bilərsiniz. Siz RAM-dan minimum 1 GB addım istəyəcəksiniz və bu, çətinliyə çevrilməməlidir, çünki əldə edilən Mostbet tətbiqi cihazın daxili düşüncələrində çox yer tutmur. Bukmeker kontorunun saytında quraşdırmalı olduğunuz quraşdırma sənədi vasitəsilə Android əməliyyat sisteminə sahib olmaq üçün yeni MostBet tətbiqini qurursunuz. Amma yarandığı gündən etibarən Mostbet bütün modadan istifadə etdi və sizə lazım olanı özündə cəmləşdirən profillərini verdi.

Mərc və Oran Formatının Növü: mostbet casino

Həddən artıq həzzlə yanaşı, dərhal mükafatlar qazanmağınıza kömək etmək üçün çox vaxt ayırdım. Fəaliyyət fənləri olan bölməyə keçin və sevdiyinizi seçin. Effektiv olma ehtimalını artırmaq üçün hətta analitika və status vasitəsilə axtarış edə bilərsiniz. Mostbet-də təcrübəyə başlamaq üçün minimum INR 160 səviyyəsinə yüksəlmək daha yaxşıdır. Liman tərəfdarları onun üçün əlçatan olan monumental kataloqdan və xüsusi müasir cekpot portlarından faydalana bilər.

Yeni bukmeker kontoru dərhal pul çıxarır, profillər valyutanın yaş cüzdanına çatmasını gözləməli deyil. MostBet, səmimiliyinə, faydalarına və geniş çeşidli xüsusiyyətlərinə görə digər bukker təcrübələri arasında diqqəti cəlb edir. Nağd pul çıxarmaq üçün ən sürətli və ən böyük müalicə, həqiqətən pul qoymaq üçün istifadə olunan yeni ödəniş sistemini seçməkdir. Həmişə ən yeni oyun məlumatlarından xəbərdar olduğunuzdan əmin olun və siz insidentlərlə qarşılaşa bilərsiniz – bu gün mobil cihazınızda Mostbet qurun! Çox çıxarılması limitləri Çıxarma limiti, şübhəsiz ki, hər bir komissiya strategiyası üçün müxtəlif səbəblərdən qaynaqlanır.

Veb sayt Asiyadakı peşəkarlara kömək etmək üçün mövcuddur və artıq Curacao orqanları tərəfindən lisenziya təklif edilmişdir. Yeni Mostbet veb-saytının yüksək keyfiyyətli video oyunları qrupu istifadəçinin arzuladığı şeydir. Nəticə etibarı ilə, iştirakçılar onun sorğularına cavab almamaqdan narahat olmamalıdırlar.

MostBet Şərh Hindistan 2023

mostbet casino

Punctual oyunlar oynamaqla, siz nəzərə alınan qiyməti, marağı dəyişə bilərsiniz və reaksiya verəcəksiniz. Bu, onları bir-birləri üçün yaxşı seçim edəcək və siz sistemdə təzə oyunçular əldə edə bilərsiniz. Beləliklə, identifikasiyanı avtomatlaşdıra bilərsiniz, pasportdakı təzə məlumatlara uyğun gələn təhlili üzvlüyünüzə daxil etməyi məsləhət görürük. Mostbet Hökuməti araşdırmada hər hansı qeyri-dəqiqlik aşkar edərsə, müştəri yenidən yoxlama üçün sorğu ala bilər.

Proseslər olduqca asan olduğundan, bəzi incə çaplar da var. PAGEONE On-line Sistemi hər ay yüksək maraq göstərən auditoriyanı təmin etmək üçün veb saytlardan uzaqda effektiv portfeldir. Gənc olan kişilər və qızlar, bizim öz mostbet casino izləyicilərimiz sizə öz onlayn proqramlarımıza misilsiz bağlılığınızı bildirir və məqalələr yaza bilərsiniz. MostBet həvəsləndirici dəstə əldə edilə bilər, lakin buna nail olmaq üçün mərc standartlarına cavab verməlidir. Bir xəyal qırıqlığına səbəb olan bir şey, onların fədakarlıqdan nəzarətdə mərc oynamağa qədər istifadə etməsidir. Əvvəllər dedik və yenə də deyəcəyik – MostBet həqiqətən də zibil mərc etmə saytıdır.

Qumar Üzvlüyünüz üçün Depozit Strategiyaları Mostbet

Siz həmçinin yeni Mostbet onlayn kazino itkisini kəşf edə və ən böyük şirkətdə slotlardan həzz ala bilərsiniz. Həmçinin, abunə olduqdan dərhal sonra saat-zaman yardımını əldə etmək mümkündür və siz dərhal internet danışığında nöqtələrə baxacaqsınız. Video oyun hətta hər kəsin necə zövq aldığını müşahidə etmək üçün əsl günlük statistika təqdim edir.

Gördüyümüz yeganə tükənmə, komissiya metodunun çox məhdud olması və xüsusiyyətlərdə daha yaxşı hala gətirilə bilməsidir. Mostbet baxışı ilə yanaşı veb əsaslı poker, rulet, baccarat və digər video oyunların həqiqətən də zərif şəkildə hazırlanmış olduğunu sübut edir.Buna görə də, platformadan ən yeni yerli kazinonu kəşf etdikdən sonra siz vicdanlı oyun meydanında olan kimi olursunuz. Beləliklə, istənilən oyunçu mostbet-ə daxil olur, maliyyə alır və siz onu öz kompüteri üçün təhlükə yerinə, həqiqi balansa çıxara bilərsiniz. Təzə Real vaxt nöqtəsi əlavə canlı gətirən bütün fəaliyyət hadisələrinin siyahısını ehtiva edir.

mostbet casino

Dediyimiz kimi, qrup iştirakçıların ən yeni suallarını idarə etmək üçün təchiz edilmişdir və siz onları uyğun şəkildə hədəfləyə bilərsiniz. Onlar casino daxilində var daimi reklam ki, birləşdirin, bir şəxs özünüzü qeyri-idman oyun uzaq yaxşı həftə sonu qəbul etmişdir. Casumo fikrimizi anlayın və bu unikal oyun veb saytını bu səbəbdən promosyonlar və hörmət tətbiqləri baxımından nəyin yaxşı etdiyini görün. Əgər siz yeni bukmeker kontoru tərəfindən təqdim olunan qarşılanma stimullarını və ya hər hansı digər pulsuz hədiyyələri seçmisinizsə və ya etməmisinizsə, onlar mərc şərtləri ilə olacaqlar. Bu o deməkdir ki, MostBet zamanı bütün Hindistan peşəkarları sadəliyə əlavə olunan üstünlüklərdən əsas fayda əldə edəcəklər.

NetBanking bank və mərc üzvlüyü arasında uyğunluqdur, yəni insanların fırıldaqlarına rast gəlməyəcəksiniz. Həmçinin, NetBanking-in əməkdaşlıq etdiyi bütün bukkilər səlahiyyətlidir və müştərilərin təhlükəsizliyini tam təmin edən SSL şifrələməsindən istifadə edirlər. Video oyun forması ilə yanaşı, siz çoxlu uyğunlaşa bilərsiniz, biz sizi mərc etmək üçün asanlıqla əldə edilə bilən müxtəlif effektlərlə sevindirməyə hazırıq. Hər bir fəaliyyət üçün cəzanın aşağıdakı matçları olan veb səhifəsi var və siz yarışacaqsınız. Kazino həvəsləndirməsini seçsəniz də, etməsəniz də, əks halda bukmeker bonusu, siz MostBet-də yüzdə 100 uyğunluq depoziti əlavə edilmiş bonus daxilində cəmi ₹iyirmi beş,100000 ala bilərsiniz.Nəhayət, MostBet-in fırıldaqçı olub-olmaması məsələsinə gəlincə, biz sizi öz peşəkar fikrimizdə hiss edirik, bu, qətiyyən doğru deyil.

Buna görə də Mostbet əslində Hindistanda məhkəmə zalıdır və siz profilləriniz də hər hansı nəticələrdən narahat olmaq əvəzinə xidmətlərdən ləzzət ala biləcəksiniz. PayTm nəticəsində ilkin əmanət etmək, ödənişli seçim olduğundan PayTm-ə üstünlük verməlisiniz. Abunəlik prosesində sizdən onların həqiqi şəxsiyyətini, başlanğıc gününü, cari e-poçt ünvanını əlavə etməyiniz gözlənilə bilər və siz telefon nömrəsini verəcəksiniz.

mostbet casino

Praktiki sualın cavabından bəri “Mostbet daxilində hesabı necə silmək olar? ” hələ də qəbul edilir, onlar yalnız faydaları və çatışmazlıqları ölçmək üçün qalır, həmçinin pulunuzu çıxarmaq lazım olub-olmamağınızı seçə bilərsiniz. İşarə ilə qarışdırılmış yeni kibritlər bukmeker kontorunun iş yerindən öz-özünə verilir. Siz top oyunçusunu matçın ötürülə biləcəyi səhifəyə görəcəksiniz.

Məsələn, ilk beysbolun necə uyğun olduğuna dair mərc edə bilərsiniz – əgər əməliyyatlar, qapılar və ya maneə görəcəyik. Gələcəkdə, ‘X’ yekunu zamanı öz adamlarınızın tam əsərlərinin ətrafında yerləriniz var. Yeni mərc tələblərinə cavab vermək üçün bonus kəşf edin, tələbləri nəzərdən keçirin və qumar oyunları və ya hadisələr üçün mərclər təyin edin. Kömək üçün produce [email protected] üstəgəl qrup 24 saat ərzində e-poçt ünvanına müraciət etməyə meyllidir. Siz VIP video oyunu, Televiziya onlayn oyunu, eləcə də veb əsaslı poker kimi digər üstünlük verilən video oyunu və Baccarat oynaya bilərsiniz.Burada siz immersiv atmosferə sahib ola bilərsiniz və söhbətlər vasitəsilə yeni gözəl insanlarla əlaqə saxlaya bilərsiniz.

Hər bir filial üçün qeydiyyat zamanı üstünlük verdiyi valyutaya qərar verir və siz onlardan öz sövdələşmələri üçün istifadə edə bilərsiniz. Pakistandan olan istehlakçılara sahib olmaq üçün Birləşmiş Ştatlardakı ən məşhur idman növləri əslində dağıldı – Kriket, İdman, Tennis, Kabaddi, Beysbol və digərləri. Təsdiqləmə xarakterinizi şəkillərlə həqiqi şəkildə təkmilləşdirməyi, şəxsiyyətin araşdırılmasını və digər zəruri məlumatları əhatə edir. MostBet-də paylamalar ümumiyyətlə 24/7 istehsal olunur və texnikalar üç aya qədər vaxt tələb edir ki, bunu edə biləsiniz.

mostbet casino

Bu növlər beş gün ərzində taksitlərlə kazino əlavə bonus üzvlüyünə hesablanacaq. Üzvlüyünüzü yaxşılaşdırmaq üçün məşhur üsul – Yeni PayTM komissiya proqramı, Maliyyə köçürmələri, Visa/Charge kartı, Skrill, Neteller, Elektron pul kisələri. Təzə bukkerin iş yeri sövdələşmələr üçün komissiya almayacaq, lakin o, təzə komissiya həlli ilə təmin oluna bilər.

Siz Mostbet saytınıza yüzdən çox şirkətdən uzaqda video oyun tapa bilərsiniz. Dondurulmuş hesab, şübhəsiz ki, artıq şəxsiyyət oğurluğunun qurbanı olduğunuzun göstəricisi ola bilər. Mostbet Yerli kazino, video oyun varyasyonlarına gəldikdə əla mövqelərə dəyər ola bilər və siz yüksək keyfiyyətli ola bilərsiniz. Bu səbəbdən, çox birbaşa oyunlar və ən yaxşı limanlar, gəlirlərinin kəskin bir həlledici təchizatı olduğu üçün baxılır. Mostbet, valyuta çıxarmaq üçün bir neçə yol təqdim edən Banqladeş daxilindəki məşhur bukkilərdən yalnız biridir. Profillər tərəfindən yaradılan təzə yerlər dərhal Mostbet hesabında ödənilir.

Təzə Mostbet ən aşağı depozit məbləği, eləcə də tamamilə yeni ödənişə güvənən sizin seçdiyiniz deməkdir. MostBet, həmçinin smart cihazdan və ya Masaüstü kompüterdən vəsaitlərin doldurulması və çıxarılması üçün bir neçə alternativ təklif edir. Depozitlər kimi, o, asanlıqla konservləşdirilə bilər və ərizə formasını seçdikdən bir neçə saat sonra bu valyutaya sahib olursunuz. Əgər siz oyun kartlarını seçsəniz, əks halda borc verən ödənişlər üçün köçürsə və siz pul çıxaracaqsınızsa, yeni arzulama tarixi adətən 5-7 iş günü çəkir.

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