protected buildThirdPartyTemplate()

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;
  }