{ "version": 3, "sources": ["../build/lib/lw-expr-parser.js", "../build/lib/lw-event-bus.js", "../build/lib/lw-element.js", "../build/components/root/ast.js", "../build/components/root/root.js", "../build/components/terminal/ast.js", "../build/components/terminal/terminal.js", "../build/components/header/ast.js", "../build/components/header/header.js", "../build/components/footer/ast.js", "../build/components/footer/footer.js", "../build/components/section-primary/ast.js", "../build/components/section-primary/section-primary.js", "../build/components/sections/code-01/ast.js", "../build/components/sections/code-01/code-01.js", "../build/components/sections/code-02/ast.js", "../build/components/sections/code-02/code-02.js", "../build/components/sections/code-03/ast.js", "../build/components/sections/code-03/code-03.js", "../build/components/sections/code-04/ast.js", "../build/components/sections/code-04/code-04.js", "../build/components/sections/code-05/ast.js", "../build/components/sections/code-05/code-05.js", "../build/components/sections/code-06/ast.js", "../build/components/sections/code-06/code-06.js", "../build/components/sections/code-06/parent/ast.js", "../build/components/sections/code-06/parent/parent.js", "../build/components/sections/code-06/child/ast.js", "../build/components/sections/code-06/child/child.js", "../build/components/sections/code-07/ast.js", "../build/components/sections/code-07/code-07.js", "../build/components/sections/code-08/ast.js", "../build/components/sections/code-08/code-08.js", "../build/components/sections/code-09/ast.js", "../build/components/sections/code-09/code-09.js", "../build/components/sections/code-10/ast.js", "../build/components/sections/code-10/code-10.js", "../build/components/sections/code-11/ast.js", "../build/components/sections/code-11/code-11.js", "../build/components/sections/code-12/ast.js", "../build/components/sections/code-12/code-12.js", "../build/components/sections/code-12/pub/ast.js", "../build/components/sections/code-12/pub/pub.js", "../build/components/sections/code-12/sub/ast.js", "../build/components/sections/code-12/sub/sub.js", "../build/components/sections/code-13/ast.js", "../build/components/sections/code-13/code-13.js", "../build/components/sections/commands/ast.js", "../build/components/sections/commands/commands.js", "../build/components/sections/howtos/ast.js", "../build/components/sections/howtos/howtos.js", "../build/components/sections/code-14/ast.js", "../build/components/sections/code-14/code-14.js", "../build/components/sections/code-14/dest-red/ast.js", "../build/components/sections/code-14/dest-red/dest-red.js", "../build/components/sections/code-14/dest-blue/ast.js", "../build/components/sections/code-14/dest-blue/dest-blue.js", "../build/components/sections/code-15/ast.js", "../build/components/sections/code-15/code-15.js", "../build/components/sections/code-15/parent/ast.js", "../build/components/sections/code-15/parent/parent.js", "../build/components/sections/code-15/child/ast.js", "../build/components/sections/code-15/child/child.js", "../build/components/sections/code-16/ast.js", "../build/components/sections/code-16/code-16.js", "../build/components/sections/code-16/parent/ast.js", "../build/components/sections/code-16/parent/parent.js", "../build/components/sections/code-16/child/ast.js", "../build/components/sections/code-16/child/child.js", "../build/components/sections/code-00/ast.js", "../build/components/sections/code-00/code-00.js"], "sourcesContent": ["const binaryOperations = {\n '==': (a, b) => a == b,\n '!=': (a, b) => a != b,\n '===': (a, b) => a === b,\n '!==': (a, b) => a !== b,\n '<': (a, b) => a < b,\n '<=': (a, b) => a <= b,\n '>': (a, b) => a > b,\n '>=': (a, b) => a >= b,\n '<<': (a, b) => a << b,\n '>>': (a, b) => a >> b,\n '>>>': (a, b) => a >>> b,\n '+': (a, b) => a + b,\n '-': (a, b) => a - b,\n '*': (a, b) => a * b,\n '/': (a, b) => a / b,\n '%': (a, b) => a % b,\n '**': (a, b) => a ** b,\n '|': (a, b) => a | b,\n '^': (a, b) => a ^ b,\n '&': (a, b) => a & b,\n 'in': (a, b) => a in b,\n 'instanceof': (a, b) => a instanceof b,\n // '|>': (a, b) => a |> b,\n};\n\nconst assignmentOperations = {\n '=': (c, a, b) => { c[a] = b; },\n '+=': (c, a, b) => { c[a] += b; },\n '-=': (c, a, b) => { c[a] -= b; },\n '*=': (c, a, b) => { c[a] *= b; },\n '/=': (c, a, b) => { c[a] /= b; },\n '%=': (c, a, b) => { c[a] %= b; },\n '**=': (c, a, b) => { c[a] **= b; },\n '&&=': (c, a, b) => { c[a] &&= b; },\n '??=': (c, a, b) => { c[a] ??= b; },\n '||=': (c, a, b) => { c[a] ||= b; },\n '>>=': (c, a, b) => { c[a] >>= b; },\n '>>>=': (c, a, b) => { c[a] >>>= b; },\n '<<=': (c, a, b) => { c[a] <<= b; },\n '&=': (c, a, b) => { c[a] &= b; },\n '|=': (c, a, b) => { c[a] |= b; },\n '^=': (c, a, b) => { c[a] ^= b; },\n};\n\nconst logicalOperators = {\n '||': (a, b) => a || b,\n '&&': (a, b) => a && b,\n '??': (a, b) => a ?? b,\n};\n\nconst unaryOperators = {\n '-': a => -a,\n '+': a => +a,\n '!': a => !a,\n '~': a => ~a,\n 'typeof': a => typeof a,\n 'void': a => void a,\n // 'delete': a => delete a,\n 'throw': a => { throw a; },\n};\n\nconst updateOperators = (operator, prefix) => {\n if (operator === '++') {\n return (c, a) => prefix ? ++c[a] : c[a]++;\n } else if (operator === '--') {\n return (c, a) => prefix ? --c[a] : c[a]--;\n }\n};\n\nconst callFunction = (node, context) => {\n const callee = evalNode(node.callee, context);\n if (node.callee.type === 'OptionalMemberExpression' && (callee === void 0 || callee === null)) {\n return void 0;\n }\n const args = [];\n node.arguments.map(argument => {\n if (argument.type === 'SpreadElement') {\n args.push(...evalNode(argument, context));\n } else {\n args.push(evalNode(argument, context));\n }\n });\n return callee(...args);\n};\n\nconst nodeHandlers = {\n 'NumericLiteral': (node, context) => node.value,\n 'StringLiteral': (node, context) => node.value,\n 'BooleanLiteral': (node, context) => node.value,\n 'NullLiteral': (node, context) => null,\n\n 'RegExpLiteral': (node, context) => new RegExp(node.pattern, node.flags),\n\n 'ExpressionStatement': (node, context) => evalNode(node.expression, context),\n 'BinaryExpression': (node, context) => binaryOperations[node.operator](evalNode(node.left, context), evalNode(node.right, context)),\n 'AssignmentExpression': (node, context) => {\n const immediateCtx = immediateContext(node.left, context);\n assignmentOperations[node.operator](immediateCtx, node.left.name, evalNode(node.right, context));\n },\n 'LogicalExpression': (node, context) => logicalOperators[node.operator](evalNode(node.left, context), evalNode(node.right, context)),\n 'UnaryExpression': (node, context) => unaryOperators[node.operator](evalNode(node.argument, context)),\n 'UpdateExpression': (node, context) => {\n const immediateCtx = immediateContext(node.argument, context);\n updateOperators(node.operator, node.prefix)(immediateCtx, node.argument.name, evalNode(node.argument, context));\n },\n 'ConditionalExpression': (node, context) => {\n const test = evalNode(node.test, context);\n const consequent = evalNode(node.consequent, context);\n const alternate = evalNode(node.alternate, context);\n return test ? consequent : alternate;\n },\n 'MemberExpression': (node, context) => {\n const object = evalNode(node.object, context);\n const member = node.computed ? object[evalNode(node.property, context)] : object[node.property.name];\n if (typeof member === 'function') {\n return member.bind(object);\n }\n return member;\n },\n 'OptionalMemberExpression': (node, context) => {\n const object = evalNode(node.object, context);\n if (object === void 0 || object === null) {\n return void 0;\n }\n const member = node.computed ? (object[evalNode(node.property, context)]) : (object[node.property.name]);\n if (typeof member === 'function') {\n return member.bind(object);\n }\n return member;\n },\n\n 'ArrayExpression': (node, context) => {\n const arr = [];\n node.elements.map(elem => {\n if (elem.type === 'SpreadElement') {\n arr.push(...evalNode(elem, context));\n } else {\n arr.push(evalNode(elem, context));\n }\n });\n return arr;\n },\n 'ObjectExpression': (node, context) => node.properties.reduce((acc, prop) => ({ ...acc, ...evalNode(prop, context) }), {}),\n 'ObjectProperty': (node, context) => ({ [evalNode(node.key, context)]: evalNode(node.value, context) }),\n 'SpreadElement': (node, context) => evalNode(node.argument, context),\n\n 'Identifier': (node, context) => {\n if (Array.isArray(context)) {\n const hitContext = context.find(contextObj => node.name in contextObj);\n return hitContext ? hitContext[node.name] : undefined;\n } else if (typeof context === 'object') {\n return context[node.name];\n }\n },\n 'ThisExpression': (node, context) => {\n if (Array.isArray(context)) {\n const hitContext = context.find(contextObj => 'this' in contextObj);\n return hitContext ? hitContext['this'] : undefined;\n } else if (typeof context === 'object') {\n return context['this'];\n }\n },\n\n 'CallExpression': (node, context) => callFunction(node, context),\n 'OptionalCallExpression': (node, context) => callFunction(node, context),\n 'NewExpression': (node, context) => callFunction(node, context),\n\n 'Directive': (node, context) => evalNode(node.value, context),\n 'DirectiveLiteral': (node, context) => node.value,\n};\n\nconst immediateContext = (node, context) => {\n if (Array.isArray(context)) {\n if (context.length === 0) {\n return null;\n }\n const qualifiedContext = context.filter(contextObj => !(('$event' in contextObj && '$node' in contextObj) || 'this' in contextObj));\n return context.find(contextObj => node.name in contextObj) ?? qualifiedContext[0];\n } else if (typeof context === 'object') {\n return context;\n }\n}\n\nconst evalNode = (node, context) => nodeHandlers[node.type](node, context);\n\nconst evaluate = (ast, context = {}, loc = {}) => {\n try {\n return ast.map(astNode => evalNode(astNode, context));\n } catch (e) {\n throw { error: e.message, location: loc, ast, context };\n }\n};\n\nexport { evaluate };\n\n// module.exports = { evaluate };\n// const parser = require('@babel/parser');\n// const ast = parser.parse(\"name?.toUpperCase()\").program.body;\n// console.log(ast);\n// const result = evaluate(JSON.parse(JSON.stringify(ast)), { name: 'hello' });\n// console.log(result);", "class LWEvent {\n constructor(eventName, data) {\n this.eventName = eventName;\n this.data = data;\n }\n}\n\nclass LWEventListener {\n static key = 0;\n constructor(eventName, callback) {\n this.eventName = eventName;\n this.callback = callback;\n this.key = ++LWEventListener.key;\n }\n}\n\n// const listeners = {\n// event0: {\n// key0: listener0,\n// key1: listener1,\n// },\n// event0: {},\n// event0: {},\n// };\n\nexport default class LWEventBus {\n constructor() {\n this.listeners = {};\n }\n\n addEventListener(eventName, callback) {\n const listener = new LWEventListener(eventName, callback);\n this.listeners[listener.eventName] = this.listeners[listener.eventName] || {};\n const events = this.listeners[listener.eventName];\n events[listener.key] = listener;\n return listener;\n }\n\n removeEventListener(listener) {\n if (this.listeners[listener.eventName]) {\n delete this.listeners[listener.eventName][listener.key];\n }\n }\n\n dispatchEvent(eventName, data = null) {\n if (this.listeners[eventName]) {\n Object.values(this.listeners[eventName]).forEach(listener => {\n setTimeout(() => {\n listener.callback.call(void 0, new LWEvent(eventName, data));\n });\n });\n }\n }\n}", "import * as parser from './lw-expr-parser.js';\nimport LWEventBus from './lw-event-bus.js';\n\nglobalThis.leanweb = globalThis.leanweb ?? {\n componentsListeningOnUrlChanges: [],\n eventBus: new LWEventBus(),\n updateComponents(...tagNames) {\n if (tagNames?.length) {\n tagNames.forEach(tagName => {\n leanweb.eventBus.dispatchEvent(tagName);\n });\n } else {\n leanweb.eventBus.dispatchEvent('update');\n }\n },\n\n set urlHash(hash) {\n location.hash = hash;\n },\n\n get urlHash() {\n return location.hash;\n },\n\n set urlHashPath(hashPath) {\n const s = this.urlHash.split('?');\n if (s.length === 1) {\n this.urlHash = hashPath;\n } else if (s.length > 1) {\n this.urlHash = hashPath + '?' + s[1];\n }\n },\n\n get urlHashPath() {\n return this.urlHash.split('?')[0];\n },\n\n set urlHashParams(hashParams) {\n if (!hashParams) {\n return;\n }\n\n const paramArray = [];\n Object.keys(hashParams).forEach(key => {\n const value = hashParams[key];\n if (Array.isArray(value)) {\n value.forEach(v => {\n paramArray.push(key + '=' + encodeURIComponent(v));\n });\n } else {\n paramArray.push(key + '=' + encodeURIComponent(value));\n }\n });\n this.urlHash = this.urlHashPath + '?' + paramArray.join('&');\n },\n\n get urlHashParams() {\n const ret = {};\n const s = this.urlHash.split('?');\n if (s.length > 1) {\n const p = new URLSearchParams(s[1]);\n p.forEach((v, k) => {\n if (ret[k] === undefined) {\n ret[k] = v;\n } else if (Array.isArray(ret[k])) {\n ret[k].push(v);\n } else {\n ret[k] = [ret[k], v];\n }\n });\n }\n return ret;\n }\n};\n\nglobalThis.addEventListener('hashchange', () => {\n leanweb.componentsListeningOnUrlChanges.forEach(component => {\n setTimeout(() => {\n component?.urlHashChanged?.call(component);\n component?.update?.call(component);\n });\n });\n}, false);\n\nconst hasMethod = (obj, name) => {\n const desc = Object.getOwnPropertyDescriptor(obj, name);\n return !!desc && typeof desc.value === 'function';\n}\n\nconst nextAllSiblings = (el, selector) => {\n const siblings = [];\n while (el = el.nextSibling) {\n if (el.nodeType === Node.ELEMENT_NODE && (!selector || el.matches(selector))) {\n siblings.push(el);\n }\n }\n return siblings;\n};\n\nexport default class LWElement extends HTMLElement {\n constructor(ast) {\n super();\n this.ast = ast;\n\n leanweb.runtimeVersion = ast.runtimeVersion;\n leanweb.builderVersion = ast.builderVersion;\n\n const node = document.createElement('template');\n node.innerHTML = `${ast.html}`;\n this.attachShadow({ mode: 'open' }).appendChild(node.content);\n\n this._bindMethods();\n setTimeout(() => {\n this.update(this.shadowRoot);\n setTimeout(() => {\n this.domReady?.call(this);\n });\n });\n\n if (this.urlHashChanged && typeof this.urlHashChanged === 'function') {\n leanweb.componentsListeningOnUrlChanges.push(this);\n }\n\n leanweb.eventBus.addEventListener('update', _ => {\n this.update();\n });\n\n leanweb.eventBus.addEventListener(ast.componentFullName, _ => {\n this.update();\n });\n }\n\n _getNodeContext(node) {\n const contextNode = node.closest('[lw-context]');\n return contextNode?.['lw-context'] ?? [{ 'this': this }, this, globalThis];\n }\n\n update(rootNode = this.shadowRoot) {\n if (rootNode !== this.shadowRoot) {\n if (rootNode.hasAttribute('lw-elem')) {\n if (rootNode.hasAttribute('lw-elem-bind')) {\n this._bindModels(rootNode);\n this._bindEvents(rootNode);\n this._bindInputs(rootNode);\n }\n if (rootNode.hasAttribute('lw-if')) {\n this.updateIf(rootNode);\n }\n if (!rootNode.hasAttribute('lw-false')) {\n this.updateEval(rootNode);\n this.updateClass(rootNode);\n this.updateBind(rootNode);\n this.updateModel(rootNode);\n if (rootNode.hasAttribute('lw-for')) {\n this.updateFor(rootNode);\n }\n }\n }\n }\n const treeWalker = document.createTreeWalker(rootNode, NodeFilter.SHOW_ELEMENT, {\n acceptNode: node => {\n if (node.hasAttribute('lw-elem')) {\n if (node.hasAttribute('lw-for')) {\n this.updateFor(node);\n return NodeFilter.FILTER_REJECT;\n }\n if (node.hasAttribute('lw-for-parent')) {\n return NodeFilter.FILTER_REJECT;\n }\n if (node.hasAttribute('lw-elem-bind')) {\n this._bindModels(node);\n this._bindEvents(node);\n this._bindInputs(node);\n }\n if (node.hasAttribute('lw-if')) {\n this.updateIf(node);\n }\n if (node.hasAttribute('lw-false')) {\n return NodeFilter.FILTER_REJECT;\n }\n this.updateEval(node);\n this.updateClass(node);\n this.updateBind(node);\n this.updateModel(node);\n }\n return NodeFilter.FILTER_ACCEPT;\n }\n });\n while (treeWalker.nextNode()) { }\n }\n\n _bindMethods() {\n const methodNames = ['update'];\n const proto = Object.getPrototypeOf(this);\n methodNames.push(...Object.getOwnPropertyNames(proto).filter(name => hasMethod(proto, name)));\n methodNames.push(...Object.getOwnPropertyNames(this).filter(name => hasMethod(this, name)));\n methodNames.filter(name => name !== 'constructor').forEach(name => {\n this[name] = this[name].bind(this);\n });\n }\n\n // properties:\n // lw_input_bound: boolean\n _bindInputs(inputNode) {\n if (inputNode['lw_input_bound']) {\n return;\n }\n inputNode['lw_input_bound'] = true;\n for (const attr of inputNode.attributes) {\n const attrName = attr.name;\n const attrValue = attr.value;\n if (attrName.startsWith('lw-input:')) {\n const interpolation = this.ast[attrValue];\n const context = this._getNodeContext(inputNode);\n const parsed = parser.evaluate(interpolation.ast, context, interpolation.loc);\n inputNode[interpolation.lwValue] = parsed[0];\n }\n }\n inputNode?.inputReady?.call(this);\n inputNode?.update?.call(this);\n }\n\n // properties:\n // lw_event_bound: boolean\n _bindEvents(eventNode) {\n if (eventNode['lw_event_bound']) {\n return;\n }\n eventNode['lw_event_bound'] = true;\n const me = this;\n for (const attr of eventNode.attributes) {\n const attrName = attr.name;\n const attrValue = attr.value;\n if (attrName.startsWith('lw-on:')) {\n const interpolation = this.ast[attrValue];\n interpolation.lwValue.split(',').forEach(eventType => {\n eventNode.addEventListener(eventType.trim(), (event => {\n const context = this._getNodeContext(eventNode);\n const eventContext = { '$event': event, '$node': eventNode };\n const parsed = parser.evaluate(interpolation.ast, [eventContext, ...context], interpolation.loc);\n const promises = parsed.filter(p => typeof p?.then === 'function' && typeof p?.finally === 'function');\n if (parsed.length > promises.length) {\n me.update();\n }\n promises.forEach(p => {\n p?.finally(() => {\n me.update();\n });\n });\n }).bind(me));\n });\n }\n }\n }\n\n // properties:\n // lw_model_bound: boolean\n _bindModels(modelNode) {\n const key = modelNode.getAttribute('lw-model');\n if (!key) {\n return;\n }\n if (modelNode['lw_model_bound']) {\n return;\n }\n modelNode['lw_model_bound'] = true;\n const interpolation = this.ast[key];\n modelNode.addEventListener('input', (event => {\n const context = this._getNodeContext(modelNode);\n const astModel = interpolation.ast[0].expression;\n let object;\n let propertyExpr;\n if (astModel.type === 'MemberExpression') {\n // . false and [] true\n propertyExpr = astModel.computed ? parser.evaluate([astModel.property], context, interpolation.loc)[0] : astModel.property.name;\n object = parser.evaluate([astModel.object], context, interpolation.loc)[0];\n } else if (astModel.type === 'Identifier') {\n object = this;\n propertyExpr = astModel.name;\n }\n\n if (modelNode.type === 'number' || modelNode.type === 'range') {\n // set do_not_update mark for cases when user inputs 0.01, 0.0 will not be evaluated prematurely\n modelNode.do_not_update = true;\n object[propertyExpr] = modelNode.value * 1;\n } else if (modelNode.type === 'checkbox') {\n if (Array.isArray(object[propertyExpr])) {\n if (modelNode.checked) {\n object[propertyExpr].push(modelNode.value);\n } else {\n const index = object[propertyExpr].indexOf(modelNode.value);\n if (index > -1) {\n object[propertyExpr].splice(index, 1);\n }\n }\n } else {\n object[propertyExpr] = modelNode.checked;\n }\n } else if (modelNode.type === 'select-multiple') {\n if (!Array.isArray(object[propertyExpr])) {\n object[propertyExpr] = [];\n }\n object[propertyExpr].length = 0;\n for (let i = 0; i < modelNode.options.length; ++i) {\n const option = modelNode.options[i];\n if (option.selected) {\n object[propertyExpr].push(option.value);\n }\n }\n } else {\n object[propertyExpr] = modelNode.value;\n }\n this.update();\n delete modelNode.do_not_update;\n }).bind(this));\n }\n\n updateModel(modelNode) {\n if (modelNode.do_not_update && modelNode.type === 'number') {\n return;\n }\n const key = modelNode.getAttribute('lw-model');\n if (!key) {\n return;\n }\n const context = this._getNodeContext(modelNode);\n const interpolation = this.ast[key];\n const parsed = parser.evaluate(interpolation.ast, context, interpolation.loc);\n if (modelNode.type === 'checkbox') {\n if (Array.isArray(parsed[0])) {\n modelNode.checked = parsed[0].includes?.(modelNode.value);\n } else {\n modelNode.checked = !!parsed[0];\n }\n } else if (modelNode.type === 'radio') {\n modelNode.checked = parsed[0] === modelNode.value;\n } else if (modelNode.type === 'select-multiple') {\n for (let i = 0; i < modelNode.options.length; ++i) {\n const option = modelNode.options[i];\n if (parsed[0]) {\n option.selected = parsed[0].includes(option.value);\n }\n }\n } else {\n const newValue = parsed[0] ?? '';\n if (modelNode.value !== newValue) {\n modelNode.value = newValue;\n }\n }\n }\n\n // attribute: lw: astKey\n // property: lw-eval-value-$key\n updateEval(evalNode) {\n const key = evalNode.getAttribute('lw');\n if (!key) {\n return;\n }\n const context = this._getNodeContext(evalNode);\n const interpolation = this.ast[key];\n const parsed = parser.evaluate(interpolation.ast, context, interpolation.loc);\n if (evalNode['lw-eval-value-' + key] !== parsed[0] || typeof parsed[0] === 'object') {\n evalNode['lw-eval-value-' + key] = parsed[0];\n evalNode.innerText = parsed[0] ?? '';\n }\n }\n\n // attribute: lw-if: astKey\n // lw-false: '' (if false)\n updateIf(ifNode) {\n const key = ifNode.getAttribute('lw-if');\n if (!key) {\n return;\n }\n const context = this._getNodeContext(ifNode);\n const interpolation = this.ast[key];\n const parsed = parser.evaluate(interpolation.ast, context, interpolation.loc);\n\n const hasLwFalse = ifNode.hasAttribute('lw-false');\n if (parsed[0] !== false && parsed[0] !== undefined && parsed[0] !== null) {\n hasLwFalse && ifNode.removeAttribute('lw-false');\n setTimeout(() => {\n ifNode.turnedOn?.call(ifNode);\n });\n } else {\n !hasLwFalse && ifNode.setAttribute('lw-false', '');\n setTimeout(() => {\n ifNode.turnedOff?.call(ifNode);\n });\n }\n }\n\n // attribute: lw-class: astKey\n updateClass(classNode) {\n const context = this._getNodeContext(classNode);\n for (const attr of classNode.attributes) {\n const attrName = attr.name;\n const attrValue = attr.value;\n if (attrName.startsWith('lw-class:')) {\n const interpolation = this.ast[attrValue];\n const parsed = parser.evaluate(interpolation.ast, context, interpolation.loc);\n\n if (!parsed[0]) {\n classNode.classList.remove(interpolation.lwValue);\n } else {\n classNode.classList.add(interpolation.lwValue);\n }\n }\n }\n }\n\n updateBind(bindNode) {\n const context = this._getNodeContext(bindNode);\n for (const attr of bindNode.attributes) {\n const attrName = attr.name;\n const attrValue = attr.value;\n if (attrName.startsWith('lw-bind:')) {\n const interpolation = this.ast[attrValue];\n const parsed = parser.evaluate(interpolation.ast, context, interpolation.loc);\n\n if (interpolation.lwValue === 'class') {\n const initClass = bindNode.getAttribute('lw-init-class');\n if (!parsed[0]) {\n bindNode.classList.remove(parsed[0]);\n } else {\n bindNode.classList = initClass + ' ' + parsed[0];\n }\n } else {\n if (parsed[0] !== false && parsed[0] !== undefined && parsed[0] !== null) {\n bindNode.setAttribute(interpolation.lwValue, parsed[0]);\n } else {\n bindNode.removeAttribute(interpolation.lwValue);\n }\n }\n }\n }\n }\n\n // parent attribytes:\n // lw-for: $astKey\n\n // child attributes:\n // lw-context: ''\n // lw-for-parent: $astKey\n\n // child propery:\n // lw-context: localContext\n updateFor(forNode) {\n const key = forNode.getAttribute('lw-for');\n if (!key) {\n return;\n }\n const context = this._getNodeContext(forNode);\n const interpolation = this.ast[key];\n const items = parser.evaluate(interpolation.astItems, context, interpolation.loc)[0] ?? [];\n const rendered = nextAllSiblings(forNode, `[lw-for-parent=\"${key}\"]`);\n for (let i = items.length; i < rendered.length; ++i) {\n rendered[i].remove();\n }\n\n let currentNode = forNode;\n items.forEach((item, index) => {\n let node;\n if (rendered.length > index) {\n node = rendered[index];\n } else {\n node = forNode.cloneNode(true);\n node.removeAttribute('lw-for');\n // node.removeAttribute('lw-elem');\n node.setAttribute('lw-for-parent', key);\n node.setAttribute('lw-context', '');\n currentNode.insertAdjacentElement('afterend', node);\n }\n if (item && typeof item === 'object') {\n item.getDom = () => node;\n }\n currentNode = node;\n const itemContext = { [interpolation.itemExpr]: item };\n if (interpolation.indexExpr) {\n itemContext[interpolation.indexExpr] = index;\n }\n\n node['lw-context'] = [itemContext, ...context];\n this.update(node);\n });\n }\n}", "export default {\"html\":\"

Commands

Directives

Form Bindings

Advanced Topics

HowTos

\",\"css\":\"@import \\\"global-styles.css\\\";\\n.commands,\\n.directives,\\n.form-bindings,\\n.advanced-topics,\\n.howtos {\\n padding-top: 50px;\\n align-items: center;\\n gap: 0 20px;\\n\\n display: grid;\\n grid-template-columns: 1fr repeat(8, minmax(auto, 80px)) 1fr;\\n\\n background-color: #fafafa;\\n\\n div.center {\\n grid-column: 2/10;\\n grid-row: 1;\\n align-items: center;\\n }\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-root\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-root',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n }\n }\n);\n", "export default {\"html\":\"
\",\"css\":\"@import \\\"global-styles.css\\\";\\n.window {\\n border-radius: 2px;\\n .topMenu {\\n width: 100%;\\n box-sizing: border-box;\\n height: 30px;\\n background-color: #d5d5d5;\\n border-radius: 2px 2px 0 0;\\n display: flex;\\n align-items: center;\\n padding: 0 5px;\\n\\n .topButton {\\n height: 11px;\\n width: 11px;\\n border-radius: 50%;\\n position: relative;\\n\\n margin-left: 5px;\\n\\n &.redButton {\\n background-color: #ff3b47;\\n }\\n &.yellowButton {\\n background-color: #ffc100;\\n }\\n &.greenButton {\\n background-color: #00d742;\\n }\\n }\\n }\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-terminal\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-terminal',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n const width = this.getAttribute('width');\n if (width) {\n this.shadowRoot.querySelector('.window').style.width = width + 'px';\n }\n }\n }\n);\n", "export default {\"22\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"MemberExpression\",\"object\":{\"type\":\"Identifier\",\"name\":\"leanweb\"},\"computed\":false,\"property\":{\"type\":\"Identifier\",\"name\":\"runtimeVersion\"}}}],\"loc\":{\"startLine\":1,\"endLine\":1}},\"html\":\"
\\\"LW\\\" Leanweb
Join our Slack npm GitHub
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n background-color: #333;\\n height: 50px;\\n gap: 0 20px;\\n align-items: center;\\n\\n display: grid;\\n grid-template-columns: 1fr repeat(8, minmax(auto, 80px)) 1fr;\\n\\n}\\n\\ndiv.left {\\n grid-column: 2/6;\\n grid-row: 1;\\n height: 40px;\\n align-items: center;\\n display: flex;\\n\\n span.brand {\\n margin-left: 10px;\\n color: white;\\n font-weight: 400;\\n font-size: 22px;\\n }\\n\\n span.version {\\n margin-left: 10px;\\n color: tomato;\\n font-size: 12px;\\n top: -2px;\\n position: relative;\\n }\\n}\\n\\ndiv.right {\\n display: flex;\\n justify-content: flex-end;\\n grid-column: 9;\\n grid-row: 1;\\n\\n svg.slack {\\n width: 32px;\\n }\\n\\n svg.npm {\\n fill: lightgray;\\n width: 32px;\\n margin-left: 20px;\\n }\\n\\n svg.github {\\n fill: lightgray;\\n width: 32px;\\n margin-left: 20px;\\n }\\n}\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-header\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-header',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n }\n\n // derived from LWElement\n // domReady() {\n // console.log('Dom is ready');\n // }\n\n // derived from HTMLElement\n // connectedCallback() {\n // console.log(this.isConnected);\n // console.log('Element added to page.');\n // }\n\n // disconnectedCallback() {\n // console.log('Element removed from page.');\n // }\n\n // adoptedCallback() {\n // console.log('Element moved to new page.');\n // }\n\n // static get observedAttributes() {\n // return [];\n // }\n\n // attributeChangedCallback(name, oldValue, newValue) {\n // console.log(name, oldValue, newValue);\n // }\n }\n);\n", "export default {\"79\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"getFullYear\"},\"arguments\":[]}}],\"loc\":{\"startLine\":1,\"endLine\":1}},\"html\":\"
\\\"LW\\\" This site is powered by Leanweb.
Copyright \u00A9 2019- leanweb.app
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n background-color: #333;\\n height: 50px;\\n gap: 0 20px;\\n align-items: center;\\n\\n display: grid;\\n grid-template-columns: 1fr repeat(8, minmax(auto, 80px)) 1fr;\\n}\\n\\ndiv.left {\\n grid-column: 2/6;\\n grid-row: 1;\\n height: 40px;\\n align-items: center;\\n display: flex;\\n\\n span.powered {\\n margin-left: 10px;\\n color: lightgray;\\n font-size: 12px;\\n }\\n}\\n\\ndiv.right {\\n display: flex;\\n justify-content: flex-end;\\n grid-column: 6/10;\\n grid-row: 1;\\n color: lightgray;\\n font-size: 12px;\\n}\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-footer\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-footer',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n }\n\n getFullYear() {\n return new Date().getFullYear();\n }\n\n // derived from LWElement\n // domReady() {\n // console.log('Dom is ready');\n // }\n\n // derived from HTMLElement\n // connectedCallback() {\n // console.log(this.isConnected);\n // console.log('Element added to page.');\n // }\n\n // disconnectedCallback() {\n // console.log('Element removed from page.');\n // }\n\n // adoptedCallback() {\n // console.log('Element moved to new page.');\n // }\n\n // static get observedAttributes() {\n // return [];\n // }\n\n // attributeChangedCallback(name, oldValue, newValue) {\n // console.log(name, oldValue, newValue);\n // }\n }\n);\n", "export default {\"84\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"line\"}}],\"loc\":{\"startLine\":1,\"endLine\":1}},\"85\":{\"astItems\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"terminalData\"}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"itemExpr\":\"line\",\"itemsExpr\":\"terminalData\"},\"97\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"world\"}}],\"loc\":{\"startLine\":11,\"endLine\":11}},\"99\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"BinaryExpression\",\"left\":{\"type\":\"ThisExpression\"},\"operator\":\"instanceof\",\"right\":{\"type\":\"Identifier\",\"name\":\"HTMLElement\"}}}],\"loc\":{\"startLine\":11,\"endLine\":11}},\"111\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"r\"}}],\"loc\":{\"startLine\":25,\"endLine\":25}},\"112\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"BinaryExpression\",\"left\":{\"type\":\"BinaryExpression\",\"left\":{\"type\":\"MemberExpression\",\"object\":{\"type\":\"Identifier\",\"name\":\"Math\"},\"computed\":false,\"property\":{\"type\":\"Identifier\",\"name\":\"PI\"}},\"operator\":\"*\",\"right\":{\"type\":\"Identifier\",\"name\":\"r\"}},\"operator\":\"*\",\"right\":{\"type\":\"Identifier\",\"name\":\"r\"}}}],\"loc\":{\"startLine\":25,\"endLine\":25}},\"html\":\"

Leanweb

Builds framework agnostic web components

DOM first, no magic

Lean, 4kb runtime gzipped

HTML
\\n  \\n  Hello <span lw>world</span>!\\n  <span lw>this instanceof HTMLElement</span>\\n\\n         
Javascript
\\n   class extends LWElement {\\n      world = 'Leanweb';\\n   }\\n\\n         
Hello !
HTML
\\n  \\n   Radius: \\n   <input type='number' lw-model='r'>\\n   Area: \\n   <span lw>Math.PI * r * r</span>\\n\\n         
Javascript
\\n   class extends LWElement {\\n      r = 1;\\n   }\\n\\n   \\n\\n         
Radius: Area:
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n padding: 50px 0;\\n gap: 60px 20px;\\n background-color: tomato;\\n display: grid;\\n grid-template-columns: 1fr repeat(8, minmax(auto, 80px)) 1fr;\\n}\\n\\n.one {\\n grid-column: 2/10;\\n display: flex;\\n justify-content: space-between;\\n\\n .left {\\n width: 48%;\\n min-width: 300px;\\n\\n leanweb-app-terminal .mainScreen {\\n background-color: #151515;\\n box-sizing: border-box;\\n width: 100%;\\n padding: 20px;\\n border-radius: 0 0 2px 2px;\\n\\n p.line {\\n margin: 6px auto;\\n position: relative;\\n text-align: left;\\n font-size: 1.2em;\\n font-family: monospace;\\n white-space: nowrap;\\n overflow: hidden;\\n color: #f5f5f5;\\n\\n &::before {\\n content: \\\"$\\\";\\n padding-right: 8px;\\n }\\n }\\n }\\n }\\n\\n .middle {\\n width: 48%;\\n min-width: 300px;\\n color: white;\\n padding-left: 20px;\\n\\n h1 {\\n font-weight: 400;\\n margin-top: 10px;\\n }\\n }\\n}\\n\\n.two {\\n grid-column: 2/10;\\n\\n .code {\\n display: flex;\\n justify-content: space-between;\\n\\n .code-block {\\n width: 48%;\\n min-width: 300px;\\n }\\n }\\n\\n .browser {\\n margin-top: 25px;\\n\\n .mainScreen {\\n span.this {\\n color: tomato;\\n font-style: italic;\\n }\\n }\\n }\\n}\\n\\n.three {\\n grid-column: 2/10;\\n\\n .code {\\n display: flex;\\n justify-content: space-between;\\n\\n .code-block {\\n width: 48%;\\n min-width: 300px;\\n }\\n }\\n\\n .browser {\\n margin-top: 25px;\\n\\n .mainScreen {\\n input {\\n width: 80px;\\n }\\n }\\n }\\n}\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-section-primary\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\ncustomElements.define('leanweb-app-section-primary',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n\n this.terminalData = [\n 'npm i leanweb -g',\n 'mkdir demo && cd demo',\n 'lw init',\n 'lw serve',\n ];\n\n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n world = 'Leanweb';\n\n r = 1;\n }\n);\n", "export default {\"121\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"love\"}}],\"loc\":{\"startLine\":9,\"endLine\":9}},\"html\":\"

lw-if

HTML
\\n   I <span lw-if='love'>\u2764\uFE0F</span> Leanweb!\\n\\n
Javascript
\\n   class extends LWElement {\\n      love = true;\\n   }\\n\\n
I \u2764\uFE0F Leanweb!
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-01\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\ncustomElements.define('leanweb-app-sections-code-01',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n love = true;\n }\n);\n", "export default {\"130\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"BinaryExpression\",\"left\":{\"type\":\"BinaryExpression\",\"left\":{\"type\":\"Identifier\",\"name\":\"$index\"},\"operator\":\"+\",\"right\":{\"type\":\"StringLiteral\",\"extra\":{\"rawValue\":\": \",\"raw\":\"': '\"},\"value\":\": \"}},\"operator\":\"+\",\"right\":{\"type\":\"Identifier\",\"name\":\"item\"}}}],\"loc\":{\"startLine\":9,\"endLine\":9}},\"131\":{\"astItems\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"items\"}}],\"loc\":{\"startLine\":9,\"endLine\":9},\"itemExpr\":\"item\",\"indexExpr\":\"$index\",\"itemsExpr\":\"items\"},\"html\":\"

lw-for

HTML
\\n   <div lw lw-for='item, $index in items'>$index+': '+item</div>\\n\\n
Javascript
\\n   class extends LWElement {\\n      items = ['one', 'two', 'three'];\\n   }\\n\\n

You could access DOM nodes for each element in a lw-for loop by calling elem.getDom() as long as typeof elem evaluates object.

\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-02\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-02',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n items = ['one', 'two', 'three'];\n }\n);\n", "export default {\"145\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"name\"}}],\"loc\":{\"startLine\":15,\"endLine\":15}},\"146\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"resetName\"},\"arguments\":[{\"type\":\"Identifier\",\"name\":\"$event\"},{\"type\":\"Identifier\",\"name\":\"$node\"}]}}],\"loc\":{\"startLine\":15,\"endLine\":15},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"147\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"name\"}}],\"loc\":{\"startLine\":15,\"endLine\":15}},\"html\":\"

lw-model: and lw-on:

HTML
\\n   <input type='text' lw-model='name'>\\n   <button lw-on:click='resetName($event, $node)'> Reset Name </button>\\n   <!-- You could bind multiple events -->\\n   <!-- <button lw-on:click,mouseout='resetName($event, $node)'> Reset Name </button> -->\\n   <span lw>name</span>\\n\\n
Javascript
\\n   class extends LWElement {\\n      resetName(event, node) {\\n         this.name = 'Leanweb';\\n      }\\n   }\\n\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n }\\n \\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-03\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-03',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n resetName(event, node) {\n this.name = 'Leanweb';\n }\n }\n);", "export default {\"159\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"item\"}}],\"loc\":{\"startLine\":25,\"endLine\":25}},\"160\":{\"astItems\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"items\"}}],\"loc\":{\"startLine\":25,\"endLine\":25},\"itemExpr\":\"item\",\"indexExpr\":\"$index\",\"itemsExpr\":\"items\"},\"161\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"isActive\"},\"arguments\":[{\"type\":\"Identifier\",\"name\":\"$index\"}]}}],\"loc\":{\"startLine\":25,\"endLine\":25},\"lwType\":\"lw-class\",\"lwValue\":\"active\"},\"162\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"setActive\"},\"arguments\":[{\"type\":\"Identifier\",\"name\":\"$index\"}]}}],\"loc\":{\"startLine\":25,\"endLine\":25},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"html\":\"

lw-class:

HTML
\\n    <div lw \\n      lw-for='item, $index in items' \\n      lw-class:active='isActive($index)' \\n      lw-on:click='setActive($index)'>\\n      item\\n    </div>\\n\\n
CSS
\\n   .active {\\n      color: red;\\n   }\\n\\n
Javascript
\\n   class extends LWElement {\\n      items = ['one', 'two', 'three'];\\n      setActive(index) {\\n        this.activeIndex = index;\\n      }\\n      isActive(index) {\\n        return index === (this.activeIndex ?? 1);\\n      }\\n   }\\n\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n}\\n\\n.active {\\n color: red;\\n}\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-04\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-04',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n\n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n items = ['one', 'two', 'three'];\n setActive(index) {\n this.activeIndex = index;\n }\n isActive(index) {\n return index === (this.activeIndex ?? 1);\n }\n }\n);", "export default {\"171\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"imgSrc\"}}],\"loc\":{\"startLine\":10,\"endLine\":10},\"lwType\":\"lw-bind\",\"lwValue\":\"src\"},\"172\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"imageWidth\"}}],\"loc\":{\"startLine\":10,\"endLine\":10},\"lwType\":\"lw-bind\",\"lwValue\":\"width\"},\"173\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"title\"}}],\"loc\":{\"startLine\":10,\"endLine\":10},\"lwType\":\"lw-bind\",\"lwValue\":\"title\"},\"html\":\"

lw-bind:

HTML
\\n   <img lw-bind:src='imgSrc' lw-bind:width='imageWidth' lw-bind:title='title'>\\n\\n
Javascript
\\n   class extends LWElement {\\n      imgSrc = '/resources/images/arizona.jpg';\\n      imageWidth = 400;\\n      title = 'Beautiful Arizona';\\n   }\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n }\\n \\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-05\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-05',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n imgSrc = '/resources/images/arizona.jpg';\n imageWidth = 400;\n title = 'Beautiful Arizona';\n }\n);\n", "export default {\"html\":\"

lw-input:

The following example shows how parent and child components share data by passing data with lw-input:.

parent.html
\\n   <div class='parent'>\\n      <span>Parent</span>\\n      <span lw>item?.quantity</span>\\n      <button lw-on:click='update()'>Update Quantity</button>\\n      <demo-child lw-input:item='item'></demo-child>\\n   </div>\\n\\n
parent.js
\\n   class extends LWElement {\\n      item = {\\n         name: 'Banana',\\n         quantity: 1,\\n      };\\n   }\\n\\n
child.html
\\n   <div class='child'>\\n      <span>Child</span>\\n      <span lw>item?.quantity</span>\\n      <div class='buttons'>\\n         <button lw-on:click='addOne()'>Add One</button>\\n         <button lw-on:click='removeOne()'>Remove One</button>\\n      </div>\\n   </div>\\n\\n
child.js
\\n   class extends LWElement {\\n      addOne() {\\n         this.item.quantity += 1;\\n      }\\n\\n      removeOne() {\\n         this.item.quantity -= 1;\\n      }\\n   }\\n\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n }\\n \\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-06\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-06',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n // derived from LWElement\n // domReady() {\n // console.log('Dom is ready');\n // }\n\n // inputReady() {\n // console.log('input is ready');\n // }\n\n // derived from HTMLElement\n // connectedCallback() {\n // console.log(this.isConnected);\n // console.log('Element added to page.');\n // }\n\n // disconnectedCallback() {\n // console.log('Element removed from page.');\n // }\n\n // adoptedCallback() {\n // console.log('Element moved to new page.');\n // }\n\n // static get observedAttributes() {\n // return [];\n // }\n\n // attributeChangedCallback(name, oldValue, newValue) {\n // console.log(name, oldValue, newValue);\n // }\n }\n);\n", "export default {\"190\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"OptionalMemberExpression\",\"object\":{\"type\":\"Identifier\",\"name\":\"item\"},\"computed\":false,\"property\":{\"type\":\"Identifier\",\"name\":\"quantity\"},\"optional\":true}}],\"loc\":{\"startLine\":1,\"endLine\":1}},\"191\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"update\"},\"arguments\":[]}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"192\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"item\"}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-input\",\"lwValue\":\"item\"},\"html\":\"
Parent
\",\"css\":\"@import \\\"global-styles.css\\\";\\n.parent {\\n width: 400px;\\n height: 200px;\\n border: 1px solid gray;\\n margin: auto;\\n display: grid;\\n margin-top: 20px;\\n\\n span {\\n margin: auto;\\n }\\n\\n button {\\n margin: auto;\\n }\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-06-parent\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-sections-code-06-parent',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n }\n\n item = {\n name: 'Banana',\n quantity: 1,\n };\n }\n);\n", "export default {\"194\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"OptionalMemberExpression\",\"object\":{\"type\":\"Identifier\",\"name\":\"item\"},\"computed\":false,\"property\":{\"type\":\"Identifier\",\"name\":\"quantity\"},\"optional\":true}}],\"loc\":{\"startLine\":1,\"endLine\":1}},\"196\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"addOne\"},\"arguments\":[]}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"197\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"removeOne\"},\"arguments\":[]}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"html\":\"
Child
\",\"css\":\"@import \\\"global-styles.css\\\";\\n.child {\\n width: 300px;\\n height: 100px;\\n border: 1px solid gray;\\n margin: auto;\\n display: grid;\\n margin-top: 10px;\\n\\n span {\\n margin: auto;\\n }\\n\\n .buttons {\\n margin: auto;\\n > button {\\n width: 100px;\\n }\\n }\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-06-child\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-sections-code-06-child',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n }\n\n addOne() {\n this.item.quantity += 1;\n }\n\n removeOne() {\n this.item.quantity -= 1;\n }\n }\n);\n", "export default {\"206\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"toggleCheckboxes\"},\"arguments\":[]}}],\"loc\":{\"startLine\":22,\"endLine\":22},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"207\":{\"astItems\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"items\"}}],\"loc\":{\"startLine\":22,\"endLine\":22},\"itemExpr\":\"item\",\"indexExpr\":\"$index\",\"itemsExpr\":\"items\"},\"209\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"item\"}}],\"loc\":{\"startLine\":22,\"endLine\":22},\"lwType\":\"lw-bind\",\"lwValue\":\"value\"},\"210\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"checkedValues\"}}],\"loc\":{\"startLine\":22,\"endLine\":22}},\"211\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"item\"}}],\"loc\":{\"startLine\":22,\"endLine\":22}},\"212\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"checkedValues\"}}],\"loc\":{\"startLine\":22,\"endLine\":22}},\"221\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"toggleCheckbox\"},\"arguments\":[]}}],\"loc\":{\"startLine\":37,\"endLine\":37},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"223\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"checked\"}}],\"loc\":{\"startLine\":37,\"endLine\":37}},\"224\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"checked\"}}],\"loc\":{\"startLine\":37,\"endLine\":37}},\"html\":\"

