22bet Kaszinó Részletes Leírás A Játékokról És Bónuszokról

22bet Első Befizetési Bónusz 100% Bónusz A Kaszinó Számára

Content

“És ugyanez mondható este az online casinós szekciójának nyerőgépes választékáról. A webhelyen élő casinó szolgáltatás is működik, és kétféle 22bet app, valamint egy mobilos oldal is biztosított arizona ügyfeleknek. A webszájton rendszeresen futnak izgalmas, érdekes promóciók, és az online kaszinó játékok révén gyűjtött pontok esetében, a „shop”-ban ingyenes pörgetések beváltására is lehetőségünk van.

Cookie-kat használunk annak biztosítására, hogy a lehető legjobb élményt nyújtsa weboldalunkon. A rendszer elfogad Mastercard bankkártyát (a pénzmosás elleni törvények miatt Angliából hitelkártyával nem lehet regisztrálni). A rendszerben használható a Bitcoin és még jó néhány más kriptovaluta will be. A nagyobb fizetési rendszerek közül a new Neteller az Payz és a Payeer is választható.” “[newline]Sajnos élő fogadások terén a 22bet nem a legerősebb, a new megtehető meccsek száma jelentősen elmarad a new piac többi szereplőjétől. Tehát te is usually bátran beregisztrálhatsz a 22bet-re vagy más online fogadóoldalra, annak semmilyen szankciója nem lehet, ha nem titkolod el a szerencsejátékból származó jövedelmed.

Regisztráció Lépései

Tehát minden eszköz, amely csatlakoztatható az internethez, a fogadási iparág kapuja. A weboldal mobil verziója megőrzi az eredeti weboldal funkcionalitását. Szórakozhat a sportfogadással és an on line casino játékokkal, bónuszokat használhat, és kifizetést kérhet. A 22bet magyar belépést és számlánk hitelesítését követően többféle bónusz közül választhatunk. Más piaci szereplőkhöz hasonlóan a 22bet is kínál Üdvözlő Sportfogadási Bónuszt, akár Ft értékű fogadási kredit formájában (úgynevezett „freebet”-konstrukcióban). A kifizetéshez teljesíteni kell 5 megforgatást, a kijátszáshoz pedig a bónuszösszeg ötszörösével kell gyűjtőfogadásokat tenni 22bet.

Ezután magától értetődik, hogy szeretnéd megtenni az első befizetésedet. A 22Bet alkalmazás megbízhatósága pedig egyaránt igaz az Androidos, mind pedig az iOS-os felhasználók esetén, így bármilyen eszközzel is rendelkezz, gond nélkül teheted majd próbára a szerencsédet. Így akár arizona alkalmazást, akár arizona asztali platformot, akár a kényelmes böngészős elérést választod, zavartalanul élvezheted a szórakozást és a kaszinó összes izgalmas funkciójához egyszerűen férhetsz hozzá. A kaszinó iPhone-on történő eléréséhez egyszerűen nyisd meg a kaszinó felületét böngészőn keresztül és töltsd le.

Vesztes Sorozat Bónusz

A mérkőzés közbeni fogadással pedig jelentősen megnőhet a nyerési esélyed. Ez ugyanis lehetővé teszi, hogy megfigyeld, hogyan teljesítenek a csapatok, ami növeli a képességedet the mérkőzés kimenetelének megjóslására. 22Bet egy remek weboldal egy áramvonalas felület és érthető szabályokat.

E-pénztárcákból Skrillel, Perfect Money-val, ePay-jel és SticPay-jel fizethetsz. A 22beten kiváló marginokat, remek bónuszokat és sok-sok érdekes sportágat találhatsz. Miután viszont ezt elvégeztük, egy gombnyomással kezdeményezhetjük is a fizetést.

Et Sportfogadási Üdvözlő Bónusz

Az űrlap alatt az egyes szekciókat külön e-mail-címmel is ellátták, így könnyebben eléri az üzeneted a megfelelő címzettet. Az ügyfélszolgálat technikai, biztonsági, fizetési, adatvédelmi kérdésekben, illetve célzottan visszajelzések témában fogadja az ügyfelek leveleit. A bónuszoldalról néhány kattintással át tudsz navigálni a befizetésekhez, hogy feltöltsd az egyenleged. Az online fogadás szórakoztató lehet bár mindig meg van a kockázata, hogy veszíthetsz. Ha bármilyen aggodalmad lenne a fogadásokkal kapcsolatban, kérj segítséget a BeGambleAware. org oldalon.

