var tribe_dropdowns = window.tribe_dropdowns || {}; ( function( $, obj, _ ) { 'use strict'; obj.selector = { dropdown: '.tribe-dropdown', created: '.tribe-dropdown-created', searchField: '.select2-search__field', }; // Setup a Dependent $.fn.tribe_dropdowns = function() { obj.dropdown( this, {} ); return this; }; obj.freefrom_create_search_choice = function( params ) { if ( 'string' !== typeof params.term ) { return null; } var term = params.term.trim(); if ( '' === term ) { return null; } var args = this.options.options; var $select = args.$select; if ( term.match( args.regexToken ) && ( ! $select.is( '[data-int]' ) || ( $select.is( '[data-int]' ) && term.match( /\d+/ ) ) ) ) { var choice = { id: term, text: term, new: true }; if ( $select.is( '[data-create-choice-template]' ) ) { choice.text = _.template( $select.data( 'createChoiceTemplate' ) )( { term: term } ); } return choice; } return null; }; /** * Better Search ID for Select2, compatible with WordPress ID from WP_Query * * @param {object|string} e Searched object or the actual ID * @return {string} ID of the object */ obj.search_id = function( e ) { var id = undefined; if ( 'undefined' !== typeof e.id ) { id = e.id; } else if ( 'undefined' !== typeof e.ID ) { id = e.ID; } else if ( 'undefined' !== typeof e.value ) { id = e.value; } return undefined === e ? undefined : id; }; /** * Better way of matching results * * @param {string} term Which term we are searching for * @param {string} text Search here * @return {boolean} */ obj.matcher = function( params, data ) { // If there are no search terms, return all of the data if ( 'string' !== typeof params.term || params.term.trim() === '') { return data; } // Do not display the item if there is no 'text' property if ( typeof data.text === 'undefined' ) { return null; } var term = params.term.trim(); var text = data.text; var $select = $( data.element ).closest( 'select' ); var args = $select.data( 'dropdown' ); var result = text.toUpperCase().indexOf( term.toUpperCase() ) !== -1; if ( ! result && 'undefined' !== typeof args.tags ){ var possible = _.where( args.tags, { text: text } ); if ( args.tags.length > 0 && _.isObject( possible ) ){ var test_value = obj.search_id( possible[0] ); result = test_value.toUpperCase().indexOf( term.toUpperCase() ) !== -1; } } return result; }; /** * If the element used as the basis of a dropdown specifies one or more numeric/text * identifiers in its val attribute, then use those to preselect the appropriate options. * * @param {object} $select * @param {function} make_selection */ obj.init_selection = function( $select, make_selection ) { var isMultiple = $select.is( '[multiple]' ); var options = $select.data( 'dropdown' ); var currentValues = $select.val().split( options.regexSplit ); var selectedItems = []; $( currentValues ).each( function( index, value ) { // eslint-disable-line no-unused-vars var searchFor = { id: this, text: this }; var data = options.ajax ? $select.data( 'options' ) : options.data; var locatedItem = find_item( searchFor, data ); if ( locatedItem && locatedItem.selected ) { selectedItems.push( locatedItem ); } } ); if ( selectedItems.length && isMultiple ) { make_selection( selectedItems ); } else if ( selectedItems.length ) { make_selection( selectedItems[ 0 ] ); } else { make_selection( false ); return; } }; /** * Searches array 'haystack' for objects that match 'description'. * * The 'description' object should take the form { id: number, text: string }. The first * object within the haystack that matches one of those two properties will be returned. * * If objects contain an array named 'children', then that array will also be searched. * * @param {Object} description * @param {Array} haystack * * @return {Object|boolean} */ function find_item( description, haystack ) { if ( ! _.isArray( haystack ) ) { return false; } for ( var index in haystack ) { var possible_match = haystack[ index ]; if ( possible_match.hasOwnProperty( 'id' ) && possible_match.id == description.id ) { // eslint-disable-line no-prototype-builtins,eqeqeq,max-len return possible_match; } if ( possible_match.hasOwnProperty( 'text' ) && possible_match.text == description.text ) { // eslint-disable-line no-prototype-builtins,eqeqeq,max-len return possible_match; } if ( possible_match.hasOwnProperty( 'children' ) && _.isArray( possible_match.children ) ) { // eslint-disable-line no-prototype-builtins,max-len var subsearch = find_item( description, possible_match.children ); if ( subsearch ) { return subsearch; } } } return false; } obj.getSelectClasses = function( $select ) { var classesToRemove = [ 'select2-hidden-accessible', 'hide-before-select2-init', ]; var originalClasses = $select.attr( 'class' ).split( /\s+/ ); return _.difference( originalClasses, classesToRemove ); }; obj.element = function( field, args ) { var $select = $( field ); var args = $.extend( {}, args ); // eslint-disable-line no-redeclare var carryOverData = [ // eslint-disable-line no-unused-vars 'depends', 'condition', 'conditionNot', 'condition-not', 'conditionNotEmpty', 'condition-not-empty', 'conditionEmpty', 'condition-empty', 'conditionIsNumeric', 'condition-is-numeric', 'conditionIsNotNumeric', 'condition-is-not-numeric', 'conditionChecked', 'condition-is-checked', ]; var $container; // Add a class for dropdown created $select.addClass( obj.selector.created.className() ); // args.debug = true; // For Reference we save the jQuery element as an Arg. args.$select = $select; // Auto define the Width of the Select2. args.dropdownAutoWidth = true; args.width = 'resolve'; // CSS for the container args.containerCss = {}; // Only apply visibility when it's a Visible Select2. if ( $select.is( ':visible' ) ) { args.containerCss.display = 'inline-block'; args.containerCss.position = 'relative'; } // CSS for the dropdown args.dropdownCss = {}; args.dropdownCss.width = 'auto'; // When we have this we replace the default with what's in the param. if ( $select.is( '[data-dropdown-css-width]' ) ) { args.dropdownCss.width = $select.data( 'dropdown-css-width' ); if ( ! args.dropdownCss.width || 'false' === args.dropdownCss.width ) { delete args.dropdownCss.width; delete args.containerCss; } } // By default we allow The field to be cleared args.allowClear = true; if ( $select.is( '[data-prevent-clear]' ) ) { args.allowClear = false; } // Pass the "Searching..." placeholder if specified if ( $select.is( '[data-searching-placeholder]' ) ) { args.formatSearching = $select.data( 'searching-placeholder' ); } // If we are dealing with a Input Hidden we need to set the Data for it to work if ( ! $select.is( '[data-placeholder]' ) && $select.is( '[placeholder]' ) ) { args.placeholder = $select.attr( 'placeholder' ); } // If we are dealing with a Input Hidden we need to set the Data for it to work. if ( $select.is( '[data-options]' ) ) { args.data = $select.data( 'options' ); } // With less then 10 args we wouldn't show the search. args.minimumResultsForSearch = 10; // Prevents the Search box to show if ( $select.is( '[data-hide-search]' ) ) { args.minimumResultsForSearch = Infinity; } // Makes sure search shows up. if ( $select.is( '[data-force-search]' ) ) { delete args.minimumResultsForSearch; } // Allows freeform entry if ( $select.is( '[data-freeform]' ) ) { args.createTag = obj.freefrom_create_search_choice; args.tags = true; $select.data( 'tags', true ); } if ( $select.is( '[multiple]' ) ) { args.multiple = true; // Set the max select items, if defined if ( $select.is( '[data-maximum-selection-size]' ) ) { args.maximumSelectionSize = $select.data( 'maximum-selection-size' ); } // If you don't have separator, add one (comma) if ( ! $select.is( 'data-separator' ) ) { $select.data( 'separator', ',' ); } if ( ! _.isArray( $select.data( 'separator' ) ) ) { args.tokenSeparators = [ $select.data( 'separator' ) ]; } else { args.tokenSeparators = $select.data( 'separator' ); } args.separator = $select.data( 'separator' ); // Define the regular Exp based on args.regexSeparatorElements = [ '^(' ]; args.regexSplitElements = [ '(?:' ]; $.each( args.tokenSeparators, function ( i, token ) { args.regexSeparatorElements.push( '[^' + token + ']+' ); args.regexSplitElements.push( '[' + token + ']' ); } ); args.regexSeparatorElements.push( ')$' ); args.regexSplitElements.push( ')' ); args.regexSeparatorString = args.regexSeparatorElements.join( '' ); args.regexSplitString = args.regexSplitElements.join( '' ); args.regexToken = new RegExp( args.regexSeparatorString, 'ig' ); args.regexSplit = new RegExp( args.regexSplitString, 'ig' ); } // Select also allows Tags, so we go with that too if ( $select.is( '[data-tags]' ) ) { args.tags = $select.data( 'tags' ); args.createSearchChoice = function( term, data ) { // eslint-disable-line no-unused-vars if ( term.match( args.regexToken ) ) { return { id: term, text: term }; } }; if ( 0 === args.tags.length ) { args.formatNoMatches = function() { return $select.attr( 'placeholder' ); }; } } // When we have a source, we do an AJAX call if ( $select.is( '[data-source]' ) ) { var source = $select.data( 'source' ); // For AJAX we reset the data args.data = { results: [] }; // Format for Parents breadcrumbs args.formatResult = function ( item, container, query ) { // eslint-disable-line no-unused-vars,max-len if ( 'undefined' !== typeof item.breadcrumbs ) { return $.merge( item.breadcrumbs, [ item.text ] ).join( ' » ' ); } return item.text; }; // instead of writing the function to execute the request we use Select2's convenient helper. args.ajax = { dataType: 'json', type: 'POST', url: obj.ajaxurl(), // parse the results into the format expected by Select2. processResults: function ( response, page, query ) { // eslint-disable-line no-unused-vars if ( ! $.isPlainObject( response ) || 'undefined' === typeof response.success ) { console.error( 'We received a malformed Object, could not complete the Select2 Search.' ); // eslint-disable-line max-len return { results: [] }; } if ( ! $.isPlainObject( response.data ) || 'undefined' === typeof response.data.results ) { console.error( 'We received a malformed results array, could not complete the Select2 Search.' ); // eslint-disable-line max-len return { results: [] }; } if ( ! response.success ) { if ( 'string' === $.type( response.data.message ) ) { console.error( response.data.message ); } else { console.error( 'The Select2 search failed in some way... Verify the source.' ); } return { results: [] }; } return response.data; }, }; // By default only send the source args.ajax.data = function( search, page ) { return { action: 'tribe_dropdown', source: source, search: search, page: page, args: $select.data( 'source-args' ), }; }; } // Attach dropdown to container in DOM. if ( $select.is( '[data-attach-container]' ) ) { // If multiple, attach container without search. if ( $select.is( '[multiple]' ) ) { $.fn.select2.amd.define( 'AttachedDropdownAdapter', [ 'select2/utils', 'select2/dropdown', 'select2/dropdown/attachContainer', ], function( utils, dropdown, attachContainer ) { return utils.Decorate( dropdown, attachContainer ); } ); args.dropdownAdapter = $.fn.select2.amd.require( 'AttachedDropdownAdapter' ); // If not multiple, attach container with search. } else { $.fn.select2.amd.define( 'AttachedWithSearchDropdownAdapter', [ 'select2/utils', 'select2/dropdown', 'select2/dropdown/search', 'select2/dropdown/minimumResultsForSearch', 'select2/dropdown/attachContainer', ], function( utils, dropdown, search, minimumResultsForSearch, attachContainer ) { var adapter = utils.Decorate( dropdown, attachContainer ); adapter = utils.Decorate( adapter, search ); adapter = utils.Decorate( adapter, minimumResultsForSearch ); return adapter; } ); args.dropdownAdapter = $.fn.select2.amd.require( 'AttachedWithSearchDropdownAdapter' ); } } // Save data on Dropdown $select.data( 'dropdown', args ); $container = $select.select2TEC( args ); // Propagating original input classes to the select2 container. $container.data( 'select2' ).$container.addClass( obj.getSelectClasses( $select ).join( ' ' ) ); // Propagating original input classes to the select2 container. $container.data( 'select2' ).$container.removeClass( 'hide-before-select2-init' ); $container.on( 'select2:open', obj.action_select2_open ); /** * @todo @bordoni Investigate how and if we should be doing this. * if ( carryOverData.length > 0 ) { carryOverData.map( function( dataKey ) { var attr = 'data-' + dataKey; var val = $select.attr( attr ); if ( ! val ) { return; } this.attr( attr, val ); }, $container ); } */ }; obj.ajaxurl = function() { if ( 'undefined' !== typeof window.ajaxurl ) { return window.ajaxurl; } if ( 'undefined' !== typeof TEC && 'undefined' !== typeof TEC.ajaxurl ) { return TEC.ajaxurl; } console.error( 'Dropdowns framework cannot properly do an AJAX request without the WordPress `ajaxurl` variable setup.' ); // eslint-disable-line max-len }; obj.action_select2_open = function( event ) { // eslint-disable-line no-unused-vars var $select = $( this ); var select2Data = $select.data( 'select2' ); var $search = select2Data.$dropdown.find( obj.selector.searchField ); // eslint-disable-line es5/no-es6-methods,max-len select2Data.$dropdown.addClass( obj.selector.dropdown.className() ); // If we have a placeholder for search, apply it! if ( $select.is( '[data-search-placeholder]' ) ) { $search.attr( 'placeholder', $select.data( 'searchPlaceholder' ) ); } }; /** * Configure the Drop Down Fields * * @param {jQuery} $fields All the fields from the page * @param {array} args Allow extending the arguments * * @return {jQuery} Affected fields */ obj.dropdown = function( $fields, args ) { var $elements = $fields.not( '.select2-offscreen, .select2-container, ' + obj.selector.created.className() ); // eslint-disable-line max-len if ( 0 === $elements.length ) { return $elements; } // Default args to avoid Undefined if ( ! args ) { args = {}; } $elements .each( function( index, element ) { // Apply element to all given items and pass args obj.element( element, args ); } ); // return to be able to chain jQuery calls return $elements; }; $( function() { $( obj.selector.dropdown ).tribe_dropdowns(); } ); // Addresses some problems with Select2 inputs not being initialized when using a browser's "Back" button. $( window ).on( 'unload', function() { $( obj.selector.dropdown ).tribe_dropdowns(); }); } )( jQuery, tribe_dropdowns, window.underscore || window._ ); /*! elementor-pro - v3.5.1 - 10-11-2021 */ .elementor-cta,.elementor-widget-call-to-action .elementor-widget-container{overflow:hidden}.elementor-cta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-cta--skin-classic .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--skin-classic .elementor-cta__bg-wrapper{position:relative;min-height:200px;width:100%}.elementor-cta--skin-classic .elementor-cta__content{-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%;background-color:#f7f7f7}.elementor-cta--skin-classic .elementor-cta__content-item,.elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon{color:#55595c;border-color:#55595c;fill:#55595c}.elementor-cta--skin-classic .elementor-cta__button.elementor-button{color:#55595c;border-color:#55595c}.elementor-cta--skin-cover .elementor-cta{display:block}.elementor-cta--skin-cover .elementor-cta__bg-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%}.elementor-cta--skin-cover .elementor-cta__content{min-height:280px}.elementor-cta--skin-cover .elementor-cta__button.elementor-button,.elementor-cta--skin-cover .elementor-cta__content-item,.elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon{color:#fff;border-color:#fff}.elementor-cta--layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--layout-image-left .elementor-cta,.elementor-cta--layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--layout-image-left .elementor-cta__content,.elementor-cta--layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta__bg,.elementor-cta__bg-overlay{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.elementor-cta__bg-wrapper{z-index:1;overflow:hidden}.elementor-cta__bg{-webkit-background-size:cover;background-size:cover;background-position:50%;z-index:1}.elementor-cta__bg-overlay{z-index:2}.elementor-cta__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-cta__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-cta__title{font-size:23px}.elementor-cta__content{z-index:1;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:35px;width:100%}.elementor-cta__content,.elementor-cta__content-item{position:relative;-webkit-transition:.5s;-o-transition:.5s;transition:.5s;color:#fff}.elementor-cta__content-item{width:100%;margin:0}.elementor-cta__content-item:not(:last-child){margin-bottom:15px}.elementor-cta__content-item .elementor-icon{color:#fff}.elementor-cta--valign-top .elementor-cta__content{-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-cta--valign-middle .elementor-cta__content{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-cta--valign-bottom .elementor-cta__content{-ms-flex-line-pack:end;align-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor-cta:hover .elementor-cta__bg-overlay{background-color:rgba(0,0,0,.3)}@media (max-device-width:1024px){.elementor-cta{cursor:pointer}}@media (min-width:-1px){.elementor-cta--widescreen-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--widescreen-layout-image-left .elementor-cta,.elementor-cta--widescreen-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--widescreen-layout-image-left .elementor-cta__content,.elementor-cta--widescreen-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--widescreen-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--widescreen-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--laptop-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--laptop-layout-image-left .elementor-cta,.elementor-cta--laptop-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--laptop-layout-image-left .elementor-cta__content,.elementor-cta--laptop-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--laptop-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--laptop-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--tablet_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta,.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__content,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:1024px){.elementor-cta--tablet-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet-layout-image-left .elementor-cta,.elementor-cta--tablet-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet-layout-image-left .elementor-cta__content,.elementor-cta--tablet-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--mobile_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta,.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__content,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:767px){.elementor-cta--mobile-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile-layout-image-left .elementor-cta,.elementor-cta--mobile-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile-layout-image-left .elementor-cta__content,.elementor-cta--mobile-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.elementor-ribbon{position:absolute;z-index:1;top:0;left:0;right:auto;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);width:150px;overflow:hidden;height:150px}.elementor-ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000;color:#fff}.elementor-ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}
Warning: Cannot modify header information - headers already sent by (output started at /home1/brighdbt/public_html/premills.com/wp-content/plugins/svg-support/functions/thumbnail-display.php:1) in /home1/brighdbt/public_html/premills.com/wp-includes/feed-rss2.php on line 8
guide Archives - premier mills https://www.premills.com/category/guide/ Tue, 03 Jun 2025 07:34:58 +0000 en-US hourly 1 https://wordpress.org/?v=6.8.1 https://www.premills.com/wp-content/uploads/2021/08/PM_No.1_Favicon-01.png guide Archives - premier mills https://www.premills.com/category/guide/ 32 32 Планы лояльности в онлайн игорных заведениях – как зарабатывать больше https://www.premills.com/plany-lojalnosti-v-onlajn-igornyh-zavedenijah-kak-16/ https://www.premills.com/plany-lojalnosti-v-onlajn-igornyh-zavedenijah-kak-16/#respond Mon, 02 Jun 2025 18:18:19 +0000 https://www.premills.com/?p=8935 Планы лояльности в онлайн игорных заведениях – как зарабатывать больше Вероятно, все без исключения пользователи уже осведомлены о начальных поощрениях: зарегистрировался, взял безвозмездные спины, умножение вклада или все вместе – и вперед, за победами. Тем не менее это только верхушка айсберга. Истинные сокровища скрываются в недрах – в бонусных программах, где всякий ход, бет и […]

The post Планы лояльности в онлайн игорных заведениях – как зарабатывать больше appeared first on premier mills.

]]>
Планы лояльности в онлайн игорных заведениях – как зарабатывать больше

