( function () {
'use strict';
Vue.component( 'plugin-item-registered', {
template: '#jet-dashboard-plugin-item-registered',
props: {
pluginData: Object,
},
data: function() {
return {
usefulLinksToggle: false
}
},
computed: {
itemClass: function() {
return [
'plugin-item',
'plugin-item--registered',
this.dropdownVisible ? 'dropdown-visible' : ''
];
},
usefulLinksEmpty: function() {
return 0 === this.pluginData.usefulLinks.length;
},
mainLinkItem: function() {
if ( ! this.usefulLinksEmpty ) {
let firstItem = this.pluginData.usefulLinks[0];
return {
'url': firstItem.url,
'label': firstItem.label,
'target': firstItem.target,
};
}
return {
'url': this.pluginData.docs,
'label': __( 'Go to docs', 'jet-dashboard' ),
'target': '_blank'
};
},
dropdownLinkItems: function() {
let usefulLinks = this.pluginData.usefulLinks;
return usefulLinks;
},
dropdownAvaliable: function() {
return 1 < this.dropdownLinkItems.length;
},
dropdownVisible: function() {
return this.usefulLinksToggle && 1 < this.dropdownLinkItems.length;
},
},
methods: {
mouseoverHandle: function() {
this.usefulLinksToggle = true;
},
mouseleaveHandle: function() {
this.usefulLinksToggle = false;
},
}
} );
Vue.component( 'offers-item', {
template: '#jet-dashboard-offers-item',
props: {
config: Object,
},
data: function() {
return {}
},
computed: {
itemClass: function() {
return [
'offers-item',
];
},
configDefined: function() {
return this.config;
},
logo: function() {
return this.configDefined && this.config['logo'] ? this.config['logo'] : false;
},
name: function() {
return this.configDefined && this.config['name'] ? this.config['name'] : false;
},
desc: function() {
return this.configDefined && this.config['desc'] ? this.config['desc'] : false;
},
actionConfig: function() {
return this.configDefined && this.config['actionUrl'] && this.config['actionLabel'] ? {
url: this.config['actionUrl'],
label: this.config['actionLabel']
} : false;
},
},
} );
Vue.component( 'extras-item', {
template: '#jet-dashboard-extras-item',
props: {
config: Object,
},
data: function() {
return {
adminUrl: window.JetDashboardConfig.adminUrl || '#',
userPlugins: window.JetDashboardConfig.userPlugins || {},
}
},
computed: {
itemClass: function() {
return [
'extras-item',
];
},
configDefined: function() {
return this.config || false;
},
logo: function() {
return this.configDefined && this.config['logo'] ? this.config['logo'] : false;
},
name: function() {
return this.configDefined && this.config['name'] ? this.config['name'] : false;
},
desc: function() {
return this.configDefined && this.config['desc'] ? this.config['desc'] : false;
},
actionType: function() {
return this.configDefined && this.config['actionType'] ? this.config['actionType'] : 'external';
},
requirementPlugin: function() {
return this.configDefined && this.config['requirementPlugin'] ? this.config['requirementPlugin'] : false;
},
actionConfig: function() {
let actionConfig = false;
switch( this.actionType ) {
case 'external':
actionConfig = this.configDefined && this.config['externalUrl'] && this.config['externalLabel'] ? {
url: this.config['externalUrl'],
label: this.config['externalLabel'],
target: '_blank'
} : false;
break;
case 'dashboard':
if ( this.requirementPlugin && this.userPlugins.hasOwnProperty( this.requirementPlugin ) && this.userPlugins[ this.requirementPlugin ].isActivated ) {
actionConfig = this.configDefined && this.config['dashboardUrl'] && this.config['dashboardLabel'] ? {
url: this.adminUrl + this.config['dashboardUrl'],
label: this.config['dashboardLabel'],
target: '_self'
} : false;
} else {
actionConfig = this.configDefined && this.config['externalUrl'] && this.config['externalLabel'] ? {
url: this.config['externalUrl'],
label: this.config['externalLabel'],
target: '_blank'
} : false;
}
break;
}
return actionConfig;
},
},
} );
Vue.component( 'welcome-page', {
template: '#jet-dashboard-welcome-page',
props: {
subpage: [ String, Boolean ]
},
data: function() {
return {
proccesingState: false,
allJetPlugins: window.JetDashboardConfig.allJetPlugins || {},
licenseList: window.JetDashboardConfig.licenseList || [],
avaliableBanners: window.JetDashboardConfig.avaliableBanners || [],
offersConfig: window.JetDashboardConfig.offersConfig || [],
extrasConfig: window.JetDashboardConfig.extrasConfig || [],
generalConfig: window.JetDashboardConfig.generalConfig || [],
crocoWizardData: window.JetDashboardConfig.crocoWizardData || false,
themeInfo: window.JetDashboardConfig.themeInfo || false,
actionPlugin: false,
actionPluginRequest: null,
actionPluginProcessed: false,
};
},
computed: {
innerComponentConfig: function() {
let innerComponentConfig = this.$root.pageConfig['inner-component'] || false,
bannersData = this.$root.getBannerListForArea( innerComponentConfig );
innerComponentConfig = Object.assign( innerComponentConfig, {
bannersData: bannersData
} );
return innerComponentConfig;
},
isLicenseActivated: function() {
return 0 !== this.licenseList.length;
},
licencePluginList: function() {
let licencePluginList = {};
for ( let licence of this.licenseList ) {
let plugins = licence['licenseDetails']['plugins'];
for ( let plugin in plugins ) {
let pluginData = plugins[ plugin ];
let pluginSlug = pluginData.slug;
if ( ! licencePluginList.hasOwnProperty( plugin ) ) {
licencePluginList[ plugin ] = pluginData;
}
}
}
return licencePluginList;
},
registeredPluginList: function() {
let registeredPluginList = {};
for ( let pluginSlug in this.allJetPlugins ) {
if ( this.allJetPlugins[ pluginSlug ][ 'isInstalled' ]
&& this.allJetPlugins[ pluginSlug ][ 'isActivated' ]
) {
registeredPluginList[ pluginSlug ] = this.allJetPlugins[ pluginSlug ];
}
}
return registeredPluginList;
},
avaliablePluginList: function() {
let avaliablePluginList = {};
for ( let pluginSlug in this.allJetPlugins ) {
if ( ( ! this.allJetPlugins[ pluginSlug ]['isInstalled'] )
&& this.licencePluginList.hasOwnProperty( pluginSlug )
) {
let pluginData = this.allJetPlugins[ pluginSlug ];
avaliablePluginList[ pluginSlug ] = pluginData;
}
}
return avaliablePluginList;
},
avaliablePluginCount: function() {
return Object.keys( this.avaliablePluginList ).length;
},
morePluginList: function() {
let morePluginList = {};
for ( let pluginSlug in this.allJetPlugins ) {
if ( ( ! this.allJetPlugins[ pluginSlug ]['isInstalled'] ) &&
( ! this.licencePluginList.hasOwnProperty( pluginSlug ) ) ) {
let pluginData = this.allJetPlugins[ pluginSlug ];
morePluginList[ pluginSlug ] = pluginData;
}
}
return morePluginList;
},
morePluginsVisible: function() {
return 0 !== Object.keys( this.morePluginList ).length;
},
updatePluginList: function() {
let updatePluginList = {};
for ( let pluginSlug in this.registeredPluginList ) {
if ( this.registeredPluginList[ pluginSlug ][ 'updateAvaliable' ] ) {
updatePluginList[ pluginSlug ] = this.registeredPluginList[ pluginSlug ];
}
}
return updatePluginList;
},
updatePluginCount: function() {
return Object.keys( this.updatePluginList ).length;
},
updatesMessage: function() {
let updateMessage = sprintf( _n( 'You can update %s plugin ', 'You can update %s plugins ', this.updatePluginCount, 'jet-dashboard' ), this.updatePluginCount ),
noUpdatesMessage = __( 'All plugins updated', 'jet-dashboard' ),
message = ( 0 === this.updatePluginCount ) ? noUpdatesMessage : updateMessage;
if ( ! this.isLicenseActivated ) {
message = __( 'Activate license to update your JetPlugins', 'jet-dashboard' );
}
return message;
},
avaliableToInstallMessage: function() {
let avaliableMessage = sprintf( _n( 'You can install %s more Plugin with your licence', 'You can install %s more Plugins with your licence', this.avaliablePluginCount, 'jet-dashboard' ), this.avaliablePluginCount ),
noAvaliableMessage = __( 'All available plugins are already installed', 'jet-dashboard' );
return 0 === this.avaliablePluginCount ? noAvaliableMessage : avaliableMessage;
},
avaliableOffers: function() {
return this.offersConfig.offerList || [];
},
isWizardInstalled: function() {
return this.crocoWizardData.isInstalled || false;
},
isWizardActivated: function() {
return this.crocoWizardData.isActivated || false;
},
wizardSectionsVisible: function() {
let productType = this.$root.productType,
visibleMap = [
'plugin-set',
'all-inclusive',
'lifetime',
];
return ( !this.isWizardInstalled || !this.isWizardActivated ) && visibleMap.includes( productType );
},
wizardSectionsTitle: function() {
let productType = this.$root.productType,
title = __( 'Try quickstart installation', 'jet-dashboard' );
switch( productType ) {
case 'lifetime':
case 'all-inclusive':
title = __( 'Unpack Free All-inclusive items', 'jet-dashboard' );
break;
case 'default':
title = __( 'Try quickstart installation', 'jet-dashboard' );
break;
}
return title;
},
offersVisible: function() {
return 0 !== this.avaliableOffers.length;
},
avaliableExtras: function() {
return this.extrasConfig.extraList || [];
},
extrasVisible: function() {
let productType = this.$root.productType,
visibleMap = [
'all-inclusive',
'lifetime',
];
return 0 !== this.avaliableExtras.length && visibleMap.includes( productType ) && ! this.wizardSectionsVisible;
},
getMoreBannerVisible: function() {
let productType = this.$root.productType,
visibleMap = [
'not-activated',
'theme-plugin-bundle',
'single-plugin',
];
return visibleMap.includes( productType );
},
getMoreBannerLink: function() {
let baseUrl = this.generalConfig.pricingPageUrl || 'https://crocoblock.com/pricing/',
licenseType = `${ this.$root.licenseType }-license` || 'not-activated-license',
themeAuthor = this.$root.themeInfo.authorSlug || 'unknow-author',
utmString = window.JetDasboard.getUtmParamsString( {
utm_source: `dashboard/${ this.$root.pageModule }`,
utm_medium: `${ licenseType }/${ themeAuthor }`,
utm_campaign: 'upsale-crocoblock',
utm_content: 'banner-60-percent'
} );
if ( utmString ) {
return `${ baseUrl }?${ utmString }`;
}
return baseUrl;
},
isLifetime: function() {
let productType = this.$root.productType;
return 'lifetime' === productType ? true : false;
}
},
methods: {
getLicenseExpireMessage: function( rawDate = '' ) {
let convertedDate = this.convertDateFormat( rawDate ),
expireCases = [
'0000-00-00 00:00:00',
'1000-01-01 00:00:00',
'lifetime'
];
if ( expireCases.includes( rawDate ) ) {
return __( 'Lifetime ', 'jet-dashboard' );
}
return sprintf( __( 'Licence expires %s ', 'jet-dashboard' ), convertedDate );
},
convertDateFormat: function( _date = '' ) {
let lifetimeCases = [
'0000-00-00 00:00:00',
'1000-01-01 00:00:00',
'lifetime'
],
rawDate = lifetimeCases.includes( _date ) ? '1000-01-01 00:00:00' : _date,
timeStamp = Date.parse( rawDate ),
dateTimeFormat = new Intl.DateTimeFormat( 'en', { year: 'numeric', month: 'short', day: '2-digit' } ),
[ { value: month },,{ value: day },,{ value: year } ] = dateTimeFormat.formatToParts( timeStamp ),
convertedDate = `${ month }. ${ day }, ${ year }`;
return convertedDate;
},
wizardActionHandle: function() {
let self = this,
action = false;
if ( ! this.isWizardInstalled ) {
action = 'install';
}
if ( this.isWizardInstalled && ! this.isWizardActivated ) {
action = 'activate';
}
self.actionPluginRequest = jQuery.ajax( {
type: 'POST',
url: window.JetDashboardConfig.ajaxUrl,
dataType: 'json',
data: {
action: 'jet_dashboard_wizard_plugin_action',
data: {
plugin: 'crocoblock-wizard/crocoblock-wizard.php',
action: action,
}
},
beforeSend: function( jqXHR, ajaxSettings ) {
if ( null !== self.actionPluginRequest ) {
self.actionPluginRequest.abort();
}
self.actionPluginProcessed = true;
},
success: function( responce, textStatus, jqXHR ) {
self.actionPluginProcessed = false;
self.$CXNotice.add( {
message: responce.message,
type: responce.status,
duration: 3000,
} );
if ( 'success' === responce.status ) {
self.proccesingState = true;
setTimeout( function() {
window.location.reload();
}, 1000 );
//self.crocoWizardData = responce.data;
}
}
} );
},
pluginAction: function( plugin_file, action ) {
},
navigateToLicensePage: function() {
window.location.href = window.JetDashboardConfig.licensePageUrl;
},
navigateToLicenseManager: function() {
window.location.href = window.JetDashboardConfig.licenseManagerUrl;
}
}
} );
} )();
Masuyo – Digital Marketing
Skip to content
WELCOME TO MASUYO
digital design and marketing
Use the power of creativity and unlock new opportunities for growth and innovation.
Explore More
Who We Are
Combining Creativity and Strategy
At Masuyo, we integrate seamlessly into your company, operating as an extension of your core team. Our mission is to empower businesses with innovative marketing solutions. Through strategic creativity, we cultivate connections and deliver measurable results in close collaboration with our clients.
Marketing Services That We Offer You
STRATEGIC MARKETING
Custom marketing strategies. We’ll navigate every step for your success.
Creative Campaigns
Revitalize brand vision with compelling ad copy and striking visuals.
Social Media
Maximize your social media impact with custom strategies and specific content.
Website Design
Convert visitors with user-friendly, branded websites designed professionally.
Graphic Design
Elevate brand visuals with our creative graphic design services.
VIEW SERVICES
TESTIMONIALS
CUSTOMER FEEDBACK
Rick Snyder
☆
☆
☆
☆
☆
The Masuyo team have been great to work with. High quality work, easy communication, and they care about the final product. I highly recommend this digital and design company.
Emma Anand
☆
☆
☆
☆
☆
Masuyo did our wedding invitations and save the dates and they came out amazing! Very high quality and attention to detail, we did various drafts until we were 100% happy with them. Masuyo are very professional and communication was great the whole way through thank you!
Rahul Patel
☆
☆
☆
☆
☆
Cam and his team at Masuyo is measured and on point. From the creative element through to execution they have been completely professional and reliable. Not only do they deliver the work on time and to a high level of quality, but their attitude is one of being open to suggestions and ideas.
Ashlyn Sehgal
☆
☆
☆
☆
☆
Amazing attention to detail and aesthetically curated designs. I am impressed with the organization, collaboration and delivery excellence. Thank you for all the great work you do!
We Can Talk Today!
Get in contact to start your journey with Masuyo.
CONTACT US