/** * jQuery fontIconPicker - v2.3 * * An icon picker built on top of font icons and jQuery * * http://codeb.it/fontIconPicker * * Made by Alessandro Benoit & Swashata * Under MIT License * * {@link https://github.com/micc83/fontIconPicker} * * Modified by Visual Composer Dev Team */ (function ( $ ) { 'use strict'; // Create the defaults once var defaults = { theme: 'fip-vc-theme-grey', // The CSS theme to use with this fontIconPicker. You can set different themes on multiple elements on the same page source: false, // Icons source (array|false|object) emptyIcon: true, // Empty icon should be shown? emptyIconValue: '', // The value of the empty icon, change if you select has something else, say "none" iconsPerPage: 20, // Number of icons per page hasSearch: true, // Is search enabled? searchSource: false, // Give a manual search values. If using attributes then for proper search feature we also need to pass icon names under the same order of source useAttribute: false, // Whether to use attribute selector for printing icons attributeName: 'data-icon', // HTML Attribute name convertToHex: true, // Whether or not to convert to hexadecimal for attribute value. If true then please pass decimal integer value to the source (or as value="" attribute of the select field) allCategoryText: 'From all categories', // The text for the select all category option unCategorizedText: 'Uncategorized', // The text for the select uncategorized option iconDownClass: 'fip-icon-down-dir', // Class for icon down iconUpClass: 'fip-icon-up-dir', // Class for icon up iconLeftClass: 'fip-icon-left-dir', // Class for icon left iconRightClass: 'fip-icon-right-dir', // Class for icon right iconSearchClass: 'fip-icon-search', // Class for search iconCancelClass: 'fip-icon-cancel', // Class for search canceling iconSpinClass: 'fip-icon-spin3', // Class for fip-icon-spin3 iconBlockClass: 'fip-icon-block', // Class for block(none icon) searchPlaceholder: 'Search Icon', // Search icon text placeholder mainClass: 'vc-icons-selector' }; // The actual plugin constructor function Plugin( element, options ) { this.element = $( element ); this.settings = $.extend( {}, defaults, options ); if ( this.settings.emptyIcon ) { this.settings.iconsPerPage --; } this.iconPicker = $( '
', { 'class': this.settings.mainClass, style: 'position: relative', html: '
' + '' + '' + '' + '' + '' + '' + '
' + '' } ); this.iconContainer = this.iconPicker.find( '.fip-icons-container' ); this.searchIcon = this.iconPicker.find( '.selector-search i' ); this.iconsSearched = []; this.isSearch = false; this.totalPage = 1; this.currentPage = 1; this.currentIcon = false; this.initialized = false; this.iconsPaged = false; this.iconsCount = 0; this.open = false; // Set the default values for the search related variables this.searchValues = []; this.availableCategoriesSearch = []; // The trigger event for change this.triggerEvent = null; // Backups this.backupSource = []; this.backupSearch = []; // Set the default values of the category related variables this.isCategorized = false; // Automatically detects if the icon listing is categorized this.selectCategory = this.iconPicker.find( '.icon-category-select' ); // The category SELECT input field this.selectedCategory = false; // false means all categories are selected this.availableCategories = []; // Available categories, it is a two dimensional array which holds categorized icons this.unCategorizedKey = null; // Key of the uncategorized category // Initialize plugin this.quickInit(); } Plugin.prototype = { /** * Quick init */ quickInit: function () { var first = true; // Add the theme CSS to the iconPicker this.iconPicker.addClass( this.settings.theme ); // To properly calculate iconPicker height and width // We will first append it to body (with left: -9999px so that it is not visible) this.iconPicker.css( { left: - 9999 } ).appendTo( 'body' ); var iconPickerHeight = this.iconPicker.outerHeight(), iconPickerWidth = this.iconPicker.outerWidth(); // Now reset the iconPicker CSS this.iconPicker.css( { left: '' } ); // Add the icon picker after the select this.element.before( this.iconPicker ); // Hide source element // Instead of doing a display:none, we would rather // make the element invisible // and adjust the margin this.element.css( { visibility: 'hidden', top: 0, position: 'relative', zIndex: '-1', left: '-' + iconPickerWidth + 'px', display: 'none', height: iconPickerHeight + 'px', width: iconPickerWidth + 'px', // Reset all margin, border and padding padding: '0', margin: '0 -' + iconPickerWidth + 'px 0 0', // Left margin adjustment to account for dangling space border: '0 none', verticalAlign: 'top' } ).hide(); // Set the trigger event if ( ! this.element.is( 'select' ) ) { // Determine the event that is fired when user change the field value // Most modern browsers supports input event except IE 7, 8. // IE 9 supports input event but the event is still not fired if I press the backspace key. // Get IE version // https://gist.github.com/padolsey/527683/#comment-7595 var ieVersion = (function () { var v = 3, div = document.createElement( 'div' ), a = div.all || []; while ( div.innerHTML = '', a[ 0 ] ) { ; } return v > 4 ? v : ! v; }()); var el = document.createElement( 'div' ); this.triggerEvent = (ieVersion === 9 || ! ('oninput' in el)) ? [ 'keyup' ] : [ 'input', 'keyup' ]; // Let's keep the keyup event for scripts that listens to it } this.setSelectedIcon( this.element.val() ); /** * Category changer */ this.selectCategory.on( 'change keyup', $.proxy( function ( e ) { // Don't do anything if not categorized if ( this.isCategorized === false ) { return false; } var targetSelect = $( e.currentTarget ), currentCategory = targetSelect.val(); // Check if all categories are selected if ( targetSelect.val() === 'all' ) { // Restore from the backups // @note These backups must be rebuild on source change, otherwise it will lead to error this.settings.source = this.backupSource; this.searchValues = this.backupSearch; // No? So there is a specified category } else { var key = parseInt( currentCategory, 10 ); if ( this.availableCategories[ key ] ) { this.settings.source = this.availableCategories[ key ]; this.searchValues = this.availableCategoriesSearch[ key ]; } } this.resetSearch(); this.loadIcons(); }, this ) ); /** * On down arrow click */ this.iconPicker.find( '.selector-button' ).on( 'click', $.proxy( function () { if ( ! this.open && first ) { first = false; this.initCategories(); } // Open/Close the icon picker this.toggleIconSelector(); }, this ) ); /** * Next page */ this.iconPicker.find( '.selector-arrow-right' ).on( 'click', $.proxy( function ( e ) { if ( this.currentPage < this.totalPage ) { this.iconPicker.find( '.selector-arrow-left' ).show(); this.currentPage = this.currentPage + 1; this.renderIconContainer(); this.renderIcons(); } if ( this.currentPage === this.totalPage ) { $( e.currentTarget ).hide(); } }, this ) ); /** * Prev page */ this.iconPicker.find( '.selector-arrow-left' ).on( 'click', $.proxy( function ( e ) { if ( this.currentPage > 1 ) { this.iconPicker.find( '.selector-arrow-right' ).show(); this.currentPage = this.currentPage - 1; this.renderIconContainer(); this.renderIcons(); } if ( this.currentPage === 1 ) { $( e.currentTarget ).hide(); } }, this ) ); /** * Realtime Icon Search */ this.iconPicker.find( '.icons-search-input' ).on( 'keyup', $.proxy( function ( e ) { // Get the search string var searchString = $( e.currentTarget ).val(); // If the string is not empty if ( searchString === '' ) { this.resetSearch(); return; } // Set icon search to X to reset search this.searchIcon.removeClass( this.settings.iconSearchClass ); this.searchIcon.addClass( this.settings.iconCancelClass ); // Set this as a search this.isSearch = true; // Reset current page this.currentPage = 1; // Actual search // This has been modified to search the searchValues instead // Then return the value from the source if match is found this.iconsSearched = []; $.grep( this.searchValues, $.proxy( function ( n, i ) { if ( n.toLowerCase().search( searchString.toLowerCase() ) >= 0 ) { this.iconsSearched[ this.iconsSearched.length ] = this.settings.source[ i ]; return true; } }, this ) ); // Filter duplicates this.iconsSearched = this.iconsSearched.filter( this.getOnlyUnique ); // Render icon list this.renderIconContainer(); this.renderIcons(); }, this ) ); /** * Quit search */ this.iconPicker.find( '.selector-search i' ).on( 'click', $.proxy( function () { this.iconPicker.find( '.icons-search-input' ).focus(); this.resetSearch(); }, this ) ); /** * On icon selected */ this.iconContainer.on( 'click', '.fip-box', $.proxy( function ( e ) { this.setSelectedIcon( $( e.currentTarget ).find( 'i' ).attr( 'data-fip-value' ) ); this.toggleIconSelector(); }, this ) ); /** * Stop click propagation on iconpicker */ this.iconPicker.on( 'click', function ( event ) { event.stopPropagation(); return false; } ); /** * On click out */ $( 'html' ).on( 'click', $.proxy( function () { if ( this.open ) { this.toggleIconSelector(); } }, this ) ); }, /** * Init */ init: function () { // Add the theme CSS to the iconPicker this.iconPicker.addClass( this.settings.theme ); // To properly calculate iconPicker height and width // We will first append it to body (with left: -9999px so that it is not visible) this.iconPicker.css( { left: - 9999 } ).appendTo( 'body' ); var iconPickerHeight = this.iconPicker.outerHeight(), iconPickerWidth = this.iconPicker.outerWidth(); // Now reset the iconPicker CSS this.iconPicker.css( { left: '' } ); // Add the icon picker after the select this.element.before( this.iconPicker ); // Hide source element // Instead of doing a display:none, we would rather // make the element invisible // and adjust the margin this.element.css( { visibility: 'hidden', top: 0, position: 'relative', zIndex: '-1', left: '-' + iconPickerWidth + 'px', display: 'none', height: iconPickerHeight + 'px', width: iconPickerWidth + 'px', // Reset all margin, border and padding padding: '0', margin: '0 -' + iconPickerWidth + 'px 0 0', // Left margin adjustment to account for dangling space border: '0 none', verticalAlign: 'top' } ).hide(); // Set the trigger event if ( ! this.element.is( 'select' ) ) { // Determine the event that is fired when user change the field value // Most modern browsers supports input event except IE 7, 8. // IE 9 supports input event but the event is still not fired if I press the backspace key. // Get IE version // https://gist.github.com/padolsey/527683/#comment-7595 var ieVersion = (function () { var v = 3, div = document.createElement( 'div' ), a = div.all || []; while ( div.innerHTML = '', a[ 0 ] ) { ; } return v > 4 ? v : ! v; }()); var el = document.createElement( 'div' ); this.triggerEvent = (ieVersion === 9 || ! ('oninput' in el)) ? [ 'keyup' ] : [ 'input', 'keyup' ]; // Let's keep the keyup event for scripts that listens to it } this.initCategories(); /** * Category changer */ this.selectCategory.on( 'change keyup', $.proxy( function ( e ) { // Don't do anything if not categorized if ( this.isCategorized === false ) { return false; } var targetSelect = $( e.currentTarget ), currentCategory = targetSelect.val(); // Check if all categories are selected if ( targetSelect.val() === 'all' ) { // Restore from the backups // @note These backups must be rebuild on source change, otherwise it will lead to error this.settings.source = this.backupSource; this.searchValues = this.backupSearch; // No? So there is a specified category } else { var key = parseInt( currentCategory, 10 ); if ( this.availableCategories[ key ] ) { this.settings.source = this.availableCategories[ key ]; this.searchValues = this.availableCategoriesSearch[ key ]; } } this.resetSearch(); this.loadIcons(); }, this ) ); /** * On down arrow click */ this.iconPicker.find( '.selector-button' ).on( 'click', $.proxy( function () { // Open/Close the icon picker this.toggleIconSelector(); }, this ) ); /** * Next page */ this.iconPicker.find( '.selector-arrow-right' ).on( 'click', $.proxy( function ( e ) { if ( this.currentPage < this.totalPage ) { this.iconPicker.find( '.selector-arrow-left' ).show(); this.currentPage = this.currentPage + 1; this.renderIconContainer(); this.renderIcons(); } if ( this.currentPage === this.totalPage ) { $( e.currentTarget ).hide(); } }, this ) ); /** * Prev page */ this.iconPicker.find( '.selector-arrow-left' ).on( 'click', $.proxy( function ( e ) { if ( this.currentPage > 1 ) { this.iconPicker.find( '.selector-arrow-right' ).show(); this.currentPage = this.currentPage - 1; this.renderIconContainer(); this.renderIcons(); } if ( this.currentPage === 1 ) { $( e.currentTarget ).hide(); } }, this ) ); /** * Realtime Icon Search */ this.iconPicker.find( '.icons-search-input' ).on( 'keyup', $.proxy( function ( e ) { // Get the search string var searchString = $( e.currentTarget ).val(); // If the string is not empty if ( searchString === '' ) { this.resetSearch(); return; } // Set icon search to X to reset search this.searchIcon.removeClass( this.settings.iconSearchClass ); this.searchIcon.addClass( this.settings.iconCancelClass ); // Set this as a search this.isSearch = true; // Reset current page this.currentPage = 1; // Actual search // This has been modified to search the searchValues instead // Then return the value from the source if match is found this.iconsSearched = []; $.grep( this.searchValues, $.proxy( function ( n, i ) { if ( n.toLowerCase().search( searchString.toLowerCase() ) >= 0 ) { this.iconsSearched[ this.iconsSearched.length ] = this.settings.source[ i ]; return true; } }, this ) ); // Filter duplicates this.iconsSearched = this.iconsSearched.filter( this.getOnlyUnique ); // Render icon list this.renderIconContainer(); this.renderIcons(); }, this ) ); /** * Quit search */ this.iconPicker.find( '.selector-search i' ).on( 'click', $.proxy( function () { this.iconPicker.find( '.icons-search-input' ).focus(); this.resetSearch(); }, this ) ); /** * On icon selected */ this.iconContainer.on( 'click', '.fip-box', $.proxy( function ( e ) { this.setSelectedIcon( $( e.currentTarget ).find( 'i' ).attr( 'data-fip-value' ) ); this.toggleIconSelector(); }, this ) ); /** * Stop click propagation on iconpicker */ this.iconPicker.on( 'click', function ( event ) { event.stopPropagation(); return false; } ); /** * On click out */ $( 'html' ).on( 'click', $.proxy( function () { if ( this.open ) { this.toggleIconSelector(); } }, this ) ); }, initCategories: function () { // If current element is SELECT populate settings.source if ( ! this.settings.source && this.element.is( 'select' ) ) { // Reset the source and searchSource // These will be populated according to the available options this.settings.source = []; this.settings.searchSource = []; // Check if optgroup is present within the select // If it is present then the source has to be grouped if ( this.element.find( 'optgroup' ).length ) { // Set the categorized to true this.isCategorized = true; this.element.find( 'optgroup' ).each( $.proxy( function ( i, el ) { // Get the key of the new category array var thisCategoryKey = this.availableCategories.length, // Create the new option for the selectCategory SELECT field categoryOption = $( '' ).prependTo( this.selectCategory ); // Show it and set default value to all categories this.selectCategory.show().val( 'all' ).trigger( 'change' ); }, /** * Load icons */ loadIcons: function () { // Set the content of the popup as loading this.iconContainer.html( '' ); // If source is set if ( this.settings.source instanceof Array ) { // Render icons this.renderIconContainer(); this.renderIcons(); this.setContainerSelectedItems(); } }, /** * Render icons inside the popup */ renderIconContainer: function () { var offset, iconsPaged = []; // Set a temporary array for icons if ( this.isSearch ) { iconsPaged = this.iconsSearched; } else { iconsPaged = this.settings.source; } // Remove duplicates iconsPaged = [ ...new Set( iconsPaged ) ]; // Count elements this.iconsCount = iconsPaged.length; // Calculate total page number this.totalPage = Math.ceil( this.iconsCount / this.settings.iconsPerPage ); // Hide footer if no pagination is needed if ( this.totalPage > 1 ) { this.iconPicker.find( '.selector-footer' ).show(); } else { this.iconPicker.find( '.selector-footer' ).hide(); } // Set the text for page number index and total icons this.iconPicker.find( '.selector-pages' ).html( this.currentPage + '/' + this.totalPage + ' (' + this.iconsCount + ')' ); // Set the offset for slice offset = (this.currentPage - 1) * this.settings.iconsPerPage; // Should empty icon be shown? if ( this.settings.emptyIcon ) { // Reset icon container HTML and prepend empty icon this.iconContainer.html( '' ); // If not show an error when no icons are found } else if ( iconsPaged.length < 1 ) { this.iconContainer.html( '' ); return; // else empty the container } else { this.iconContainer.html( '' ); } // Set an array of current page icons iconsPaged = iconsPaged.slice( offset, offset + this.settings.iconsPerPage ); this.iconsPaged = iconsPaged; // List icons /*for (var i = 0, item; item = iconsPaged[i++];) { // Set the icon title var flipBoxTitle = item; $.grep(this.settings.source, $.proxy(function (e, i) { if (e === item) { flipBoxTitle = this.searchValues[i]; return true; } return false; }, this)); // Set the icon box $('', { html: '', 'class': 'fip-box', title: flipBoxTitle }).appendTo(this.iconContainer); }*/ }, setContainerSelectedItems: function () { // If no empty icon is allowed and no current value is set or current value is not inside the icon set if ( ! this.settings.emptyIcon && (! this.element.val() || $.inArray( this.element.val(), this.settings.source ) === - 1) ) { // Get the first icon this.setSelectedIcon( this.iconsPaged[ 0 ] ); } else if ( $.inArray( this.element.val(), this.settings.source ) === - 1 ) { // Set empty this.setSelectedIcon(); } else { // Set the default selected icon even if not set this.setSelectedIcon( this.element.val() ); } }, /** * Set Highlighted icon */ setHighlightedIcon: function () { this.iconContainer.find( '.current-icon' ).removeClass( 'current-icon' ); if ( this.currentIcon ) { this.iconContainer.find( '[data-fip-value="' + this.currentIcon + '"]' ).parent( 'span' ).addClass( 'current-icon' ); } }, /** * Set selected icon * * @param {string} theIcon */ setSelectedIcon: function ( theIcon ) { if ( theIcon === this.settings.iconBlockClass ) { theIcon = ''; } // Check if attribute is to be used if ( this.settings.useAttribute ) { if ( theIcon ) { this.iconPicker.find( '.selected-icon' ).html( '' ); } else { this.iconPicker.find( '.selected-icon' ).html( '' ); } // Use class } else { this.iconPicker.find( '.selected-icon' ).html( '' ); } // Set the value of the element and trigger change event this.element.val( (theIcon === '' ? this.settings.emptyIconValue : theIcon ) ).trigger( 'change' ); if ( this.triggerEvent !== null ) { // Trigger other events for ( var eventKey in this.triggerEvent ) { this.element.trigger( this.triggerEvent[ eventKey ] ); } } this.currentIcon = theIcon; this.setHighlightedIcon(); }, /** * Open/close popup (toggle) */ toggleIconSelector: function () { this.open = (! this.open) ? 1 : 0; this.iconPicker.find( '.selector-popup' ).slideToggle( 300 ); this.iconPicker.find( '.selector-button i' ).toggleClass( this.settings.iconDownClass ); this.iconPicker.find( '.selector-button i' ).toggleClass( this.settings.iconUpClass ); if ( this.open ) { this.iconPicker.find( '.icons-search-input' ).focus().select(); if ( ! this.initialized ) { this.renderIconContainer(); this.renderIcons(); this.initialized = true; } } }, renderIcons: function () { for ( var i = 0; i < this.iconsPaged.length; i ++ ) { var item = this.iconsPaged[ i ]; // Set the icon title var flipBoxTitle = item; $.grep( this.settings.source, $.proxy( function ( e, i ) { if ( e === item ) { flipBoxTitle = this.searchValues[ i ]; return true; } return false; }, this ) ); // Set the icon box $( '', { html: '', 'class': 'fip-box', title: flipBoxTitle } ).appendTo( this.iconContainer ); } this.setContainerSelectedItems(); }, /** * Reset search */ resetSearch: function () { // Empty input this.iconPicker.find( '.icons-search-input' ).val( '' ); // Reset search icon class this.searchIcon.removeClass( this.settings.iconCancelClass ); this.searchIcon.addClass( this.settings.iconSearchClass ); // Go back to page 1 and remove back arrow this.iconPicker.find( '.selector-arrow-left' ).hide(); this.currentPage = 1; this.isSearch = false; // Rerender icons this.renderIconContainer(); this.renderIcons(); // Restore pagination if needed if ( this.totalPage > 1 ) { this.iconPicker.find( '.selector-arrow-right' ).show(); } } }; // Lightweight plugin wrapper $.fn.vcFontIconPicker = function ( options ) { // Instantiate the plugin this.each( function () { if ( ! $.data( this, "vcFontIconPicker" ) ) { $.data( this, "vcFontIconPicker", new Plugin( this, options ) ); } } ); // setIcons method this.setIcons = $.proxy( function ( newIcons, iconSearch ) { if ( undefined === newIcons ) { newIcons = false; } if ( undefined === iconSearch ) { iconSearch = false; } this.each( function () { $.data( this, "vcFontIconPicker" ).settings.source = newIcons; $.data( this, "vcFontIconPicker" ).settings.searchSource = iconSearch; $.data( this, "vcFontIconPicker" ).initSourceIndex(); $.data( this, "vcFontIconPicker" ).resetSearch(); $.data( this, "vcFontIconPicker" ).loadIcons(); } ); }, this ); // destroy method this.destroyPicker = $.proxy( function () { this.each( function () { if ( ! $.data( this, "vcFontIconPicker" ) ) { return; } // Remove the iconPicker $.data( this, "vcFontIconPicker" ).iconPicker.remove(); // Reset the CSS $.data( this, "vcFontIconPicker" ).element.css( { visibility: '', top: '', position: '', zIndex: '', left: '', display: 'block', height: '', width: '', padding: '', margin: '', border: '', verticalAlign: '' } ).show(); // destroy data $.removeData( this, "vcFontIconPicker" ); } ); }, this ); // reInit method this.refreshPicker = $.proxy( function ( newOptions ) { if ( ! newOptions ) { newOptions = options; } // First destroy this.destroyPicker(); // Now reset this.each( function () { if ( ! $.data( this, "vcFontIconPicker" ) ) { $.data( this, "vcFontIconPicker", new Plugin( this, newOptions ) ); } } ); }, this ); return this; }; })( jQuery ); # Changelog ## [Unreleased] ## [1.0.4] - 2024-05-02 ### Fixed - Fix implicit nullable deprecation warning for PHP 8.4 ## [1.0.3] - 2022-01-10 ### Changed - Update PHPstan to 1.0 - Switched to GitHub Actions ## [1.0.2] - 2020-07-15 ### Added - Minor performance improvements ## [1.0.1] - 2020-06-16 ### Fixed - When calling `Punycode::decode()`, the case flags array would fail to populate when given an empty array. ## [1.0.0] - 2020-06-09 - Initial release

Profesyonel analizlerle 1xbet dünyasına giriş yapın ve avantajları keşfedin

Profesyonel analizlerle 1xbet dünyasına giriş yapın ve avantajları keşfedin

Günümüzde online bahis ve casino oyunları oldukça popüler hale gelmiştir. Özellikle Türkiye’de birçok kişi, eğlence ve potansiyel kazanç elde etmek amacıyla bu platformlara yönelmektedir. Bu platformlardan biri olan 1xbet, sunduğu geniş oyun yelpazesi, cazip bonuslar ve kullanıcı dostu arayüzü ile dikkat çekmektedir. Bahis severlerin ve casino oyuncularının tercihleri arasında üst sıralarda yer alan 1xbet, güvenilirliği ve yenilikçi yaklaşımları ile sektörde adını duyurmuştur.

Online bahis dünyasına adım atmak isteyenler için 1xbet, hem yeni başlayanlara hem de deneyimli oyunculara hitap eden bir platform sunmaktadır. Yüksek oranları, canlı bahis seçenekleri ve çeşitli casino oyunları ile 1xbet, kullanıcılarına keyifli ve heyecan verici bir deneyim yaşatmayı hedeflemektedir. Bu makalede, 1xbet’in sunduğu avantajları, güvenilirliğini ve kullanım kolaylığını detaylı bir şekilde inceleyeceğiz. Ayrıca, platformun sunduğu çeşitli bonuslar ve promosyonlar hakkında bilgi vereceğiz.

1xbet Platformunun Sunduğu Bahis Seçenekleri

1xbet, spor bahisleri konusunda oldukça geniş bir yelpaze sunmaktadır. Futbol, basketbol, voleybol, tenis, hentbol gibi popüler sporların yanı sıra, daha niş spor dallarına da bahis yapma imkanı sunulmaktadır. Canlı bahis seçenekleri ile maç anında bahis yapabilir, heyecanı doruklara çıkarabilirsiniz. 1xbet’in sunduğu bahis seçenekleri sadece sporlarla sınırlı değildir. E-sporlar, sanal sporlar ve politik bahisler gibi farklı alanlarda da bahis yapma imkanı bulunmaktadır. Bu çeşitlilik, kullanıcılara farklı ilgi alanlarına göre bahis yapma olanağı sunar.

Canlı Bahis Deneyimi

1xbet’in canlı bahis özelliği, kullanıcılarına eşsiz bir deneyim sunmaktadır. Maçları canlı olarak takip ederken, anlık oran değişikliklerine göre bahislerinizi ayarlayabilirsiniz. Canlı bahislerde sunulan istatistikler ve grafikler, bahislerinizi daha bilinçli bir şekilde yapmanıza yardımcı olur. Ayrıca, canlı casino oyunları ile gerçek krupiyeler eşliğinde oyun oynayabilir, gerçek casino atmosferini yaşayabilirsiniz. Canlı bahis deneyimi, bahis severlerin favorisi haline gelmiştir ve 1xbet bu konuda oldukça başarılı bir platform sunmaktadır.

Spor Türü Bahis Çeşitliliği
Futbol Maç Sonucu, Alt/Üst, Handikap, İlk Yarı Sonucu
Basketbol Maç Sonucu, Sayı Üst/Alt, Handikap, Periyot Sonucu
Tenis Maç Galibi, Set Sayısı, Oyun Sayısı
Voleybol Maç Sonucu, Set Sayısı, Sayı Üst/Alt

Tabloda görüldüğü gibi, 1xbet farklı spor türleri için çeşitli bahis seçenekleri sunmaktadır. Bu çeşitlilik, kullanıcıların ilgi alanlarına ve tercihlerine göre bahis yapma imkanı sunar.

1xbet’in Casino Oyunları Dünyası

1xbet, sadece spor bahisleri ile değil, aynı zamanda casino oyunları ile de dikkat çekmektedir. Slot oyunları, rulet, blackjack, poker, bakara gibi popüler casino oyunlarının yanı sıra, çeşitli jackpot oyunları da platformda bulunmaktadır. Yüksek kaliteli grafikler ve ses efektleri ile casino oyunları, kullanıcılara gerçek bir casino deneyimi sunmaktadır. 1xbet’in casino oyunları, farklı yazılım sağlayıcıları tarafından geliştirilmiştir ve güvenilirliği ile ön plana çıkmaktadır. Casino oyunları, hem eğlenceli vakit geçirmek hem de kazanç elde etmek isteyenler için ideal bir seçenek olabilir.

Canlı Casino Deneyimi

1xbet’in canlı casino özelliği, kullanıcılarına gerçek krupiyeler eşliğinde oyun oynama imkanı sunmaktadır. Rulet, blackjack, bakara gibi popüler casino oyunlarını canlı olarak oynayabilir, gerçek casino atmosferini yaşayabilirsiniz. Canlı casino oyunlarında sunulan sohbet özelliği, diğer oyuncularla ve krupiyelerle etkileşim kurmanıza olanak tanır. Bu da oyun deneyimini daha keyifli hale getirir. Canlı casino, özellikle casino oyunlarını sevenler için kaçırılmaması gereken bir deneyimdir.

  • Slot Oyunları: Yüzlerce farklı slot oyunundan seçim yapabilirsiniz.
  • Rulet: Farklı rulet varyasyonları ile şansınızı deneyebilirsiniz.
  • Blackjack: Strateji ve şansın birleşimi olan blackjack oyununu oynayabilirsiniz.
  • Poker: Farklı poker varyasyonları ile becerilerinizi sergileyebilirsiniz.

1xbet’in casino oyunları, her zevke ve bütçeye uygun seçenekler sunmaktadır. Yüksek kaliteli grafikler ve ses efektleri ile oyunlar, kullanıcılara keyifli ve heyecan verici bir deneyim yaşatır.

1xbet’te Güvenilirlik ve Lisanslama

Online bahis platformlarının güvenilirliği, kullanıcılar için en önemli faktörlerden biridir. 1xbet, Curacao lisansına sahip güvenilir bir platformdur. Bu lisans, platformun yasal olarak faaliyet göstermesine ve kullanıcıların haklarının korunmasına olanak tanır. 1xbet, kullanıcıların kişisel ve finansal bilgilerini korumak için gelişmiş güvenlik önlemleri almaktadır. SSL şifreleme teknolojisi ile tüm veriler güvenli bir şekilde saklanmaktadır. Ayrıca, 1xbet’in ödeme yöntemleri de güvenilir ve hızlıdır. Kullanıcılar, kredi kartı, banka havalesi, e-cüzdan gibi farklı ödeme yöntemleri ile para yatırabilir ve çekebilirler.

Güvenlik Önlemleri ve Veri Koruma

1xbet, kullanıcıların güvenliğini sağlamak için çeşitli güvenlik önlemleri almaktadır. İki faktörlü kimlik doğrulama, kullanıcı hesaplarını yetkisiz erişimlere karşı korur. Ayrıca, platformda sürekli olarak güvenlik denetimleri yapılmaktadır ve olası güvenlik açıklarına karşı önlemler alınmaktadır. 1xbet, kullanıcıların kişisel ve finansal bilgilerini hiçbir üçüncü tarafla paylaşmamaktadır. Veri koruma politikası, kullanıcıların gizliliğinin korunmasını sağlamaktadır. Güvenilir bir platformda bahis oynamak, kullanıcıların keyifli ve güvenli bir deneyim yaşamasını sağlar.

  1. Curacao Lisansı
  2. SSL Şifreleme Teknolojisi
  3. İki Faktörlü Kimlik Doğrulama
  4. Gizlilik Politikası

Yukarıdaki maddeler, 1xbet’in güvenilirliğini ve kullanıcı verilerini koruma konusundaki ciddiyetini göstermektedir. Bu özellikler, 1xbet’i diğer platformlardan ayırmaktadır.

1xbet Bonus ve Promosyonlar

1xbet, kullanıcılarına çeşitli bonuslar ve promosyonlar sunmaktadır. Hoş geldin bonusu, para yatırma bonusu, kayıp bonusu gibi farklı bonuslar ile kullanıcıların kazançlarını artırma imkanı bulunmaktadır. Bonuslar ve promosyonlar, hem yeni başlayanlara hem de deneyimli oyunculara hitap etmektedir. 1xbet’in bonus ve promosyonları, platformun kullanıcılarına sunduğu avantajlardan sadece biridir. Bonusları kullanmadan önce, kurallarını ve şartlarını dikkatlice okumanız önemlidir. Bu sayede, bonuslardan en iyi şekilde yararlanabilirsiniz.

1xbet Mobil Uygulama ile Her Yerde Bahis Yapın

1xbet, kullanıcılarına mobil uygulama sunarak, bahis ve casino oyunlarına her yerden erişim imkanı sağlamaktadır. Mobil uygulama, hem Android hem de iOS cihazlarında kullanılabilir. Uygulama, kullanıcı dostu arayüzü ve hızlı performansı ile dikkat çekmektedir. Mobil uygulama üzerinden bahis yapabilir, casino oyunları oynayabilir, bonusları takip edebilir ve para yatırabilir/çekebilirsiniz. 1xbet mobil uygulaması, bahis severlerin ve casino oyuncularının hayatını kolaylaştırmaktadır. Uygulama, aynı zamanda bildirimler aracılığıyla güncel bonuslar ve promosyonlar hakkında bilgi vermektedir.

1xbet Kullanıcı Deneyimi ve Müşteri Hizmetleri

1xbet, kullanıcı deneyimine büyük önem vermektedir. Platformun arayüzü, kullanıcı dostu ve kolay anlaşılırdır. Bahis yapmak, casino oyunları oynamak ve para yatırmak/çekmek oldukça basittir. 1xbet, kullanıcılara 7/24 müşteri hizmetleri sunmaktadır. Canlı destek hattı, e-posta ve telefon aracılığıyla müşteri hizmetlerine ulaşabilirsiniz. Müşteri hizmetleri, kullanıcıların sorularını ve sorunlarını hızlı ve etkili bir şekilde çözmektedir. 1xbet’in müşteri hizmetleri, kullanıcı memnuniyetini sağlamak için sürekli olarak çalışmaktadır. Platformun kullanıcı deneyimi ve müşteri hizmetleri, 1xbet’i diğer platformlardan ayırmaktadır.

Leave a Comment

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

Scroll to Top