Вероятно, все без исключения пользователи уже осведомлены о начальных поощрениях: зарегистрировался, взял безвозмездные спины, умножение вклада или все вместе – и вперед, за победами. Тем не менее это только верхушка айсберга. Истинные сокровища скрываются в недрах – в бонусных программах, где всякий ход, бет и даже неудача, могут стать для клиента фантастической выгодой. Данное близко как в длительных связях: насколько дольше вместе, настолько значительнее веры и презентов.

В большинстве топовых онлайн игорных заведений давно осознали, что важно не просто привлекать новых игроков. Современный сектор перенасыщен предложениями от казино с широким набором развлечений и высоким обслуживанием. Игрокам, которые разочарованы поддержкой на казино-сайте, всегда имеется альтернатива.

Стратегии по удержанию посетителей на ресурсе становятся в последнее время особенно важны. С данной задачей в адмирал х бездепозитный бонус применяют персонализированный подход и прикладывают усилия обеспечить для пользователя обстановку исключительности. В обзоре разберемся, как работают программы стимулирования, какие возможности они предлагают, и почему VIP-ранг иногда лучше, чем один значительный джекпот.

Какое определение система верности?

Фактически – это вознаградительная инициатива, но с дополнением и увеличением объема по количеству вариантов. Геймер ставит взносы, участвует в турнирах, откликается на все промоакции, а вознаграждения и привилегии копятся фоном. Причем часто даже неощутимо. Поставил бет – заработал поинты, накопил их – обменял или перешел на следующий уровень. Любая ступенька в казино адмирал х раскрывает дополнительные перспективы. С ходом возвышения виды привилегий игорных заведений оказываются все более существенны.

