require('./snippetbar.less'); const React = require('react'); const createClass = require('create-react-class'); const _ = require('lodash'); const cx = require('classnames'); const SnippetsLegacy = require('./snippetsLegacy/snippets.js'); const SnippetsV3 = require('./snippets/snippets.js'); const execute = function(val, brew){ if(_.isFunction(val)) return val(brew); return val; }; const Snippetbar = createClass({ getDefaultProps : function() { return { brew : {}, view : 'text', onViewChange : ()=>{}, onInject : ()=>{}, onToggle : ()=>{}, showEditButtons : true, renderer : 'legacy' }; }, getInitialState : function() { return { renderer : this.props.renderer }; }, handleSnippetClick : function(injectedText){ this.props.onInject(injectedText); }, renderSnippetGroups : function(){ let snippets = []; if(this.props.renderer === 'V3') if(this.props.view === 'text') { snippets = SnippetsV3.filter(SnippetsV3 => SnippetsV3.view === 'text'); } else if(this.props.view === 'style') { snippets = SnippetsV3.filter(SnippetsV3 => SnippetsV3.view === 'style'); } else snippets = null else if(this.props.view === 'text') { snippets = SnippetsLegacy.filter(SnippetsLegacy => SnippetsLegacy.view === 'text'); } else if(this.props.view === 'style') { snippets = SnippetsLegacy.filter(SnippetsLegacy => SnippetsLegacy.view === 'style'); } else snippets = null return _.map(snippets, (snippetGroup)=>{ return ; }); }, renderEditorButtons : function(){ if(!this.props.showEditButtons) return; return
this.props.onViewChange('text')}>
this.props.onViewChange('style')}>
this.props.onViewChange('meta')}>
; }, render : function(){ return
{this.renderSnippetGroups()} {this.renderEditorButtons()}
; } }); module.exports = Snippetbar; const SnippetGroup = createClass({ getDefaultProps : function() { return { brew : {}, groupName : '', icon : 'fas fa-rocket', snippets : [], onSnippetClick : function(){}, }; }, handleSnippetClick : function(snippet){ this.props.onSnippetClick(execute(snippet.gen, this.props.brew)); }, renderSnippets : function(){ return _.map(this.props.snippets, (snippet)=>{ return
this.handleSnippetClick(snippet)}> {snippet.name}
; }); }, render : function(){ return
{this.props.groupName}
{this.renderSnippets()}
; }, });