Deco Diamonds Slot Totally free Play On-line casino Slots No Dolphins Pearl online slot Install
Posts Dolphins Pearl online slot – Where to gamble Deco Diamonds for real currency Understanding the Gameplay Far more Online game Best […]
September 24, 2025 8 min read
Anında erişim sağlamak isteyen kullanıcılar spor bahisleri versiyonunu tercih ediyor.
Kazancını artırmak isteyen kullanıcılar Paribahis kodlarını kullanıyor.
Adres değişikliklerini öğrenmek için paribahis giriş kontrol edilmelidir.
eryamato.com">Bettilt 2025 fırsatları kazancı artırıyor.
Bahisçilerin finansal işlemleri koruyan Paribahis linkini kullanıyor.
Yatırım yapanlar için özel olarak hazırlanan Bahsegel kampanyaları büyük ilgi görüyor.
Her oyuncu kolay erişim için Bahsegel giriş adresini ziyaret ediyor.
Larger victories are often found in the 100 percent free revolves extra account of one’s game. Within the Tome of Madness you can sign up Steeped Wilde on the one of his true activities as he hunts to have Old Relics! Collect key nuts symbols to help you win larger and you will multiply your earnings. Very ports from the significant providers include incentive rounds, also known as free revolves cycles.
Dolphins Pearl online slot – Where to gamble Deco Diamonds for real currency
As opposed to online game such on line craps, position games don’t you want one means. Such electronic poker, you can utilize autoplay in order to spin the fresh reels instantly. Fruit Party try a colourful good fresh fruit-inspired slot of Pragmatic Play, create inside 2020. It’s got a good 7×7 grid and you may uses a cluster will pay program, meaning your win by landing 5 or higher complimentary symbols connected with her.
Understanding the Gameplay
- Whenever spinning so it classic fruits server, the new icons you’ll discover on the reels is watermelons, cherries, lemons, plums, peaches, sevens, bells, and you will diamonds.
- Megaways harbors try well-known for providing the most recent features such Cascading Reels, Increasing Wilds, 100 percent free Spins, and you will Added bonus Pick.
- The brand new paytable is pretty ample, which have probably the all the way down-well worth fresh fruit icons giving pretty good productivity on your wager.
It’s got a classic art deco-style motif that’s visually tempting, and the added bonus has are very satisfying. The newest re also-twist element is specially fun, as you possibly can award to 5 re-spins and you will multipliers around 5x. The brand new RTP from 96.03percent and you may average volatility allow it to be suitable for each other the newest and you may educated players. Deca Expensive diamonds Deluxe has a good 96.several percent go back, in order to pro speed when Improve Mode are aroused exceeding the newest figure to possess on the web slot video game. With its volatility participants will most likely not find wins often nevertheless when they do the brand new advantages can be extremely high. Deco Diamonds shines with its elegant Art Deco theme, easy game play, and exciting extra provides.
The brand new soundtrack matches the brand new graphic motif well, that have flashy music similar to the new Roaring 20s to try out as you spin the newest reels. Complete, HUB88 has been doing an excellent job carrying out an enthusiastic immersive Art Deco feel one to shines off their harbors in the business. Where it manages to lose out and can drop punters, is within the relatively lowest earnings potential of 1,000x the brand new bet at the best.