У всякого игорного заведения, вроде адмирал х, – свои детали: различное количество рангов, очков для их заработка, ассортимент преференций, но концепция одна – вознаграждать активность, усиливать участие и выделить наиболее верных игроков. Неважно одерживает победу гость либо ему не везет, он все равно остается внутри игры. Присуждением уровней и бонусами сверх типичной программы казино отмечает его за это.

Обычно подобные механизмы вознаграждений включают особенные пункты:

  • Начисление баллов за бетсы или внесения, что дает возможность участнику подниматься по лестнице вознаграждений и менять за них деньги.
  • Повышение ранга учетной записи – насколько более активен пользователь, тем быстрее увеличивается ранг.
  • Доступ к особым выигрышам или игре в премиум-слотах.
  • Участие в приватных предложениях и чемпионатах, в которые нет доступа другие участники.

Программы лояльности выгодны не только для посетителей, но и для самого казино. Удержание постоянных клиентов в процессе помогает подъему прибыли интернет-клуба в долгосрочном плане. Если вознаграждение непрерывно растет с неизменно отличном качестве обслуживания, верность пользователей укрепляется. Владение такой структурой подарков указывает, что казино admiral x – не противник, а компаньон, который настроен распределять средствами.

Вид гаджета, с какого-либо пользователь входит на веб-сайт казино, не влияет на его премирование. Призы предоставляются и на смартфонной вариации, в которой авторизация осуществляется через интернет-обозреватель устройства, и в приложении для мобильных устройств.