Annak érdekében, hogy a kezdetektől növelje bizalmát, ez a magyarországi sportfogadás üdvözlő ajánlattal rendelkezik, amely lefedi az Összes fogadási vagy szerencsejáték-igényét. Mindössze arra van szüksége, hogy iratkozzon fel, és az első betét. Az aktiválást követően a játékosnak 7 napja van the bónusz megforgatására.

Vesztettél, Sebaj Szerezz Bónuszpontokat!

A bet22 elérése, azaz a webhelyének megnyitása, használata jó ideig csak némi trükközéssel” volt megvalósítható. Erre azért volt szükség, mert nem lehetett megnyitni a new sportfogadás és szerencsejáték szolgáltató webszájtján lévő oldalakat, tartalmakat the normál webcímről. És ilyen alkalmakkor arizona embert az üzenet fogadta, hogy az oldalt a magyar hatóságok blokkolták. Azóta sok víz lefolyt a Dunán, és a 22 gamble kaszinó elérése már jóval könnyebb, great korábban volt.

Az élő fogadás pedig szintén kivételes szorzókat biztosít számodra, így bármi is érdekel igaz, óriási nyeremények mellett szállhatsz majd harcba. Van egy hyperlink a honlapon olyan oldalakra, ahol telepítheti az alkalmazást. Az Android lejátszók közvetlenül a 22Bet webhelyről tölthetik le az alkalmazást.

A 22bet Kaszinó Konklúziója

Ha belegondolsz, ilyen kedvező kondíciókkal rendelkező promócióival más operátornál nemigen találkozhatsz. A számlanyitás után érdemes teljesen kitöltened a profilod, megadva minden adatot (születési hely, biztonsági kérdés, telefonszám). Az operátor jókora nyerőgép és asztali játék kínálattal, busás bónuszokkal és magas színvonalú szolgáltatásokkal várja az új és a régi ügyfeleit is.

A bónuszok automatikusan íródik jóvá the számlán és nem szükséges külön bónuszkód megadása ahhoz, hogy igénybe tudd venni” “a lehetőségeket. Az első befizetési bónuszok pedig mindenki számára elérhetőek akik magyar játékosként regisztrálnak a felületen. A 22Bet felülete, bár kicsit hagyományos kialakítást kapott mégis könnyen használható, hátránya között szerepelhet viszont, hogy sokkal inkább fogadófelület mint kaszinó. Ettől függetlenül természetesen itt is elérhető többféle slot és asztali játék, sobre élvezhetjük az élő osztós játékok örömeit is. Ráadásul, akár fogadáson akár kaszinózáson törjük a fejünket többféle bónuszt is igénybe vehetünk hozzá, és miközben elérhető a jó öreg első befizetési bónusz is itt, választhatunk akár visszatérítési kedvezményt is. Olyan sokféle online fogadási piac van a 22BET pre-match és élő fogadás részlegében, hogy képtelenség lenne mindent egy normál cikk keretében felsorolni.

Hogyan Teheted Meg A Befizetést?

Fogadjon 1, 40-es vagy annál nagyobb szorzóval bónusz készpénzzel, fogadjon meg 50-szer, és vegye fel a bónusz összegét. Mindenki szereti arizona ingyenes készpénzt, és sok mindent kaphat, miután megfelelt az egyszerű követelményeknek a new 22Bet-nél. A system arra törekszik, hogy többet kínáljon az újonnan érkezőknek, mint mások, hogy segítsen nekik annyi fogadást fogadni, amennyit csak akarnak. A 22bet számla megerősítése az e-mailes és mobilos hitelesítés által történik. Ez a regisztrációnkat és a szkennelt hivatalos iratainknak arizona Ügyfélszolgálat felé való elküldését követően pár munkanap alatt megvalósul. Kifizetés csakis olyan ügyfél esetében lehetséges, aki hitelesítette a számláját, a Know Your Customer (KYC) elvnek megfelelően.

Szerencsére arizona oldal annyira” “jól felépített, hogy csak nagyon speciális esetekben kell az ügyfélszolgálat segítségére hagyatkozni. A FAQ/GYIK rész a new honlapon érthetően leírja a legfontosabb információkat. A magyar fordítás is nagyon igényes, így érdemes erre hagyatkoznod, ha valamilyen nehézség adódik. A 22bet sportfogadás kifizetések minden egyes fizetési móddal igényelhetők, tehát a Netellerre vagy más e-pénztárcára is usually kifizetik nyereményedet, ráadásul tranzakciós díjak nélkül! A kifizetés általában nagyon gyors, igaz, hétvégén csúszások azért előfordulhatnak.

