diff --git a/lib/config/DocProcessor/tools/tscProps.js b/lib/config/DocProcessor/tools/tscProps.js index bb4e29e7f2..505f7b0314 100644 --- a/lib/config/DocProcessor/tools/tscProps.js +++ b/lib/config/DocProcessor/tools/tscProps.js @@ -5,6 +5,7 @@ var path = require("path"); var heading = require("mdast-util-heading-range"); var remark = require("remark"); var unist = require("../unistHelpers"); +var typescript_1 = require("typescript"); function initPhase(aggData) { } exports.initPhase = initPhase; @@ -76,7 +77,24 @@ function getPropDocData(srcPath, docClassName, inputs, outputs) { var classDec = node; var sourceFile = classDec.getSourceFile(); if (classDec.name.escapedText === docClassName) { - getPropDataFromClass(checker, classDec, inputs, outputs); + getPropDataFromClassChain(checker, classDec, inputs, outputs); + } + } + } +} +// Get properties/events from main class and all inherited classes. +function getPropDataFromClassChain(checker, classDec, inputs, outputs) { + // Main class + getPropDataFromClass(checker, classDec, inputs, outputs); + // Inherited classes + for (var _i = 0, _a = classDec.heritageClauses; _i < _a.length; _i++) { + var hc = _a[_i]; + var hcType = checker.getTypeFromTypeNode(hc.types[0]); + console.log(checker.getFullyQualifiedName(hcType.symbol)); + for (var _b = 0, _c = hcType.symbol.declarations; _b < _c.length; _b++) { + var dec = _c[_b]; + if (typescript_1.isClassDeclaration(dec)) { + getPropDataFromClassChain(checker, dec, inputs, outputs); } } } diff --git a/lib/config/DocProcessor/tools/tscProps.ts b/lib/config/DocProcessor/tools/tscProps.ts index f0246117f8..eda11a78d3 100644 --- a/lib/config/DocProcessor/tools/tscProps.ts +++ b/lib/config/DocProcessor/tools/tscProps.ts @@ -7,7 +7,7 @@ import * as heading from "mdast-util-heading-range"; import * as remark from "remark"; import * as unist from "../unistHelpers"; -import { JsxEmit } from "typescript"; +import { JsxEmit, isClassDeclaration } from "typescript"; export function initPhase(aggData) { } @@ -104,16 +104,42 @@ function getPropDocData(srcPath: string, docClassName: string, inputs: any[], ou let sourceFile = classDec.getSourceFile(); if (classDec.name.escapedText === docClassName) { - getPropDataFromClass(checker, classDec, inputs, outputs); + getPropDataFromClassChain(checker, classDec, inputs, outputs); } } } } +// Get properties/events from main class and all inherited classes. +function getPropDataFromClassChain( + checker: ts.TypeChecker, + classDec: ts.ClassDeclaration, + inputs: any[], + outputs: any[] +){ + // Main class + getPropDataFromClass(checker, classDec, inputs, outputs); + + // Inherited classes + for(const hc of classDec.heritageClauses) { + let hcType = checker.getTypeFromTypeNode(hc.types[0]); + + console.log(checker.getFullyQualifiedName(hcType.symbol)); + + for (const dec of hcType.symbol.declarations) { + if (isClassDeclaration(dec)) { + getPropDataFromClassChain(checker, dec, inputs, outputs); + } + } + } + +} + + function getPropDataFromClass( checker: ts.TypeChecker, - classDec:ts.ClassDeclaration, + classDec: ts.ClassDeclaration, inputs: any[], outputs: any[] ){