Уровни и статусы – движение вперед в структуре бонусов

Если бы платформа преданности игорного заведения стала игрой, то всякий статус это особый уровень сложности. Насколько больше забирается вверх по лестнице игрок, то больше у него становится средств для побед или получения подарков. Лестница привилегий в состоянии включать пару и более этапа, но с позиции качества и числа зарабатываемых привилегий, ее уровни можно охарактеризовать следующим образом:

  • Базовый – начало восхождения, ранг назначается немедленно по окончании регистрации или внесения первого депозита, но призов нет или они ограничены (1-2).
  • Средний – для разблокировки этапа и появления заметных преимуществ (бонусов, персональных акций, оптимизированных правил) уже нужно наиграть какое-то количество баллов.
  • элитный – проникнуть внутрь весьма затруднительно, но призом окажется максимально прибыльные призы и бонусы.

Насколько выше уровень посетителя в казино admiral x casino, тем больше добавляется «плюшек», и тем мягче делаются условия: отменяются ставки на отыгрыш, появляется больше вольности при пополнении/выплате, открывается другие перспективы. Непосредственно сама по себе план лояльности нацелена на всех игроков игрового клуба, но достичь успеха смогут наиболее выдержанные, грамотные и удачливые.

Типы премий и награды для преданных геймеров admiral x casino

