UNPKG

marko

Version:

UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.

60 lines (52 loc) 1.67 kB
"use strict";var eventDelegation = require("./event-delegation"); var delegateEvent = eventDelegation.aU_; var getEventFromEl = eventDelegation.aV_; // var componentsUtil = require('@internal/components-util'); // var destroyNodeRecursive = componentsUtil.___destroyNodeRecursive; // var destroyComponentForNode = componentsUtil.___destroyComponentForNode; function handleNodeAttach(node, componentsContext) { if (node.nodeType === 1) { var eventName = "onattach"; var target = getEventFromEl(node, eventName); if (target) { var out = componentsContext.r_; var data = out.data; var attachTargets = data.aW_; if (!attachTargets) { attachTargets = data.aW_ = []; out.on("aR_", function () { for (var i = 0; i < attachTargets.length; i += 2) { var node = attachTargets[i]; var target = attachTargets[i + 1]; delegateEvent(node, eventName, target, {}); } }); } attachTargets.push(node); attachTargets.push(target); } } } function handleNodeDetach(node) { if (node.nodeType === 1) { var eventName = "ondetach"; var target = getEventFromEl(node, eventName); if (target) { var allowDetach; delegateEvent(node, eventName, target, { preventDefault: function () { allowDetach = false; }, detach: function () { var parentNode = node.parentNode; if (parentNode) { parentNode.removeChild(node); } } }); return allowDetach; } } } eventDelegation.aX_ = handleNodeAttach; eventDelegation.ap_ = handleNodeDetach;