UNPKG

@lcap/nasl

Version:

NetEase Application Specific Language

125 lines 5.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.rootBind = void 0; const concepts_1 = require("../../concepts"); const _2_14_components_1 = require("./2.14-components"); const viewCache_1 = require("../engine/viewCache"); function iterateUp(node, callback) { while (node) { callback(node); node = node.parentNode; } } function rootBind(root) { viewCache_1.views.forEach((v) => { if (v.slotScope) { if (v.slotTarget !== 'cell' && v.slotTarget !== 'item' && v.slotTarget !== 'default' && v.slotTarget !== 'expand-content' && v.slotTarget !== 'editcell') v.slotScope = undefined; } const bindEvents = viewCache_1.viewCache.get(v).bindEvents; const eventMap = {}; function genBindEvent(name) { return new concepts_1.BindEvent({ name, calleeNamespace: undefined, calleeName: undefined, arguments: [], logics: [], }); } const _curView = v.concept === 'View' ? v : v.view; bindEvents.forEach((be) => { if (!eventMap[be.name]) { const t = genBindEvent(be.name); t.parentNode = v; t.parentKey = 'bindEvents'; eventMap[be.name] = t; } const bindEventTrunk = eventMap[be.name]; if (be.calleeName) { const argStrs = []; let args = []; iterateUp(be, (item) => { if (item.tag === 'template' && item.slotScope === 'scope') { argStrs.push(`scope${argStrs.length > 0 ? argStrs.length - 1 : ''}`); } }); argStrs.unshift('event'); args = argStrs.map((name) => ({ concept: 'Argument', expression: { concept: 'Identifier', name, }, })); if (be.calleeNamespace) { args = []; } else { const logic = _curView.logics.find((logic) => logic.name === be.calleeName); if (logic) { args = args.slice(0, logic.params.length); if (args.length < logic.params.length && logic.params.length === 2 && logic.params[1].name === 'scope') { logic.params.splice(1, 1); } // checkEventType const logicParam = logic.params[0]; const vtag = v.tag; let shouldType = _2_14_components_1.components[vtag] && _2_14_components_1.components[vtag][be.name]; if (!shouldType) shouldType = _2_14_components_1.commonEvents[be.name]; if (shouldType && logicParam && logicParam.typeAnnotation.typeName !== shouldType.typeName) { console.log(`事件类型修复:${logic.name}@${be.name} ${logicParam.typeAnnotation.typeName} -> ${shouldType.typeName}`); logicParam.typeAnnotation = Object.assign({}, shouldType); } if (v.name === 'addRoleUser' && logic.name === 'remove') { const logicParam1 = logic.params[1]; if (logicParam1.typeAnnotation.typeArguments[0].typeName === 'LoadAddRoleUserTableViewStructure') logicParam1.typeAnnotation.typeArguments[0].typeName = 'LoadURMTableViewStructure'; } } } bindEventTrunk.addLogic({ concept: 'Logic', name: be.calleeName, typeParams: null, params: [], returns: [], variables: [], body: [ { concept: 'Start', label: '开始', folded: false, }, { concept: 'CallLogic', label: '调用逻辑', folded: false, calleeNamespace: be.calleeNamespace, calleeName: be.calleeName, arguments: args, }, { concept: 'End', label: '结束', folded: false, }, ], playground: [], }); } }); Object.keys(eventMap).forEach((k) => { v.bindEvents.push(eventMap[k]); }); }); } exports.rootBind = rootBind; //# sourceMappingURL=2.14.old.js.map