Чего конкретно приобретают лояльные геймеры, следующие регламенты игорного заведения? Ассортимент наград временами сильно поражает, и при этом не исключительно от количества, но и по изобретательности маркетингового отдела казино.

Практически постоянно в систему лояльности содержит денежный возврат – отдача игроку части проигранных финансов. Размер возврата средств обусловлен от статуса: у стартующих он может быть 2–5%, у VIP – от 20 процентов и более. Чаще в большинстве случаев недавно новые игроки возврат не получают, а бонусы активируется на определённых стадиях игры. Видится, что незначительный процент ничего не решает, но однако в онлайн казино с премиями каждая ставка – это возможность на огромный куш.

Бесплатные вращения ли бесплатные вращения на слотах предоставляются чаще всего именно как поощрение за приобретение статуса. Использовать ими возможно лишь в конкретных игровых слотах, но зачастую они не требуют внесения депозита, а иногда предлагаются даже без вейджера. Когда повезет, в игорном доме admiral x есть шанс выиграть шикарный приз и не отыгрывать его.

Традиционные вознаграждения казино предоставляют за депозитированный взнос. Чаще в большинстве случаев в рамках верности они индивидуализированы и становятся особенно щедрыми. Однако по мере роста уровня для достижения такой приза придется осуществлять все крупные суммы пополнений.