The newest sound recording features a major Dolphins Pearl online slot affect the entire bundle and you can and that, makes playing Deco Expensive diamonds Deluxe as more fun like most other video game. According to the astonishing day and age from ways deco, the newest position features the game icons since the lemons, cherry, watermelon, peach, bell, not to mention diamond. For many who home a good deco diamond to your reel dos, step 3, four to five you can win 1, 10, 50 or a lot of minutes a share. Which symbol becomes a wild, replacing most other signs for the reel and to get you the new possible opportunity to earn much more.
The typical explicit player just isn’t going to find Deco Expensive diamonds Deluxe all of that entertaining otherwise fun. Needless to say – since the an excellent hotshot like you is also’t become troubled having repetitive filter systems. Incentive rounds which make your heart circulation competition, and highest volatility you to definitely have the brand new adventure real time! Everything you need for this cardio-rushing, edge-of-your-chair type of enjoy, having an honest RTP from 96.03percent. The data is upgraded a week, getting style and you can personality into account. The brand new conveyed differences shows the rise or reduced amount of demand for the online game compared to the prior day.
Far more Online game
Even though the position isn’t much unbelievable, it’s found to be similar to that of the first Deco Diamonds video game but the newest push function for which you must spend more money to your share. It enhances your winnings potential from the increasing your chance, just as the unique game. For every bonus controls have five various other awards which is acquired due to more than one tile on the controls. The brand new silver controls can give you honors away from 5x, 8x, 18x, 58x, and you may 80x the complete share. The newest gold controls offers profits away from 8x, 18x, 58x, 98x, and 588x your bet. And also the Diamond controls features honors of 18x,58x, 98x, 588x, and you will step 1,000x your own share.
It comes down having a great about three tier Incentive Controls that provides choice multipliers getting, to one thousand moments the risk to possess an exciting betting sense. Decryption Expensive diamonds and comes with piled signs to possess payouts and a good Re also Revolves ability as a result of the appearance of Decoding Expensive diamonds icons. Featuring its level of unpredictability and you may an income to User fee from 96.03percent professionals is indulge in game play for the opportunity to get more, than 2000 times its 1st bet. The online game features a software and you can a variety of betting choices to focus on professionals from different choice and you may degrees of sense. Deco Diamonds Deluxe by HUB88 brings the newest glamour of the Art Deco era to the display having its magnificent treasures and you can potential to possess large real money wins.

It’s value listing even when why these substantial gains aren’t a keen density due, for the volatility of one’s games however when they are doing occurs it’s its electrifying! Understanding regarding it honor can help you manage your traditional and you may plan your playing procedures smartly. As opposed to providing an easy build, and just a number of bonuses, like any antique slots perform, which video slot offers a modern layout with a matching lay out of items. Having a 5×3 display, 9 repaired paylines, and you may highest-paying symbols you to definitely shell out honours of 1,000x and much more, the fresh Deco Expensive diamonds position try appealing adequate even as opposed to its incentives. But when you add the slot’s 100 percent free respins and money game for the picture, you have made a video slot with the potential to change people example for the an extremely successful feel. Deco Diamonds slot by the HUB88 brings the fresh glamour of your Artwork Deco era your having its spectacular treasures and you may prospect of enormous a real income gains.
step three Deco Diamonds correspond with Gold height enjoy, 4 Deco Diamonds symbols keep in touch with Silver top play, and 5 Deco Expensive diamonds signs matches having Diamond peak enjoy. People get the award that’s shown to the highlighted tile if the Extra Wheel finishes. The gamer also offers the chance to update the main benefit Wheel gamble out of Silver to Gold or from Silver in order to Diamond if the the newest wheel finishes to the top right up tile. Sure, you’ll be able, however have to enjoy a bona fide money version from the one of your leading casinos.
The advantages is actually Deco Diamonds Top-notch Symbols (Wilds), Respin Ability, Professional Reel Feature, and feature Pick (Diamond Eating plan). The features inside Deco Expensive diamonds Top-notch is Deco Expensive diamonds Top-notch Icons (Wilds), Respin Ability, Elite group Reel Feature, and have Get (Diamond Selection). Honours try calculated up against the foot wager top even though you is actually paying a lot more to your improve switch. Discover level of revolves in order to auto play because of the up and down arrows or by the looking for a regard myself. Sure, Deco Diamonds slot will be played for free to your many of the best casino other sites within our number.
Best 4 Fraud-totally free Deco Expensive diamonds Casinos

