export function ensureM3()

in src/framework/Init.tsx [60:196]


export function ensureM3(){
  if(init){
    return;
  }
  init = true;
  assembly.types = _.merge(assembly.types, {
    "enum":             MEnumType,
    "gb2260":           MGB2260Type,
    "datetime":         MDateTimeType,
    "year":             MDateTimeType,
    "yearMonth":        MDateTimeType,
    "yearMonthDay":     MDateTimeType,
    "set":              MSetType,
    "array":            MArrayType,
    "string":           MStringType,
    "intDiff":          MIntDiffType,
    "int":              MIntType,
    "float":            MFloatType,
    "matrix":           MMatrixType,
    "object":           MObjectType,
    "experience":       MExperienceType,
    "cnAddress":        MCnAddress,
    "tel":              MTelType,
    "email":            MEmailType,
    "cnPhone":          MCnPhoneType,
    "dateRange":        MDateRangeType,
    "decoration":       MDecorationType,
    "vl":               MVLPairType,
    "kvSet":            MKvSetType,
    "cascade":          MCascadeType,
  });
  
  // 实验性组件 AArray、ATable、ADialogForm、AForm、ASetSelector、JsonEditor
  assembly.viewers = _.merge(assembly.viewers, {
    "ADatetimePicker":  ADatetimePicker,
    "AGB2260":          AGB2260,
    "ARadio":           ARadio,
    "ARate":            ARate,
    "AUpload":          AUpload,
    "ATreeSelect":      ATreeSelect,
    "NPS":              NPS,
    "ACheckBox":        ACheckBox,
    "AIntBox":          AIntBox,
    "AInputBox":        AInputBox,
    "AMatrix":          AMatrix,
    "ASpecInputBox":    ASpecInputBox,
    "AForm":            AForm,
    "AArray":           AArray,
    "AArrayGrid":       AArrayGrid,
    "ARangePicker":     ARangePicker,
    "AIntDiff":         AIntDiff,
    "ACnAddress":       ACnAddress,
    "AExperience":      AExperience,
    "ASetSelector":     ASetSelector,
    "ASelector":        ASelector,
    "DivViewer":        DivViewer,
    "ArrayViewer":      ArrayViewer,
    "DecorationViewer": DecorationViewer,
    "ATable":           ATable,
    "ARemoteSelector":  ARemoteSelector,
    "JsonEditor":       JsonEditor,
    "A":                A,
    "ADialogForm":      ADialogForm,
    "AKvSet":           AKvSet,
    "ACascadePicker": ACascadePicker,
  });

  assembly.morph = _.merge(assembly.morph, {
    // 编辑
    "editor": {
      "enum": "ASelector",
      "gb2260":"AGB2260",
      "datetime": "ADatetimePicker",
      "year": "ADatetimePicker",
      "yearMonth": "ADatetimePicker",
      "yearMonthDay": "ADatetimePicker",
      "set": "ACheckBox",
      "array": "AArray",
      "string": "AInputBox",
    
      "intDiff": "AIntDiff",
      "int": "AIntBox",
      "float": "AIntBox",
      
      "matrix": "AMatrix",
      "object": "AForm",
      
      "experience": "AExperience",
      "kvSet": "AKvSet",
      
      // TODO 这些类型还没有校验
      "cnAddress": "ACnAddress",
      "tel": "ASpecInputBox",
      "email": "ASpecInputBox",
      "cnPhone": "ASpecInputBox",
      "dateRange": "ARangePicker",
      "decoration": "DecorationViewer",

      "vl": "ARemoteSelector",
      "cascade": "ACascadePicker"
    },
    // 详情
    "readable": {
      "enum": "DivViewer",
      "gb2260": "DivViewer",
      "datetime": "DivViewer",
      "year": "DivViewer",
      "yearMonth": "DivViewer",
      "yearMonthDay": "DivViewer",

      "set": "DivViewer",
      "array": "ArrayViewer",
      "string": "DivViewer",

      "intDiff": "DivViewer",
      "int": "DivViewer",
      "float": "DivViewer",

      "matrix": "DivViewer",
      "object": "AForm",
      "experience": "DivViewer",
      "kvSet": "DivViewer",

      "cnAddress": "DivViewer",
      "tel": "DivViewer",
      "email": "DivViewer",
      "cnPhone": "DivViewer",
      "dateRange":"DivViewer",
      "decoration": "DecorationViewer",
      "vl": "DivViewer",

      "cascade": "DivViewer"
    }
  })
  
  assembly.editors = _.merge(assembly.editors, editorMap)
}