diff --git a/webmaker/src/codeModes.js b/webmaker/src/codeModes.js index 08cfba1..5783861 100644 --- a/webmaker/src/codeModes.js +++ b/webmaker/src/codeModes.js @@ -17,3 +17,76 @@ export const JsModes = { COFFEESCRIPT: 'coffee', TS: 'typescript' }; +export const modes = {}; +modes[HtmlModes.HTML] = { + label: 'HTML', + cmMode: 'htmlmixed', + codepenVal: 'none' +}; +modes[HtmlModes.MARKDOWN] = { + label: 'Markdown', + cmMode: 'markdown', + codepenVal: 'markdown' +}; +modes[HtmlModes.JADE] = { + label: 'Pug', + cmMode: 'pug', + codepenVal: 'pug' +}; +modes[JsModes.JS] = { + label: 'JS', + cmMode: 'javascript', + codepenVal: 'none' +}; +modes[JsModes.COFFEESCRIPT] = { + label: 'CoffeeScript', + cmMode: 'coffeescript', + codepenVal: 'coffeescript' +}; +modes[JsModes.ES6] = { + label: 'ES6 (Babel)', + cmMode: 'jsx', + codepenVal: 'babel' +}; +modes[JsModes.TS] = { + label: 'TypeScript', + cmPath: 'jsx', + cmMode: 'text/typescript-jsx', + codepenVal: 'typescript' +}; +modes[CssModes.CSS] = { + label: 'CSS', + cmPath: 'css', + cmMode: 'css', + codepenVal: 'none' +}; +modes[CssModes.SCSS] = { + label: 'SCSS', + cmPath: 'css', + cmMode: 'text/x-scss', + codepenVal: 'scss' +}; +modes[CssModes.SASS] = { + label: 'SASS', + cmMode: 'sass', + codepenVal: 'sass' +}; +modes[CssModes.LESS] = { + label: 'LESS', + cmPath: 'css', + cmMode: 'text/x-less', + codepenVal: 'less' +}; +modes[CssModes.STYLUS] = { + label: 'Stylus', + cmMode: 'stylus', + codepenVal: 'stylus' +}; +modes[CssModes.ACSS] = { + label: 'Atomic CSS', + cmPath: 'css', + cmMode: 'css', + codepenVal: 'notsupported', + cmDisable: true, + hasSettings: true +}; diff --git a/webmaker/src/components/AddLibrary.jsx b/webmaker/src/components/AddLibrary.jsx new file mode 100644 index 0000000..558f1dd --- /dev/null +++ b/webmaker/src/components/AddLibrary.jsx @@ -0,0 +1,99 @@ +import { h, Component } from 'preact'; +import { jsLibs, cssLibs } from '../libraryList'; + +export default class AddLibrary extends Component { + constructor(props) { + super(props); + this.state = { + css: props.css || '', + js: props.js || '' + }; + } + onSelectChange(e) { + const target = e.target; + if (!target.value) { + return; + } + const type = target.selectedOptions[0].dataset.type; + if (type === 'js') { + this.setState({ + js: `${this.state.js}\n${target.value}` + }); + } + + // trackEvent('ui', 'addLibrarySelect', target.selectedOptions[0].label); + this.props.onChange({ js: this.state.js, css: this.state.css }); + // Reset the select to the default value + target.value = ''; + } + render() { + return ( +
+

Add Library

+ + +
+ Powered by cdnjs +
+
+ Choose from popular libraries: + +
+ +

JavaScript

+

+ Note: You can load external scripts from following domains: localhost, + https://ajax.googleapis.com, https://code.jquery.com, + https://cdnjs.cloudflare.com, https://unpkg.com, https://maxcdn.com, + https://cdn77.com, https://maxcdn.bootstrapcdn.com, + https://cdn.jsdelivr.net/, https://rawgit.com, https://wzrd.in +

+ +