/** * 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

Außergewöhnliche Unterhaltung erwartet dich bei winspirit casino de für echte Glücksritter

Außergewöhnliche Unterhaltung erwartet dich bei winspirit casino de für echte Glücksritter

Für alle, die auf der Suche nach einer neuen und aufregenden Online-Glücksspielerfahrung sind, könnte winspirit casino de genau die richtige Adresse sein. Die Plattform verspricht eine breite Palette an Spielen, attraktive Bonusangebote und eine benutzerfreundliche Oberfläche, die sowohl Anfänger als auch erfahrene Spieler anspricht. Doch was macht dieses Casino im Detail aus und was können Spieler hier erwarten?

Die Welt der Online-Casinos ist riesig und ständig im Wandel. Neue Anbieter sprießen aus dem Boden und versuchen, mit innovativen Konzepten und verlockenden Angeboten Kunden zu gewinnen. Dabei ist die Auswahl des richtigen Casinos nicht immer einfach. Wichtige Kriterien sind dabei neben der Seriosität und Lizenzierung auch die Spielauswahl, die Bonusbedingungen, die Ein- und Auszahlungsmethoden sowie der Kundenservice. Eine gründliche Recherche ist daher unerlässlich, um Enttäuschungen zu vermeiden und ein sicheres und unterhaltsames Spielerlebnis zu gewährleisten.

Die Spieleauswahl bei winspirit casino de: Vielfalt für jeden Geschmack

Das Angebot an Spielen ist das Herzstück jedes Online-Casinos. Bei diesem Anbieter finden Spieler eine beeindruckende Auswahl an Slots, Tischspielen, Live-Casino-Spielen und weiteren Attraktionen. Die Slots sind dabei besonders vielfältig und umfassen klassische Fruchtmaschinen, moderne Video-Slots mit aufwendigen Animationen und progressiven Jackpots, bei denen Spieler die Chance auf riesige Gewinne haben. Zu den beliebtesten Titeln gehören unter anderem Spiele von bekannten Entwicklern wie NetEnt, Microgaming und Play’n GO. Aber auch weniger bekannte, aber nicht weniger spannende Spiele finden hier ihren Platz.

Die Welt der Tischspiele: Klassiker neu interpretiert

Neben den Slots bietet die Plattform auch eine umfangreiche Auswahl an Tischspielen. Klassiker wie Roulette, Blackjack, Baccarat und Poker sind in verschiedenen Varianten verfügbar, sodass für jeden Geschmack etwas dabei ist. Besonders hervorzuheben ist das Live-Casino, in dem Spieler gegen echte Dealer an virtuellen Tischen antreten können. Dies sorgt für eine authentische Casino-Atmosphäre und ein noch spannenderes Spielerlebnis. Die Übertragung erfolgt in Echtzeit per Video-Stream, sodass Spieler die Dealer sehen und mit ihnen interagieren können.

Spielkategorie Anzahl der Spiele (ungefähr) Bekannte Anbieter
Slots Über 500 NetEnt, Microgaming, Play’n GO
Tischspiele Über 80 Evolution Gaming, Pragmatic Play
Live-Casino Über 50 Evolution Gaming, NetEnt Live
Jackpot-Spiele Über 20 Microgaming, NetEnt

Die stetig wachsende Spielebibliothek stellt sicher, dass Langeweile kaum aufkommt. Neue Spiele werden regelmäßig hinzugefügt, um das Angebot frisch und attraktiv zu halten. Dabei achtet das Casino auf eine hohe Qualität und Fairness der Spiele, indem es nur mit renommierten Anbietern zusammenarbeitet, deren Spiele regelmäßig von unabhängigen Prüfinstitutionen zertifiziert werden.

Bonusangebote und Promotionen: Attraktive Anreize für neue und bestehende Spieler

Ein entscheidendes Kriterium bei der Wahl eines Online-Casinos sind die Bonusangebote und Promotionen. Dieser Anbieter lockt neue Spieler mit einem attraktiven Willkommensbonus, der in der Regel aus einem Einzahlungsbonus und Freispielen besteht. Der Einzahlungsbonus erhöht die erste Einzahlung um einen bestimmten Prozentsatz, während Freispiele an ausgewählten Slots genutzt werden können. Bestehende Spieler profitieren ebenfalls von regelmäßigen Aktionen wie Reload-Boni, Cashbacks und Turnieren. Diese Angebote ermöglichen es Spielern, ihr Guthaben zu erhöhen und ihre Gewinnchancen zu verbessern.

Die Bedeutung der Bonusbedingungen: Was Sie wissen sollten

Bevor man einen Bonus annimmt, sollte man sich unbedingt die Bonusbedingungen durchlesen. Diese legen fest, wie der Bonus umgesetzt werden muss, bevor Gewinne ausgezahlt werden können. Wichtige Aspekte sind dabei der Einsatzbetrag, die Gültigkeitsdauer des Bonus und die maximal zulässigen Einsätze pro Spielrunde. Eine sorgfältige Prüfung der Bonusbedingungen ist wichtig, um böse Überraschungen zu vermeiden und sicherzustellen, dass der Bonus auch tatsächlich einen Mehrwert bietet. Achten Sie auch auf eventuelle Umsatzbedingungen für die Freispiele.

  • Willkommensbonus: Einzahlungserhöhung und Freispiele für neue Spieler
  • Reload-Boni: Regelmäßige Bonusangebote für bestehende Spieler
  • Cashback: Teilweise Rückerstattung verlorener Einsätze
  • Turniere: Wettbewerbe mit attraktiven Preispools
  • Treueprogramme: Belohnungen für regelmäßige Spieler

Transparente und faire Bonusbedingungen sind ein Zeichen für ein seriöses Casino. Es ist daher ratsam, Anbieter zu bevorzugen, die ihre Bonusbedingungen klar und verständlich kommunizieren und keine versteckten Klauseln enthalten.

Ein- und Auszahlungsmethoden: Flexibilität und Sicherheit für Spieler

Eine große Auswahl an sicheren und bequemen Ein- und Auszahlungsmethoden ist für viele Spieler ein wichtiges Kriterium. Der Anbieter bietet eine Vielzahl von Optionen an, darunter Kreditkarten (Visa, Mastercard), E-Wallets (Neteller, Skrill), Banküberweisungen und moderne Kryptowährungen. Die Einzahlungen sind in der Regel sofort gutgeschrieben, während die Auszahlungen je nach gewählter Methode einige Stunden bis wenige Tage dauern können. Dabei achtet das Casino auf höchste Sicherheitsstandards, um die finanziellen Transaktionen der Spieler zu schützen. Alle Ein- und Auszahlungen werden über verschlüsselte Verbindungen abgewickelt, um unbefugten Zugriff zu verhindern.

Sicherheitsaspekte bei Ein- und Auszahlungen: Worauf Sie achten sollten

Bei der Auswahl einer Ein- und Auszahlungsmethode sollten Spieler auf die Sicherheit und Zuverlässigkeit des Anbieters achten. Es ist ratsam, nur bewährte und etablierte Zahlungsanbieter zu nutzen, die einen hohen Sicherheitsstandard gewährleisten. Achten Sie auch auf mögliche Gebühren, die für Ein- oder Auszahlungen anfallen können. Seriöse Casinos kommunizieren diese Gebühren transparent und verhidden sie nicht in den Kleingedruckten. Eine schnelle und unkomplizierte Abwicklung der Ein- und Auszahlungen ist ein Zeichen für ein kundenorientiertes Casino.

  1. Kreditkarten (Visa, Mastercard)
  2. E-Wallets (Neteller, Skrill, PayPal)
  3. Banküberweisung
  4. Kryptowährungen (Bitcoin, Ethereum)
  5. Sofortüberweisung

Ein weiterer wichtiger Aspekt ist die Verifizierung des Spielerkontos. Bevor eine Auszahlung vorgenommen werden kann, müssen Spieler in der Regel ihre Identität und ihre Adresse nachweisen. Dies dient der Verhinderung von Geldwäsche und Betrug und ist eine gängige Praxis in der Online-Glücksspielbranche.

Kundenservice: Schnelle und kompetente Hilfe bei Fragen und Problemen

Ein guter Kundenservice ist ein wichtiger Bestandteil eines jeden Online-Casinos. Der Anbieter bietet einen rund um die Uhr verfügbaren Kundenservice, der per Live-Chat, E-Mail und Telefon erreichbar ist. Die Mitarbeiter sind kompetent und freundlich und stehen Spielern bei Fragen und Problemen zur Seite. Der Live-Chat ist dabei die schnellste und bequemste Möglichkeit, Hilfe zu erhalten, da die Antwort in der Regel nur wenige Minuten dauert. Der Kundenservice sollte in mehreren Sprachen verfügbar sein, um auch internationalen Spielern eine adäquate Betreuung zu gewährleisten.

Zukunftsperspektiven und innovative Entwicklungen im Online-Gaming

Die Online-Gaming-Branche befindet sich in einem ständigen Wandel. Neue Technologien und Trends prägen das Bild und sorgen für immer innovativere Spielerlebnisse. Virtual Reality (VR) und Augmented Reality (AR) bieten beispielsweise die Möglichkeit, Casinos virtuell zu betreten und in eine noch immersivere Spielwelt einzutauchen. Auch die Integration von Kryptowährungen und Blockchain-Technologie gewinnt zunehmend an Bedeutung, da diese eine höhere Sicherheit und Transparenz gewährleisten können. Die Zukunft des Online-Gamings verspricht daher noch spannendere und aufregendere Entwicklungen, von denen auch der Nutzer profitieren wird. Das Casino wird sich sicherlich stets bemühen, seinen Spielern die neuesten Innovationen anzubieten und das Spielerlebnis kontinuierlich zu verbessern.

Die Entwicklung hin zu personalisierten Spielerlebnissen wird ebenfalls eine wichtige Rolle spielen. Durch den Einsatz von künstlicher Intelligenz (KI) und Machine Learning können Casinos das Spielverhalten ihrer Kunden analysieren und ihnen individuelle Bonusangebote und Empfehlungen zukommen lassen. Dies führt zu einer höheren Spielerzufriedenheit und einer stärkeren Bindung an das Casino. Die Anpassungsfähigkeit an neue Trends und Technologien wird entscheidend sein, um im Wettbewerb bestehen zu können.

Leave a Comment

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

Scroll to Top