Cartamundi Professzionális Játékkártyái, Casino Palace Bucharest No 818 Jumbo Index, 100% Műanyag, Fehér/piros

A 22bet mobil megoldásai jónak mondhatók, mivel a mobilböngészős weboldal mellett kétféle 22bet app is biztosított a cég ügyfeleinek. A bukméker első befizetési bónusz ajánlata a sportfogadás termék esetében 35 ezer Ft-os összeghatárú. A 100%-os üdvözlő on the internet fogadás bónusz csak az új ügyfeleknek érhető el, the regisztrációt követően a legelső befizetésnél. A welcome bónusz akár már 320 Ft-os összegű minimális befizetéssel is jóvá íratható.

Ha nem csak nézelődni szeretnél a 22bet kaszinó oldalán, hanem igazi pénzes játékokkal is próbára tennéd a szerencséd, simply no meg a tudásod, akkor ehhez először is regisztrálnod kell a casinó weboldalán. Szerencsére a 22bet regisztráció csak egy néhány perces folyamat, aminek a végeztél a 22bet belépés (bejelentkezés) gombjára kattintva máris élvezheted a new kaszinós játékok élményét. A bukméker oldalán” “lehetőséged van 22BET promóciós kód, illetve „külső forrásból” – például tőlünk származó bónuszkód megadására is.

A 22bet Mobilalkalmazás Telepítése

Ez a lehetőség pedig gond nélkül, 22Bet alternatív hyperlink nélkül is elérhető, így nem kell sokat tenned azért, hogy azokat the mérkőzéseket, amire fogadni szeretnél, élőben is usually követhesd. Ráadásul, a new weboldal a fogadók részére azt will be biztosítja, hogy még a mérkőzés lezárása előtt kivegyék a new nyereményüket. Ez arra jó, hogy amennyiben félsz, hogy arizona utolsó pillanatban megváltoznak az eredmények, lehetőséged legyen nyeremény mellett kiszállni. Így bár kisebb lesz the kifizetett összeg, mintha valóban megvárnád a new meccs végét, viszont cserébe nem áll fenn annak a new kockázata, hogy elbukod a teljes nyereményt, mert az egyik csapat az utolsó pillanatban rúg gólt.

Kripto valutás számláról intézett első befizetés automatikus kizárást jelent a pénzbónusz ajánlatokból. Válaszd ki the neked legjobban tetsző gyűjtő fogadást, és vágj zsebre 10%-al több nyeremény fogadásonként. Tegye meg első befizetését, és szerezzen egy 100% bónuszt, akár 300 EUR összegben. Amennyiben szeretnél letölteni az appot, elegendő, ha egy alap okostelefonnal rendelkezel, amely biztosítja számodra az App Store vagy a Have fun Áruház elérését. Fontos ezenkívül az is, hogy stabil legyen az internetkapcsolatod, akár mobil internetet használsz, akár wifit, hiszen így biztosíthatod, hogy a letöltés és a játék közben sem lesznek majd fennakadások.

Bónusz A Sorozatos Vesztes Fogadásokért

Nem a weblap butított változatát kapjuk, hanem egy teljes verziót, ami akár push üzenetet is képes küldeni. Ha egymás után 20 fogadásod vesztesnek bizonyult, akkor a 22Bet kisegít a bajból. Amennyiben valamilyen kérdésed adódna, azt tanácsoljuk, hogy első körben nézz körül a webhely eléggé jól felépített GYIK szekciójában. Ha viszont olyan jellegű, természetű (halasztást nem tűrő) a kérdésed, akkor érdemes arizona online chat szolgáltatást igénybe venned (a bejelentkezést követően). Igaz, hogy az operátor ügyfélszolgálatának munkatársaira cseten is kell várni jó pár percet, viszont a türelem rózsát terem, azaz szakszerű kiszolgálásban lehet részünk, ha „kivárjuk a sorunkat”.

Ráadásul a 22Bet több mint 20 kriptovalutát kínál, és ezeket a biztonságos tranzakciókat a leggyorsabban dolgozza fel. Nem tapasztaltunk problémát the 22bet felületének a new tesztelése során. Mobil böngészőn keresztül kiválóan működik” “a honlap, s a mobil app is usually gyors volt. Az Ügyfélszolgálat ellenben kissé lassan reagál egyes felhasználók tapasztalatai szerint. Kérhetjük ezt bármikor az Ügyfélszolgálattól, 22bet fiókszámunk megadásával.

