( 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

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