Working with Checkboxs

Multiple chechboxes bound to an array

HTML
\\n   <button lw-on:click='toggleCheckboxes()'>Toggle Checkboxes</button>\\n   <div lw-for='item, $index in items'>\\n      <input type='checkbox' lw-bind:value='item' lw-model='checkedValues'> \\n      <span lw>item</span>\\n   </div>\\n   <span lw>checkedValues</span>\\n\\n
Javascript
\\n   class extends LWElement {\\n      items = ['one', 'two', 'three'];\\n      toggleCheckboxes() {\\n         if (this.checkedValues.length) {\\n            this.checkedValues.length = 0;\\n         } else {\\n            this.checkedValues = [...this.items];\\n         }\\n      }\\n      checkedValues = [];\\n   }\\n\\n

Single checkbox bound to a boolean value

HTML
\\n   <button lw-on:click='toggleCheckbox()'>Toggle Checkbox</button>\\n   <div>\\n      <input type='checkbox' lw-model='checked'>\\n      <span lw>checked</span>\\n   </div>\\n\\n
Javascript
\\n   class extends LWElement {\\n      checked = false;\\n      toggleCheckbox() {\\n         this.checked = !this.checked;\\n      }\\n   }\\n\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-07\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-07',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n\n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n // Multiple chechboxes bound to an array\n items = ['one', 'two', 'three'];\n toggleCheckboxes() {\n if (this.checkedValues.length) {\n this.checkedValues.length = 0;\n } else {\n this.checkedValues = [...this.items];\n }\n }\n checkedValues = [];\n\n // Single checkbox bound to a boolean value\n checked = false;\n toggleCheckbox() {\n this.checked = !this.checked;\n }\n }\n);\n", "export default {\"233\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"chooseTwo\"},\"arguments\":[]}}],\"loc\":{\"startLine\":17,\"endLine\":17},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"234\":{\"astItems\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"items\"}}],\"loc\":{\"startLine\":17,\"endLine\":17},\"itemExpr\":\"item\",\"indexExpr\":\"$index\",\"itemsExpr\":\"items\"},\"236\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"item\"}}],\"loc\":{\"startLine\":17,\"endLine\":17},\"lwType\":\"lw-bind\",\"lwValue\":\"value\"},\"237\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"picked\"}}],\"loc\":{\"startLine\":17,\"endLine\":17}},\"238\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"item\"}}],\"loc\":{\"startLine\":17,\"endLine\":17}},\"239\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"picked\"}}],\"loc\":{\"startLine\":17,\"endLine\":17}},\"html\":\"

