UNPKG

litespeed.js

Version:

Lite & fast micro javascript framework that is easy to learn

55 lines (45 loc) 1.79 kB
window.ls.container.get('view').add({ selector: 'data-ls-if', controller: function(element, expression, container, view) { let result = ''; let syntax = element.getAttribute('data-ls-if') || ''; let debug = element.getAttribute('data-debug') || false; let paths = []; let check = () => { if(debug) { console.info('debug-ls-if', expression.parse(syntax.replace(/(\r\n|\n|\r)/gm, ' '), 'undefined', true)); } try { result = (eval(expression.parse(syntax.replace(/(\r\n|\n|\r)/gm, ' '), 'undefined', true))); // Remove all line breaks to avoid evaluation error } catch (error) { throw new Error('Failed to evaluate expression "' + syntax + ' (resulted with: "' + result + '")": ' + error); } if(debug) { console.info('debug-ls-if result:', result); } paths = expression.getPaths(); let prv = element.$lsSkip; element.$lsSkip = !result; if(!result) { element.style.visibility = 'hidden'; element.style.display = 'none'; } else { element.style.removeProperty('display'); element.style.removeProperty('visibility'); } if(prv === true && element.$lsSkip === false) { view.render(element) } }; check(); for(let i = 0; i < paths.length; i++) { let path = paths[i].split('.'); while(path.length) { container.bind(element, path.join('.'), check); path.pop(); } } } });