Mostbet App Professional Ios A Android Os ᐈ Mostbet Mobile Phone Apk

Mostbet Casino Cz Recenze, Aplikace The Přihlášení

Ověření vašeho účtu u velmi snadné a zabere jen pár minut. Vzhledem t tomu, že můžete získat bonus ve výši až Kč, určitě stojí za to věnovat tomu pár minut vašeho času a projít procesem registrace a ověření účtu. Některé automaty nabízejí RTP ve výši 96% nebo dokonce empieza výjimečných případech ještě více! Casino Mostbet poskytuje zákazníkům on the web podporu, dostupnou v režimu 24/7 some sort of to prostřednictvím emailu, online chatu nebo aplikace Telegram.

Informovali jsme hráče, že kasino nikdy nebude požadovat takové citlivé informace some sort of problém spadá do jurisdikce pro počítačovou kriminalitu. Z tohoto důvodu jsme nebyli schopni dále pomoci a stížnost suoka zamítnuta. Hráčovi z Peru byla zadržena jeho výhra empieza výši 580 DOG PEN kasinem Mostbet, který tvrdil, že porušil pravidlo 2. 10. Hráč však trval na tom, že se žádného faulu nedopustil, a přes opakované žádosti kasino odmítlo objasnit, které konkrétní pravidlo bylo porušeno. Problém hráče souvisel se sportovní sázkovou hrou a new nepoužil žádný added bonus.

Exploring Mostbet’s Betting Options

Hráč poskytl své přihlašovací údaje jiné osobě a jeho účet byl hacknut. Bohužel hráč o své výhry přišel dříve, než jsme mohli pomoci, a proto jsme byli nuceni tuto stížnost zamítnout. Hráč z Nepálu byl zablokován bez dalšího vysvětlení. Hráč si z neznámého důvodu nemůže vybrat své peníze. Stížnost byla vyřešena, protože výběr hráče byl úspěšný. Hráč z Portugalska vyhrál unces cashback bonusu, alcohol musí dokončit další sázení.

Byl naplánován hovor přes Skype, aby dans le cas où ověřil svůj účet, ale nedostavil ze kvůli problémům souvisejícím s prací. Dvakrát jsme prodloužili časovač řešení stížností a new nabídli mu možnost odpovědět a přeplánovat hovor. Kvůli jeho nedostatečné reakci jsme však museli reklamaci zamítnout. Problém zůstal nevyřešen kvůli tomu, že hráč nedokončil proces ověření kasina. Hráč z Kambodže požádal o stažení méně než dva týdny před podáním své stížnosti mostbet casino online.

Mostbet Online: Sportovní Sázení

Podmínky jejich chování najdete versus příslušné sekci em webových stránkách kasina. Sázková kancelář dlouhodobě poskytuje možnost sázet a hrát sixth is v kasinu na mobilním telefonu. Možnost dělat sportovní předpovědi u dostupná nejen majitelům zařízení Android, alcohol také fanouškům gadgetů od společnosti Apple company.

Po dlouhé době nás kasino kontaktovalo some sort of požádalo o opětovné otevření stížnosti h tím, že hráč selhal v ověření kvůli použití dokumentů třetích stran. Hráč byl požádán, aby na to odpověděl, ale žádná odpověď nebyla, takže stížnost byla zamítnuta. Hráč z Bosny some sort of Hercegoviny má potíže s výběrem výher kvůli probíhajícímu ověřování. Protože kasino neposkytlo žádné alternativní řešení k ověření hráče, byli jsme nuceni tuto stížnost uzavřít jako „nevyřešenou“. Po opětovném otevření stížnosti na žádost kasina byl hráč konečně ověřen a potvrdil úspěšný výběr. Hráč z Německa vydal žádost o trvalé” “uzavření svého účtu kvůli neustálým ztrátám.

Hráč Je Nespokojen S Procesem Ověření

Místo aby vyhovělo jeho požadavku, kasino nadále poskytovalo pobídky, aby ho udrželo ve hře. Hráč poté požádal o plnou náhradu všech vkladů provedených od jeho žádosti o uzavření účtu. Navzdory naléhání hráče kasino uzavřelo jeho účet až po několika komunikacích. Vysvětlili jsme, že pomáháme s žádostmi o vrácení peněz v situacích neúspěšného sebevyloučení, nikoli když kasina neuzavřou účty. Hráč z České republiky si stěžoval, že neobdržel inzerovaný 10% cashback sixth is v kasinu Mostbet, přestože splnil podmínky sázení.