Working with Radio Buttons

HTML
\\n   <button lw-on:click='chooseTwo()'>Choose Two</button>\\n   <div lw-for='item, $index in items'>\\n      <input type='radio' lw-bind:value='item' lw-model='picked'>\\n      <span lw>item</span>\\n   </div>\\n   <span lw>picked</span>\\n\\n
Javascript
\\n   class extends LWElement {\\n      items = ['one', 'two', 'three'];\\n      chooseTwo() {\\n         this.picked = 'two';\\n      }\\n   }\\n\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n }\\n \\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-08\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-08',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n items = ['one', 'two', 'three'];\n chooseTwo() {\n this.picked = 'two';\n }\n picked;\n }\n);\n", "export default {\"248\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"selectTwo\"},\"arguments\":[]}}],\"loc\":{\"startLine\":17,\"endLine\":17},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"249\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"selectedOption\"}}],\"loc\":{\"startLine\":17,\"endLine\":17}},\"250\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"item\"}}],\"loc\":{\"startLine\":17,\"endLine\":17}},\"251\":{\"astItems\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"items\"}}],\"loc\":{\"startLine\":17,\"endLine\":17},\"itemExpr\":\"item\",\"indexExpr\":\"$index\",\"itemsExpr\":\"items\"},\"252\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"selectedOption\"}}],\"loc\":{\"startLine\":17,\"endLine\":17}},\"html\":\"

