Ayrıca, canlı bahis oyunlarının genellikle uyulması gereken belirli kuralları ve düzenlemeleri vardır. Bu kurallar, oyunun bütünlüğünü sağlamak ve hem oyuncuların hem de kasanın çıkarlarını korumak için yürürlüktedir. Deneme Free spin kavramını benimseyen çok sayıda site bulunmaktadır. Her biri, farklı zevklere ve arzulara hitap eden benzersiz bir çekicilik sunar. En son teknolojiye ve çarpıcı grafiklere odaklanan sitelerden tematik hikaye anlatımı dünyasının derinliklerine inen sitelere kadar seçenekler sonsuzdur. Bu siteler, Free spin denemesinin sadece yeni bir oyun deneyimine davet değil, aynı zamanda oyuncular arasında güven ve sadakat oluşturmak için bir fırsat olduğunu göstermektedir.

Bu taktikler ve stratejiler, oyuncuların oyunu daha verimli bir şekilde oynamalarını ve kazançlarını artırmalarını sağlar. Bu incelemeler, kumarhane siteleri hakkında detaylı bilgi sunar ve güvenilirliğini değerlendirir. Güvenilir bir kumarhane, genellikle resmi bir oyun lisansına sahiptir. İlk adım olarak, kumarhane sitesinin lisansını ve hangi düzenleyici kuruluş tarafından denetlendiğini kontrol edin. Örneğin, Malta, Costa Rica, Curacao gibi saygın lisans sağlayıcılarına sahip kumarhaneler genellikle güvenilir kabul edilir. Sitemizin ” Deneme Bonusu ” sayfasında sizlere deneme bonusu kampanyalarından nasıl yararlanacağınız hakkında bilgilendirmede bulunmuştuk.

Ücretsiz Dönüş Veren Siteler

Bu teklifler arasında genellikle bedava bahisler veya belli bir miktar ücretsiz bahis kredisi bulunur. Ancak deneme bonusları kullanıcıların belirli şartları ve kuralları yerine getirmelerini gerektirebilir. Bu tür siteleri araştırırken lisanslı ve güvenilir platformları tercih etmek önemlidir. Deneme bonusu veren bahis siteleri içerisinde Mariobet, Betmatik, Kralbet, Sahabet, Bahis.com gibi siteler yer almaktadır.

Bu, oyuncuların oyun, grafikler ve kullanıcı arayüzü hakkında fikir edinmelerini sağlayarak keyif aldıkları ve kaçınmak isteyebilecekleri oyunları belirlemelerine yardımcı olur. Free spinlerin birincil amacı, yeni oyuncuları çevrimiçi bahis sitesine çekmektir. Promosyon stratejilerinin bir parçası olarak, bahis siteleri bireyleri kaydolmaya ve oyun seçimlerini denemeye ikna etmek için Free spinler sunar.

En iyi casino sitelerini seçerken bu faktörleri dikkate alarak güvenilir ve kaliteli bir oyun deneyimi yaşayabilirsiniz. Her oyuncunun ihtiyaçları farklı olduğundan, kendi tercihlerinize uygun olan bir casino sitesi seçmek önemlidir. Türkçe siteler ülkemizde yasal olmadığı için güvenlik sorunu yaşama şansınız daha fazladır. Bir casino sitesine kaydolduğunuzda birden fazla yatırım şartsız ücretsiz dönüş alacaksınız.

Gerçek parayla slot oynamak için casino sitelerini kullanmanız gerekir. Bu faktörler arasında lisans, kullanıcı yorumları, oyun çeşitliliği ve bonuslar yer alır. Doğru kararlar vermek için bu makaledeki önerilere uygun hareket edin.

Free Spin Veren Bahis Ve Casino Siteleri 2024

