in packages/shared/src/miniapp/template.ts [368:416]
protected buildThirdPartyTemplate(level: number, componentConfig: ComponentConfig) {
const { adapter, isSupportRecursive, supportXS, nestElements } = this;
const nextLevel = isSupportRecursive ? 0 : level + 1;
let template = '';
const data = !isSupportRecursive && supportXS
? `${this.dataKeymap('i:item,l:l')}`
: this.dataKeymap('i:item');
componentConfig.thirdPartyComponents.forEach((attrs, compName) => {
if (compName === 'custom-wrapper') {
template += `
<template name="tmpl_${level}_${compName}">
<${compName} i="{{i}}" l="{{l}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
</${compName}>
</template>
`;
} else {
if (
!isSupportRecursive &&
supportXS &&
nestElements.has(compName) &&
level + 1 > nestElements.get(compName)!
) {
return;
}
let child = supportXS
? `<template is="{{xs.e(${isSupportRecursive ? 0 : 'cid+1'})}}" data="{{${data}}}" />`
: `<template is="tmpl_${nextLevel}_${Shortcuts.Container}" data="{{${data}}}" />`;
if (isFunction(this.modifyThirdPartyLoopBody)) {
child = this.modifyThirdPartyLoopBody(child, compName);
}
template += `
<template name="tmpl_${level}_${compName}">
<${compName} ${this.buildThirdPartyAttr(attrs, this.thirdPartyPatcher[compName] || {})} id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
<block ${adapter.for}="{{i.${Shortcuts.Childnodes}}}" ${adapter.key}="sid">
${child}
</block>
</${compName}>
</template>
`;
}
});
return template;
}