Working with Select

HTML
\\n   <button lw-on:click='selectTwo()'>Select Two</button>\\n   <select lw-model='selectedOption'>\\n      <option lw lw-for='item, $index in items'>item</option>\\n   </select>\\n   <span lw> selectedOption </span>\\n\\n
Javascript
\\n   class extends LWElement {\\n      items = ['one', 'two', 'three'];\\n      selectTwo() {\\n         this.selectedOption = 'two';\\n      }\\n      selectedOption;\\n   }\\n\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-09\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-09',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n items = ['one', 'two', 'three'];\n selectTwo() {\n this.selectedOption = 'two';\n }\n selectedOption;\n }\n);\n", "export default {\"261\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"toggleAllOptions\"},\"arguments\":[]}}],\"loc\":{\"startLine\":21,\"endLine\":21},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"262\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"selectedOptions\"}}],\"loc\":{\"startLine\":21,\"endLine\":21}},\"263\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"selectedOptions\"}}],\"loc\":{\"startLine\":21,\"endLine\":21}},\"265\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"item\"}}],\"loc\":{\"startLine\":21,\"endLine\":21}},\"266\":{\"astItems\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"items\"}}],\"loc\":{\"startLine\":21,\"endLine\":21},\"itemExpr\":\"item\",\"indexExpr\":\"$index\",\"itemsExpr\":\"items\"},\"html\":\"