Deneme bonusu alabilmek için aşağıdaki adımları gerçekleştirmeniz yeterlidir. Bazı durumlarda, yerine getirilmesi zor olabilecek yüksek bahis gereksinimleriyle karşılaşabilirsiniz. Bu, para çekme talebinde bulunmadan önce bonus miktarını (veya Free spinlerden elde edilen kazançları) belirli sayıda çevirmeniz gerektiği anlamına gelir. Şansa bağlıdır– ancak güvenli bir casino sitesinde oynarsanız kazanma şansı garanti edilir. Yukarıdaki 5 kriter oynaslot.com ekibi olarak incelediğimiz ve sizlere de tavsiye ettiğimiz inceleme kriterleridir. Tabii ki bunların dışında da dikkat edilmesi gereken birçok önemli nokta mevcut.

Gereksinim ne kadar yüksek olursa, para çekmeye hak kazanmadan önce o kadar fazla bahis oynamanız gerekecektir. Bununla birlikte, daha yüksek bir bahis şartının genellikle daha büyük bir bonus miktarını veya daha cömert bir Free spin teklifini gösterdiğini unutmayın. Öte yandan, daha yumuşak bahis gereksinimleri sunan çevrimiçi bahis siteler ile de karşılaşabilirsiniz. Bu durumlarda, oyun gereksinimleri daha düşük olabilir veya hatta hiç olmayabilir, bu da kazancınızı daha kolay nakde çevirmenize olanak tanır.

Örneğin, önemli miktarda kazansanız bile, bahis siteleri bunun yalnızca belirli bir kısmını çekmenize izin verebilir. Hangi kısıtlamaların geçerli olabileceğini bilmek için çevrimiçi bahis sitelerinin hüküm ve koşullarını dikkatlice okumak ve anlamak çok önemlidir. Şu anda Türkiye’de kontrolsüz bahis sitelerinin erişimi engellenmiş durumdadır. Ancak, pratikte, genellikle en büyük ve en iyi bilinen bahis siteleri engellenir. Bu siteler, vergi ödememe ve adreslerini düzenli olarak güncelleme gibi yasal olmayan yöntemler kullanabilirler. Hükümet, bu tür bahis sitelerine erişimi engellemekte ve para cezaları uygulamaktadır, ancak Türkiye’den oyuncuları kabul etmeye devam etmektedirler.

Her oyun sağlayıcı ve slot oyun türünde kurallar değişiklik göstermektedir. Türkiye üzerinden bahis oynayarak free spin kazanmak isteyen binlerce kişi bulunur. Bu durumda en iyi ve güvenilir free spin hizmeti sağlayan firmalar araştırılmaya başlar. Sizler için uzman ekibimiz en iyi free spin sağlayan firmaları bir araya getiriyor.

Jackpot çarpma olasılığının tam olarak hesaplanması neredeyse imkansızdır, ancak ne kadar büyükse, kar beklentisi de o kadar büyük olur. Ücretsiz bir slot oyunu size oyun özelliklerini dikkatlice inceleme şansı sunabilir. Aşağıdaki paragraflarda, size ortalama dönemler ve ödemeler ile ünlü slotlardaki en büyük kazançlardan bazıları hakkında bilgiler vereceğim. +400’den fazla casino sitesinin yer aldığı ” Türkçe Casino Siteleri ” sektöründe güvenilir olanlara ulaşmak için birçok yöntem vardır. Oynaslot.com gibi inceleme siteleri, bahis forumları, şikayet siteleri gibi platformları inceleyerek güvenilir olan Türkçe casino sitelerine ulaşabilirsiniz. Bahis Siteleri Analiz platformu olarak sitemiz üzerinden ” Güvenilir Canlı Bahis Siteleri ” hakkında en güncel bilgilere ulaşabilir ve destek alabilirsiniz.

Bu bonus türü, yeni oyunları deneme fırsatı vermesi ve kazanma şansını artırması nedeniyle oyuncular tarafından tercih edilir. Yukarıda belirtilen siteler, yatırım şartsız Free Spin bonusu sunan online casinolardan sadece birkaçıdır ve oyuncuların kendi ihtiyaçlarına ve tercihlerine göre daha fazla seçenek bulabilirler. Üyelerine free spin bonusları veren bahis siteleri oyuncuların slot oyunları bölümünde birçok farklı avantajı kullanabilmesini sağlamaktadır. Sektör içi deneyim noktasında da bu bonusları en verimli hali ile kullanmak isteyen oyuncular bu bonusun hangi oyunlarda kullanılabileceğini incelerler. Oyuncular, free spin kampanyalarını mevcut sitenin belirtmiş olduğu oyunlarda özgürce harcarlar.

