get setterInfo()

in packages/editor-skeleton/src/components/settings/settings-pane.tsx [105:186]


  get setterInfo(): {
    setterProps: any;
    initialValue: any;
    setterType: any;
  } {
    const { extraProps, componentMeta } = this.field;
    const { defaultValue } = extraProps;

    const { setter } = this.field;
    let setterProps: {
      setters?: (ReactNode | string)[];
    } & Record<string, unknown> | IPublicTypeDynamicProps = {};
    let setterType: any;
    let initialValue: any = null;

    if (Array.isArray(setter)) {
      setterType = 'MixedSetter';
      setterProps = {
        setters: setter,
      };
    } else if (isSetterConfig(setter)) {
      setterType = setter.componentName;
      if (setter.props) {
        setterProps = setter.props;
        if (typeof setterProps === 'function') {
          setterProps = setterProps(this.field.internalToShellField());
        }
      }
      if (setter.initialValue != null) {
        initialValue = setter.initialValue;
      }
    } else if (setter) {
      setterType = setter;
    }

    if (defaultValue != null && !('defaultValue' in setterProps)) {
      setterProps.defaultValue = defaultValue;
      if (initialValue == null) {
        initialValue = defaultValue;
      }
    }

    if (this.field.valueState === -1) {
      setterProps.multiValue = true;
      if (!('placeholder' in setterProps)) {
        setterProps.placeholder = intl('Multiple Value');
      }
    }

    // 根据是否支持变量配置做相应的更改
    const supportVariable = this.field.extraProps?.supportVariable;
    // supportVariableGlobally 只对标准组件生效,vc 需要单独配置
    const supportVariableGlobally = engineConfig.get('supportVariableGlobally', false) && isStandardComponent(componentMeta);
    const isUseVariableSetter = shouldUseVariableSetter(supportVariable, supportVariableGlobally);
    if (isUseVariableSetter === false) {
      return {
        setterProps,
        initialValue,
        setterType,
      };
    }

    if (setterType === 'MixedSetter') {
      // VariableSetter 不单独使用
      if (Array.isArray(setterProps.setters) && !setterProps.setters.includes('VariableSetter')) {
        setterProps.setters.push('VariableSetter');
      }
    } else {
      setterType = 'MixedSetter';
      setterProps = {
        setters: [
          setter,
          'VariableSetter',
        ],
      };
    }
    return {
      setterProps,
      initialValue,
      setterType,
    };
  }