Бездепозитные подарки выдают в виртуальных казино:

  • в качестве деятельность
  • за участие и победу в чемпионатах
  • ко дню появления на свет любителя игр;
  • до заданной времени – к примеру, шесть месяцев в компании с казино;
  • для подъема казино ранга и прочее.

Относительно бездепам за лояльность на казино обычно применяются лояльные условия: вейджер незначительно или совсем не отличается от обычных бонусов, maximal cashout уже не пара рублей, а вполне приличная сумма.

Очки преданности, начисляемые за беты, – это не только метод подниматься по уровням, но и внутренняя валюта. Очки можно собирать, обменивать на реальные средства по ставке, который зависит от ранга, а также тратить их на иные привилегии, привилегии и подарки.

Трудно сказать, что любые бонусы эквивалентны. Определённые из этих – подлинная драгоценность, другие привлекательны только на первый взгляд. Брать, все, то, чего предоставляют – не решение, следует тщательно анализировать бонусы, задавать уточнения поддержке и принимать решения после оценки их реальной выгодности.

VIP-статус – особый подход к геймеру admiral x casino.

Премиум – это уже не лишь про стандартное обеспечение. Интернет казино с премиями старается организовать обстановку, при которых клиент почувствует себя эксклюзивным. В этом месте необходимо постараться, чтобы добиться больших преимуществ и по-настоящему есть к чему идти. Вдобавок к бонусов из базовых и промежуточных ступеней, участник получает:

  • Персональное поддержка – администратор казино admiral x casino выбирает бонусы, сообщает о соревнованиях, устраняет трудности, отвечает на вопросы.
  • Увеличенные лимиты – затрагивает не только денежных сделок, но и суммы пари, премий.
  • Премиальные соревнования – соревнования отличаются от типичных игр ассортиментом развлечений и гораздо более значительными выигрышами.
  • Призы – предоставляются пригласительные на турниры и лотерейные игры, высылаются на место жительства брендовые аксессуары и гаджеты.
  • Туры – игрок зовется на спортивные события, музыкальные шоу, временами визит в популярных развлекательных парков или получает тур в солнечную страну.
  • Ускоренное сбор поинтов – на ранг это уже не особенно отражается, но можно заработать бонусные деньги после конвертации.
  • Приоритет на перевод – заявки от премиум-игроков обрабатываются вне очереди.
  • Благоприятный курс конвертации баллов.

