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} Малозаметные создатели гейминг ПО для казино. - premier mills

Малозаметные создатели гейминг ПО для казино.

Малозаметные создатели гейминг ПО для казино.

У игроков и гостей виртуальных казино на слуху обычно крупные разработчики гейминг-софта, например, такие, как Playtech, Microgaming, Yggdrasil, Spinomenal. Тем не менее есть и альтернативные разработчики, предлагающие замечательные виртуальные слоты. В казино azino, например, можно обнаружить лучшие слоты подобных современных компаний-разработчиков игр:

  • Arrow’s Edge;
  • ИнтеллектуальныйСофт АзартныеИгры;
  • Espresso Games
  • Aspect Gaming.

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

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

Марка Arrow’s Edge

Корпорация Arrow’s Edge появилась в две тысячи четырнадцатом году. Разработчик на данный момент выпустила более пятидесяти цифровых игр, широко доступных в azino игорном заведении и других известных интернет-заведениях. Разработки производителя завлекают интерес увеличивающимися джекпотами, дополнительными опциями, значительными множителями бет. Arrow’s Edge специализируется на производстве игровых автоматов и настольных игр. Модели, производимые указанным производителем, можно запускать и на персональных компьютерах, и на мобильных телефонах.

Arrow’s Edge предоставляет значительное количество услуг казино. Основополагающие из них вот такие:

  • создание интернет-ресурсов с нуля;
  • Написание текстов для раскрутки современных игровых автоматов;
  • доступ к онлайн и локальным соревнованиям в игорном заведении;
  • средства для идентификации и предупреждения фрода.

Марка не афиширует, в какой зоне действия учтен, однако эта загадочность не должна волновать: за 11 лет работы студия отлично себя показала. Главная часть каталога организации – игровые автоматы. Среди них есть а также традиционные игры, а также новейшие варианты с огромным количеством экстра возможностей. Также Arrow’s Edge предлагает двадцать одно, рулет. Профессионалы сделали разные варианты видео-покера, например, All American, Double Bonus, Joker Poker.

Почти что во всех игровых автоматах и карточных играх предусмотрены суперпризы. Наибольшие внушительные выигрыши можно заработать в игровых машинах. Размер прогрессивных джекпотов варьируется в пределах от 40000 до 70000 долларов. Arrow’s Edge постоянно организует совместно с казино azino 777 и иными азартными площадками чемпионаты по игровым автоматам собственного создания. Чемпионы состязаний забирают внушительные денежные вознаграждения. Производитель также пытается поднять участие пользователей благодаря призовым функциям в слотах. В игровых автоматах предусмотрены расширяющиеся и залипающие на своих местах символы Wild, значительные коэффициенты ставок, пакеты фриспинов.

К числу лучших следует включить эти цифровые слоты, созданные компанией Arrow’s Edge:

  • Истинные Защитники;
  • Robin внутри чаще;
  • Время Изгибатель;
  • Медведь Planet;
  • Dodge Города.

Настоящие Герои – известный в игорных заведениях игровой слот с увеличивающимся джекпотом. Любителям игр предоставляется возможность участвовать в полицейской погоне и получить значительную сумму. Графическое представление у автомата простое, но это компенсируется внушительными выигрышами. На дисплее True Heroes можно увидеть полицейских, медиков, пожарных. Схема игрового процесса зоны – 5×3. В представленной модели заложены специальные знаки, в частности, Extra Wild и Scatter.

Ключевой фигурант игры Robin In The Woods – Robin Hood. Игровой устройство манит интерес гостей казино азино крупными выплатами, достигающими ×750 от вложения. В Robin In The Woods проводится пара прогрессивных мега-приза: «Джекпот скоростного кэша» и «Загадочный джекпот». В виртуальном автомате есть призовые уровни со лучной стрельбой – «Яблочная функция» и «Заблокированные хранилища». Игроки также способны взять одну из пары пакетов призовых фриспинов.

В игровом слоте Time Bender можно устремиться в онлайн путешествие по космосу. В игровом автомате используется 40 линий выплат и предусмотрено 2 прогрессивных джек-пота. Величина джекпотов доходит до ×800 от бета. Тайм-Бендер также привлекателен нестандартными иконками Wild с возможностью «подкручивания» и бонусным туром «Временные кольца».

Герои игровой забавы Panda Planet – существа: буйвол. медведь-панда, тигр-самка. Обычных наградных линеек на слоте поле не существует. В отличие от этого этого предусмотрено 1024 метода создания выигрышных комбинаций символов. Иногда появляется Wild, могущий захватить до 4-х слотов одновременно. Кроме того в слоте есть фри-спины. Призы достигают ×400 по сравнению с вклада.

Dodge City – известная в гэмблинговом клубе azino онлайн-игра на мотивы Дикого Запада. В Dodge City задействовано десять линий, доступен призовой раунд и бесплатные вращения, пара растущих джекпота.

Фирма SmartSoft Gaming