Ayrıca, para kazanmak için daha fazla fırsat elde edecekleri için mevcut oyuncuları site ile bahis yapmaya devam etmeye teşvik eder. Tıpkı freespin mantığında bahis kategorisi için de freebet bonusu tanımlanmıştır. Freebet bonusu spor kategorisine özel olan bir bonustur ve ücretsiz spor bahsi oynamanıza olanak sağlar. İki tür ücretsiz döndürme bonusu vardır – standart ve geliştirilmiş. Standart tip, oyun tarafından sunulanın üzerine %10-20 ekstra dönüş sağlayacaktır. Slot bonusu, slot oyununu oynamak için oyunculara verilen bir ödül türüdür.

Popüler slot oyunlarında yeteneklerinizi kanıtlamanıza ve yüksek kazançlara ulaşmanıza olanak tanır. Casinomaxi, güvenilir slot siteleri arasında önde gelen bir konumdadır. En iyi free spin bonuslarını sunan siteler sürekli değişebilir, ancak popüler bahis ve casino siteleri genellikle üyelerine çeşitli promosyonlar sunar. Bazı popüler bahis siteleri ve casinolar, düzenli olarak free spin kampanyaları düzenleyen ve oyunculara ücretsiz dönüşler sağlayan platformlar arasında yer alır. Ancak bonus teklifleri sık sık güncellendiğinden, en güncel ve en iyi teklifleri görmek için ilgili sitelerin promosyon sayfalarını düzenli olarak kontrol etmek önemlidir.

Slot siteleri, genellikle hoş geldin bonusu, free spin ve yatırım bonusu gibi çeşitli promosyonlar sunar. İnternet üzerinde kumarhane hakkında kullanıcı yorumlarına göz atın. Diğer oyuncuların deneyimleri, bir kumarhane sitesinin güvenilirliği hakkında önemli ipuçları sunabilir. Free Spin bonusu, online casinolar casino free spin veren siteler tarafından oyunculara sunulan ücretsiz dönüşlerdir. Bedava bahis bonusu, bahis siteleri tarafından sunulan bir promosyon türüdür.

Onwin, 2020 yılında hizmet vermeye başlayan 1000’den fazla slot oyunu ile ilk yatırıma özel %100 bonus + free spin imkanı sunan Curacao lisanslı güvenilir slot siteleri arasında yer alıyor. Sektöre diğer sitelre kıyasla çok daha yeni giriş yapmış olmasına rağmen kısa sürede büyüyen Onwin, slot oyunları konusunda oldukça popüler sitelerden biri  haline gelmiştir. İçerisindeki 1000’lerce slot oyunu aktif şekilde oynanabilir, ekstra free spin bonuslarıyla da daha fazla kazanç elde edebilir. Sahabet, 2022 yılında hizmet vermeye başlayan 100’den fazla slot oyunu ile kayıplarınızda %50 discount bonusu imkanı sunan Curacao lisanslı slot siteleri arasında yer alıyor.

Bu sitelerin genellikle lisans bilgileri ve düzenleyici kurumları web sitelerinde açıkça belirtilir. Bu soruların cevaplarını arıyorsan, incelediğimiz slot sitelerine göz atabilirsin. 30 TL Bonus, 50 TL Bonus, 200 TL bonus gibi birçok konuda bilgiye ulaşabileceğiniz sitemizde uzman editörümüz Aslan Kuraltepe tarafından en güvenilir bahis ve casino siteleri listelenmektedir. Aslan Kuraltepe alanında uzman 10 yıllık aktif casino kariyeri bulunan profesyonel biridir.

Leave a Reply

Your email address will not be published. Required fields are marked *

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