You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
1.9 KiB
JavaScript

// External Dependencies
import React from 'react';
import { render, unmountComponentAtNode } from 'react-dom';
import $ from 'jquery';
import App from 'cerebral';
import Devtools from 'cerebral/devtools';
import { Container } from '@cerebral/react';
// Internal Dependencies
import store from './store/index';
import ThemeOptionsApp from './components/App';
const initialState = {
content: '',
context: 'theme-options',
items: [],
showLibrary: false,
showPortability: false,
showSave: false,
};
const unMountCommonLibraryApp = () => {
const container = document.getElementById('et-theme-options-container');
if (container) {
unmountComponentAtNode(container);
container.remove();
}
}
// Note: Hyphen is used to stay consistent w/ the Cloud context.
$(window).on(`et_theme-options_container_ready`, (event, preferences) => {
let devtools = null;
if (process.env.NODE_ENV === 'development') {
devtools = Devtools({
host: '127.0.0.1:22722',
reconnect: false,
bigComponentsWarning: 15,
});
}
const modalType = preferences?.modalType || '';
const state = {
...initialState,
modalType
};
state.sidebarLabel = preferences?.sidebarLabel || '';
state.builtFor = preferences?.builtFor ?? 'Divi';
const app = App(store(state), {
devtools,
returnSequencePromise: true,
});
const {
containerId = 'et-theme-options-container',
containerClass = 'et-theme-options-container'
} = preferences;
$(document.body).first().append(`<div id=${containerId} class=${containerClass}></div>`);
render(
<Container app={app}>
<ThemeOptionsApp />
</Container>,
document.getElementById(containerId)
);
});
$(window).on('et_theme-options_container_close', () => {
unMountCommonLibraryApp();
});