В виртуальных казино с привилегиями встречаются развлечения грузинской фирмы SmartSoft Gaming, функционирующей в области iGaming с 2015 года. Фирма представил больше 80-ти игр на удачу. Организация неукоснительно выполняет правила правовых актов, внимательно относится к отзывам пользователей. В коллекции компании содержатся не только однорукие бандиты, но и лотерейные игры, лотереи, многочисленные игры на столе.

Любой календарный месяц SmartSoft Gaming прилагает усилия разрабатывать минимум 2 свежих игрушки для казино azino 777 и остальных топовых интернет-платформ. Линейка игровых автоматов регулярно расширяется. Тематика игр разнообразная: культура Мексики, авантюры, волшебство, старинные цивилизации. В большинстве слотов применяется 5 катушек. Для удобства посетителей казино SmartSoft Gaming создает автоматы с разной изменчивостью. Существуют как модели среди которых частыми, но скромными вознаграждениями, так и онлайн-аппараты с нечастыми, но солидными джекпотами. Главные плюсы разработок компании такие:

  • поддерживание нескольких языковых систем (английского, грузиноязычного, туркоязычного);
  • запуск на разных девайсах благодаря применению техники HTML5;
  • доступность прогрессивных или фиксированных выигрышей.

Любой новый гемблинговый автомат перед запуском в игорном заведении проходит через скрупулезное тестирование. Соблюдение геймплея объявленным параметрам удостоверяют лицензии от iTechLabs – независимой аудиторской фирмы.

Самые известные в казино слоты студии SmartSoft Gaming в гэмблинг-заведениях включают:

  • Aztec Автомат
  • Pharaoh Автомат
  • Викинг Автомат
  • Воин Автомат
  • Galaxy Слот.

Игра Aztec Slot была создана для посетителей казино, интересующихся атмосферой древних цивилизаций. В слоте используется 5 катушек и двадцать линий выигрыша, предусмотрены каскадные прокрутки. При синхронном появлении на мониторе трех масок ацтеков запускаются безвозмездные спины с дополнительными мультипликаторами ставок.

В цифровом аппарате Pharaoh Slot пользователи гэмблинг-платформы могут почувствовать себя искателем сокровищ и охотиться за различных реликвий. Тут имеется специальный бонусный раунд, есть фриспины, и риск-игра, в которой возможно удвоить каждую выигрышную сумму. Устройство слота стандартное: 20 линеек и конфигурация поля 5×3.

Главные герои Viking Slot – северяне. В данном игровом слоте, популярном в рейтинговых виртуальных казино, 5 барабанов и 3 линии знаков. Возможности на достижение значительного приза улучшают цепные вращения и присутствие иконки Wild. В Viking Slot имеются фриспины. Набор из десяти бонусных раскручиваний барабанов, запускается, когда на экране вместе высвечивается три клинка.

Автомат Samurai Slot оказался популярным в онлайн-казино благодаря существованию пары уникальных знаков: Wild и Scatter. Вайлды субституируют базовые иконки, чем помогают создать предельное количество выигрышных сочетаний. Назначение разбросанных символов – инициация бесплатных вращений. В Samurai Slot предусмотрено 243 варианта образования платных комбинаций символов.

Galaxy Slot – увлекательная онлайн-игра, посвящённая галактике. Устройство его стандартное: 5 роликов и 20 полос. В Galaxy Slot есть риск-игра, фриспины и дополнительный раунд.

Фирма Espresso Games

Многим посетителям игорного заведения azino 777 знакомы однорукие бандиты фирмы Espresso Games. Компания действует с 2002 года. Центральный офис фирмы сначала была расположена в Англии, а впоследствии была перемещена в Итальянскую Республику. Основной штаб располагается там, а филиалы работают в Колумбия, Соединенных Штатах Америки, Гонконг и Испания. Первые слоты для онлайн-казино студия представила в 2009-м году. К две тысячи двадцатому году времени разработчик представил общественности более 70 игр, большая часть из которых – автоматы. В ассортименте вендора также входят карточные развлечения, разные виды рулетки. Студия разработала интеграционный элемент Speedy Setup Solution, позволяющий объединять платформы для игр.

Дополнительно ещё одна интересная внутри интернет игорном заведении создание марки Espresso Games – интернет административный центр «CyberBox». Таким образом обозначается набор инструментов, гарантирующих корректную функционирование интернет-казино. CyberBox поддерживает турниры, системы лояльности. Espresso Games также предлагает казино-операторам инструменты для розыгрыша джекпотов, устроения различных акций и заданий.

Поставщик создает слоты с применением технологии HTML5. За счет этому факту эти приложения функционируют на различных девайсах: мобильниках, ноутбуках, таблетах. В машинах от Espresso Games задействовано 3 до 6 цилиндров. Платные сочетания знаков образуются на обычных линиях или свыше 1000 путей. В большинстве автоматов предусмотрены сюжетные этапы с кумулятивным принципом запуска. Тема автоматов от Espresso Games разнообразная. Некоторые слоты посвящены темам Древнему Египту, остальные – вселенной, ещё одни – хроникам. Самые известные онлайн-автоматов этого разработчика – Nebula, Mu vs Atlantis, Potion Trick, Fortune Race и Cinema.

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