Kártérítést Kap A Vesztes Fogadásokért 22bet Bónuszként

Egy kis zöld pont jelzi, ha online az operátor, aki perceken belül visszaír. A beszélgetés végén 1-től 5-ig terjedő skálán tudod értékelni a” “munkáját. Legyen szó akár 22bet befizetés vagy 22bet kifizetés lebonyolításáról, érdemes tudnod, hogy az operátor részéről soha nem számítanak fel neked többletköltséget, jutalékot, járulékos díjat. A 22bet mobil oldalának egyetlenegy általunk tapasztalt negatívuma, hogy a grafikus tartalmakat (pl. nyerőgépes játékok előnézeti képeit) időnként kissé lassan tölti be.

Az élő játétmód nem kicsit népszerű the játékosok körében, így a 22Bet felülete is nagy hangsúlyt fektetett a részleg kialakítására. A főként a Pragramic Play játékaiból álló referencia viszont többféle lehetőséget is biztosít a new játékosoknak a különféle asztali játék tekintetében. A kaszinó játékok” “amelyek biztosítják számodra a bónuszt, a kaszinó által előre meghatározott nyerőgépek, így fontos hogy minden esetben olvasd el a bónuszhoz tartozó részleteket. Ennek az összegnek mindössze legalább four hundred forintnak kell lennie, és ezt arizona összeget lesz majd lehetőséged az ajánlat keretei között megtöbbszörözni. Mivel ebben arizona esetben a 22betnél két különböző első befizetési bónusz ajánlatról van szó, ezért ezeknek részleteit the következőkben ismertetjük bővebben. Manapság az on the internet kaszinók és bukmékerek elterjedésével rengeteg lehetőséged van számtalan magyar piac és játék kipróbálására az otthonod kényelméből, vagy akár útközben is.

Az Esport Ajánlatok A Sportfogadás Oldal Felületén

És ennek köszönhetően nem pusztán csak a casinó és arizona élő casinó használatára megfelelő, hanem az operátor sportfogadás és élő sportfogadás termékének használatára is. Ennek köszönhetően, ha telepíted a 22bet app iOS-es vagy Androidos verzióját, akkor a kaszinó játékok mellett a sportfogadás részleget is bármikor használhatod legyen szó akár pre-match, vagy élő fogadások megkötéséről. Az ilyen típusú játékok kissé „el vannak dugva”, és ahhoz, hogy rátalálj, használod kell az on the internet kaszinós szekció jobb oldalán lévő keresőmezőt, bepötyögve a megfelelő kulcsszót (pl. video clip poker, vagy roulette).

Egy másik tevékenység néven ismert mágikus pörgetések bejelentkezésekhez, hogy megnyerje a jackpot. Ez a játék egy ázsiai falusi környezet keleti témájával érkezik, rulett szám alapú stratégia akkor the bónusz ajánlat szimbólumához tartozó szépség növekszik a nyerővonalakkal. Tanulj video poker ingyen online nincs hatással” “a new bankroll, hogy szórakozás közben elsajátítsák a new fogalmakat. Ezek után a “Saját számlám” menüben szükséges, hogy megadj néhány információt. Ha mindezzel kész vagy, akkor fel kell töltened legkevesebb 400 Forintot the számládra, amelynek the teljes összegét automatikusan megkapod. Hasonlóan a new sportfogadási bónusznál, itt is megkapod az első befizetésed száz százalékát, amely viszont ebben az esetben a jelenlegi árfolyamon körülbelül 120 ezer Forintig terjed.

A Sportfogadó Iroda Üdvözlő Bónusza

De ebben a new részben most csak azokat vesszük közelebbről szemügyre, amik folyamatosan elérhetők a magyar játékosoknak, téged is beleértve. A 22Bet rendszeres promóciókat és heti bónuszokat kínál” “magyarországi fogadóinak, hogy ingyen pénzt kapjanak. Minden fogadó minden héten különleges ingyenes fogadási bónuszt kaphat, a kaszinójátékosok pedig ingyenes pörgetési bónuszt várhatnak. A sportfogadási iroda kényelmes regisztrációt és számos fizetési lehetőséget biztosít, hogy mindenki számára elérhetővé tegye az online szerencsejátékokat. Ha tisztességes oddsokat és jól működő ügyfélszolgálatot keresel, ez a felület ideális lehet. Az web egyik legelismertebb Bitcoin sportfogadási platformjaként a new 22bet figyelemre méltó 26 kriptovalutát támogat.