Since the displayed, the advantages appear to outweigh the new cons out away from one hundred 100 percent free spins sale. Despite wagering prices and you can withdrawal limitations create, specific a real income earnings can be achieved if put truthfully. Enhance your bankroll so you can reinvest winnings to the spins for the most other online game.
Players victory from the obtaining complimentary signs on the any of the 9 paylines, which range from the fresh leftmost reel. The new paytable is quite big, that have even the all the way down-value good fresh fruit signs providing pretty good productivity in your bet. Icons on the reels tend to be vintage fruit host symbols for example cherries, lemons, and you can watermelons, all of the given an attractive Deco transformation. The fresh premium icons is sparkling bells and you will happy sevens, since the Deco Diamond alone serves as each other nuts and you may spread symbol. The eye in order to detail regarding the construction extends to the newest voice effects, that feature optimistic jazz songs you to fit the new graphic theme very well. Meet For The newest Win, a good heavyweight in the wide world of on the internet slot online game.
How to victory in the Deco Diamonds would be to get benefit of the bonus has. The brand new nuts symbol can be substitute for all other icons, which makes it easier to hit profitable combinations. The new scatter symbol can be cause the bonus bullet, that can award up to 1000x the newest wager. At the same time, the newest re also-twist ability can also be prize to 5 lso are-spins and you can multipliers around 5x. Introducing Deco Expensive diamonds Slot machine game which have Re also-spin and you may Bonus Controls by To the Win and Microgaming. Line wins try repaid when symbols come in a row, from the leftmost for the rightmost reputation, with respect to the PAYTABLE.
if (typeof TrustindexJsLoaded === 'undefined') {
var TrustindexJsLoaded = {};
}
TrustindexJsLoaded.common = true;
String.prototype.ucfirst = function() {
return this.charAt(0).toUpperCase() + this.slice(1)
}
function popupCenter(w, h)
{
let dleft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;
let dtop = window.screenTop !== undefined ? window.screenTop : window.screenY;
let width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
let height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
let left = parseInt((width - w) / 2 + dleft);
let top = parseInt((height - h) / 2 + dtop);
return ',top=' + top + ',left=' + left;
}
jQuery.fn.expand = function() {
let textarea = jQuery(this);
let val = textarea.val();
textarea.css('height', textarea.get(0).scrollHeight + 'px');
textarea.val('').val(val);
};
jQuery(document).ready(function() {
/*************************************************************************/
/* PASSWORD TOGGLE */
jQuery('.ti-toggle-password').on('click', function(event) {
event.preventDefault();
let icon = jQuery(this);
let parent = icon.closest('.ti-form-group');
if (icon.hasClass('dashicons-visibility')) {
parent.find('input').attr('type', 'text');
icon.removeClass('dashicons-visibility').addClass('dashicons-hidden');
}
else {
parent.find('input').attr('type', 'password');
icon.removeClass('dashicons-hidden').addClass('dashicons-visibility');
}
});
// toggle opacity
jQuery('.ti-toggle-opacity').css('opacity', 1);
/*************************************************************************/
/* TOGGLE */
jQuery('#trustindex-plugin-settings-page .btn-toggle').on('click', function(event) {
event.preventDefault();
jQuery(jQuery(this).attr('href')).toggle();
return false;
});
/*************************************************************************/
/* FILTER */
// checkbox
jQuery('.ti-checkbox:not(.ti-disabled)').on('click', function() {
let checkbox = jQuery(this).find('input[type=checkbox], input[type=radio]');
checkbox.prop('checked', !checkbox.prop('checked')).trigger('change');
return false;
});
// custom select - init
jQuery('.ti-select').each(function() {
let el = jQuery(this);
let selected = el.find('ul li.ti-selected');
if (selected.length === 0) {
selected = el.find('ul li:first');
}
el.data('value', selected.data('value')).find('font').html(selected.html());
});
// custom select - toggle click
jQuery(document).on('click', '.ti-select', function() {
let el = jQuery(this);
el.toggleClass('ti-active');
if (el.hasClass('ti-active')) {
jQuery(window).unbind().on('click', function(event) {
if (!jQuery(event.target).is(el) && jQuery(event.target).closest('.ti-select').length === 0) {
el.removeClass('ti-active');
jQuery(window).unbind();
}
});
}
});
// custom select - select item
jQuery(document).on('click', '.ti-select li', function() {
let el = jQuery(this);
el.parent().parent().data('value', el.data('value')).trigger('change').find('font').html(el.html());
el.parent().find('li').removeClass('ti-selected');
el.addClass('ti-selected');
});
var isNoReviewsWithFilter = false;
// get reviews to memory
var reviewsElement = jQuery('.ti-widget-editor-preview .ti-widget').clone();
// set reviews' rating and empty to attributes
reviewsElement.find('.ti-review-item').each(function() {
let el = jQuery(this);
let rating = el.find('.ti-stars .ti-star.f, .stars .ti-star.f').length;
// facebook recommendations
if (el.find('.ti-recommendation-icon.positive').length) {
rating = 5;
}
else if (el.find('.ti-recommendation-icon.negative').length) {
rating = 1;
}
if (el.find('.ti-polarity-icon.positive').length) {
rating = 5;
}
else if (el.find('.ti-polarity-icon.neutral').length) {
rating = 3;
}
else if (el.find('.ti-polarity-icon.negative').length) {
rating = 1;
}
// ten scale
if (el.find('.ti-rating-box').length) {
rating = Math.round(parseFloat(el.find('.ti-rating-box').text()) / 2);
}
let selector = '.ti-review-content';
if (el.find('.ti-review-content .ti-inner').length) {
selector = '.ti-review-content .ti-inner';
}
else if (el.find('.ti-review-text').length) {
selector = '.ti-review-text';
}
el.attr('data-rating', rating);
if (typeof el.attr('data-empty') === 'undefined') {
el.attr('data-empty', el.find(selector).text().trim() == "" ? 1 : 0);
}
});
// check badge type
var isBadgeWidget = function() {
let layoutId = jQuery('.ti-widget-editor-preview .ti-widget').data('layout-id');
return [ 11, 12, 20, 22, 24, 25, 26, 27, 28, 29, 35, 55, 56, 57, 58, 59, 60, 61, 62 ].indexOf(layoutId) != -1;
};
// apply filter when change or init
var applyFilter = function(init) {
let styleId = parseInt(jQuery('.ti-widget').data('layout-id'));
// get stars
let stars = (jQuery('#ti-filter-star').data('value') + "").split(',').map(function(i) { return parseInt(i); });
// only ratings
let showOnlyRatings = jQuery('#ti-filter-only-ratings').prop('checked');
// filter removed
if (!jQuery('#ti-filter-star').length) {
stars = [ 1, 2, 3, 4, 5 ];
showOnlyRatings = false;
}
// remove current review elements
jQuery('.ti-widget .ti-reviews-container-wrapper .ti-review-item').remove();
// remove all event listeners on the widget
let widget = document.querySelector('.ti-widget');
widget.replaceWith(widget.cloneNode(true));
// iterate through stored reviews
let results = 0;
reviewsElement.find('.ti-review-item').each(function() {
let el = jQuery(this);
// check rating
if (stars.indexOf(el.data('rating')) !== -1) {
// check only ratings
if (showOnlyRatings && el.data('empty')) {
return;
}
// return after 5 results (vertical widgets)
if ([ '8', '9', '10', '18', '33' ].indexOf(styleId) !== -1 && results > 4) {
return;
}
// clone and append element
let clone = el.clone();
jQuery('.ti-widget-editor-preview .ti-widget .ti-reviews-container-wrapper').append(clone);
clone.hide();
clone.fadeIn();
// increase count
results++;
}
});
// clear pager interval
if (typeof Trustindex !== 'undefined' && Trustindex.intervalPointer) {
clearInterval(Trustindex.intervalPointer);
}
// show empty text
if (results === 0 && !isBadgeWidget()) {
jQuery('.ti-widget-editor-preview .ti-widget').hide().next().fadeIn();
isNoReviewsWithFilter = true;
}
else {
jQuery('.ti-widget-editor-preview .ti-widget').fadeIn().next().hide();
isNoReviewsWithFilter = false;
if (typeof Trustindex !== 'undefined') {
Trustindex.pager_inited = true;
Trustindex.init_pager(document.querySelectorAll('.ti-widget'));
Trustindex.resize_widgets();
}
}
// ajax save
if (init !== true) {
jQuery.post('', {
command: 'save-filter',
_wpnonce: jQuery('#ti-filter-star').data('nonce'),
filter: JSON.stringify({
'stars': stars,
'only-ratings': showOnlyRatings
})
});
}
}
// hooks
jQuery('#ti-filter-star').on('change', applyFilter);
jQuery('#ti-filter-only-ratings').on('change', function(event) {
event.preventDefault();
applyFilter();
return false;
});
// init
if (reviewsElement.length) {
applyFilter(true);
}
// background post save - style and set change
jQuery('#ti-widget-selects select, #ti-widget-options input[type=checkbox]:not(.no-form-update)').on('change', function() {
let form = jQuery(this).closest('form');
let data = form.serializeArray();
// include unchecked checkboxes
form.find('input[type=checkbox]:not(.no-form-update)').each(function() {
let checkbox = jQuery(this);
if (!checkbox.prop('checked') && checkbox.attr('name')) {
data.push({
name: checkbox.attr('name'),
value: 0
});
}
});
// show loading
jQuery('#ti-loading').addClass('ti-active');
jQuery('li.ti-preview-box').addClass('disabled');
jQuery.ajax({
url: form.attr('action'),
type: 'post',
dataType: 'application/json',
data: data
}).always(() => location.reload(true));
return false;
});
// layout select filter
jQuery('input[name=layout-select]').on('change', function(event) {
event.preventDefault();
let ids = (jQuery('input[name=layout-select]:checked').data('ids') + "").split(',');
console.log('filter', ids);
if (ids.length === 0 || ids[0] === "") {
jQuery('.ti-preview-boxes-container').find('.ti-full-width, .ti-half-width').fadeIn();
}
else {
jQuery('.ti-preview-boxes-container').find('.ti-full-width, .ti-half-width').hide();
ids.forEach(id => jQuery('.ti-preview-boxes-container').find('.ti-preview-boxes[data-layout-id="'+ id + '"]').parent().fadeIn());
}
return false;
});
/*************************************************************************/
/* MODAL */
jQuery(document).on('click', '.btn-modal-close', function(event) {
event.preventDefault();
jQuery(this).closest('.ti-modal').fadeOut();
});
jQuery(document).on('click', '.ti-modal', function(event) {
if (event.target.nodeName !== 'A') {
event.preventDefault();
if (!jQuery(event.target).closest('.ti-modal-dialog').length) {
jQuery(this).fadeOut();
}
}
});
/*************************************************************************/
/* NOTICE HIDE */
jQuery(document).on('click', '.ti-notice.is-dismissible .notice-dismiss', function() {
let button = jQuery(this);
let container = button.closest('.ti-notice');
container.fadeOut(200);
if (button.data('command') && !button.data('ajax-run')) {
button.data('ajax-run', 1); // prevent multiple triggers
jQuery.post('', { command: button.data('command') });
}
});
jQuery('.ti-checkbox input[type=checkbox][onchange]').on('change', function() {
jQuery('#ti-loading').addClass('ti-active');
});
/*************************************************************************/
/* DROPDOWN */
// change dropdown arrow positions
let fixDropdownArrows = function() {
jQuery('.ti-button-dropdown-arrow').each(function() {
let arrow = jQuery(this);
let button = arrow.closest('td').find(arrow.data('button'));
// add prev buttons' width
let left = 0;
button.prevAll('.ti-btn').each(function() {
left += jQuery(this).outerWidth(true);
});
// center the arrow
left += button.outerWidth() / 2;
arrow.css('left', left + 'px');
});
};
fixDropdownArrows();
/*************************************************************************/
/* AI REPLY */
let generateAiReply = function(text, callback) {
let tiWindow = window.open('', 'trustindex-generate-ai-reply', 'width=500,height=500,menubar=0' + popupCenter(500, 500));
let form = document.createElement('form');
let input = document.createElement('input');
// create form to pass POST data
form.target = 'trustindex-generate-ai-reply';
form.method = 'POST';
form.action = 'https://admin.trustindex.io/integration/generateAiReply';
form.style.display = 'none';
// data will be in a hidden input
input.type = 'hidden';
input.name = 'json';
input.value = JSON.stringify({ text: text, language: jQuery('#ti-widget-language').val() });
form.appendChild(input);
// add form to body
document.body.appendChild(form);
if (tiWindow) {
form.submit();
}
// remove added form
form.remove();
// popup close interval
let timer = setInterval(function() {
if (tiWindow.closed) {
callback(false);
clearInterval(timer);
}
}, 1000);
// wait for response from Trustindex
jQuery(window).one('message', function(event) {
// event comes from the correct window
if (tiWindow == event.originalEvent.source) {
clearInterval(timer);
callback(event.originalEvent.data.reply);
tiWindow.close();
}
});
};
let postReply = function(data, reconnect, callback) {
let tiWindow = window.open('', 'trustindex-post-reply', 'width=600,height=600,menubar=0' + popupCenter(600, 600));
let form = document.createElement('form');
let input = document.createElement('input');
// create form to pass POST data
form.target = 'trustindex-post-reply';
form.method = 'POST';
form.action = 'https://admin.trustindex.io/integration/postReply?type=google';
form.style.display = 'none';
if (reconnect) {
form.action += '&reconnect=1';
}
// data will be in a hidden input (JSON)
input.type = 'hidden';
input.name = 'json';
input.value = JSON.stringify(data);
form.appendChild(input);
// add form to body
document.body.appendChild(form);
if (tiWindow) {
form.submit();
}
// remove added form
form.remove();
// popup close interval
let timer = setInterval(function() {
if (tiWindow.closed) {
callback(undefined);
clearInterval(timer);
}
}, 1000);
// wait for response from Trustindex
jQuery(window).one('message', function(event) {
// event comes from the correct window
if (tiWindow == event.originalEvent.source) {
clearInterval(timer);
callback(!!event.originalEvent.data.success);
tiWindow.close();
}
});
};
// show reply section
// - generate reply with AI if not edit
jQuery(document).on('click', '.btn-show-ai-reply', function(event) {
event.preventDefault();
let btn = jQuery(this);
let td = btn.closest('td');
btn.addClass('ti-btn-loading').blur();
let replyBox = td.find('.ti-reply-box');
replyBox.find('.btn-post-reply').attr('data-reconnect', 0);
replyBox.find('.ti-alert').addClass('ti-d-none');
// generate reply with AI if not edit
if (replyBox.attr('data-state') === 'reply' || replyBox.attr('data-state') === 'copy-reply') {
let data = JSON.parse(replyBox.next().html());
generateAiReply(data.review.text, function(reply) {
btn.removeClass('ti-btn-loading');
// popup closed
if (reply === false) {
return;
}
btn.addClass('ti-btn-default-disabled');
replyBox.addClass('ti-active');
td.find('.ti-highlight-box').removeClass('ti-active');
td.find('.btn-show-highlight').removeClass('ti-btn-default-disabled');
let textarea = replyBox.find('.state-'+ replyBox.attr('data-state') +' textarea');
textarea.val(reply).focus().expand();
if (!data.review.text.trim()) {
replyBox.find('.ti-alert.ti-alert-empty-review').removeClass('d-none');
}
// save in DB
jQuery.ajax({
method: 'POST',
url: window.location.href,
data: { 'save-reply-generated': 1 }
});
});
}
else {
btn.removeClass('ti-btn-loading').addClass('ti-btn-default-disabled');
replyBox.addClass('ti-active');
td.find('.ti-highlight-box').removeClass('ti-active');
td.find('.btn-show-highlight').removeClass('ti-btn-default-disabled');
}
});
// hide reply section
jQuery(document).on('click', '.btn-hide-ai-reply', function(event) {
event.preventDefault();
let btn = jQuery(this);
btn.blur();
let replyBox = btn.closest('td').find('.ti-reply-box');
replyBox.attr('data-state', replyBox.attr('data-original-state'));
if (replyBox.attr('data-state') !== 'replied') {
replyBox.removeClass('ti-active');
}
btn.closest('td').find('.btn-show-ai-reply').removeClass('ti-btn-default-disabled');
});
// show edit reply section
jQuery(document).on('click', '.btn-show-edit-reply', function(event) {
event.preventDefault();
let btn = jQuery(this);
let replyBox = btn.closest('td').find('.ti-reply-box');
replyBox.attr('data-state', 'edit-reply');
replyBox.find('.state-edit-reply textarea').focus().expand();
});
// hide edit reply section
jQuery(document).on('click', '.btn-hide-edit-reply', function(event) {
event.preventDefault();
let btn = jQuery(this);
let replyBox = btn.closest('td').find('.ti-reply-box');
replyBox.find('.ti-alert').addClass('ti-d-none');
replyBox.attr('data-state', 'replied');
});
// post reply
jQuery(document).on('click', '.btn-post-reply', function(event) {
event.preventDefault();
let btn = jQuery(this);
let replyBox = btn.closest('td').find('.ti-reply-box');
let data = JSON.parse(replyBox.next().html());
let textarea = btn.closest('.ti-reply-box-state').find('textarea');
let reply = textarea.val().trim();
textarea.removeClass('is-invalid');
if (reply === "") {
return textarea.addClass('is-invalid');
}
btn.addClass('ti-btn-loading').blur();
data.reply = reply;
postReply(data, btn.attr('data-reconnect') == 1, function(isSuccess) {
btn.removeClass('ti-btn-loading');
// popup closed
if (isSuccess === undefined) {
return;
}
if (isSuccess) {
// save in DB
jQuery.ajax({
method: 'POST',
url: window.location.href,
data: {
id: btn.attr('href'),
_wpnonce: btn.data('nonce'),
'save-reply': reply
}
});
// show replied section
replyBox.attr('data-state', 'replied').attr('data-original-state', 'replied');
replyBox.find('.state-replied p').html(reply);
replyBox.find('.state-edit-reply textarea').val(reply);
replyBox.find('.state-replied .ti-alert').removeClass('ti-d-none');
// change Reply with AI button text
let replyButton = replyBox.closest('td').find('.btn-show-ai-reply:not(.btn-default)');
if (replyButton.length) {
replyButton.html(replyButton.data('edit-reply-text')).addClass('btn-default');
setTimeout(fixDropdownArrows, 100);
}
}
else {
// set try again button state
replyBox.find('.state-copy-reply .btn-try-reply-again').data('state', replyBox.attr('data-state'));
// show copy section
replyBox.attr('data-state', 'copy-reply');
replyBox.find('.state-copy-reply textarea').val(reply).focus().expand();
replyBox.find('.state-copy-reply .ti-alert').removeClass('ti-d-none');
}
});
});
/*************************************************************************/
/* HIGHLIGHT */
// show highlight section
jQuery(document).on('click', '.btn-show-highlight', function(event) {
event.preventDefault();
let btn = jQuery(this);
let td = btn.closest('td');
let replyBox = td.find('.ti-reply-box');
btn.addClass('ti-btn-default-disabled').blur();
td.find('.ti-highlight-box').addClass('ti-active');
replyBox.attr('data-state', replyBox.attr('data-original-state'));
replyBox.removeClass('ti-active');
td.find('.btn-show-ai-reply').removeClass('ti-btn-default-disabled');
});
// hide highlight section
jQuery(document).on('click', '.btn-hide-highlight', function(event) {
event.preventDefault();
let btn = jQuery(this);
let td = btn.closest('td');
btn.blur();
td.find('.ti-highlight-box').removeClass('ti-active');
td.find('.btn-show-highlight').removeClass('ti-btn-default-disabled');
td.find('.ti-reply-box[data-state="replied"]').addClass('ti-active');
if (td.find('.ti-reply-box').attr('data-state') === 'replied') {
td.find('.btn-show-ai-reply').addClass('ti-btn-default-disabled');
}
});
// highlight save
jQuery(document).on('click', '.btn-save-highlight', function(event) {
event.preventDefault();
let btn = jQuery(this);
let highlightContent = btn.closest('td').find('.ti-highlight-content .ti-selection-content');
let data = TI_highlight_getSelection(highlightContent.get(0));
if (data.start !== null) {
data.id = btn.attr('href');
data._wpnonce = btn.data('nonce');
data['save-highlight'] = 1;
btn.addClass('ti-btn-loading').blur();
btn.closest('td').find('.ti-btn').css('pointer-events', 'none');
jQuery.ajax({
method: 'POST',
url: window.location.href,
data: data
}).always(() => location.reload(true));
}
});
// highlight remove
jQuery(document).on('click', '.btn-remove-highlight', function(event) {
event.preventDefault();
let btn = jQuery(this);
btn.addClass('ti-btn-loading').blur();
btn.closest('td').find('.ti-btn').css('pointer-events', 'none');
jQuery.ajax({
method: 'POST',
url: window.location.href,
data: {
id: btn.attr('href'),
_wpnonce: btn.data('nonce'),
'save-highlight': 1
}
}).always(() => location.reload(true));
});
// review download notification email
jQuery(document).on('click', '.btn-notification-email-save', function(event) {
event.preventDefault();
let container = jQuery(this).closest('.ti-notification-email');
let input = container.find('input[type="text"]');
let type = input.data('type');
let nonce = input.data('nonce');
let email = input.val().trim().toLowerCase();
// hide alerts
container.find('.ti-notice').hide();
// check email
if (email !== "" && !/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email)) {
return container.find('.ti-notice').fadeIn();
}
// show loading
jQuery('#ti-loading').addClass('ti-active');
// save email
jQuery.post("", {
'save-notification-email': email,
'type': type,
'_wpnonce': nonce
}, () => location.reload(true));
});
});
// - import/btn-loading.js
// loading on click
jQuery(document).on('click', '.ti-btn-loading-on-click', function() {
let btn = jQuery(this);
btn.addClass('ti-btn-loading').blur();
});
// - import/copy-to-clipboard.js
jQuery(document).on('click', '.btn-copy2clipboard', function(event) {
event.preventDefault();
let btn = jQuery(this);
btn.blur();
let obj = jQuery(btn.attr('href'));
let text = obj.html() ? obj.html() : obj.val();
// parse html
let textArea = document.createElement('textarea');
textArea.innerHTML = text;
text = textArea.value;
let feedback = () => {
btn.removeClass('ti-toggle-tooltip').addClass('ti-show-tooltip');
if (typeof this.timeout !== 'undefined') {
clearTimeout(this.timeout);
}
this.timeout = setTimeout(() => btn.removeClass('ti-show-tooltip').addClass('ti-toggle-tooltip'), 3000);
};
if (!navigator.clipboard) {
// fallback
textArea = document.createElement('textarea');
textArea.value = text;
textArea.style.position = 'fixed'; // avoid scrolling to bottom
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
var successful = document.execCommand('copy');
feedback();
}
catch (err) { }
document.body.removeChild(textArea);
return;
}
navigator.clipboard.writeText(text).then(feedback);
});
// - import/feature-request.js
jQuery(document).on('click', '.btn-send-feature-request', function(event) {
event.preventDefault();
let btn = jQuery(this);
btn.blur();
let container = jQuery('.ti-feature-request');
let email = container.find('input[name="email"]').val().trim();
let text = container.find('textarea[name="description"]').val().trim();
// hide errors
container.find('.is-invalid').removeClass('is-invalid');
// check email
if (email === "" || !/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email)) {
container.find('input[name="email"]').addClass('is-invalid');
}
// check text
if (text === "") {
container.find('textarea[name="description"]').addClass('is-invalid');
}
// there is error
if (container.find('.is-invalid').length) {
return false;
}
// show loading animation
btn.addClass('ti-btn-loading');
let data = new FormData(jQuery('.ti-feature-request form').get(0));
// ajax request
jQuery.ajax({
type: 'POST',
data: data,
cache: false,
contentType: false,
processData: false
}).always(function() {
btn.removeClass('ti-btn-loading');
btn.addClass('ti-show-tooltip').removeClass('ti-toggle-tooltip');
setTimeout(() => btn.removeClass('ti-show-tooltip').addClass('ti-toggle-tooltip'), 3000);
});
});
// - import/rate-us.js
// remember on hover
jQuery(document).on('mouseenter', '.ti-quick-rating', function(event) {
let container = jQuery(this);
let selected = container.find('.ti-star-check.ti-active, .star-check.active');
if (selected.length) {
// add index to data & remove all active stars
container.data('selected', selected.index()).find('.ti-star-check, .star-check').removeClass('ti-active active');
// give back active star on mouse enter
container.one('mouseleave', () => container.find('.ti-star-check, .star-check').eq(container.data('selected')).addClass('ti-active active'));
}
});
// star click
jQuery(document).on('click', '.ti-rate-us-box .ti-quick-rating .ti-star-check', function(event) {
event.preventDefault();
let star = jQuery(this);
let container = star.parent();
// add index to data & remove all active stars
container.data('selected', star.index()).find('.ti-star-check').removeClass('ti-active');
// select current star
star.addClass('ti-active');
// show modals
if (parseInt(star.data('value')) >= 4) {
// open new window
window.open(location.href + '&command=rate-us-feedback&_wpnonce='+ container.data('nonce') +'&star=' + star.data('value'), '_blank');
jQuery('.ti-rate-us-box').fadeOut();
}
else {
let feedbackModal = jQuery('#ti-rateus-modal-feedback');
if (feedbackModal.data('bs') == '5') {
feedbackModal.modal('show');
setTimeout(() => feedbackModal.find('textarea').focus(), 500);
}
else {
feedbackModal.fadeIn();
feedbackModal.find('textarea').focus();
}
feedbackModal.find('.ti-quick-rating .ti-star-check').removeClass('ti-active').eq(star.index()).addClass('ti-active');
}
});
// write to support
jQuery(document).on('click', '.btn-rateus-support', function(event) {
event.preventDefault();
let btn = jQuery(this);
btn.blur();
let container = jQuery('#ti-rateus-modal-feedback');
let email = container.find('input[type=text]').val().trim();
let text = container.find('textarea').val().trim();
// hide errors
container.find('input[type=text], textarea').removeClass('is-invalid');
// check email
if (email === "" || !/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email)) {
container.find('input[type=text]').addClass('is-invalid').focus();
}
// check text
if (text === "") {
container.find('textarea').addClass('is-invalid').focus();
}
// there is error
if (container.find('.is-invalid').length) {
return false;
}
// show loading animation
btn.addClass('ti-btn-loading');
container.find('a, button').css('pointer-events', 'none');
// ajax request
jQuery.ajax({
type: 'post',
dataType: 'application/json',
data: {
command: 'rate-us-feedback',
_wpnonce: btn.data('nonce'),
email: email,
text: text,
star: container.find('.ti-quick-rating .ti-star-check.ti-active').data('value')
}
}).always(() => location.reload(true));
});