Mu vs Атлантида – популярный гемблинг аппарат с 6 роликами и более чем 6000 возможностями сочетаний символов. По завершении активации игрового автомата следует решить, какое из двух враждующих королевств поддержать. Клавишу, активирующую барабаны, обрамляет ободок. Оно может в любой момент передвинуться на площадку с иконками. Перстень накапливает баллы силы. После того как его заполнения стартует сражение. Если выиграет государство выбранное геймером, он выиграет крупную награду. В автомате есть Wild, способный целиком заполнить любой из барабанов. Также в Му против Атлантиды добавлены бесплатные вращения с активацией через накопление. В случае, если полностью игровое пространство площадка наполняется водой, геймер выигрывает до 100 бонусных FS.

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

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

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

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

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

Основная порция игр от Aspect Gaming – игровые машины и разные виды колеса фортуны. Большинство из них настроены для социальных платформ. Всего вендор выпустил более 100 слотов. Игровые автоматы студии ориентированы на азиатско-тихоокеанский рынок, но востребованы во всем мире благодаря отличной визуализации и большим выплатам. Игровые автоматы компании допустимо начинать в онлайн-казино при помощи компьютера, смартфона, таблета. В значительной массе автоматов используется 5 барабанов, а в ряду дополнительных возможностей как правило есть безвозмездные спины. В нижерасположенной части дисплея каждого слота Aspect Gaming показывается информация о ранее завершённых раундах. Эта конкретная возможность в особенности пользуется уважением у любителями игр, выбирающих применять многообразные подходы.

Автоматы разработчика Aspect Gaming известны во различных виртуальных казино. Большинство геймеров с нетерпением предвкушают свежих обновлений. Больше востребованы следующие слоты разработчика:

  • Крутой Кэш;
  • Liverpool Football Club;
  • Кролик Буйство
  • O Да
  • Всё что блестит.

Игра Kickin’ Kash создана в стиле аниме. На катушках можно разглядеть разных героев и их арсенал, а также номиналы карточек. Вайлд (дракончик с хрустальным шаром) субституирует стандартные символы. Три или более разбросов (изображение символа) запускают фриспины. При бонусных раскруток катушек запускается дополнительный множитель в диапазоне от x2 до x10.

Игровой автомат Liverpool Football Club посвящается легендарному британскому футбольному клубу. Барабаны игры крутятся на пейзаже стадиона. Перед запуска игры следует выбрать единственного из игроков группы. Портрет данного спортсмена станет осуществлять функцию Wild’а. В аппарате также имеется Scatter (ворота). Несколько или более Scatter’ов запускают набор из десяти фри-спинов.

Кролик Буйство – онлайн–автомат, популярный клиентам Casino азино значительными выигрышами. Самый доходный символ – китайский аграрий. Скаттер – заяц. Три кролика начинают десять подарочных спинов барабанов. При фриспинов на экране появляется иконка Wild. Это помогает образовывать оплачиваемые комбинации.

Профессионалы из Aspect Gaming, разрабатывая игровую машину O Yeah, вдохновились традиционными однорукими бандитами с простым устройством. На дисплее три цилиндра и всего одна выигрышная строка, на которой можно увидеть всевозможные ягоды и цифры семь. Особенность развлечения – три разновидности накопительного джекпота: Minor, Grand и Major. Также включена особая функция Wintrack – контроль итогов недавних вращений.

Все то, что блестит – ещё одна забава ориентальной тематики. В данной игре геймерам дается возможность побороться с зверем. Дикий символ представлен в форме храма, а Scatter – монета из Китая. В ходе бесплатных вращений все достижения мгновенно возрастают в два раза.

Общие советы по игровому процессу в игорном заведении в интернет-слоты: 1. Изучите условиями игры. 2. Определите лимит средств и следуйте ему. 3. Подбирайте автоматы с высоким процентом возврата игроку. 4. Применяйте бонусы и промоакции от казино для повышения шансов на успех. 5. Играйте ответственно и не забывайте о времени. 6. Пробуйте демо-версии слотов перед игрой на реальные деньги. 7. Не гонитесь за потерями, это может привести к еще большим убыткам. Следуя этим советам, вы сможете наслаждаться игрой в онлайн слоты более безопасно и эффективно.

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

Перед тем как начать игру на одном из игровых автоматов, необходимо ознакомиться с его описанием. Там возможно обрести кучу важной информации о их спецификациях. Помимо этого следует изучить справочный секцию геймплея. Для его просмотра следует запустить слот, а затем кликнуть на консоли на элемент «Paytable» или «Info». В руководстве поясняется, какие знаки задействованы в слоте и какие выигрыши за них можно получить. Нужно взять в расчет, что величина выигрышей всегда прямо пропорционален определенной ставке.

Leave a Comment

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