Vulkan Vegas Auszahlung Schwierigkeiten Mit Online CasinosAuch die Zusammenarbeit des Betreibers über McAfee Secure gewährleistet eine sichere Datenübertragung.

Sobald die Webseite aufgerufen wird, steht automatisch eine Umleitung auf die mobile phone Homepageversion, die eine intuitive Bedienung über Touchscreen ermöglicht. Realitätsnahes Casinofeeling zu Hause erleben – das ermöglichen die Live Spiele, die es momentan in gut sortierten und renommierten Gambling dens online zu finden existiert. Auch Vulkan. gamble gehört natürlich über dieser Art Plattform und bietet in der eigenen Spielothek diverse Spiele in einer Live Variante a great. Dort hat ihr außerdem aktuelle Top Anbieter, perish jene Promotion anbieten.

Die Webseite für User aus der Bundesrepublik wurde natürlich komplett ins Deutsche übersetzt. Es gibt jedoch keine weiteren Sprachoptionen – eine Folge jeder eigenen URL. Für User aus dem DACH-Raum wird dieses deutschsprachiger Support angeboten. Wir begrüßen sera zudem, dass Vulkan Vegas in dasjenige Chatfenster ein umfangreiches FAQ-Menü in deutscher Sprache integriert head wear, das zahlreiche Fragen beantwortet. Doch de uma ihr im Live-Chat selten länger als 30 Sekunden auf eine Antwort wartet, ist es nicht allzu schlimm, wenn der Anbieter wenig Hotline bereitstellt. Um die Boni über erhalten, müsst ihr mindestens 10 European (1. Einzahlung) beziehungsweise 15 Euro (2. und 3. Einzahlung) überweisen.

Spend More Cash Upon Your Sweetheart – Benedicta Gafah Informs Men

Die Dauer jeder Auszahlung kann jou nach Art dieser Auszahlung und sonstigen Faktoren schwanken. Um einen legalen Betrieb zu führen, müssen Online-Casinos eine Franchise von der Regulierungsbehörde in Deutschland erwerben. Während unseren Feuer speiender berg (umgangssprachlich) Vegas fiel es uns schwer, irgendeinen echten Mangel feel Angebot des Casinos zu finden. Unser einziger echter Kritikpunkt ist die kurze Dauer zum Erreichen dieser Umsatzbedingungen. Wir hoffen, dass der Anbieter diese nach über korrigiert, um living room Bonus für perish Spieler attraktiver zu machen.

Vulkan Vegas unterstützt verantwortungsvolles Spielen, es liegt in Ihrer Verantwortung bewusst zu zocken. Online-Casinos bieten höhere Ein- und Auszahlungslimits, da sie vonseiten Banken abhängig sind immer wieder. Minimalen Einzahlung von 50 Euro durch einem Bonus vonseiten 200% mit 100 Freispielen im Departed or Alive 2 (NetEnt). Anders wie allerlei modernen Online Internet casinos verzichtet Vulkan Las vegas den Erfahrungen aufgrund auf ein sets apart Sportwettenangebot. Die entsprechenden Punkte, welche euren Rang innerhalb kklk Treueprogramms bestimmen, hängen von eurem Anwendung ab.

Spielen Auch Sie Bei Vulkan Vegas!

Zwar mögen aktuell eine große Anzahl an internet Casinos aus Curacao nach Continente europeo schwappen, doch pass away Entwicklung geht bereits Jahre zurück. Eines der ersten Online Casinos, unser durch der Curacao-Lizenz auch in Deutschland nutzbar war, ist natürlich Vulkan Vegas. Aufgrund jeder Illegalität dieses Glücksspielangebots gehen unsereiner auf diese jedoch wirklich nicht entlang ein. Da wir dem illegalen Anbieter jedoch wenig Plattform bieten möchten, die Spiele vorzustellen, entdecken” “unsereiner davon ab, Informationen über das Feuer speiender berg (umgangssprachlich) Vegas Spielangebot bereitzustellen. Sofern die Online-Spielothek auf dem deutschen Glücksspielmarkt legal agiert, nehmen wir perish Spielauswahl gerne genauer bauer die Lupe.

Es gibt nicht ein paar Online Gambling dens mit mehr Mitspielen zur Auswahl. Einen Punktabzug gibt ha sido dagegen für pass away Dauer jeder Umsatzbedingungen. Sie haben aufgrund Erhalt eins Angebotes nämlich wirklich 5 Tage Zeit, um die Bedingungen zu erfüllen vulkan vegas bestandskunden.

Klasse: Das Feuer Speiender Berg (umgangssprachlich) Vegas Treueprogramm

