@lcap/nasl
Version:
NetEase Application Specific Language
125 lines • 5.26 kB
JavaScript
;
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