Working with Multiple Select

HTML
\\n   <button lw-on:click='toggleAllOptions()'>Toggle All</button>\\n   <div lw> selectedOptions </div>\\n   <select lw-model='selectedOptions' multiple>\\n      <option lw lw-for='item, $index in items'>item</option>\\n   </select>\\n\\n
Javascript
\\n   class extends LWElement {\\n      items = ['one', 'two', 'three'];\\n      toggleAllOptions() {\\n         if (this.selectedOptions.length) {\\n            this.selectedOptions.length = 0;\\n         } else {\\n            this.selectedOptions = [...this.items];\\n         }\\n      }\\n      selectedOptions = [];\\n   }\\n\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-10\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-10',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n items = ['one', 'two', 'three'];\n toggleAllOptions() {\n if (this.selectedOptions.length) {\n this.selectedOptions.length = 0;\n } else {\n this.selectedOptions = [...this.items];\n }\n }\n selectedOptions = [];\n }\n);\n", "export default {\"275\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"selectRange50\"},\"arguments\":[]}}],\"loc\":{\"startLine\":14,\"endLine\":14},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"277\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"selectedRange\"}}],\"loc\":{\"startLine\":14,\"endLine\":14}},\"278\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"selectedRange\"}}],\"loc\":{\"startLine\":14,\"endLine\":14}},\"html\":\"