Кроме того, игроки элитных рангов приглашаются в числе первых опробовать свежие слоты или для них организуются специальные игровые залы с автоматами, где ставки значительнее и приз больше. Игрок, добившийся внушительного уровня, способен его утратить, если не будет поддерживать интенсивную деятельность. В виртуальном гэмблинге admiral x игрок, который долго не заходит в профиль и не играет, лишается текущего статуса. Он нужно будет запускать сначала, когда он решит снова начать игровой процесс на платформе.

Каким способом попасть в схему лояльности

В этом случае очень многое определяется от предпочтённого геймером игрового клуба. На многих сайтов участники попадают в бонусную систему сразу после записи. В некоторых игорных заведениях стартовый уровень нужно активировать самостоятельно через техподдержку, а есть такие, где требуется приглашение или только после достижения конкретного объёма вложений.

Регистрация в казино admiral x casino проходит по принятым нормам. Не допускаются на сайт с игорными развлечениями те, кто не достигли совершеннолетия или стремится зарегистрировать учетную запись, находясь в стране, где это запрещено правилами. В процессе регистрации оформляется анкета и исходя из внесенных информации создается персональный аккаунт. По завершении авторизации на азартном клубе пользователь сможет видеть своё положение, курс обмена баллов, доступные бонусы, результаты и сколько нужно до следующего уровня.

Если первая ступень присваивается без участия, после регистрации аккаунта, то обычно никаких вознаграждений или льгот игроку не предоставляется. С целью получить ваш начальный кэшбек либо бонус, требуется собрать очки. Основная информация по уровням и привилегиям, которые им соответствуют, представлена в разделе «Лояльность игроков» (может иметь альтернативное имя). Если игрок захочет добыть подробности, тогда сможет выйти на связь в саппорт, но информацию дадут только на основании его актуального уровня.

Проанализировав свои результаты в адмирал х и при стремлении усовершенствовать итоги, азартный игрок может осуществлять действия по увеличению скорости прогресса по уровням. Что входит в такие мероприятия?

  • Систематическая игра admiral x – не обязано вкладывать огромные деньги, важнее непрерывное присутствие в онлайн-зале и участие в азартных играх.
  • Беттинги на действительные средства – все вознаграждения начисляются только при обстоятельстве игры на рубли, использование тестовых версий во учет не идет.
  • Участие в соревнованиях и промоакциях возможно обеспечить бонусные пункты.

Частое эксплуатация премий типовой схемы указывает, что клиент заинтригован в дополнительных финансах на аккаунт и сможет их использовать грамотно. Это также ускоряет достижение достижения ранга, поскольку при запуске наград количество ставок кратно увеличивается и увеличивается набор очков, нужный для перехода.

Разница между привилегированным клубом и системой лояльности в онлайн казино могут быть значительными. Привилегированные клубы обычно обеспечивают специальные бонусы, такие как персональные менеджеры, ускоренные выплаты, и эксклюзивные бонусы. Планы лояльности, с другой стороны, ориентированы на всех игроков и строятся на сборе баллов, которые можно поменять на бонусы или бесплатные вращения. Таким образом, главное отличие состоит в том, что VIP-клубы обеспечивают индивидуальный подход, а программы лояльности рассчитаны на широкую аудиторию.

В игорном заведении в сети план преданности и ВИП-клуб – это отдельные системы поощрений, которые могут функционировать в пределах одной площадки. VIP-секция и план поощрений имеют совместную миссию – сохранение пользователей и повышение их активности. Тем не менее они варьируются по своему подходу и предпочтительным преимуществам.