Unsere Erfahrungen mit Vulkan Vegas bezüglich der Bedingungen offenbaren, dass du dwelling area Bonus” “forty Vacio umsetzen musste und die Gewinne aus den Freispielen thirty Mal. Die Lizenz aus Curacao gilt als seriös und sichert euch pass away Anwendung einer SSL-Verschlüsselungstechnik a great. Zwar müsst Du im Bereich kklk Spielerschutzes einige Abstriche machen, dafür vermag euch gleich mehr finanzielle Souveränität angeboten. Wie c/o den meisten Gambling play rooms mit Autoplay könnt Ihr pro Spielrunde mehr als one Euro einsetzen sowie monatlich mehr auf welche art 1 ) 000 Euro einzahlen.

Dies ist natürlich nicht nur each Live-Chat möglich, jedoch auch per Telefon und E-Mail. Im Live-Chat-Fenster können Sie auch auf Wundern und Antworten zugreifen oder eine direkte Weiterleitung an einen Mitarbeiter erhalten. In jedem Fall schien uns das Support-Team immer engagiert darüber hinaus professionell zu sein. Wir haben letztens innerhalb weniger Stunden Antworten per E-Mail erhalten.

Wie Lange Dauert Noch Eine Auszahlung Bei Vulkan Sin City?

Vulkan Las vegas möchte, wie guy entdecken kann, man treu Spieler etwas Interessantes bieten. Vulkan Vegas bietet auch living area Bereich Video-Poker, alle sich über die Kategorien ansteuern lässt. Die Slots übereinstimmen viele spannende Angelegenheiten ab und est gibt auch dwelling area ein” “oder anderen besonderen Spieltitel, die zum Beispiel an Serien und Filme erinnern. Trotz” “gorge internationalen Angebots hat Vulkan Vegas reichhaltig Traktat inside die deutsche Variation seiner Web site gesteckt.” “[newline]Darüber hinaus ist pass aside gesamte Web site sehr Übersichtlich gestaltet. Neben dem senden Style und der einfachen Navigation überzeugen herausragend die kurzen Ladezeiten, die deinem Spielspaß nicht internet marketing Wege stehen. Außer dieser Curacao-Lizenz zeigen ebenso andere Eigenschaften pass away seriöse Plattform aus.

Der eine Abzug bei den Sternen ist aufgrund der teilweise doch langen Bearbeitungszeiten bei Auszahlungen. Bevor man einander junge einsatz dieser Einzelheiten der Auszahlung befasst, sollte person vulkan vegas sofort zu Aktivierung expire richtige Einzahlungsmethode gebrauchen. Auch Blackjack-Fans können einander bei Vulkan Vegas über dieses großes Angebot freuen.

Hinterlassen Sie Ihre” “feuer Speiender Berg (umgangssprachlich) Las Vegas Erfahrungen Antworten Abbrechen

Allerdings ist natürlich es belly möglich, dass dieser Anbieter hier in naher Zukunft noch nachlegt. Denn ebenso Netent und Evolution Video gaming sind gerade gerade auf” “unserem Poker-Markt aktiv sowie könnten within Zukunft für andere Live Spiele unter Feuer speiender berg (umgangssprachlich) Vegas sorgen. Seitdem wurde bauer dem Namen allerdings ein seriöses sowie ausgesprochen umfangreiches Online Online casino mit einer hohen Kundenzahl aufgebaut. Vulkan Vegas ist within ganz Europa darüber hinaus vor allem in vielen L?ndern der ehemaligen Sowjetunion aktiv.

Außer der Curacao-Lizenz offenbaren im übrigen sonstige Eigenschaften die seriöse Plattform aus. Beim Thema Auszahlungen müssen Spieler ihre Identität überprüfen lassen. Hierzu verlangt Vulkan Sin city die Einsendung von kopierten Ausweisdokumenten. Für Mitglieder im Treueprogramm gibt es einerseits wöchentliches Cashback im Angebot.

Vulkan Vegas – Erfahrungen Mit Diesem Casino

Diesen Luxus head wear man in sonstigen” “Gambling dens nicht und muss erst x40 Bet vom Gesamtbetrag durchführen. Wir finden, Feuer speiender berg (umgangssprachlich). bet ist außerdem ganz besonders wie Spieleplattform für Neuzugänge im Online Glücksspiel geeignet. Zu living area diversen Spielekategorien und Games werden nämlich Erläuterungen zur Verfügung gestellt und etliche Tipps und Methods zur erfolgreichen Nutzung gegeben. Auch sofern das für versierte Spieler wohl bei weitem nicht allzu relevant ist natürlich, zeigt es auf jeden Fall, wenn die Plattform plain kundenorientiert ist. Tischspiele” “auf welche weise Blackjack können genauso gespielt werden auf welche art klassische Fruchtautomaten oder aber moderne Movie Slots. Zudem kooperiert das Casino mit der unabhängigen Testbehörde eCOGRA, welche junge anderem die Auszahlungsraten des Casinos überprüft und bestätigt.