Erre a 22bet kizárólag személyi igazolványt vagy útlevelet kér, egyéb okmányra nincsen the legjobb tudomásunk szerint szükség. Fontos kitétel továbbá, hogy kizárólag természetes személy regisztrálhat. Amennyiben nem azonnali válaszra van szükséged, hanem egy problémát jeleznél, arra will be van lehetőség. A képernyő legalján, az elérhetőségek menüpontban egy űrlap fogad, amin bármilyen kérdést vagy javaslatot megfogalmazhatsz. A 22bet ügyfélszolgálata twenty-four órán belül ígér választ a megadott elérhetőségeken.

Mire Számíthatsz A Kaszinó Részlegen?

A 22Bet visszatérítésnek nevezi, automatikusan kiszámítja, és nem kéri, hogy tegyen semmit, hogy jogosult legyen rá. Csak azok a fogadások jogosultak az ajánlatra, amelyek 1, 55 vagy annál” “nagyobb szorzóval keltek meg. A sportfogadás készen áll, hogy visszatérjen bárhol között dollar 1 és bucks 1, 000 csütörtökön. Ezt a pénzt extra fogadásokra használhatja fel, majd visszavonhatja nyereményét. Amennyiben igazán nagyszerű élményeket szeretnél, akár arra is usually lehetőséged van, hogy élőben kövesd az eseményeket a weboldalon. Ehhez pedig bármilyen eszközt használhatsz, miközben számíthatsz arra, hogy a mérkőzések nagy része elérhető majd élő közvetítés keretében.

A 22bet főleg a kedvező tenisz marginok miatt tartozik a legnépszerűbbek közé. Szerezz 10% bónuszt a gyűjtő fogadások szorzójára, ha a new nap gyűjtője ajánlatot használod! Ezek közül fogadj egyre, és ha minden tipped nyertes, akkor a szorzók 10%-al megnövekednek. A 22bet ismét egy oldal külföldi bukméker, ami teljes magyarítással is igyekszik egy szeletet kivágni a magyarországi on-line sportfogadás tortájából. Ha a nyerőgépes játékok rajongói közé tartozol, akkor kár lenne kihagynod ezt a fantasztikus lehetőséget. Ugyanis az ember egy kezén meg tudná számolni azon casinó operátorok számát, amelyek hasonló volumenű promóciót nyújtanak a már meglévő ügyfeleiknek.

Et Magyar : Casino Bónusz Ajánlatok Új És Régi Ügyfeleknek

Nem feltétlenül kell azonban nagyot kockáztatnod, hiszen a 22 Games szekcióban már pár tíz forinttól is játszhatsz a játékokkal, úgy hogy közben használhatod the bónuszt is. Amennyiben a sportfogadásra használható bónuszt választod, akkor ennek jóváírásához a new bónusz összegének ötszörösét kell gyűjtő fogadásokkal megtenned. Egy ilyen fogadásnak legkevesebb három eseményt kell tartalmaznia, ennek a három eseménynek pedig összesen legalább 1. forty -es szorzóval kell rendelkeznie. Viszont ami az aktuális promóciók között található, rendszeres jellegű akciókat illeti, 22BET bónusz kód egyelőre egyikhez sem szükséges. Ami zidovudine jelenti, hogyha a new bónusz szabályok alapján jársz el, akkor bármiféle kód nélkül igénybe tudod venni a Magyarországon elérhető bónuszok és promóciók mindegyikét.

A 22bet Casino oldalstruktúrája nagyon könnyen kezelhető, mindenhol aktív csempék és színes címszavak vannak. Amennyiben mégis elakad a játékos, lehetősége van segítséget kérni. A fogadólap grafikája nagyon kicsi, emiatt az oldalon végig nagyon kell figyelni. Sajnos úgy tűnik, hogy the cash out funkció (korai nyerés” “the megfelelő játékállásnál) is hiányzik, ezért ha különleges játékélményt keresel, a 22bet sportfogadási típusai valószínűleg nem lesznek a kedvenceid. Ha „Pisti” zidovudine mondja, hogy ugorj a kútba, ugye, hogy nem teszed meg?! Pontosan ugyanez a helyzet az online kaszinó operátorok esetében is.

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