// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`basic widget properties reconciliation alg works for t-foreach in t-foreach 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; context = Object.create(context); var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); var _2 = context['state'].s; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; if (!(_2 instanceof Array)) { _3 = Object.keys(_2); _4 = Object.values(_2); } var _length3 = _3.length; for (let i1 = 0; i1 < _length3; i1++) { context.section_first = i1 === 0; context.section_last = i1 === _length3 - 1; context.section_index = i1; context.section = _3[i1]; context.section_value = _4[i1]; var _5 = context['section'].blips; if (!_5) { throw new Error('QWeb error: Invalid loop expression')} var _6 = _7 = _5; if (!(_5 instanceof Array)) { _6 = Object.keys(_5); _7 = Object.values(_5); } var _length6 = _6.length; for (let i2 = 0; i2 < _length6; i2++) { context.blip_first = i2 === 0; context.blip_last = i2 === _length6 - 1; context.blip_index = i2; context.blip = _6[i2]; context.blip_value = _7[i2]; //COMPONENT let k10 = \`__11__\${i1}__\${i2}__\`; let w9 = k10 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k10]] : false; let props9 = {blip:context['blip']}; if (w9 && w9.__owl__.currentFiber && !w9.__owl__.vnode) { w9.destroy(); w9 = false; } if (w9) { w9.__updateProps(props9, extra.fiber, undefined, undefined); let pvnode = w9.__owl__.pvnode; c1.push(pvnode); } else { let componentKey9 = \`Child\`; let W9 = context.constructor.components[componentKey9] || QWeb.components[componentKey9]|| context['Child']; if (!W9) {throw new Error('Cannot find the definition of component \\"' + componentKey9 + '\\"')} w9 = new W9(parent, props9); parent.__owl__.cmap[k10] = w9.__owl__.id; let def8 = w9.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k10, hook: {remove() {},destroy(vn) {w9.destroy();}}}); const fiber = w9.__owl__.currentFiber; def8.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); c1.push(pvnode); w9.__owl__.pvnode = pvnode; } w9.__owl__.parentLastFiberId = extra.fiber.id; } } return vn1; }" `; exports[`basic widget properties t-key on a component with t-if, and a sibling component 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); if (false) { const nodeKey2 = 'str'; //COMPONENT let k5 = \`__6__\` + nodeKey2; let w4 = k5 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k5]] : false; let props4 = {}; if (w4 && w4.__owl__.currentFiber && !w4.__owl__.vnode) { w4.destroy(); w4 = false; } if (w4) { w4.__updateProps(props4, extra.fiber, undefined, undefined); let pvnode = w4.__owl__.pvnode; c1.push(pvnode); } else { let componentKey4 = \`Child\`; let W4 = context.constructor.components[componentKey4] || QWeb.components[componentKey4]|| context['Child']; if (!W4) {throw new Error('Cannot find the definition of component \\"' + componentKey4 + '\\"')} w4 = new W4(parent, props4); parent.__owl__.cmap[k5] = w4.__owl__.id; let def3 = w4.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k5, hook: {remove() {},destroy(vn) {w4.destroy();}}}); const fiber = w4.__owl__.currentFiber; def3.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); c1.push(pvnode); w4.__owl__.pvnode = pvnode; } w4.__owl__.parentLastFiberId = extra.fiber.id; } //COMPONENT let k9 = \`__10__\`; let w8 = k9 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k9]] : false; let props8 = {}; if (w8 && w8.__owl__.currentFiber && !w8.__owl__.vnode) { w8.destroy(); w8 = false; } if (w8) { w8.__updateProps(props8, extra.fiber, undefined, undefined); let pvnode = w8.__owl__.pvnode; c1.push(pvnode); } else { let componentKey8 = \`Child\`; let W8 = context.constructor.components[componentKey8] || QWeb.components[componentKey8]|| context['Child']; if (!W8) {throw new Error('Cannot find the definition of component \\"' + componentKey8 + '\\"')} w8 = new W8(parent, props8); parent.__owl__.cmap[k9] = w8.__owl__.id; let def7 = w8.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k9, hook: {remove() {},destroy(vn) {w8.destroy();}}}); const fiber = w8.__owl__.currentFiber; def7.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); c1.push(pvnode); w8.__owl__.pvnode = pvnode; } w8.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`class and style attributes with t-component dynamic t-att-style is properly added and updated on widget root el 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; const _6 = context['state'].style; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined).then(()=>{if (w3.__owl__.isDestroyed) {return};w3.el.style=_6;});; let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`child\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['child']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.style = _6;}};}); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`class and style attributes with t-component t-att-class is properly added/removed on widget root el (v2) 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; context.__owl__.refs = context.__owl__.refs || {}; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; const ref6 = \`child\`; let _7 = {'a':true}; Object.assign(_7, {b:context['state'].b}) let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`Child\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['Child']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {insert(vn) {context.__owl__.refs[ref6] = w3;},remove() {},destroy(vn) {w3.destroy();delete context.__owl__.refs[ref6];}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){}};}); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.classObj=_7; w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`class and style attributes with t-component t-att-class is properly added/removed on widget root el (v2) 2`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; var h = this.h; let _9 = {'c':true}; Object.assign(_9, utils.toObj({d:context['state'].d})) let c10 = [], p10 = {key:10,class:_9}; var vn10 = h('span', p10, c10); return vn10; }" `; exports[`class and style attributes with t-component t-att-class is properly added/removed on widget root el (v3) 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; context.__owl__.refs = context.__owl__.refs || {}; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; const ref6 = \`child\`; let _7 = {'a':true}; Object.assign(_7, utils.toObj(context['state'].b?'b':'')) let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`Child\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['Child']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {insert(vn) {context.__owl__.refs[ref6] = w3;},remove() {},destroy(vn) {w3.destroy();delete context.__owl__.refs[ref6];}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){}};}); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.classObj=_7; w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`class and style attributes with t-component t-att-class is properly added/removed on widget root el (v3) 2`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; var h = this.h; let _9 = {'c':true}; Object.assign(_9, utils.toObj(context['state'].d?'d':'')) let c10 = [], p10 = {key:10,class:_9}; var vn10 = h('span', p10, c10); return vn10; }" `; exports[`composition sub components with some state rendered in a loop 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; context = Object.create(context); var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); var _2 = context['state'].numbers; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; if (!(_2 instanceof Array)) { _3 = Object.keys(_2); _4 = Object.values(_2); } var _length3 = _3.length; for (let i1 = 0; i1 < _length3; i1++) { context.number_first = i1 === 0; context.number_last = i1 === _length3 - 1; context.number_index = i1; context.number = _3[i1]; context.number_value = _4[i1]; const nodeKey5 = context['number']; //COMPONENT let k8 = \`__9__\` + nodeKey5; let w7 = k8 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k8]] : false; let props7 = {}; if (w7 && w7.__owl__.currentFiber && !w7.__owl__.vnode) { w7.destroy(); w7 = false; } if (w7) { w7.__updateProps(props7, extra.fiber, undefined, undefined); let pvnode = w7.__owl__.pvnode; c1.push(pvnode); } else { let componentKey7 = \`ChildWidget\`; let W7 = context.constructor.components[componentKey7] || QWeb.components[componentKey7]|| context['ChildWidget']; if (!W7) {throw new Error('Cannot find the definition of component \\"' + componentKey7 + '\\"')} w7 = new W7(parent, props7); parent.__owl__.cmap[k8] = w7.__owl__.id; let def6 = w7.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k8, hook: {remove() {},destroy(vn) {w7.destroy();}}}); const fiber = w7.__owl__.currentFiber; def6.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); c1.push(pvnode); w7.__owl__.pvnode = pvnode; } w7.__owl__.parentLastFiberId = extra.fiber.id; } return vn1; }" `; exports[`composition t-component with dynamic value 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = (context['state'].widget); let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`composition t-component with dynamic value 2 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`Widget\${context['state'].widget}\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`dynamic t-props basic use 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = Object.assign({}, context['some'].obj); if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`Child\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['Child']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`other directives with t-component t-on with getter as handler 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); var _2 = context['state'].counter; if (_2 || _2 === 0) { c1.push({text: _2}); } //COMPONENT let k5 = \`__6__\`; let w4 = k5 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k5]] : false; let props4 = {}; if (w4 && w4.__owl__.currentFiber && !w4.__owl__.vnode) { w4.destroy(); w4 = false; } if (w4) { w4.__updateProps(props4, extra.fiber, undefined, undefined); let pvnode = w4.__owl__.pvnode; c1.push(pvnode); } else { let componentKey4 = \`Child\`; let W4 = context.constructor.components[componentKey4] || QWeb.components[componentKey4]|| context['Child']; if (!W4) {throw new Error('Cannot find the definition of component \\"' + componentKey4 + '\\"')} w4 = new W4(parent, props4); parent.__owl__.cmap[k5] = w4.__owl__.id; let def3 = w4.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k5, hook: {remove() {},destroy(vn) {w4.destroy();}}}); const fiber = w4.__owl__.currentFiber; def3.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.addEventListener('ev', function (e) {const fn = owner['handler'];if (fn) { fn.call(owner, e); } else { owner.handler; }});}};}); c1.push(pvnode); w4.__owl__.pvnode = pvnode; } w4.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`other directives with t-component t-on with handler bound to argument 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`child\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['child']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.addEventListener('ev', function (e) {const fn = owner['onEv'];if (fn) { fn.call(owner, 3, e); } else { owner.onEv; }});}};}); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`other directives with t-component t-on with handler bound to empty object (with non empty inner string) 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`child\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['child']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.addEventListener('ev', function (e) {const fn = owner['onEv'];if (fn) { fn.call(owner, {}, e); } else { owner.onEv; }});}};}); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`other directives with t-component t-on with handler bound to empty object 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`child\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['child']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.addEventListener('ev', function (e) {const fn = owner['onEv'];if (fn) { fn.call(owner, {}, e); } else { owner.onEv; }});}};}); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`other directives with t-component t-on with handler bound to object 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`child\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['child']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.addEventListener('ev', function (e) {const fn = owner['onEv'];if (fn) { fn.call(owner, {val:3}, e); } else { owner.onEv; }});}};}); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`other directives with t-component t-on with inline statement 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); var _2 = context['state'].counter; if (_2 || _2 === 0) { c1.push({text: _2}); } //COMPONENT let k5 = \`__6__\`; let w4 = k5 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k5]] : false; let props4 = {}; if (w4 && w4.__owl__.currentFiber && !w4.__owl__.vnode) { w4.destroy(); w4 = false; } if (w4) { w4.__updateProps(props4, extra.fiber, undefined, undefined); let pvnode = w4.__owl__.pvnode; c1.push(pvnode); } else { let componentKey4 = \`Child\`; let W4 = context.constructor.components[componentKey4] || QWeb.components[componentKey4]|| context['Child']; if (!W4) {throw new Error('Cannot find the definition of component \\"' + componentKey4 + '\\"')} w4 = new W4(parent, props4); parent.__owl__.cmap[k5] = w4.__owl__.id; let def3 = w4.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k5, hook: {remove() {},destroy(vn) {w4.destroy();}}}); const fiber = w4.__owl__.currentFiber; def3.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.addEventListener('ev', function (e) {const fn = owner['state.counter++'];if (fn) { fn.call(owner, e); } else { owner.state.counter++; }});}};}); c1.push(pvnode); w4.__owl__.pvnode = pvnode; } w4.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`other directives with t-component t-on with no handler (only modifiers) 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`ComponentA\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['ComponentA']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.addEventListener('ev', function (e) {const fn = owner['onEv'];if (fn) { fn.call(owner, e); } else { owner.onEv; }});}};}); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`other directives with t-component t-on with prevent and self modifiers (order matters) 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`Child\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['Child']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.addEventListener('ev', function (e) {e.preventDefault();if (e.target !== vn.elm) {return}const fn = owner['onEv'];if (fn) { fn.call(owner, e); } else { owner.onEv; }});}};}); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`other directives with t-component t-on with self and prevent modifiers (order matters) 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`child\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['child']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.addEventListener('ev', function (e) {if (e.target !== vn.elm) {return}e.preventDefault();const fn = owner['onEv'];if (fn) { fn.call(owner, e); } else { owner.onEv; }});}};}); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`other directives with t-component t-on with self modifier 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`child\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['child']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.addEventListener('ev-1', function (e) {const fn = owner['onEv1'];if (fn) { fn.call(owner, e); } else { owner.onEv1; }});vn.elm.addEventListener('ev-2', function (e) {if (e.target !== vn.elm) {return}const fn = owner['onEv2'];if (fn) { fn.call(owner, e); } else { owner.onEv2; }});}};}); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`other directives with t-component t-on with stop and/or prevent modifiers 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, undefined, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`child\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['child']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; let def2 = w3.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.addEventListener('ev-1', function (e) {e.stopPropagation();const fn = owner['onEv1'];if (fn) { fn.call(owner, e); } else { owner.onEv1; }});vn.elm.addEventListener('ev-2', function (e) {e.preventDefault();const fn = owner['onEv2'];if (fn) { fn.call(owner, e); } else { owner.onEv2; }});vn.elm.addEventListener('ev-3', function (e) {e.stopPropagation();e.preventDefault();const fn = owner['onEv3'];if (fn) { fn.call(owner, e); } else { owner.onEv3; }});}};}); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`random stuff/miscellaneous can inject values in tagged templates 1`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); let c2 = [], p2 = {key:2}; var vn2 = h('span', p2, c2); c1.push(vn2); var _3 = context['state'].n; if (_3 || _3 === 0) { c2.push({text: _3}); } return vn1; }" `; exports[`random stuff/miscellaneous snapshotting compiled code 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); const nodeKey2 = 'somestring'; //COMPONENT let k5 = \`__6__\` + nodeKey2; let w4 = k5 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k5]] : false; let props4 = {flag:context['state'].flag}; if (w4 && w4.__owl__.currentFiber && !w4.__owl__.vnode) { w4.destroy(); w4 = false; } if (w4) { w4.__updateProps(props4, extra.fiber, undefined, undefined); let pvnode = w4.__owl__.pvnode; c1.push(pvnode); } else { let componentKey4 = \`child\`; let W4 = context.constructor.components[componentKey4] || QWeb.components[componentKey4]|| context['child']; if (!W4) {throw new Error('Cannot find the definition of component \\"' + componentKey4 + '\\"')} w4 = new W4(parent, props4); parent.__owl__.cmap[k5] = w4.__owl__.id; let def3 = w4.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k5, hook: {remove() {},destroy(vn) {w4.destroy();}}}); const fiber = w4.__owl__.currentFiber; def3.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); c1.push(pvnode); w4.__owl__.pvnode = pvnode; } w4.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`random stuff/miscellaneous t-on with handler bound to dynamic argument on a t-foreach 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; context = Object.create(context); var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); var _2 = context['items']; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; if (!(_2 instanceof Array)) { _3 = Object.keys(_2); _4 = Object.values(_2); } var _length3 = _3.length; for (let i1 = 0; i1 < _length3; i1++) { context.item_first = i1 === 0; context.item_last = i1 === _length3 - 1; context.item_index = i1; context.item = _3[i1]; context.item_value = _4[i1]; const nodeKey5 = context['item']; //COMPONENT let k8 = \`__9__\` + nodeKey5; let arg10 = context['item']; let w7 = k8 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k8]] : false; let props7 = {}; if (w7 && w7.__owl__.currentFiber && !w7.__owl__.vnode) { w7.destroy(); w7 = false; } if (w7) { w7.__updateProps(props7, extra.fiber, undefined, undefined); let pvnode = w7.__owl__.pvnode; c1.push(pvnode); } else { let componentKey7 = \`Child\`; let W7 = context.constructor.components[componentKey7] || QWeb.components[componentKey7]|| context['Child']; if (!W7) {throw new Error('Cannot find the definition of component \\"' + componentKey7 + '\\"')} w7 = new W7(parent, props7); parent.__owl__.cmap[k8] = w7.__owl__.id; let def6 = w7.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k8, hook: {remove() {},destroy(vn) {w7.destroy();}}}); const fiber = w7.__owl__.currentFiber; def6.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; vnode.data.hook = {create(_, vn){vn.elm.addEventListener('ev', function (e) {const fn = owner['onEv'];if (fn) { fn.call(owner, arg10, e); } else { owner.onEv; }});}};}); c1.push(pvnode); w7.__owl__.pvnode = pvnode; } w7.__owl__.parentLastFiberId = extra.fiber.id; } return vn1; }" `; exports[`t-model directive .lazy modifier 1`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('input', p2, c2); c1.push(vn2); let expr2 = context['state']; let k3 = \`__4__\`; p2.props = {value: expr2.text}; extra.handlers[k3] = extra.handlers[k3] || ((ev) => {expr2.text = ev.target.value}); p2.on['change'] = extra.handlers[k3]; let c5 = [], p5 = {key:5}; var vn5 = h('span', p5, c5); c1.push(vn5); var _6 = context['state'].text; if (_6 || _6 === 0) { c5.push({text: _6}); } return vn1; }" `; exports[`t-model directive basic use, on an input 1`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('input', p2, c2); c1.push(vn2); let expr2 = context['state']; let k3 = \`__4__\`; p2.props = {value: expr2.text}; extra.handlers[k3] = extra.handlers[k3] || ((ev) => {expr2.text = ev.target.value}); p2.on['input'] = extra.handlers[k3]; let c5 = [], p5 = {key:5}; var vn5 = h('span', p5, c5); c1.push(vn5); var _6 = context['state'].text; if (_6 || _6 === 0) { c5.push({text: _6}); } return vn1; }" `; exports[`t-model directive basic use, on another key in component 1`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('input', p2, c2); c1.push(vn2); let expr2 = context['some']; let k3 = \`__4__\`; p2.props = {value: expr2.text}; extra.handlers[k3] = extra.handlers[k3] || ((ev) => {expr2.text = ev.target.value}); p2.on['input'] = extra.handlers[k3]; let c5 = [], p5 = {key:5}; var vn5 = h('span', p5, c5); c1.push(vn5); var _6 = context['some'].text; if (_6 || _6 === 0) { c5.push({text: _6}); } return vn1; }" `; exports[`t-model directive in a t-foreach 1`] = ` "function anonymous(context,extra ) { context = Object.create(context); var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); var _2 = context['state']; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; if (!(_2 instanceof Array)) { _3 = Object.keys(_2); _4 = Object.values(_2); } var _length3 = _3.length; for (let i1 = 0; i1 < _length3; i1++) { context.thing_first = i1 === 0; context.thing_last = i1 === _length3 - 1; context.thing_index = i1; context.thing = _3[i1]; context.thing_value = _4[i1]; const nodeKey5 = context['thing'].id; var _6 = 'checkbox'; let c7 = [], p7 = {key:nodeKey5,attrs:{type: _6},on:{}}; var vn7 = h('input', p7, c7); c1.push(vn7); let expr7 = context['thing']; let k8 = \`__9__\` + nodeKey5; p7.props = {checked: expr7.f}; extra.handlers[k8] = extra.handlers[k8] || ((ev) => {expr7.f = ev.target.checked}); p7.on['input'] = extra.handlers[k8]; } return vn1; }" `; exports[`t-model directive on a select 1`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('select', p2, c2); c1.push(vn2); let expr2 = context['state']; let k3 = \`__4__\`; p2.props = {value: expr2.color}; extra.handlers[k3] = extra.handlers[k3] || ((ev) => {expr2.color = ev.target.value}); p2.on['change'] = extra.handlers[k3]; p2.hook = { create: (_, n) => { n.elm.value=expr2.color; }, }; var _5 = ''; let c6 = [], p6 = {key:6,attrs:{value: _5}}; var vn6 = h('option', p6, c6); c2.push(vn6); c6.push({text: \`Please select one\`}); var _7 = 'red'; let c8 = [], p8 = {key:8,attrs:{value: _7}}; var vn8 = h('option', p8, c8); c2.push(vn8); c8.push({text: \`Red\`}); var _9 = 'blue'; let c10 = [], p10 = {key:10,attrs:{value: _9}}; var vn10 = h('option', p10, c10); c2.push(vn10); c10.push({text: \`Blue\`}); let c11 = [], p11 = {key:11}; var vn11 = h('span', p11, c11); c1.push(vn11); c11.push({text: \`Choice: \`}); var _12 = context['state'].color; if (_12 || _12 === 0) { c11.push({text: _12}); } return vn1; }" `; exports[`t-model directive on a sub state key 1`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('input', p2, c2); c1.push(vn2); let expr2 = context['state'].something; let k3 = \`__4__\`; p2.props = {value: expr2.text}; extra.handlers[k3] = extra.handlers[k3] || ((ev) => {expr2.text = ev.target.value}); p2.on['input'] = extra.handlers[k3]; let c5 = [], p5 = {key:5}; var vn5 = h('span', p5, c5); c1.push(vn5); var _6 = context['state'].something.text; if (_6 || _6 === 0) { c5.push({text: _6}); } return vn1; }" `; exports[`t-model directive on an input type=radio 1`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); var _2 = 'radio'; var _3 = 'one'; var _4 = 'One'; let c5 = [], p5 = {key:5,attrs:{type: _2,id: _3,value: _4},on:{}}; var vn5 = h('input', p5, c5); c1.push(vn5); let expr5 = context['state']; let k6 = \`__7__\`; p5.props = {checked:expr5.choice === 'One'}; extra.handlers[k6] = extra.handlers[k6] || ((ev) => {expr5.choice = ev.target.value}); p5.on['click'] = extra.handlers[k6]; var _8 = 'radio'; var _9 = 'two'; var _10 = 'Two'; let c11 = [], p11 = {key:11,attrs:{type: _8,id: _9,value: _10},on:{}}; var vn11 = h('input', p11, c11); c1.push(vn11); let expr11 = context['state']; let k12 = \`__13__\`; p11.props = {checked:expr11.choice === 'Two'}; extra.handlers[k12] = extra.handlers[k12] || ((ev) => {expr11.choice = ev.target.value}); p11.on['click'] = extra.handlers[k12]; let c14 = [], p14 = {key:14}; var vn14 = h('span', p14, c14); c1.push(vn14); c14.push({text: \`Choice: \`}); var _15 = context['state'].choice; if (_15 || _15 === 0) { c14.push({text: _15}); } return vn1; }" `; exports[`t-model directive on an input, type=checkbox 1`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); var _2 = 'checkbox'; let c3 = [], p3 = {key:3,attrs:{type: _2},on:{}}; var vn3 = h('input', p3, c3); c1.push(vn3); let expr3 = context['state']; let k4 = \`__5__\`; p3.props = {checked: expr3.flag}; extra.handlers[k4] = extra.handlers[k4] || ((ev) => {expr3.flag = ev.target.checked}); p3.on['input'] = extra.handlers[k4]; let c6 = [], p6 = {key:6}; var vn6 = h('span', p6, c6); c1.push(vn6); if (context['state'].flag) { c6.push({text: \`yes\`}); } else { c6.push({text: \`no\`}); } return vn1; }" `; exports[`t-slot directive can define and call slots 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); //COMPONENT let k4 = \`__5__\`; let w3 = k4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k4]] : false; let props3 = {}; if (w3 && w3.__owl__.currentFiber && !w3.__owl__.vnode) { w3.destroy(); w3 = false; } if (w3) { w3.__updateProps(props3, extra.fiber, {}, undefined); let pvnode = w3.__owl__.pvnode; c1.push(pvnode); } else { let componentKey3 = \`Dialog\`; let W3 = context.constructor.components[componentKey3] || QWeb.components[componentKey3]|| context['Dialog']; if (!W3) {throw new Error('Cannot find the definition of component \\"' + componentKey3 + '\\"')} w3 = new W3(parent, props3); parent.__owl__.cmap[k4] = w3.__owl__.id; w3.__owl__.slotId = 1; let def2 = w3.__prepare(extra.fiber, {}, undefined); let pvnode = h('dummy', {key: k4, hook: {remove() {},destroy(vn) {w3.destroy();}}}); const fiber = w3.__owl__.currentFiber; def2.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); c1.push(pvnode); w3.__owl__.pvnode = pvnode; } w3.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`t-slot directive can define and call slots 2`] = ` "function anonymous(context,extra ) { let owner = context; var h = this.h; let c8 = [], p8 = {key:8}; var vn8 = h('div', p8, c8); let c9 = [], p9 = {key:9}; var vn9 = h('div', p9, c9); c8.push(vn9); const slot10 = this.constructor.slots[context.__owl__.slotId + '_' + 'header']; if (slot10) { slot10.call(this, context.__owl__.parent, Object.assign({}, extra, {parentNode: c9, vars: extra.vars, parent: extra.parent || owner})); } let c11 = [], p11 = {key:11}; var vn11 = h('div', p11, c11); c8.push(vn11); const slot12 = this.constructor.slots[context.__owl__.slotId + '_' + 'footer']; if (slot12) { slot12.call(this, context.__owl__.parent, Object.assign({}, extra, {parentNode: c11, vars: extra.vars, parent: extra.parent || owner})); } return vn8; }" `; exports[`t-slot directive can define and call slots 3`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = extra.parentNode; Object.assign(context, extra.fiber.scope); let c6 = [], p6 = {key:6}; var vn6 = h('span', p6, c6); c1.push(vn6); c6.push({text: \`header\`}); }" `; exports[`t-slot directive can define and call slots 4`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = extra.parentNode; Object.assign(context, extra.fiber.scope); let c7 = [], p7 = {key:7}; var vn7 = h('span', p7, c7); c1.push(vn7); c7.push({text: \`footer\`}); }" `; exports[`t-slot directive content is the default slot 1`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = extra.parentNode; Object.assign(context, extra.fiber.scope); let c6 = [], p6 = {key:6}; var vn6 = h('span', p6, c6); c1.push(vn6); c6.push({text: \`sts rocks\`}); }" `; exports[`t-slot directive default slot work with text nodes 1`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = extra.parentNode; Object.assign(context, extra.fiber.scope); c1.push({text: \`sts rocks\`}); }" `; exports[`t-slot directive multiple roots are allowed in a default slot 1`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = extra.parentNode; Object.assign(context, extra.fiber.scope); let c6 = [], p6 = {key:6}; var vn6 = h('span', p6, c6); c1.push(vn6); c6.push({text: \`sts\`}); let c7 = [], p7 = {key:7}; var vn7 = h('span', p7, c7); c1.push(vn7); c7.push({text: \`rocks\`}); }" `; exports[`t-slot directive multiple roots are allowed in a named slot 1`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = extra.parentNode; Object.assign(context, extra.fiber.scope); let c6 = [], p6 = {key:6}; var vn6 = h('span', p6, c6); c1.push(vn6); c6.push({text: \`sts\`}); let c7 = [], p7 = {key:7}; var vn7 = h('span', p7, c7); c1.push(vn7); c7.push({text: \`rocks\`}); }" `; exports[`t-slot directive refs are properly bound in slots 1`] = ` "function anonymous(context,extra ) { let owner = context; context.__owl__.refs = context.__owl__.refs || {}; var h = this.h; let c1 = extra.parentNode; Object.assign(context, extra.fiber.scope); let c10 = [], p10 = {key:10,on:{}}; var vn10 = h('button', p10, c10); c1.push(vn10); extra.handlers['click' + 10] = extra.handlers['click' + 10] || function (e) {const fn = context['doSomething'];if (fn) { fn.call(owner, e); } else { context.doSomething; }}; p10.on['click'] = extra.handlers['click' + 10]; const ref11 = \`myButton\`; p10.hook = { create: (_, n) => { context.__owl__.refs[ref11] = n.elm; }, destroy: () => { delete context.__owl__.refs[ref11]; }, }; c10.push({text: \`do something\`}); }" `; exports[`t-slot directive slots are rendered with proper context 1`] = ` "function anonymous(context,extra ) { let owner = context; var h = this.h; let c1 = extra.parentNode; Object.assign(context, extra.fiber.scope); let c10 = [], p10 = {key:10,on:{}}; var vn10 = h('button', p10, c10); c1.push(vn10); extra.handlers['click' + 10] = extra.handlers['click' + 10] || function (e) {const fn = context['doSomething'];if (fn) { fn.call(owner, e); } else { context.doSomething; }}; p10.on['click'] = extra.handlers['click' + 10]; c10.push({text: \`do something\`}); }" `; exports[`t-slot directive slots are rendered with proper context, part 2 1`] = ` "function anonymous(context,extra ) { let owner = context; var h = this.h; var _13 = context['props'].to; let c14 = [], p14 = {key:14,attrs:{href: _13}}; var vn14 = h('a', p14, c14); const slot15 = this.constructor.slots[context.__owl__.slotId + '_' + 'default']; if (slot15) { slot15.call(this, context.__owl__.parent, Object.assign({}, extra, {parentNode: c14, vars: extra.vars, parent: extra.parent || owner})); } return vn14; }" `; exports[`t-slot directive slots are rendered with proper context, part 2 2`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; context = Object.create(context); const scope = Object.create(null); var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); let c2 = [], p2 = {key:2}; var vn2 = h('u', p2, c2); c1.push(vn2); var _3 = context['state'].users; if (!_3) { throw new Error('QWeb error: Invalid loop expression')} var _4 = _5 = _3; if (!(_3 instanceof Array)) { _4 = Object.keys(_3); _5 = Object.values(_3); } var _length4 = _4.length; for (let i1 = 0; i1 < _length4; i1++) { context.user_first = i1 === 0; scope.user_first = context.user_first; context.user_last = i1 === _length4 - 1; scope.user_last = context.user_last; context.user_index = i1; scope.user_index = context.user_index; context.user = _4[i1]; scope.user = context.user; context.user_value = _5[i1]; scope.user_value = context.user_value; const nodeKey6 = context['user'].id; let c7 = [], p7 = {key:nodeKey6}; var vn7 = h('li', p7, c7); c2.push(vn7); //COMPONENT let k10 = \`__11__\` + nodeKey6; let w9 = k10 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k10]] : false; let props9 = {to:'/user/'+context['user'].id}; if (w9 && w9.__owl__.currentFiber && !w9.__owl__.vnode) { w9.destroy(); w9 = false; } if (w9) { w9.__updateProps(props9, extra.fiber, Object.assign({}, scope), undefined); let pvnode = w9.__owl__.pvnode; c7.push(pvnode); } else { let componentKey9 = \`Link\`; let W9 = context.constructor.components[componentKey9] || QWeb.components[componentKey9]|| context['Link']; if (!W9) {throw new Error('Cannot find the definition of component \\"' + componentKey9 + '\\"')} w9 = new W9(parent, props9); parent.__owl__.cmap[k10] = w9.__owl__.id; w9.__owl__.slotId = 1; let def8 = w9.__prepare(extra.fiber, Object.assign({}, scope), undefined); let pvnode = h('dummy', {key: k10, hook: {remove() {},destroy(vn) {w9.destroy();}}}); const fiber = w9.__owl__.currentFiber; def8.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); c7.push(pvnode); w9.__owl__.pvnode = pvnode; } w9.__owl__.parentLastFiberId = extra.fiber.id; } return vn1; }" `; exports[`t-slot directive slots are rendered with proper context, part 2 3`] = ` "function anonymous(context,extra ) { var h = this.h; let c7 = extra.parentNode; Object.assign(context, extra.fiber.scope); c7.push({text: \`User \`}); var _12 = context['user'].name; if (_12 || _12 === 0) { c7.push({text: _12}); } }" `; exports[`t-slot directive slots are rendered with proper context, part 3 1`] = ` "function anonymous(context,extra ) { let owner = context; var h = this.h; var _13 = context['props'].to; let c14 = [], p14 = {key:14,attrs:{href: _13}}; var vn14 = h('a', p14, c14); const slot15 = this.constructor.slots[context.__owl__.slotId + '_' + 'default']; if (slot15) { slot15.call(this, context.__owl__.parent, Object.assign({}, extra, {parentNode: c14, vars: extra.vars, parent: extra.parent || owner})); } return vn14; }" `; exports[`t-slot directive slots are rendered with proper context, part 3 2`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; context = Object.create(context); const scope = Object.create(null); var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); let c2 = [], p2 = {key:2}; var vn2 = h('u', p2, c2); c1.push(vn2); var _3 = context['state'].users; if (!_3) { throw new Error('QWeb error: Invalid loop expression')} var _4 = _5 = _3; if (!(_3 instanceof Array)) { _4 = Object.keys(_3); _5 = Object.values(_3); } var _length4 = _4.length; for (let i1 = 0; i1 < _length4; i1++) { context.user_first = i1 === 0; scope.user_first = context.user_first; context.user_last = i1 === _length4 - 1; scope.user_last = context.user_last; context.user_index = i1; scope.user_index = context.user_index; context.user = _4[i1]; scope.user = context.user; context.user_value = _5[i1]; scope.user_value = context.user_value; const nodeKey6 = context['user'].id; let c7 = [], p7 = {key:nodeKey6}; var vn7 = h('li', p7, c7); c2.push(vn7); var _8 = 'User '+context['user'].name; //COMPONENT let k11 = \`__12__\` + nodeKey6; let w10 = k11 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k11]] : false; let props10 = {to:'/user/'+context['user'].id}; if (w10 && w10.__owl__.currentFiber && !w10.__owl__.vnode) { w10.destroy(); w10 = false; } if (w10) { w10.__updateProps(props10, extra.fiber, Object.assign({}, scope), {_8}); let pvnode = w10.__owl__.pvnode; c7.push(pvnode); } else { let componentKey10 = \`Link\`; let W10 = context.constructor.components[componentKey10] || QWeb.components[componentKey10]|| context['Link']; if (!W10) {throw new Error('Cannot find the definition of component \\"' + componentKey10 + '\\"')} w10 = new W10(parent, props10); parent.__owl__.cmap[k11] = w10.__owl__.id; w10.__owl__.slotId = 1; let def9 = w10.__prepare(extra.fiber, Object.assign({}, scope), {_8}); let pvnode = h('dummy', {key: k11, hook: {remove() {},destroy(vn) {w10.destroy();}}}); const fiber = w10.__owl__.currentFiber; def9.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); c7.push(pvnode); w10.__owl__.pvnode = pvnode; } w10.__owl__.parentLastFiberId = extra.fiber.id; } return vn1; }" `; exports[`t-slot directive slots are rendered with proper context, part 3 3`] = ` "function anonymous(context,extra ) { var h = this.h; let c7 = extra.parentNode; let _8 = extra.fiber.vars._8 Object.assign(context, extra.fiber.scope); if (_8 || _8 === 0) { c7.push({text: _8}); } }" `; exports[`t-slot directive slots are rendered with proper context, part 4 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); var _2 = 'User '+context['state'].user.name; //COMPONENT let k5 = \`__6__\`; let w4 = k5 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k5]] : false; let props4 = {to:'/user/'+context['state'].user.id}; if (w4 && w4.__owl__.currentFiber && !w4.__owl__.vnode) { w4.destroy(); w4 = false; } if (w4) { w4.__updateProps(props4, extra.fiber, {}, {_2}); let pvnode = w4.__owl__.pvnode; c1.push(pvnode); } else { let componentKey4 = \`Link\`; let W4 = context.constructor.components[componentKey4] || QWeb.components[componentKey4]|| context['Link']; if (!W4) {throw new Error('Cannot find the definition of component \\"' + componentKey4 + '\\"')} w4 = new W4(parent, props4); parent.__owl__.cmap[k5] = w4.__owl__.id; w4.__owl__.slotId = 1; let def3 = w4.__prepare(extra.fiber, {}, {_2}); let pvnode = h('dummy', {key: k5, hook: {remove() {},destroy(vn) {w4.destroy();}}}); const fiber = w4.__owl__.currentFiber; def3.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); c1.push(pvnode); w4.__owl__.pvnode = pvnode; } w4.__owl__.parentLastFiberId = extra.fiber.id; return vn1; }" `; exports[`t-slot directive slots are rendered with proper context, part 4 2`] = ` "function anonymous(context,extra ) { var h = this.h; let c1 = extra.parentNode; let _2 = extra.fiber.vars._2 Object.assign(context, extra.fiber.scope); if (_2 || _2 === 0) { c1.push({text: _2}); } }" `; exports[`t-slot directive template can just return a slot 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let owner = context; let result; var h = this.h; const slot10 = this.constructor.slots[context.__owl__.slotId + '_' + 'default']; if (slot10) { let children11= [] result = {} slot10.call(this, context.__owl__.parent, Object.assign({}, extra, {parentNode: children11, vars: extra.vars, parent: extra.parent || owner})); utils.defineProxy(result, children11[0]); } return result; }" `; exports[`top level sub widgets basic use 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; let result; var h = this.h; //COMPONENT let k3 = \`__4__\`; let w2 = k3 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k3]] : false; let vn5 = {}; result = vn5; let props2 = {p:1}; if (w2 && w2.__owl__.currentFiber && !w2.__owl__.vnode) { w2.destroy(); w2 = false; } if (w2) { w2.__updateProps(props2, extra.fiber, undefined, undefined); let pvnode = w2.__owl__.pvnode; utils.defineProxy(vn5, pvnode); } else { let componentKey2 = \`Child\`; let W2 = context.constructor.components[componentKey2] || QWeb.components[componentKey2]|| context['Child']; if (!W2) {throw new Error('Cannot find the definition of component \\"' + componentKey2 + '\\"')} w2 = new W2(parent, props2); parent.__owl__.cmap[k3] = w2.__owl__.id; let def1 = w2.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k3, hook: {remove() {},destroy(vn) {w2.destroy();}}}); const fiber = w2.__owl__.currentFiber; def1.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); utils.defineProxy(vn5, pvnode); w2.__owl__.pvnode = pvnode; } w2.__owl__.parentLastFiberId = extra.fiber.id; return result; }" `; exports[`top level sub widgets can select a sub widget 1`] = ` "function anonymous(context,extra ) { let utils = this.constructor.utils; let QWeb = this.constructor; let parent = context; let owner = context; let result; var h = this.h; if (context['env'].flag) { //COMPONENT let k3 = \`__4__\`; let w2 = k3 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k3]] : false; let vn5 = {}; result = vn5; let props2 = {}; if (w2 && w2.__owl__.currentFiber && !w2.__owl__.vnode) { w2.destroy(); w2 = false; } if (w2) { w2.__updateProps(props2, extra.fiber, undefined, undefined); let pvnode = w2.__owl__.pvnode; utils.defineProxy(vn5, pvnode); } else { let componentKey2 = \`Child\`; let W2 = context.constructor.components[componentKey2] || QWeb.components[componentKey2]|| context['Child']; if (!W2) {throw new Error('Cannot find the definition of component \\"' + componentKey2 + '\\"')} w2 = new W2(parent, props2); parent.__owl__.cmap[k3] = w2.__owl__.id; let def1 = w2.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k3, hook: {remove() {},destroy(vn) {w2.destroy();}}}); const fiber = w2.__owl__.currentFiber; def1.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); utils.defineProxy(vn5, pvnode); w2.__owl__.pvnode = pvnode; } w2.__owl__.parentLastFiberId = extra.fiber.id; } if (!context['env'].flag) { //COMPONENT let k8 = \`__9__\`; let w7 = k8 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[k8]] : false; let vn10 = {}; result = vn10; let props7 = {}; if (w7 && w7.__owl__.currentFiber && !w7.__owl__.vnode) { w7.destroy(); w7 = false; } if (w7) { w7.__updateProps(props7, extra.fiber, undefined, undefined); let pvnode = w7.__owl__.pvnode; utils.defineProxy(vn10, pvnode); } else { let componentKey7 = \`OtherChild\`; let W7 = context.constructor.components[componentKey7] || QWeb.components[componentKey7]|| context['OtherChild']; if (!W7) {throw new Error('Cannot find the definition of component \\"' + componentKey7 + '\\"')} w7 = new W7(parent, props7); parent.__owl__.cmap[k8] = w7.__owl__.id; let def6 = w7.__prepare(extra.fiber, undefined, undefined); let pvnode = h('dummy', {key: k8, hook: {remove() {},destroy(vn) {w7.destroy();}}}); const fiber = w7.__owl__.currentFiber; def6.then(function () { if (fiber.isCompleted) { return; } const vnode = fiber.vnode; pvnode.sel = vnode.sel; }); utils.defineProxy(vn10, pvnode); w7.__owl__.pvnode = pvnode; } w7.__owl__.parentLastFiberId = extra.fiber.id; } return result; }" `;