Вступление в престижном объединении можно приобрести за значительный вклад, а подарки рассчитаны только на очень активных участников. Отдельные VIP-клубы разработаны главным образом для хайроллеров:

  • чрезвычайно значительный лимит минимального взноса;
  • индивидуальные вознаграждения
  • эксклюзивные турниры с невероятными наградами;
  • живые столы с персональным крупье;
  • элитные игровые машины.

Немедленно по окончании регистрации аккаунта в адмирал х пользователь, заявляющий права на на VIP сервис, может запросить добавление в список. Ответ дает саппорт, что порекомендует выполнить ряд условий, начиная от полного подтверждения данных до внесения депозита на сумму в десятки тысяч рублей. Членство в группе элитных игроков в перспективе сохраняться значительными суммами депозитов. Любые члены ВИП-клуба одинаковы друг с другом и обладают равные преимущества. Механизм преимуществ для премиум участников отвечает максимальным категориям программы верности, но не непременно повторяет все пункты.

Программа верности в виртуальном казино admiral x рассчитана для каждого игрока, а уровни будут присуждаться без вмешательства. Игроку совсем не обязательно пользоваться привилегиями – эти бонусы просто находятся в ожидании запуска в персональном кабинете и исчезать, как только выйдет положенное время.

Сосредоточьтесь на какие аспекты учесть начинающим игрокам в казино адмирал х

Программы преданности в онлайн казино – это не просто пиар-ход, а настоящий механизм для добычи дополнительной выгоды, но только для тех, кто не расслабляется, а играет с умом. До того как рассматривать любые оферты от онлайн-казино, а лучше еще до регистрации, стоит удостовериться, что у заведения честные правила. А основное, что в интернет-клубе их в полной мере соблюдают.

До регистрацией профиля следует изучить политику бонусов, а также правила и условия, по которым работает онлайн казино, учитывая любой мелкий шрифт. Главным образом необходимо не преступать нормы, ведь будет досадно израсходованных средств и усилий.

При взаимодействия среди бонусами первоначально следует обращать внимание на прозрачность требований, например:

  • ясное обозначение коэффициента и условий отыгрыша;
  • периоды ставок
  • срок действия оферты.
  • ограничения по слотам;
  • размер максимальной ставки на вращение;
  • параметры выдачи премии и другое.

Когда требование по отыгрышу бонуса выше ×40, следует взвесить все за и против до активации, поскольку это может обойтись в круглую сумму или в конечном счете быть убыточным. Срок использования вознаграждений часто лимитируется, определенные, в особенности выдаваемые как приз за успехи статуса, сгорают за 24 часов. Нередко премии действуют лишь на конкретные слоты. Проба покинуть из рамок норм повлечет к лишению возможности на награду.

Особенно огромное количество ошибок игроки делают в период отыгрыша. Нарушаются не только дедлайны, но и предпринимаются попытки ставить в неразрешенных для этого слотах. Оптимальнее выбирать для выполнения требований ставок ретро слоты. На каких именно игровых автоматах ставки на игру не учитываются суммы для отыгрыша, указано в правилах.

Не оказались добавлены очки лояльности, исчез из списка приз, долго выводится средства и технические неполадки – это обращения в службу поддержки. Способ обращения не критичен, основное детально рассказать проблему и отправить при потребности скриншоты с подтверждением бага. Консультанты обязательно поддержат, задействуют прочих профессионалов, обозначат раздел правил или рекомендуют выход из сложившейся ситуации.

Подбирать интернет-казино для учетной записи важно только законное, где разрешение оформлена авторитетным учреждением. Только так обеспечивается уверенность достижения премий и подарков из лояльной программы. Определённых пользователей интересует не игровой пространство, а именно структура поощрения, и они не ленятся сопоставлять вознаграждения между собой. С определенным навыке можно быстро распознать реально выгодные варианты.

VIP-статусы, бонусы, безвозмездные спины, возврат средств, презенты – все это часть истинной вселенной цифровых азартных игр и топовых casino. Чтобы выжать из премий максимально, нужно превратить программу лояльности в игорном заведении своим партнером.

The post Планы лояльности в онлайн игорных заведениях – как зарабатывать больше appeared first on premier mills.

]]>
https://www.premills.com/plany-lojalnosti-v-onlajn-igornyh-zavedenijah-kak-16/feed/ 0