private contentsFromPolyfill()

in src/setter/mixed-setter/index.tsx [343:411]


  private contentsFromPolyfill(setterComponent: VariableSetter) {
    const { field } = this.props;
    const n = this.setters.length;

    let setterContent: any;
    let actions: any;
    if (n < 3) {
      const tipContent = field.isUseVariable()
        ? intlNode('Binded: {expr}', { expr: field.getValue()?.value })
        : intlNode('Variable Binding');
      if (n === 1) {
        // =1: 原地展示<当前绑定的值,点击调用 VariableSetter.show>,icon 高亮是否->isUseVaiable,点击 VariableSetter.show
        setterContent = (
          <a
            onClick={(e) => {
              setterComponent.show({ prop: field, node: e.target });
            }}
          >
            {tipContent}
          </a>
        );
      } else {
        // =2: 另外一个 Setter 原地展示,icon 高亮,点击弹出调用 VariableSetter.show
        // FIXME! use variable placeholder setter

        const otherSetter = this.setters.find((item) => item.name !== 'VariableSetter')!;
        setterContent = this.renderCurrentSetter(otherSetter, {
          value: field.getMockOrValue(),
        });
      }
      actions = (
        <Title
          className={field.isUseVariable() ? 'variable-binded' : ''}
          title={{
            icon: <IconVariable size={24} />,
            tip: tipContent,
          }}
          onClick={(e: any) => {
            setterComponent.show({ prop: field, node: e.target.parentNode });
          }}
        />
      );
    } else {
      // >=3: 原地展示当前 setter<当前绑定的值,点击调用 VariableSetter.show>,icon tip 提示绑定的值,点击展示切换 Setter,点击其它 setter 直接切换,点击 Variable Setter-> VariableSetter.show
      const currentSetter =
        !this.used && field.isUseVariable()
          ? this.setters.find((item) => item.name === 'VariableSetter')
          : this.getCurrentSetter();
      if (currentSetter?.name === 'VariableSetter') {
        setterContent = (
          <a
            onClick={(e) => {
              setterComponent.show({ prop: field, node: e.target });
            }}
          >
            {intlNode('Binded: {expr}', { expr: field.getValue()?.value ?? '-' })}
          </a>
        );
      } else {
        setterContent = this.renderCurrentSetter(currentSetter);
      }
      actions = this.renderSwitchAction(currentSetter);
    }

    return {
      setterContent,
      actions,
    };
  }