Working with Range

HTML
\\n   <button lw-on:click='selectRange50()'>Select Range 50</button> <br>\\n   <input type='range' lw-model='selectedRange'>\\n   <span lw>selectedRange</span>\\n\\n
Javascript
\\n   class extends LWElement {\\n      selectRange50() {\\n         this.selectedRange = 50;\\n      }\\n      selectedRange = 10;\\n   }\\n\\n

\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-11\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-11',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n selectRange50() {\n this.selectedRange = 50;\n }\n\n selectedRange = 10;\n }\n);\n", "export default {\"html\":\"

Working with Events Bus

pub.html
\\n   <div class='pub'>\\n      <span>Time Publisher</span>\\n      <span lw>time</span>\\n   </div>\\n\\n
pub.js
\\n   class extends LWElement {\\n      constructor() {\\n         super(ast);\\n         setInterval(() => {\\n            this.time = new Date(Date.now()).toLocaleString();\\n            leanweb.eventBus.dispatchEvent('time', this.time);\\n            this.update();\\n         }, 1000);\\n      }\\n   }\\n\\n
sub.html
\\n   <div class='sub'>\\n      <span>Time Subscriber</span>\\n      <span lw>time</span>\\n      <div class='buttons'>\\n         <button lw-bind:disabled='subscribed' lw-on:click='sub()'>Subscribe Time</button>\\n         <button lw-bind:disabled='!subscribed' lw-on:click='unsub()'>Unsubscribe Time</button>\\n      </div>\\n   </div>\\n\\n
sub.js
\\n   class extends LWElement {\\n      sub() {\\n         this.listener = leanweb.eventBus.addEventListener('time', event => {\\n            this.time = event.data;\\n            this.update();\\n         });\\n         this.subscribed = true;\\n      }\\n\\n      unsub() {\\n         leanweb.eventBus.removeEventListener(this.listener);\\n         this.subscribed = false;\\n      }\\n   }\\n\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-12\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-12',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n }\n);\n", "export default {\"294\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"LogicalExpression\",\"left\":{\"type\":\"Identifier\",\"name\":\"time\"},\"operator\":\"??\",\"right\":{\"type\":\"StringLiteral\",\"extra\":{\"rawValue\":\"-\",\"raw\":\"'-'\"},\"value\":\"-\"}}}],\"loc\":{\"startLine\":1,\"endLine\":1}},\"html\":\"
Time Publisher
\",\"css\":\"@import \\\"global-styles.css\\\";\\n.pub {\\n width: 300px;\\n height: 100px;\\n border: 1px solid gray;\\n margin: auto;\\n display: grid;\\n margin-top: 20px;\\n\\n span {\\n margin: auto;\\n }\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-12-pub\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-sections-code-12-pub',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n setInterval(() => {\n this.time = new Date(Date.now()).toLocaleString();\n leanweb.eventBus.dispatchEvent('time', this.time);\n this.update();\n }, 1000);\n }\n }\n);\n", "export default {\"296\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"LogicalExpression\",\"left\":{\"type\":\"Identifier\",\"name\":\"time\"},\"operator\":\"??\",\"right\":{\"type\":\"StringLiteral\",\"extra\":{\"rawValue\":\"-\",\"raw\":\"'-'\"},\"value\":\"-\"}}}],\"loc\":{\"startLine\":1,\"endLine\":1}},\"298\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"subscribed\"}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-bind\",\"lwValue\":\"disabled\"},\"299\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"sub\"},\"arguments\":[]}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"300\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"UnaryExpression\",\"operator\":\"!\",\"prefix\":true,\"argument\":{\"type\":\"Identifier\",\"name\":\"subscribed\"}}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-bind\",\"lwValue\":\"disabled\"},\"301\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"unsub\"},\"arguments\":[]}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"html\":\"
Time Subscriber
\",\"css\":\"@import \\\"global-styles.css\\\";\\n.sub {\\n width: 300px;\\n height: 100px;\\n border: 1px solid gray;\\n margin: auto;\\n display: grid;\\n margin-top: 10px;\\n\\n span {\\n margin: auto;\\n }\\n\\n .buttons {\\n margin: auto;\\n }\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-12-sub\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-sections-code-12-sub',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n }\n sub() {\n this.listener = leanweb.eventBus.addEventListener('time', event => {\n this.time = event.data;\n this.update();\n });\n this.subscribed = true;\n }\n\n unsub() {\n leanweb.eventBus.removeEventListener(this.listener);\n this.subscribed = false;\n }\n }\n);\n", "export default {\"310\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"reset\"},\"arguments\":[]}}],\"loc\":{\"startLine\":25,\"endLine\":25},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"311\":{\"astItems\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"array2d\"}}],\"loc\":{\"startLine\":25,\"endLine\":25},\"itemExpr\":\"row\",\"itemsExpr\":\"array2d\"},\"312\":{\"astItems\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"row\"}}],\"loc\":{\"startLine\":25,\"endLine\":25},\"itemExpr\":\"cell\",\"indexExpr\":\"$i\",\"itemsExpr\":\"row\"},\"314\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"MemberExpression\",\"object\":{\"type\":\"Identifier\",\"name\":\"row\"},\"computed\":true,\"property\":{\"type\":\"Identifier\",\"name\":\"$i\"}}}],\"loc\":{\"startLine\":25,\"endLine\":25}},\"315\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"cell\"}}],\"loc\":{\"startLine\":25,\"endLine\":25}},\"html\":\"

Working with 2D array

HTML
\\n   <button lw-on:click='reset()'>Reset</button>\\n   <div lw-for='row in array2d'>\\n      <span lw-for='cell, $i in row'>\\n         <!-- cell is primitive type which is passed by value, -->\\n         <!-- so lw-model uses row[$i] which is passed by reference -->\\n         <input type='number' lw-model='row[$i]'>\\n         <span lw>cell</span>\\n      </span>\\n   </div>\\n\\n
Javascript
\\n   class extends LWElement {\\n      array2d = [\\n         [1, 2, 3],\\n         [4, 5, 6],\\n         [7, 8, 9],\\n      ];\\n\\n      reset() {\\n         this.array2d.forEach(a => a.fill(0));\\n      }\\n   }\\n\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n}\\n\\ninput {\\n margin: 3px;\\n}\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-13\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-13',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n hljs.registerLanguage('javascript', javascript);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n array2d = [\n [1, 2, 3],\n [4, 5, 6],\n [7, 8, 9],\n ];\n\n reset() {\n this.array2d.forEach(a => a.fill(0));\n }\n }\n);\n", "export default {\"html\":\"