Hráč z Německa má potíže s výběrem svých prostředků kvůli omezené dostupnosti platebních procedur. Přestože tým kasina potvrdil, že problém byl již dávno vyřešen, případ byl” “zamítnut, protože hráč jej nemohl potvrdit kvůli zákazu účtu za hrubé chování. Hráč z Brazílie požádal o stažení alle den před odesláním této stížnosti. Stížnost jsme zamítli, protože hráč nereagoval mhh naše zprávy some sort of otázky.

Hráč Má Potíže S Přístupem E Nově Registrovanému Účtu

Mostbet Gambling establishment bonus je t dispozici jak pro nové hráče, ngakl pro ty, kteří se již dříve zaregistrovali na” “platformě. Aby hráči prozkoumali dostupné bonusy, přejdou do příslušné sekce, vyberou si added bonus, který je zajímá, aktivují ho a new splní požadavky mhh sázení. Kasino poskytuje bonus pro nové hráče za prvních 5 vkladů.

To znamená, že Mostbet poskytuje hráčům dobrou bezpečnost a ochranu. Pokud jste fanoušky online kasin, určitě se podívejte em Mostbet, protože má jedno z nejlepších online kasin em trhu. Mostbet nabízí hrací automaty, ruletu, karetní hry, loterie, turnaje a jackpoty. Úplné nebo částečné použití materiálů této stránky je povoleno pouze s povinným zobrazením přímého hypertextového odkazu na síť mostbet-azerbaijan net.

Hráčův Účet Byl Zablokován

Poté, co tým pro stížnosti požádal o další důkazy, včetně přepisů komunikace a historie sázek, hráč neodpověděl. V důsledku toho jsme nemohli problém dále prošetřit a museli jsme stížnost zamítnout. Hráč z Indie vložil peníze mhh svůj účet, ale kredit se na jeho účtu versus kasinu nepromítl. Navzdory jeho dotazům sakalas záležitost opakovaně odložena finančnímu oddělení kasina.

P okud rádi sázíte na výsledky sportovních utkání, sixth is v casinu Mostbet si vyberete taky. Mostbet má také zásady ochrany osobních údajů, které chrání práva a informace uživatelů. Mají také přísná pravidla, která umožňují registraci a hraní na webových stránkách pouze hráčům starším 18 let.

Hráč Se Snaží Získat Peníze Zpět

Pokud máte jakékoli dotazy ohledně výběru peněz em Mostbet, můžete ze kdykoli obrátit na zákaznický servis. Hráč z České republiky měl bez dalšího vysvětlení zablokovaný účet. Tuto stížnost jsme odmítli, protože sony ericsson týkala sportovních sázek.” “[newline]Hráč z České republiky má potíže s i9000 výběrem svých prostředků. Hráč z Brazílie má potíže h výběrem finančních prostředků. Hráč z Brazílie byl zablokován, aby prošel ověřením.

Hráč z Itálie měl potíže s přihlášením ke svému účtu my partner and i po pokusu to resetování hesla. I přes několik pokusů kontaktovat zákaznickou podporu nedostal odpověď. Během této doby kasino vybralo peníze unces jeho kreditní karty. Pokusili jsme se zprostředkovat mezi hráčem a kasinem, light beer hráč nepředložil potřebné dokumenty k ověření jeho identity. Následně byla stížnost zamítnuta z důvodu nespolupráce hráče. Hráč unces Indie oznámil, že jeho účet byl zmrazen bez jakýchkoli informací a jejich peníze byly uvízlé.

Live Kasino

Dejte si pozor em nelegální online online casino Mostbet, které láká hráče, aniž by simply mělo platnou licenci k provozu v ČR. Mobilní aplikace MostBet umožňuje přístup ke všem funkcím webu. Hraní her a výhry na chytrém telefonu i počítači nabízejí stejný zážitek. Uživatelé poznamenávají, že aplikace se snadno používá. Funguje dobře na zařízeních s operačními systémy Apple i actually Android. Verze professional iOS musí být alespoň 11. zero, verze pro Google android alespoň 5. zero, velikost aplikace pro každý ze systémů je 46 MEGABYTES a 22 MEGABYTES.

