import $ from 'jquery';
const URL = {
react: 'https://unpkg.com/react@15/dist/react.min.js',
reactDom: 'https://unpkg.com/react-dom@15/dist/react-dom.min.js',
vue: 'https://viserjs.github.io/lib/vue.min.js',
browser: 'https://cdn.bootcss.com/babel-core/5.8.38/browser.min.js',
viser: 'https://unpkg.com/viser@1.0.5/umd/viser.min.js',
viserReact: 'https://unpkg.com/viser-react@1.0.4/umd/viser-react.min.js',
rechartVue: 'https://unpkg.com/viser-vue@1.0.4/umd/viser-vue.min.js',
rechartNg: 'https://unpkg.com/viser-ng@1.0.2/umd/viser-ng.min.js',
};
const getJsfiddleJsonData = (code) => {
code.config.chart.container = 'example';
const config = JSON.stringify(code.config, null, 2);
const data = {
js: `var config = ${config};
Viser.default(config);
`,
html: `
`,
panel_css: 1,
panel_js: 3
};
return data;
}
const getJsfiddleVueData = (code) => {
const { vueCode, jsonCode } = this.attrs.codes;
const config = JSON.stringify(jsonCode.config, null, 2);
const data = {
js: `var config = ${config};
new Vue({
el: '#example',
data: {
config,
},
});
`,
html: `
${vueCode.template}
`,
panel_css: 1,
panel_js: 3
};
return data;
}
const getJsfiddleReactData = (code) => {
const { reactCode, jsonCode } = this.attrs.codes;
const config = JSON.stringify(jsonCode.config, null, 2);
const data = {
js: `
var config = ${config};
${reactCode.script || ''}
ReactDOM.render(${reactCode.template},document.getElementById('example'));`,
html: `
`,
panel_css: 1,
panel_js: 3
};
return data;
}
const getJsfiddleData = (framework, code) => {
switch (framework) {
case 'json':
return this.getJsfiddleJsonData(code);
case 'react':
return this.getJsfiddleReactData(code);
case 'vue':
return this.getJsfiddleVueData(code);
case 'angular':
return;
default:
return;
}
}
export const jumpToJsfiddle = (framework, code) => {
const data = getJsfiddleData(framework, code);
const formAttributes = {
method: 'post',
action: 'https://jsfiddle.net/api/post/library/pure/',
target: '_blank',
id: 'fiddle-form',
style: 'display: none;'
}
const node = document.createElement('textarea');
const form = document.createElement('form');
for (const attr in formAttributes) {
form.setAttribute(attr, formAttributes[attr]);
}
for (let name in data) {
node.name = name;
node.value = data[name].toString();
form.appendChild(node.cloneNode());
}
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}