lw init

Run this command in an empty directory to create a ready to go web component project.

lw serve

Start a dev server and monitor for any source code changes.

lw dist

Build your project and get the output ready for production.

lw upgrade

Upgrade project runtime after Leanweb tools upgraded.

lw help

Get help information for more commands.

\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n border-top: 1px solid tomato;\\n}\\n\\nh2 {\\n font-weight: 500;\\n /* font-size: 28px; */\\n}\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-commands\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-sections-commands',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n }\n\n // derived from LWElement\n // domReady() {\n // console.log('Dom is ready');\n // }\n\n // inputReady() {\n // console.log('input is ready');\n // }\n\n // derived from HTMLElement\n // connectedCallback() {\n // console.log(this.isConnected);\n // console.log('Element added to page.');\n // }\n\n // disconnectedCallback() {\n // console.log('Element removed from page.');\n // }\n\n // adoptedCallback() {\n // console.log('Element moved to new page.');\n // }\n\n // static get observedAttributes() {\n // return [];\n // }\n\n // attributeChangedCallback(name, oldValue, newValue) {\n // console.log(name, oldValue, newValue);\n // }\n }\n);\n", "export default {\"html\":\"

How to update DOM of another component?

Javascript
\\n   document.querySelector('demo-root').shadowRoot.querySelector('demo-login').update();\\n   \\n   

This is to update the DOM of the demo-login component enclosed by demo-root component.

How to update DOMs of all components?

Javascript
\\n   leanweb.eventBus.dispatchEvent('update');\\n   \\n   

All instances of LWElement listen on update event to update their DOMs. Therefore, simply dispatching the update event will trigger DOMs of all components to update themselves. Only changed part will get updated.

How to do component routing?

HTML
\\n   <demo-login lw-if='leanweb.urlHash==='#/login''></demo-login>\\n   <demo-signup lw-if='leanweb.urlHash==='#/signup''></demo-signup>\\n   <demo-dashboard lw-if='leanweb.urlHash==='#/dashboard''></demo-dashboard>\\n   

How to update DOM when url hash changes?

Javascript
\\n   customElements.define('demo-root',\\n   class extends LWElement { \\n      constructor() {\\n         super(ast);\\n      }\\n\\n      // If urlHashChanged() is defined as a function, it will be called \\n      // whenever the urlHash changes. This could be useful to update the \\n      // DOM on component routing.\\n      urlHashChanged() {\\n         // Called when url hash changes.\\n      }\\n   }\\n   

How to build for production?

Under src/ directory, there is an env.js file and an env/ directory. lw s will use src/env.js, and lw s prod will use src/env/prod.js. You can create additional env files in the src/env/ directory as you need. Other than lw s, lw di and lw e support the same env parameters.

If post-dist file is present in the project root directory, it will be called after lw dist is done. This could be useful to copy dist/* to somewhere else.

A few lw serve parameters

host=0.0.0.0 lw s to listen on all all IPv4 local host addresses.

host=:: lw s to listen on all all local host addresses.

port=9999 lw s to listen on port 9999.

https=./https.js lw s to use https.js to configure https server.

https.js
\\n   const fs = require(\\\"fs\\\");\\n\\n   module.exports = {\\n      cert: fs.readFileSync(__dirname + \\\"/localhost.pem\\\"),\\n      key: fs.readFileSync(__dirname + \\\"/localhost.key.pem\\\"),\\n      passphrase: \\\"12345\\\"\\n   };\\n      

noopen=1 lw s to not open a browser.

A few lw dist parameters

verbose=1 lw di to show verbose dist output.



\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n border-top: 1px solid tomato;\\n}\\n\\nh2 {\\n font-weight: 500;\\n margin-top: 30px;\\n /* font-size: 28px; */\\n}\\n\\nli {\\n margin-bottom: 20px;\\n}\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-howtos\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\n\n\ncustomElements.define('leanweb-app-sections-howtos',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n\n \n hljs.registerLanguage('javascript', javascript);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n }\n);\n", "export default {\"392\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"updateAll\"},\"arguments\":[]}}],\"loc\":{\"startLine\":72,\"endLine\":72},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"393\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"updateRed\"},\"arguments\":[]}}],\"loc\":{\"startLine\":72,\"endLine\":72},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"394\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"updateBlue\"},\"arguments\":[]}}],\"loc\":{\"startLine\":72,\"endLine\":72},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"html\":\"

Update Other Components

It is important to understand that you are responsible to update the DOM of any components that needs to be updated. However, an LWElement's DOM gets updated when:

  1. the component is initialized;
  2. any local lw-on: event is triggered;
  3. any local lw-model: is changed;

You might need to update local or other components DOM when:

Update all components app wide

Javascript
\\n   leanweb.updateComponents();\\n\\n

Update components by tag names

Javascript
\\n   leanweb.updateComponents('demo-root', 'demo-login');\\n\\n

An Example

root.html
\\n   <div class='buttons'>\\n      <button lw-on:click='updateAll()'>Update All</button>\\n      <button lw-on:click='updateRed()'>Update Red</button>\\n      <button lw-on:click='updateBlue()'>Update Blue</button>\\n   </div>\\n\\n   <div class='red'>\\n      <demo-dest-red></demo-dest-red>\\n      <demo-dest-red></demo-dest-red>\\n   </div>\\n   <div class='blue'>\\n      <demo-dest-blue></demo-dest-blue>\\n      <demo-dest-blue></demo-dest-blue>\\n   </div>\\n\\n
root.js
\\n   class extends LWElement {\\n      updateAll() {\\n         // update all components\\n         leanweb.updateComponents();\\n\\n         // update components by exact tag names\\n         // leanweb.updateComponents('demo-dest-red', 'demo-dest-blue');\\n      }\\n\\n      updateRed() {\\n         leanweb.updateComponents('demo-dest-red');\\n      }\\n\\n      updateBlue() {\\n         leanweb.updateComponents('demo-dest-blue');\\n      }\\n   }\\n\\n
dest-red.html
\\n   <div lw>time ?? '-'</div>\\n\\n
dest-red.js
\\n   customElements.define('demo-dest-red',\\n      class extends LWElement {\\n         constructor() {\\n            super(ast);\\n            setInterval(() => {\\n               this.time = new Date(Date.now()).toLocaleString();\\n            }, 1000);\\n         }\\n      }\\n   }\\n\\n
dest-blue.html
\\n   <div lw>time ?? '-'</div>\\n\\n
dest-blue.js
\\n   customElements.define('demo-dest-blue',\\n      class extends LWElement {\\n         constructor() {\\n            super(ast);\\n            setInterval(() => {\\n               this.time = new Date(Date.now()).toLocaleString();\\n            }, 1000);\\n         }\\n      }\\n   }\\n\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n}\\n\\ninput {\\n margin: 3px;\\n}\\n\\n.controls {\\n display: flex;\\n justify-content: center;\\n\\n .buttons {\\n width: 410px;\\n box-sizing: border-box;\\n padding: 10px;\\n border: 1px solid gray;\\n display: flex;\\n justify-content: center;\\n\\n button {\\n margin: 0 5px;\\n }\\n }\\n}\\n\\n.dest {\\n display: flex;\\n justify-content: center;\\n margin-top: 10px;\\n\\n * {\\n box-sizing: border-box;\\n margin: 0 5px;\\n padding: 5px;\\n width: 200px;\\n display: flex;\\n justify-content: center;\\n }\\n}\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-14\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-14',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n updateAll() {\n leanweb.updateComponents();\n }\n\n updateRed() {\n leanweb.updateComponents('leanweb-app-sections-code-14-dest-red');\n }\n\n updateBlue() {\n leanweb.updateComponents('leanweb-app-sections-code-14-dest-blue');\n }\n }\n);\n", "export default {\"397\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"LogicalExpression\",\"left\":{\"type\":\"Identifier\",\"name\":\"time\"},\"operator\":\"??\",\"right\":{\"type\":\"StringLiteral\",\"extra\":{\"rawValue\":\"-\",\"raw\":\"'-'\"},\"value\":\"-\"}}}],\"loc\":{\"startLine\":1,\"endLine\":1}},\"html\":\"
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n border: 1px solid red;\\n}\\n\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-14-dest-red\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-sections-code-14-dest-red',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n setInterval(() => {\n this.time = new Date(Date.now()).toLocaleString();\n }, 1000);\n }\n }\n);\n", "export default {\"398\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"LogicalExpression\",\"left\":{\"type\":\"Identifier\",\"name\":\"time\"},\"operator\":\"??\",\"right\":{\"type\":\"StringLiteral\",\"extra\":{\"rawValue\":\"-\",\"raw\":\"'-'\"},\"value\":\"-\"}}}],\"loc\":{\"startLine\":1,\"endLine\":1}},\"html\":\"
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n border: 1px solid blue;\\n}\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-14-dest-blue\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-sections-code-14-dest-blue',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n setInterval(() => {\n this.time = new Date(Date.now()).toLocaleString();\n }, 1000);\n\n }\n }\n);\n", "export default {\"html\":\"

Parent to listen on child's custom events