Také se můžete těšit na narozeninový free bet, added bonus za přivedeného kamaráda a propracovaný věrnostní program. MostBet splňuje takřka všechny požadavky na moderní the kvalitní sázkovou kancelář. Menším nedostatkem oproti konkurence je právě trochu omezenější kurzová nabídka, ovšem to nic drastického. Vše se snaží dohnat příjemnou kurzovou hladinou, věrnostním programem, bohatým live streamem atd. A nutno říct, že se to be able to této ruské sázkové kanceláři daří. Nabídka sportů, na něž se dá sázet, je poměrně úzká.

Mostbet Výběr: Je Možné Vybírat Peníze Z Nelegálního Online Casina?

Proto lze Mostbet považovat za důvěryhodný pro české hráče. Jakmile využijete tuto úvodní nabídku, můžete využít mnoho dalších bonusů, které web Mostbet nabízí aktivním hráčům. Ty jsou k dispozici jak v sekci kasina, ngakl v sekci sázkových kanceláří. Můžete například získat týdenní cashback ve výši twelve % z prohraných sázek v kasinu nebo 40 % z uzavřených sázek. Mostbet má také speciální denní hry, narozeninové akce, programy doporučení a další. Hráč z Itálie si stěžoval em technické problémy související s živou ruletou.

Vítejte v Mostbet Casinu a Bookmakeru, ideálním místě professional každého, kdo u nadšený do online hraní. S naší pestrou škálou vzrušujících her včetně automatů, stolních her some sort of možností živých dealerů si každý hráč najde něco. Vaše bezpečnost je expert nás nejvyšší prioritou a poskytujeme uživatelsky přívětivé rozhraní pro snadnou navigaci.

Registrace Kasina The Ověření Účtu

Z rovna Česká republika je jedním z leaderů sixth is v počtu chytrých telefonů na obyvatele. Platforma vytvořená za účelem prezentace veškerého našeho úsilí o uskutečnění vize bezpečnějšího the” “transparentnějšího odvětví online hazardních her. Pokud svůj herní účet nepoužíváte pro sportovní sázení déle než 13 měsíců, bude váš herní účet rozpoznán jako „neaktivní herní účet”. Pochopte, prosím, většina kasin kontroluje duplicitní účty pouze jako součást procesu ověřování, což ze obvykle provádí, když hráč požádá um výběr. Vzhledem t tomu, že účet vaší manželky byl vytvořen jako první, byl váš účet rozpoznán jako duplikát a okamžitě zablokován. Spolupracujeme výhradně s prověřenými partnery a všechny z nich dohledáte i na tzv.

Ke stažení jsou k dispozici verze pro Android a iOS. Prostřednictvím aplikace můžete bez problémů” “sázet na sport, hrát online kasino, využívat bonusy a provádět peněžní transakce. Původně jsme stížnost uzavřeli jako „Nevyřešeno“, protože kasino neodpovědělo versus poskytnutém časovém rámci. O rok později jsme stížnost znovu otevřeli na žádost kasina. Hráč z České republiky požádal o stažení méně než dva týdny před odesláním této stížnosti.

Hráč Se Domnívá, Že Jeho Výběr U Opožděn

Hráč z Číny nebyl schopen spojit své mobilní číslo se svým účtem Mostbet, což byl požadavek pro výběry. Navzdory tomu, že se obrátil na zákaznický servis a poskytl” “požadované ověřovací kódy, neobdržel řešení a poté se ke svému účtu nemohl vůbec přihlásit. Zdálo se, že hráč byl v kontaktu h podvodnou e-mailovou adresou, která nepatřila kasinu.

Z tohoto pohledu patří MostBet mezi nejslabší bookmakery, které máme v nabídce. Jako další vypovídající příklad uveďme kurzy na českou florbalovou ligu U19 nebo ženskou lotyšskou florbalovou ligu. Pojďme nited kingdom tomu nejdůležitějšímu instructions ke kurzové nabídce. Ta je graficky velmi vyvedená, což pomáhá ke snadné orientaci v ní. Filtrovat v nabídce můžete podle času, ovšem filtr je omezen max mhh 12 hodin, takže ho radíme raději nepoužívat. Možnost lupy a rychlého vyhledání příležitosti je též k dispozici, ovšem je trochu skryta.

Ověření A Výběr Účtu Hráče Je Zpožděn

V bingu jsou karty generovány systémem, v Keno si hráč vybírá čísla sám. Oblíbená kasinová platforma MostBet vám otevírá cestu k získání finančních prostředků prostřednictvím hazardních her. Podrobně se seznámíme ze všemi jejími výhodami a nevýhodami. Abyste mohli využít všechny nabízené bonusy, musíte se zaregistrovat mhh platformě a doplnit svůj zůstatek pomocí jakékoli metody dostupné na Mostbet.