Dazu werden Ihnen 25 Freispiele für den Slot machine game Fruit Super Volkswagen geschenkt. Bei jeder zweiten Einzahlungen stehen Ihnen ein 125 %iger Zuschlag bei bis zu forty nine € oder allerdings ein 200 %iger Bonus auf den Betrag zwischen 50 € und seven hundred € zu. Dazu gibt es entweder 50 Freipiele für Book of typically the Divine Reloaded, und aber 100 Freispiele für Joker Gain, beide aus dem Hause Spinomenal.

Vulkan Las Vegas Casino Zahlungsmethoden

Einzig eine gewisse eigene Kategorie für Slots mit Jackpot hätten wir mir noch gewünscht, vonseiten denen es auch einige gibt wie etwa der bekannte Spielautomat Mega Moolah. Mit diesen Aussagen wird das Benutzerkonto verifiziert und eine gewisse Auszahlung der Gewinne ist nun möglich. Im Einklang mit den vorherrschenden Gesetzen sind immer wieder Auszahlungen ohne vorherige Konto Verifizierung bei weitem nicht möglich. Spielen Sie Ihre Lieblingsspiele von überall über der Feuer speiender berg (umgangssprachlich) Las vegas Mobile App. Verfügbar für Google android os und iOS, offeriert unsere App eine“ „nahtlose und benutzerfreundliche Erfahrung, sodass Sie jederzeit und überall spielen können.

Für eine gewisse Einzahlung nach deinem Registrierungsprozess erhalten Sie vor allem Willkommensbonus 1000 EUR darüber hinaus dazu noch a hundred twenty five Freispiele zusätzlich. Um das Angebot für alle zu nutzen, laden Sie Ihr Spielerkonto mit einem Betrag mindestens 10 EUR oder mehr auf. Ihren ersten Casino Bonus sowie Free rounds können Sie garantiert per irgendeinen Link auf meiner Webseite aktivieren. Im direkten Vergleich können die finanziellen Eckdaten des Vulkan Las vegas Casino Bonus selvbestemmende mithalten.

Weitere Spiele

Es sind keine Reward Codes nötig, o die Bonusangebote c/o Vulkan Vegas über nutzen. Sie erhalten jeden Reward automatisch vom Online casino, solange Sie die Anforderungen zum Bewahrung erfüllen. Natürlich sein bei Vulkan Vegas verschiedene Zahlungsmethoden unterstützt.

So werden zum Beispiel minderjährige Spieler nicht zugelassen, denn du musst mindestens 18 Jahre alt sein, comes du beim Feuer speiender berg (umgangssprachlich) Vegas Casino das” “Konto eröffnen möchtest. Wer Probleme über der Spielsucht hat, muss zudem eine Auszeit beantragen oder aber im Kundenbereich Limits setzen. Das Vulkan Vegas Casino loath eine Lizenz aus Curacao und ist natürlich seit 2016 jetzt auf dem Flecken.

Casino Professor Empfiehlt

In der Bewertung fällt die Registrierung als auch alle Webseiten-Auftritt nur positiv auf. Die Free Spins wird automatisch aktiviert, sofern Sie den Slot aufrufen. Sie ist echt auf iGaming spezialisiert, hat aber darüber hinaus Erfahrung in Sportwetten und Schreiben von seiten Bloggen rund mit dieser absicht das Thema eSports.

Nichts leichter wie das, denn perish Einzahlung kostet euch nur wenige Phasen. Für eure Transaktion stehen euch inside diesem Top Echtgeld Casino 2024 different namhafte Banking Dienste zur Verfügung. Unser Vulkan Vegas On line casino Test offenbart” “euch demzufolge eine anspruchslos zu bedienende Plattform, die neue Zocker und Bestandskunden in gleichem Umfang inside ihren Bann zieht. Dank der intuitiven Oberfläche und jeder übersichtlichen Spiele-Lobby durch verschiedenen Suchfiltern hat ihr auf Anhieb garantiert das, wonach ihr sucht. Besonders erfreulich ist dieser geringe nötige Mindestauszahlungsbetrag bei E-Wallets darüber hinaus der sehr hohe erlaubte Auszahlungsbetrag des beeindruckenden 75. 000€ pro Monat. Spieler können sich bei Fragen oder Problemen, beispielsweise zu den Freispielen oder Revenu, an den Kundenservice von Vulkan Sin city Casino wenden.

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