parent.html
\\n   <div class='parent'>\\n      <span>Parent</span>\\n      <span lw>quantity</span>\\n      <demo-child lw-on:add='onAdd($event)' </demo-child>\\n   </div>\\n\\n
parent.js
\\n   class extends LWElement {\\n      quantity = 0;\\n      \\n      onAdd(event) {\\n         this.quantity += event.detail;\\n      }\\n   }\\n\\n
child.html
\\n   <div class='child'>\\n      <span>Child</span>\\n      <div class='buttons'>\\n         <button lw-on:click='add(1)'>Add One</button>\\n         <button lw-on:click='add(-1)'>Remove One</button>\\n      </div>\\n   </div>\\n\\n
child.js
\\n   class extends LWElement {\\n      add(by) {\\n         this.dispatchEvent(new CustomEvent('add', {\\n            detail: by\\n         }));\\n      }\\n   }\\n\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n }\\n \\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-15\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-15',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n }\n);\n", "export default {\"414\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"quantity\"}}],\"loc\":{\"startLine\":1,\"endLine\":1}},\"415\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"onAdd\"},\"arguments\":[{\"type\":\"Identifier\",\"name\":\"$event\"}]}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-on\",\"lwValue\":\"add\"},\"html\":\"
Parent
\",\"css\":\"@import \\\"global-styles.css\\\";\\n.parent {\\n width: 400px;\\n height: 200px;\\n border: 1px solid gray;\\n margin: auto;\\n display: grid;\\n margin-top: 20px;\\n \\n span {\\n margin: auto;\\n }\\n \\n button {\\n margin: auto;\\n }\\n }\\n \\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-15-parent\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-sections-code-15-parent',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n }\n\n quantity = 0;\n\n onAdd(event) {\n this.quantity += event.detail;\n }\n }\n);\n", "export default {\"418\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"add\"},\"arguments\":[{\"type\":\"NumericLiteral\",\"extra\":{\"rawValue\":1,\"raw\":\"1\"},\"value\":1}]}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"419\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"add\"},\"arguments\":[{\"type\":\"UnaryExpression\",\"operator\":\"-\",\"prefix\":true,\"argument\":{\"type\":\"NumericLiteral\",\"extra\":{\"rawValue\":1,\"raw\":\"1\"},\"value\":1}}]}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"html\":\"
Child
\",\"css\":\"@import \\\"global-styles.css\\\";\\n.child {\\n width: 300px;\\n height: 100px;\\n border: 1px solid gray;\\n margin: auto;\\n display: grid;\\n margin-top: 10px;\\n \\n span {\\n margin: auto;\\n }\\n \\n .buttons {\\n margin: auto;\\n > button {\\n width: 100px;\\n }\\n }\\n }\\n \\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-15-child\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-sections-code-15-child',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n }\n\n add(by) {\n this.dispatchEvent(new CustomEvent('add', {\n detail: by\n }));\n }\n }\n);\n", "export default {\"html\":\"

Child to hold a reference to the parent

parent.html
\\n   <div class='parent'>\\n      <span>Parent</span>\\n      <span lw>quantity</span>\\n      <demo-child lw-input:parent='this' </demo-child>\\n   </div>\\n\\n
parent.js
\\n   class extends LWElement {\\n      quantity = 0;\\n      \\n      add(by) {\\n         this.quantity += by;\\n         this.update();\\n      }\\n   }\\n\\n
child.html
\\n   <div class='child'>\\n      <span>Child</span>\\n      <div class='buttons'>\\n         <button lw-on:click='add(1)'>Add One</button>\\n         <button lw-on:click='add(-1)'>Remove One</button>\\n      </div>\\n   </div>\\n\\n
child.js
\\n   class extends LWElement {\\n      add(by) {\\n         this.parent.add(by);\\n      }\\n   }\\n\\n
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n }\\n \\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-16\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\n\ncustomElements.define('leanweb-app-sections-code-16',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n \n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n }\n);\n", "export default {\"435\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"quantity\"}}],\"loc\":{\"startLine\":1,\"endLine\":1}},\"436\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"ThisExpression\"}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-input\",\"lwValue\":\"parent\"},\"html\":\"
Parent
\",\"css\":\"@import \\\"global-styles.css\\\";\\n.parent {\\n width: 400px;\\n height: 200px;\\n border: 1px solid gray;\\n margin: auto;\\n display: grid;\\n margin-top: 20px;\\n \\n span {\\n margin: auto;\\n }\\n \\n button {\\n margin: auto;\\n }\\n }\\n \\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-16-parent\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-sections-code-16-parent',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n }\n\n quantity = 0;\n\n add(by) {\n this.quantity += by;\n this.update();\n }\n }\n);\n", "export default {\"439\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"add\"},\"arguments\":[{\"type\":\"NumericLiteral\",\"extra\":{\"rawValue\":1,\"raw\":\"1\"},\"value\":1}]}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"440\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"add\"},\"arguments\":[{\"type\":\"UnaryExpression\",\"operator\":\"-\",\"prefix\":true,\"argument\":{\"type\":\"NumericLiteral\",\"extra\":{\"rawValue\":1,\"raw\":\"1\"},\"value\":1}}]}}],\"loc\":{\"startLine\":1,\"endLine\":1},\"lwType\":\"lw-on\",\"lwValue\":\"click\"},\"html\":\"
Child
\",\"css\":\"@import \\\"global-styles.css\\\";\\n.child {\\n width: 300px;\\n height: 100px;\\n border: 1px solid gray;\\n margin: auto;\\n display: grid;\\n margin-top: 10px;\\n \\n span {\\n margin: auto;\\n }\\n \\n .buttons {\\n margin: auto;\\n & > button {\\n width: 100px;\\n }\\n }\\n }\\n \\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-16-child\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../../lib/lw-element.js';\nimport ast from './ast.js';\n\ncustomElements.define('leanweb-app-sections-code-16-child',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n }\n\n add(by) {\n this.parent.add(by);\n }\n }\n);\n", "export default {\"449\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"Identifier\",\"name\":\"world\"}}],\"loc\":{\"startLine\":14,\"endLine\":14}},\"450\":{\"ast\":[{\"type\":\"ExpressionStatement\",\"expression\":{\"type\":\"ConditionalExpression\",\"test\":{\"type\":\"BinaryExpression\",\"left\":{\"type\":\"ThisExpression\"},\"operator\":\"instanceof\",\"right\":{\"type\":\"Identifier\",\"name\":\"HTMLElement\"}},\"consequent\":{\"type\":\"StringLiteral\",\"extra\":{\"rawValue\":\"\u2764\uFE0F\",\"raw\":\"'\u2764\uFE0F'\"},\"value\":\"\u2764\uFE0F\"},\"alternate\":{\"type\":\"StringLiteral\",\"extra\":{\"rawValue\":\"hate\",\"raw\":\"'hate'\"},\"value\":\"hate\"}}}],\"loc\":{\"startLine\":14,\"endLine\":14}},\"html\":\"

lw

HTML
\\n   <div>\\n      Hello <span lw>world</span>!\\n   </div>\\n   <div>\\n      I <span lw>this instanceof HTMLElement ? '\u2764\uFE0F' : '\uD83D\uDC94'</span> Leanweb!\\n   </div>\\n\\n
Javascript
\\n   class extends LWElement {\\n      world = 'Leanweb';\\n   }\\n\\n
Hello !
I Leanweb!
\",\"css\":\"@import \\\"global-styles.css\\\";\\n:host {\\n display: block;\\n padding: 20px 0;\\n border-top: 1px solid tomato;\\n}\\n[lw-false],[lw-for]{display:none !important;}\\n\",\"componentFullName\":\"leanweb-app-sections-code-00\",\"runtimeVersion\":\"3.0.4\",\"builderVersion\":\"3.0.4\"};", "import LWElement from './../../../lib/lw-element.js';\nimport ast from './ast.js';\n\nimport hljs from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/core.min.js';\nimport javascript from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/javascript.min.js';\nimport xml from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/xml.min.js';\nimport css from 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/es/languages/css.min.js';\n\ncustomElements.define('leanweb-app-sections-code-00',\n class extends LWElement { // LWElement extends HTMLElement\n constructor() {\n super(ast);\n hljs.registerLanguage('javascript', javascript);\n hljs.registerLanguage('html', xml);\n hljs.registerLanguage('css', css);\n this.shadowRoot.querySelectorAll('pre code').forEach((block) => {\n hljs.highlightElement(block);\n });\n }\n\n world = 'Leanweb';\n }\n);\n"], "mappings": "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", "names": ["binaryOperations", "a", "b", "assignmentOperations", "c", "logicalOperators", "unaryOperators", "updateOperators", "operator", "prefix", "callFunction", "node", "context", "callee", "evalNode", "args", "argument", "nodeHandlers", "immediateCtx", "immediateContext", "test", "consequent", "alternate", "object", "member", "arr", "elem", "acc", "prop", "hitContext", "contextObj", "qualifiedContext", "evaluate", "ast", "loc", "astNode", "e", "LWEvent", "eventName", "data", "LWEventListener", "_LWEventListener", "callback", "LWEventBus", "listener", "events", "LWEventBus", "tagNames", "tagName", "hash", "hashPath", "s", "hashParams", "paramArray", "key", "value", "v", "ret", "k", "component", "hasMethod", "obj", "name", "desc", "nextAllSiblings", "el", "selector", "siblings", "LWElement", "ast", "node", "_", "rootNode", "treeWalker", "methodNames", "proto", "inputNode", "attr", "attrName", "attrValue", "interpolation", "context", "parsed", "evaluate", "eventNode", "me", "eventType", "event", "eventContext", "promises", "p", "modelNode", "astModel", "object", "propertyExpr", "index", "i", "option", "newValue", "evalNode", "ifNode", "hasLwFalse", "classNode", "bindNode", "initClass", "forNode", "items", "rendered", "currentNode", "item", "itemContext", "ast_default", "LWElement", "ast_default", "ast_default", "LWElement", "ast_default", "width", "ast_default", "LWElement", "ast_default", "ast_default", "LWElement", "ast_default", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "event", "node", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "index", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "LWElement", "ast_default", "ast_default", "LWElement", "ast_default", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "LWElement", "ast_default", "ast_default", "LWElement", "ast_default", "event", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "a", "ast_default", "LWElement", "ast_default", "ast_default", "hljs", "javascript", "LWElement", "ast_default", "block", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "LWElement", "ast_default", "ast_default", "LWElement", "ast_default", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "LWElement", "ast_default", "event", "ast_default", "LWElement", "ast_default", "by", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block", "ast_default", "LWElement", "ast_default", "by", "ast_default", "LWElement", "ast_default", "by", "ast_default", "hljs", "javascript", "xml", "css", "LWElement", "ast_default", "block"] }