Většina plateb mhh Mostbet je obvykle zpracována během několika minut, pouze empieza výjimečných případech můžete potřebovat až three or more dny. Ve srovnání s konkurencí jsou vklady a výběry u této sázkové kanceláře velmi pohodlné. Kromě bankovních karet je zde nited kingdom dispozici několik elektronických platebních systémů some sort of peněženky s kryptoměnami. Díky tomu u možné obejít platební omezení, kterých je v České republice a řadě dalších zemí příliš mnoho. Pokud vyhrajete, budou vám peníze unces bonusového účtu připsány na hlavní účet. Po provedení vkladu bude na váš bonusový účet připsáno 125 % částky.

Hráčovy Prostředky Zmizely

Pokud sony ericsson tato čísla shodují s vašimi sázkami, vyhráváte. V této sekci najdete oblíbené typy her, jako jsou Bingo, Keno, stírací losy some sort of Lotto od desítek známých poskytovatelů. Hra „Stírací losy“ simuluje nákup losů, kde můžete vyhrát peněžní ceny. V ostatních typech loteriích systém náhodně vybírá čísla. Hráč je pak porovná s kartami, a pokud ze shodují, vyhrává some sort of získává peníze.

Jako kompenzaci připsalo kasino hráči bonus 125 % z vkladu a 250 roztočení zdarma. Stížnost však musela být zamítnuta unces důvodu chybějícího potvrzení od hráče o usnesení. Hráč z Egypta měl zmrazený účet ihned poté, co provedl vklad a než mohl začít hrát.

*️⃣má Casino Mostbet Platnou Českou Licenci?

Účastí na bonusových nabídkách společnosti můžete získat 10 % cashback z výše vsazených peněz, freespiny (freespiny zdarma) i actually skutečné peníze. Chcete-li aktivovat bezplatný režim, klikněte na tlačítko “Demo” na ikoně slotu. Pomocí testovací hry mohou návštěvníci kasina pochopit pravidla, získat potřebnou herní praxi a vybrat si ten správný automat. Živé kasino Mostbet je funkce, která uživatelům umožňuje hrát kasinové hry s dealery sixth is v reálném čase prostřednictvím video vysílání. To poskytuje více pohlcující a autentický herní zážitek, protože hráči mohou vidět a new komunikovat s dealerem stejně jako versus kamenném kasinu.

Vyhověl požadovanému volání přes Skype za účelem ověření, ale nedostal odpověď déle než měsíc, přestože poslal mnoho e-mailů. Hráč vložil 3 € s bonusovým kódem pro novou registraci a očekával, že na svůj účet obdrží 7, 40 €. Obdržel však pouze počáteční several € a jeho účet byl následně zmrazen. Poté, co jsme zasáhli the kontaktovali kasino, vysvětlili, že účet byl zmrazen kvůli jejich ověřovacímu procesu, který může trvat až 60 dní. Hráč potvrdil, že problém byl vyřešen, a new poděkoval nám za pomoc. Hráč unces Německa měl problém, kdy jeho bitcoinový vklad ve výši 0, BTC (14, 50 €) carry out kasina nebyl připsán na jeho účet.

Mostbet – Registrace A New Přihlášení Do Mostbet Casino

Usilovali buď um rozmrazení svého účtu, nebo o vrácení peněz. Hráčův účet byl ověřen the výhry byly akumulovány se skutečnými penězi. Přes několik žádostí hráč nedokázal poskytnout potřebnou komunikaci s kasinem. Po prvním vkladu obdrží každý registrovaný hráč z kasina uvítací benefit. Následně členové získávají bonusy za vklady, freespiny na výherních automatech a cashback. Pravidelní hráči ze mohou účastnit turnajů a loterií sixth is v kasinu.

Aviator je vzrušující hra pro ity, kteří rádi rychle sází a touží po velkých výhrách. Zde máte možnost vydělat skutečné peníze tím, že sledujete virtuální letadlo, které nabírá výšku. Vaším úkolem je zvýšit sázku a správně odhadnout okamžik, kdy letadlo exploduje, abyste si mohli vyzvednout svou výhru. Velmi mě potěšil rychlý výběr do jakýchkoli platebních systémů. Kasino má také licencované automaty, což u pro fanoušky velké plus.

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